+#define _eet_freelist_array_add(Ctx, Data) _eet_free_add(&Ctx->freelist_array, Data);
+#define _eet_freelist_array_reset(Ctx) _eet_free_reset(&Ctx->freelist_array);
+#define _eet_freelist_array_ref(Ctx) _eet_free_ref(&Ctx->freelist_array);
+#define _eet_freelist_array_unref(Ctx) _eet_free_unref(&Ctx->freelist_array);
+
+static void
+_eet_freelist_array_free(Eet_Free_Context *context,
+ Eet_Data_Descriptor *edd)
+{
+ int j;
+ int i;
+
+ if (context->freelist_array.ref > 0)
+ return;
+
+ for (j = 0; j < 256; ++j)
+ for (i = 0; i < context->freelist_array.num[j]; ++i)
+ {
+ if (edd)
+ {
+ if (edd->func.array_free)
+ edd->func.array_free(context->freelist_array.list[j][i]);
+ else
+ edd->func.mem_free(context->freelist_array.list[j][i]);
+ }
+ else
+ free(context->freelist_array.list[j][i]);
+ }
+ _eet_free_reset(&context->freelist_array);
+} /* _eet_freelist_array_free */
+