📄 object.dc
字号:
#include <stdlib.h>#include <string.h>// Object% Object ctor { return _self;}% Object dtor { return _self;}% Object differ { return _self != b;}% Object puto { const struct Class * class = classOf(_self); return fprintf(fp, "%s at %p\n", class -> name, _self);}% delete { if (_self) free(dtor(_self));}% classOf {%casts assert(self -> class); return self -> class;}% sizeOf { const struct Class * class = classOf(_self); return class -> size;}// Class% Class dtor {%casts fprintf(stderr, "%s: cannot destroy class\n", self -> name); return 0;}% new { struct Object * object; va_list ap;%casts assert(self -> size); object = calloc(1, self -> size); assert(object); object -> class = self; va_start(ap, _self); object = ctor(object, & ap); va_end(ap); return object;}% super {%casts assert(self -> super); return self -> super;}// initialization// _Class and _Object are statically initialized structuresextern const struct Class _Object;extern const struct Class _Class;%initstatic const struct Class _Object = { { & _Class }, "Object", & _Object, sizeof(struct Object), Object_ctor, Object_dtor, Object_differ, Object_puto};static const struct Class _Class = { { & _Class }, "Class", & _Object, sizeof(struct Class), Class_ctor, Class_dtor, Object_differ, Object_puto};const void * Object = & _Object;const void * Class = & _Class;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -