aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/libc/cpp_support.cpp
diff options
context:
space:
mode:
authorJohn "Lameguy" Wilbert Villamor <lameguy64@gmail.com>2022-09-26 16:49:56 +0800
committerGitHub <noreply@github.com>2022-09-26 16:49:56 +0800
commitc4a2533d21dfd05cde841ea48c67b05e0e6a853f (patch)
treec7ef61653b157b69fb0956709366996ddbc4ecfa /libpsn00b/libc/cpp_support.cpp
parenta8b404b3400c3ebd8e0b923dcaefcc49ea563e36 (diff)
parent86f0064afb8200e60dd80827535cac30d0eab028 (diff)
downloadpsn00bsdk-c4a2533d21dfd05cde841ea48c67b05e0e6a853f.tar.gz
Merge pull request #55 from spicyjpeg/psxmdec
Full MDEC support, C library refactors, cleanups and bugfixes (v0.20)
Diffstat (limited to 'libpsn00b/libc/cpp_support.cpp')
-rw-r--r--libpsn00b/libc/cpp_support.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/libpsn00b/libc/cpp_support.cpp b/libpsn00b/libc/cpp_support.cpp
new file mode 100644
index 0000000..f451044
--- /dev/null
+++ b/libpsn00b/libc/cpp_support.cpp
@@ -0,0 +1,55 @@
+/*
+ * PSn00bSDK C++ support library
+ * (C) 2019-2022 Lameguy64, spicyjpeg - MPL licensed
+ */
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+/* GCC builtins */
+
+extern "C" void *__builtin_new(size_t size) {
+ return malloc(size);
+}
+
+extern "C" void __builtin_delete(void *ptr) {
+ free(ptr);
+}
+
+/* Default new/delete operators */
+
+void *operator new(size_t size) noexcept {
+ return malloc(size);
+}
+
+void *operator new[](size_t size) noexcept {
+ return malloc(size);
+}
+
+void operator delete(void *ptr) noexcept {
+ free(ptr);
+}
+
+void operator delete[](void *ptr) noexcept {
+ free(ptr);
+}
+
+// https://en.cppreference.com/w/cpp/memory/new/operator_delete
+void operator delete(void *ptr, size_t size) noexcept {
+ free(ptr);
+}
+
+void operator delete[](void *ptr, size_t size) noexcept {
+ free(ptr);
+}
+
+/* Placement new operators */
+
+void *operator new(size_t size, void *ptr) noexcept {
+ return ptr;
+}
+
+void *operator new[](size_t size, void *ptr) noexcept {
+ return ptr;
+}