Browse Source

Without this macros defined on the default build there is dependencies on libstdc++ that we do not want to carry on.

mingodad 7 years ago
parent
commit
3ad215a726
2 changed files with 18 additions and 5 deletions
  1. 8 0
      SquiLu/squirrel/sqmem.cpp
  2. 10 5
      SquiLu/squirrel/sqobject.h

+ 8 - 0
SquiLu/squirrel/sqmem.cpp

@@ -9,3 +9,11 @@ void *sq_vm_realloc(void *p, SQUnsignedInteger SQ_UNUSED_ARG(oldsize), SQUnsigne
 
 
 void sq_vm_free(void *p, SQUnsignedInteger SQ_UNUSED_ARG(size)){ free(p); }
 void sq_vm_free(void *p, SQUnsignedInteger SQ_UNUSED_ARG(size)){ free(p); }
 #endif
 #endif
+
+#ifdef CUSTOM_DELETE_OPERATOR
+void operator delete(void *p, unsigned long len)
+{
+	printf("DELETE SHOULD NOT BE CALLED %p : %d\n", p, (int)len);
+	assert(0);
+}
+#endif

+ 10 - 5
SquiLu/squirrel/sqobject.h

@@ -84,6 +84,11 @@ enum SQMetaMethod{
 
 
 #define MINPOWER2 4
 #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
 struct SQRefCounted
 {
 {
 	SQUnsignedInteger _uiRef;
 	SQUnsignedInteger _uiRef;
@@ -91,7 +96,7 @@ struct SQRefCounted
 	SQRefCounted(): _uiRef(0), _weakref(NULL) {}
 	SQRefCounted(): _uiRef(0), _weakref(NULL) {}
 	virtual ~SQRefCounted();
 	virtual ~SQRefCounted();
 	SQWeakRef *GetWeakRef(SQObjectType type);
 	SQWeakRef *GetWeakRef(SQObjectType type);
-	virtual void Release()=0;
+	ABSTRACT_METHOD(virtual void Release(), {});
 
 
 };
 };
 
 
@@ -331,11 +336,11 @@ struct SQCollectable : public SQRefCounted {
 	SQCollectable *_next;
 	SQCollectable *_next;
 	SQCollectable *_prev;
 	SQCollectable *_prev;
 	SQSharedState *_sharedstate;
 	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();
 	void UnMark();
-	virtual void Finalize()=0;
+	ABSTRACT_METHOD(virtual void Finalize(), {});
 	static void AddToChain(SQCollectable **chain,SQCollectable *c);
 	static void AddToChain(SQCollectable **chain,SQCollectable *c);
 	static void RemoveFromChain(SQCollectable **chain,SQCollectable *c);
 	static void RemoveFromChain(SQCollectable **chain,SQCollectable *c);
 };
 };