Browse Source

Extra code to compile as C++ without need libstdc++

mingodad 5 years ago
parent
commit
a19c80177b
1 changed files with 49 additions and 0 deletions
  1. 49 0
      SquiLu/squirrel/sqmem.cpp

+ 49 - 0
SquiLu/squirrel/sqmem.cpp

@@ -43,3 +43,52 @@ void operator delete(void *p)
 	assert(0);
 }
 #endif
+
+#ifdef WITH_SQSTDCPP
+#include <stdio.h>
+#include <stdlib.h>
+
+// MSVC uses __cdecl calling convention for new/delete :-O
+#ifdef _MSC_VER
+#  define NEWDEL_CALL __cdecl
+#else
+#  define NEWDEL_CALL
+#endif
+
+extern "C" void __cxa_pure_virtual ()
+{
+    puts("__cxa_pure_virtual called\n");
+    abort ();
+}
+
+void * NEWDEL_CALL operator new (size_t size)
+{
+    void *p = malloc (size);
+    if(!p)
+    {
+        puts("not enough memory\n");
+        abort ();
+    }
+    return p;
+}
+
+void * NEWDEL_CALL operator new [] (size_t size)
+{
+    return ::operator new(size);
+}
+
+void NEWDEL_CALL operator delete (void *p)
+{
+    if (p) free (p);
+}
+
+void NEWDEL_CALL operator delete [] (void *p)
+{
+    if (p) free (p);
+}
+
+void NEWDEL_CALL operator delete (void *p, size_t)
+{
+    if (p) free (p);
+}
+#endif // WITH_MYSTDCPP