@@ -104,6 +104,41 @@ void TfLiteVarArrayFree(T* a) {
104104
105105#ifndef TF_LITE_STATIC_MEMORY
106106
107+ TfLiteSparsity TfLiteSparsityClone (const TfLiteSparsity& src) {
108+ TfLiteSparsity dst = src;
109+ dst.traversal_order = TfLiteIntArrayCopy (src.traversal_order );
110+ dst.block_map = TfLiteIntArrayCopy (src.block_map );
111+ if (src.dim_metadata ) {
112+ dst.dim_metadata = reinterpret_cast <TfLiteDimensionMetadata*>(
113+ calloc (1 , sizeof (TfLiteDimensionMetadata) * src.dim_metadata_size ));
114+ for (int i = 0 ; i < src.dim_metadata_size ; ++i) {
115+ dst.dim_metadata [i] = src.dim_metadata [i];
116+ dst.dim_metadata [i].array_segments =
117+ TfLiteIntArrayCopy (src.dim_metadata [i].array_segments );
118+ dst.dim_metadata [i].array_indices =
119+ TfLiteIntArrayCopy (src.dim_metadata [i].array_indices );
120+ }
121+ }
122+ return dst;
123+ }
124+
125+ // Clones the source sparsity to a newly allocated object.
126+ TfLiteSparsity* TfLiteSparsityClone (const TfLiteSparsity* const src) {
127+ if (!src) {
128+ return nullptr ;
129+ }
130+ TfLiteSparsity* dst =
131+ reinterpret_cast <TfLiteSparsity*>(calloc (1 , sizeof (TfLiteSparsity)));
132+ *dst = TfLiteSparsityClone (*src);
133+ return dst;
134+ }
135+
136+ #endif // TF_LITE_STATIC_MEMORY
137+
138+ } // namespace
139+
140+ #ifndef TF_LITE_STATIC_MEMORY
141+
107142TfLiteQuantization TfLiteQuantizationClone (const TfLiteQuantization& src) {
108143 TfLiteQuantization dst;
109144 dst.type = src.type ;
@@ -136,39 +171,8 @@ TfLiteQuantization TfLiteQuantizationClone(const TfLiteQuantization& src) {
136171 return dst;
137172}
138173
139- TfLiteSparsity TfLiteSparsityClone (const TfLiteSparsity& src) {
140- TfLiteSparsity dst = src;
141- dst.traversal_order = TfLiteIntArrayCopy (src.traversal_order );
142- dst.block_map = TfLiteIntArrayCopy (src.block_map );
143- if (src.dim_metadata ) {
144- dst.dim_metadata = reinterpret_cast <TfLiteDimensionMetadata*>(
145- calloc (1 , sizeof (TfLiteDimensionMetadata) * src.dim_metadata_size ));
146- for (int i = 0 ; i < src.dim_metadata_size ; ++i) {
147- dst.dim_metadata [i] = src.dim_metadata [i];
148- dst.dim_metadata [i].array_segments =
149- TfLiteIntArrayCopy (src.dim_metadata [i].array_segments );
150- dst.dim_metadata [i].array_indices =
151- TfLiteIntArrayCopy (src.dim_metadata [i].array_indices );
152- }
153- }
154- return dst;
155- }
156-
157- // Clones the source sparsity to a newly allocated object.
158- TfLiteSparsity* TfLiteSparsityClone (const TfLiteSparsity* const src) {
159- if (!src) {
160- return nullptr ;
161- }
162- TfLiteSparsity* dst =
163- reinterpret_cast <TfLiteSparsity*>(calloc (1 , sizeof (TfLiteSparsity)));
164- *dst = TfLiteSparsityClone (*src);
165- return dst;
166- }
167-
168174#endif // TF_LITE_STATIC_MEMORY
169175
170- } // namespace
171-
172176extern " C" {
173177
174178size_t TfLiteIntArrayGetSizeInBytes (int size) {
0 commit comments