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