diff --git a/a8/reflect.h b/a8/reflect.h index ceea6c2..2c822cc 100644 --- a/a8/reflect.h +++ b/a8/reflect.h @@ -1,9 +1,21 @@ #pragma once +#include #include namespace a8 { + + namespace reflect + { + class Class; + } + + struct ReflectibleObject + { + a8::reflect::Class *metaclass = NULL; + }; + namespace reflect { @@ -13,10 +25,11 @@ namespace a8 ET_UINT32 = 2, ET_INT64 = 3, ET_UINT64 = 4, - ET_DOUBLE = 5, - ET_STRING = 6, - ET_CLASS = 7, - ET_INTERFACE = 8, + ET_FLOAT = 5, + ET_DOUBLE = 6, + ET_STRING = 7, + ET_CLASS = 8, + ET_INTERFACE = 9, }; enum FieldSubType @@ -80,6 +93,26 @@ namespace a8 return tag_; } + void SetSimpleField( + int fieldidx, + const char* fieldname, + int type, + int offset + ) + { + SetField(fieldidx, + fieldname, + type, + a8::reflect::EST_SIMPLE, + offset, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr); + } + void SetField(int fieldidx, const char* fieldname, int type, @@ -197,7 +230,7 @@ namespace a8 #define BEGIN_MSG_CLASS(classname, fieldnum) \ { \ - a8::reflect::Class *metaclass = new a8::reflect::Class(#classname, fieldnum, classname::CLSID); \ + a8::reflect::Class *metaclass = new a8::reflect::Class(#classname, fieldnum, 0); \ metaclass->create =&a8::reflect::_create; \ metaclass->destroy =&a8::reflect::_destroy; \ metaclass->copy =&a8::reflect::_copy; \ @@ -209,13 +242,13 @@ namespace a8 #define BEGIN_MFMSG_CLASS(classname, fieldnum) \ { \ - a8::reflect::Class *metaclass = new a8::reflect::Class(#classname, fieldnum, classname::CLSID); \ + a8::reflect::Class *metaclass = new a8::reflect::Class(#classname, fieldnum, 0); \ metaclass->create =&a8::reflect::_create; \ metaclass->destroy =&a8::reflect::_destroy; \ metaclass->copy =&a8::reflect::_copy; \ - classname::__metaclass = metaclass; \ - assert(classname::CLSID < 1024); \ - s_mfclass_metaclasses[classname::CLSID] = metaclass; \ + /*classname::__metaclass = metaclass;*/ \ + /*assert(classname::CLSID < 1024);*/ \ + /*s_mfclass_metaclasses[0] = metaclass;*/ \ classname p; #define END_MFMSG_CLASS() \ diff --git a/a8/types.h b/a8/types.h index 6678723..21d1ca9 100644 --- a/a8/types.h +++ b/a8/types.h @@ -40,4 +40,8 @@ namespace a8 const int TIMER_DESTORY_EVENT = 3; const int TIMER_USER_EVENT = 66; + namespace reflect + { + class Class; + } };