GearsOSのInterface
サンプルコード
code:Stack.h
typedef struct Stack<Type, Impl>{
union Data* stack;
union Data* data;
union Data* data1;
/* Type* stack; */
/* Type* data; */
/* Type* 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 pop2(Impl* stack, __code next(Type* data, Type* data1, ...));
__code isEmpty(Impl* stack, __code next(...), __code whenEmpty(...));
__code get(Impl* stack, __code next(Type* data, ...));
__code get2(Impl* stack, __code next(Type* data, Type* data1, ...));
__code next(...);
} Stack;
typedef struct Interface名<>で記述する
見た感じ <> の中身は generate_stub.plでは使用していないが...
Implが実装の型(実装している自分自身)として使用され、 TypeがInterfaceの型
ルールとして実装にアクセスするには union Data* Interface名を経由する
直接いれると1つしか実装は存在出来ない
ALLOCATEすると良さそう