typedef struct Stack{ union Data* stack; union Data* data; union Data* data1; __code whenEmpty(...); __code clear(Impl* stack,__code next(...)); __code push(Impl* stack,union Data* data, __code next(...)); __code pop(Impl* stack, __code next(union Data*, ...)); __code pop2(Impl* stack, union Data** data, union Data** data1, __code next(union Data**, union Data**, ...)); __code isEmpty(Impl* stack, __code next(...), __code whenEmpty(...)); __code get(Impl* stack, union Data** data, __code next(...)); __code get2(Impl* stack,..., __code next(...)); __code next(...); } Stack;