struct NestedLoopList { int elem_size; int length; void* ptr; int free_ptr; /* 0 = no, 1 = yes */ }; struct NestedLoopArrayArg { int elem_size; int length; void* ptr; }; struct NestedLoopFuncArg void (*ptr)(struct NestedLoopList* list_ptr, void* pad); void* pad; }; struct NestedLoopArg { int ptr_type; /* 0 = array, 1 = func */ union { struct NestedLoopArrayArg array; struct NestedLoopFuncArg func; } ptr; };