summaryrefslogtreecommitdiff
path: root/gcc/cp/inc
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-01-06 01:47:28 -0800
committerYamaArashi <shadow962@live.com>2016-01-06 01:47:28 -0800
commitbe8b04496302184c6e8f04d6179f9c3afc50aeb6 (patch)
tree726e2468c0c07add773c0dbd86ab6386844259ae /gcc/cp/inc
initial commit
Diffstat (limited to 'gcc/cp/inc')
-rwxr-xr-xgcc/cp/inc/exception39
-rwxr-xr-xgcc/cp/inc/new60
-rwxr-xr-xgcc/cp/inc/new.h11
-rwxr-xr-xgcc/cp/inc/typeinfo58
4 files changed, 168 insertions, 0 deletions
diff --git a/gcc/cp/inc/exception b/gcc/cp/inc/exception
new file mode 100755
index 0000000..32efb9f
--- /dev/null
+++ b/gcc/cp/inc/exception
@@ -0,0 +1,39 @@
+// Exception Handling support header for -*- C++ -*-
+// Copyright (C) 1995, 96-97, 1998 Free Software Foundation
+
+#ifndef __EXCEPTION__
+#define __EXCEPTION__
+
+#pragma interface "exception"
+
+extern "C++" {
+
+namespace std {
+
+class exception {
+public:
+ exception () { }
+ virtual ~exception () { }
+ virtual const char* what () const;
+};
+
+class bad_exception : public exception {
+public:
+ bad_exception () { }
+ virtual ~bad_exception () { }
+};
+
+typedef void (*terminate_handler) ();
+typedef void (*unexpected_handler) ();
+
+terminate_handler set_terminate (terminate_handler);
+void terminate () __attribute__ ((__noreturn__));
+unexpected_handler set_unexpected (unexpected_handler);
+void unexpected () __attribute__ ((__noreturn__));
+bool uncaught_exception ();
+
+} // namespace std
+
+} // extern "C++"
+
+#endif
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 */
diff --git a/gcc/cp/inc/new.h b/gcc/cp/inc/new.h
new file mode 100755
index 0000000..006be7e
--- /dev/null
+++ b/gcc/cp/inc/new.h
@@ -0,0 +1,11 @@
+// -*- C++ -*- forwarding header.
+
+#ifndef __NEW_H__
+#define __NEW_H__
+
+#include <new>
+
+using std::new_handler;
+using std::set_new_handler;
+
+#endif // __NEW_H__
diff --git a/gcc/cp/inc/typeinfo b/gcc/cp/inc/typeinfo
new file mode 100755
index 0000000..9347849
--- /dev/null
+++ b/gcc/cp/inc/typeinfo
@@ -0,0 +1,58 @@
+// RTTI support for -*- C++ -*-
+// Copyright (C) 1994, 95-97, 1998 Free Software Foundation
+
+#ifndef __TYPEINFO__
+#define __TYPEINFO__
+
+#pragma interface "typeinfo"
+
+#include <exception>
+
+extern "C++" {
+
+namespace std {
+
+class type_info {
+private:
+ // assigning type_info is not supported. made private.
+ type_info& operator= (const type_info&);
+ type_info (const type_info&);
+
+protected:
+ explicit type_info (const char *n): _name (n) { }
+
+ const char *_name;
+
+public:
+ // destructor
+ virtual ~type_info ();
+
+ bool before (const type_info& arg) const;
+ const char* name () const
+ { return _name; }
+ bool operator== (const type_info& arg) const;
+ bool operator!= (const type_info& arg) const;
+};
+
+inline bool type_info::
+operator!= (const type_info& arg) const
+{
+ return !operator== (arg);
+}
+
+class bad_cast : public exception {
+public:
+ bad_cast() { }
+ virtual ~bad_cast() { }
+};
+
+class bad_typeid : public exception {
+ public:
+ bad_typeid () { }
+ virtual ~bad_typeid () { }
+};
+
+} // namespace std
+
+} // extern "C++"
+#endif