summaryrefslogtreecommitdiff
path: root/gcc/cp/inc/new
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/inc/new')
-rwxr-xr-xgcc/cp/inc/new60
1 files changed, 60 insertions, 0 deletions
diff --git a/gcc/cp/inc/new b/gcc/cp/inc/new
new file mode 100755
index 0000000..c19205b
--- /dev/null
+++ b/gcc/cp/inc/new
@@ -0,0 +1,60 @@
+/* CYGNUS LOCAL Embedded C++ whole file */
+// The -*- C++ -*- dynamic memory management header.
+// Copyright (C) 1994, 96-97, 1998 Free Software Foundation
+
+#ifndef __NEW__
+#define __NEW__
+
+#pragma interface "new"
+#include <stddef.h>
+
+#ifndef __EMBEDDED_CXX__
+// Exception Handling is forbidden in Embedded C++.
+#include <exception>
+#define __GCC_THROW(what) throw (what)
+#define __GCC_nothing
+#else
+#define __GCC_THROW(what)
+#endif
+
+extern "C++" {
+
+namespace std {
+
+#ifndef __EMBEDDED_CXX__
+ class bad_alloc : public exception {
+ public:
+ virtual const char* what() const throw() { return "bad_alloc"; }
+ };
+#endif
+
+ struct nothrow_t {};
+ extern const nothrow_t nothrow;
+
+ typedef void (*new_handler)();
+ new_handler set_new_handler (new_handler);
+
+} // namespace std
+
+// replaceable signatures
+void *operator new (size_t) __GCC_THROW (std::bad_alloc);
+void *operator new[] (size_t) __GCC_THROW (std::bad_alloc);
+void operator delete (void *) __GCC_THROW(__GCC_nothing);
+void operator delete[] (void *) __GCC_THROW(__GCC_nothing);
+void *operator new (size_t, const nothrow_t&) __GCC_THROW(__GCC_nothing);
+void *operator new[] (size_t, const nothrow_t&) __GCC_THROW(__GCC_nothing);
+void operator delete (void *, const nothrow_t&) __GCC_THROW(__GCC_nothing);
+void operator delete[] (void *, const nothrow_t&) __GCC_THROW(__GCC_nothing);
+
+// default placement versions of operator new
+inline void *operator new(size_t, void *place) __GCC_THROW(__GCC_nothing) {
+ return place;
+}
+inline void *operator new[](size_t, void *place) __GCC_THROW(__GCC_nothing) {
+ return place;
+}
+
+} // extern "C++"
+
+#endif
+/* END CYGNUS LOCAL */