|
|
@@ -84,6 +84,11 @@ enum SQMetaMethod{
|
|
|
|
|
|
#define MINPOWER2 4
|
|
|
|
|
|
+#ifndef NO_ABSTRACT_METHOD
|
|
|
+#define ABSTRACT_METHOD(m, i) m =0
|
|
|
+#else
|
|
|
+#define ABSTRACT_METHOD(m, i) m i
|
|
|
+#endif
|
|
|
struct SQRefCounted
|
|
|
{
|
|
|
SQUnsignedInteger _uiRef;
|
|
|
@@ -91,7 +96,7 @@ struct SQRefCounted
|
|
|
SQRefCounted(): _uiRef(0), _weakref(NULL) {}
|
|
|
virtual ~SQRefCounted();
|
|
|
SQWeakRef *GetWeakRef(SQObjectType type);
|
|
|
- virtual void Release()=0;
|
|
|
+ ABSTRACT_METHOD(virtual void Release(), {});
|
|
|
|
|
|
};
|
|
|
|
|
|
@@ -331,11 +336,11 @@ struct SQCollectable : public SQRefCounted {
|
|
|
SQCollectable *_next;
|
|
|
SQCollectable *_prev;
|
|
|
SQSharedState *_sharedstate;
|
|
|
- virtual SQObjectType GetType()=0;
|
|
|
- virtual void Release()=0;
|
|
|
- virtual void Mark(SQCollectable **chain)=0;
|
|
|
+ ABSTRACT_METHOD(virtual SQObjectType GetType(), {return OT_NULL;});
|
|
|
+ ABSTRACT_METHOD(virtual void Release(), {});
|
|
|
+ ABSTRACT_METHOD(virtual void Mark(SQCollectable **chain), {});
|
|
|
void UnMark();
|
|
|
- virtual void Finalize()=0;
|
|
|
+ ABSTRACT_METHOD(virtual void Finalize(), {});
|
|
|
static void AddToChain(SQCollectable **chain,SQCollectable *c);
|
|
|
static void RemoveFromChain(SQCollectable **chain,SQCollectable *c);
|
|
|
};
|