diff options
author | YamaArashi <shadow962@live.com> | 2016-01-06 01:47:28 -0800 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-01-06 01:47:28 -0800 |
commit | be8b04496302184c6e8f04d6179f9c3afc50aeb6 (patch) | |
tree | 726e2468c0c07add773c0dbd86ab6386844259ae /gcc/cp/inc |
initial commit
Diffstat (limited to 'gcc/cp/inc')
-rwxr-xr-x | gcc/cp/inc/exception | 39 | ||||
-rwxr-xr-x | gcc/cp/inc/new | 60 | ||||
-rwxr-xr-x | gcc/cp/inc/new.h | 11 | ||||
-rwxr-xr-x | gcc/cp/inc/typeinfo | 58 |
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 |