All pastes #743954 Raw Edit

Anonymous

public c v1 · immutable
·published 2007-10-20 22:58 UTC
rendered paste body
#define class(cls) cls##_object *#define create(cls) ((class(cls)) malloc(sizeof(cls##_object)))#define subclass(cls) cls##_class cls;#define classdef(cls, sub...) \typedef struct cls##_class cls##_class; \typedef struct { \	sub \	cls##_class cls; \} cls##_object; \struct cls##_classclassdef(BaseObject) {	uint32 refcount;};#define incref(object) do { ++object.BaseObject.refcount; } while(0)#define decref(object) do { --object.BaseObject.refcount; } while(0)classdef(TestObject, subclass(BaseObject)) {	uint32 test;};int main(int argc, char **argv) {	class(TestObject) foo = create(TestObject);	foo.TestObject.test = 5;	printf("%i\n", foo.TestObject.test);	printf("%i\n", foo.BaseObject.refcount);}