1 #ifndef IMPLEMENTATION_H
2 #define IMPLEMENTATION_H
22 // for the constructor
23 #define CLASS(cname) entity spawn##cname() { entity me;
24 #define EXTENDS(base) me = spawn##base (); entity basevtbl; basevtbl = base##_vtbl;
25 #define METHOD(cname,name,prototype) me.name = cname##_##name;
26 #define ATTRIB(cname,name,type,val) me.name = val;
27 #define ATTRIBARRAY(cname,name,type,cnt)
28 #define ENDCLASS(cname) me.instanceOf##cname = 1; me.classname = #cname; if(!cname##_vtbl) cname##_vtbl = spawnVtbl(me, basevtbl); return me; }
30 // for the implementation
31 #define SUPER(cname) (cname##_vtbl.vtblbase)