struct SQInstance;\r
\r
struct SQClassMember {\r
+ SQClassMember(){}\r
+ SQClassMember(const SQClassMember &o) {\r
+ val = o.val;\r
+ attrs = o.attrs;\r
+ }\r
SQObjectPtr val;\r
SQObjectPtr attrs;\r
};\r
}\r
return false;\r
}\r
- bool GetConstructor(SQObjectPtr &ctor)\r
- {\r
- if(_constructoridx != -1) {\r
- ctor = _methods[_constructoridx].val;\r
- return true;\r
- }\r
- return false;\r
- }\r
bool SetAttributes(const SQObjectPtr &key,const SQObjectPtr &val);\r
bool GetAttributes(const SQObjectPtr &key,SQObjectPtr &outval);\r
void Lock() { _locked = true; if(_base) _base->Lock(); }\r
void Finalize();\r
#ifndef NO_GARBAGE_COLLECTOR\r
void Mark(SQCollectable ** );\r
- SQObjectType GetType() {return OT_CLASS;}\r
#endif\r
SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval);\r
SQInstance *CreateInstance();\r
SQClass *_base;\r
SQClassMemberVec _defaultvalues;\r
SQClassMemberVec _methods;\r
- SQObjectPtr _metamethods[MT_LAST];\r
+ SQObjectPtrVec _metamethods;\r
SQObjectPtr _attributes;\r
SQUserPointer _typetag;\r
SQRELEASEHOOK _hook;\r
bool _locked;\r
- SQInteger _constructoridx;\r
SQInteger _udsize;\r
};\r
\r
#define calcinstancesize(_theclass_) \\r
- (_theclass_->_udsize + sq_aligning(sizeof(SQInstance) + (sizeof(SQObjectPtr)*(_theclass_->_defaultvalues.size()>0?_theclass_->_defaultvalues.size()-1:0))))\r
+ (_theclass_->_udsize + sizeof(SQInstance) + (sizeof(SQObjectPtr)*(_theclass_->_defaultvalues.size()>0?_theclass_->_defaultvalues.size()-1:0)))\r
\r
struct SQInstance : public SQDelegable \r
{\r
void Finalize();\r
#ifndef NO_GARBAGE_COLLECTOR \r
void Mark(SQCollectable ** );\r
- SQObjectType GetType() {return OT_INSTANCE;}\r
#endif\r
bool InstanceOf(SQClass *trg);\r
bool GetMetaMethod(SQVM *v,SQMetaMethod mm,SQObjectPtr &res);\r