aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/libsupc++/tinfo2.cc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2007-03-18 22:35:39 +0000
committerMark Mitchell <mark@codesourcery.com>2007-03-18 22:35:39 +0000
commit582f24568c146917cd21087b86d0b48c45f5eb11 (patch)
tree7f028c33262d404f400f12af277dcf03784a187b /libstdc++-v3/libsupc++/tinfo2.cc
parent7f7b36952b9ffba56995fb0984d0ac77cab21559 (diff)
* libsupc++/array_type_info.cc: Likewise.
* libsupc++/bad_cast.cc: Likewise. * libsupc++/bad_typeid.cc: Likewise. * libsupc++/class_type_info.cc: Likewise. * libsupc++/dyncast.cc: Likewise. * libsupc++/enum_type_info.cc: Likewise. * libsupc++/function_type_info.cc: Likewise. * libsupc++/fundamental_type_info.cc: Likewise. * libsupc++/pbase_type_info.cc: Likewise. * libsupc++/pmem_type_info.cc: Likewise. * libsupc++/pointer_type_info.cc: Likewise. * libsupc++/si_class_type_info.cc: Likewise. * libsupc++/vmi_class_type_info.cc: Likewise. * libsupc++/tinfo.h: Move inline type_info functions here. * libsupc++/tinfo.cc: Separate type_info classes into their own files. * libsupc++/tinfo2.cc: Likewise. * Makefile.am (sources): Mention new files. * Makefile.in: Regenerated. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@123042 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/libsupc++/tinfo2.cc')
-rw-r--r--libstdc++-v3/libsupc++/tinfo2.cc122
1 files changed, 0 insertions, 122 deletions
diff --git a/libstdc++-v3/libsupc++/tinfo2.cc b/libstdc++-v3/libsupc++/tinfo2.cc
index 8fdcac3604a..b2ae435c890 100644
--- a/libstdc++-v3/libsupc++/tinfo2.cc
+++ b/libstdc++-v3/libsupc++/tinfo2.cc
@@ -31,10 +31,6 @@
#include <cstddef>
#include "tinfo.h"
-#include "new" // for placement new
-
-// We can't rely on having stdlib.h if we're freestanding.
-extern "C" void abort ();
using std::type_info;
@@ -51,121 +47,3 @@ type_info::before (const type_info &arg) const
}
#endif
-
-#include <cxxabi.h>
-
-namespace __cxxabiv1 {
-
-using namespace std;
-
-// This has special meaning to the compiler, and will cause it
-// to emit the type_info structures for the fundamental types which are
-// mandated to exist in the runtime.
-__fundamental_type_info::
-~__fundamental_type_info ()
-{}
-
-__array_type_info::
-~__array_type_info ()
-{}
-
-__function_type_info::
-~__function_type_info ()
-{}
-
-__enum_type_info::
-~__enum_type_info ()
-{}
-
-__pbase_type_info::
-~__pbase_type_info ()
-{}
-
-__pointer_type_info::
-~__pointer_type_info ()
-{}
-
-__pointer_to_member_type_info::
-~__pointer_to_member_type_info ()
-{}
-
-bool __pointer_type_info::
-__is_pointer_p () const
-{
- return true;
-}
-
-bool __function_type_info::
-__is_function_p () const
-{
- return true;
-}
-
-bool __pbase_type_info::
-__do_catch (const type_info *thr_type,
- void **thr_obj,
- unsigned outer) const
-{
- if (*this == *thr_type)
- return true; // same type
- if (typeid (*this) != typeid (*thr_type))
- return false; // not both same kind of pointers
-
- if (!(outer & 1))
- // We're not the same and our outer pointers are not all const qualified
- // Therefore there must at least be a qualification conversion involved
- // But for that to be valid, our outer pointers must be const qualified.
- return false;
-
- const __pbase_type_info *thrown_type =
- static_cast <const __pbase_type_info *> (thr_type);
-
- if (thrown_type->__flags & ~__flags)
- // We're less qualified.
- return false;
-
- if (!(__flags & __const_mask))
- outer &= ~1;
-
- return __pointer_catch (thrown_type, thr_obj, outer);
-}
-
-inline bool __pbase_type_info::
-__pointer_catch (const __pbase_type_info *thrown_type,
- void **thr_obj,
- unsigned outer) const
-{
- return __pointee->__do_catch (thrown_type->__pointee, thr_obj, outer + 2);
-}
-
-bool __pointer_type_info::
-__pointer_catch (const __pbase_type_info *thrown_type,
- void **thr_obj,
- unsigned outer) const
-{
- if (outer < 2 && *__pointee == typeid (void))
- {
- // conversion to void
- return !thrown_type->__pointee->__is_function_p ();
- }
-
- return __pbase_type_info::__pointer_catch (thrown_type, thr_obj, outer);
-}
-
-bool __pointer_to_member_type_info::
-__pointer_catch (const __pbase_type_info *thr_type,
- void **thr_obj,
- unsigned outer) const
-{
- // This static cast is always valid, as our caller will have determined that
- // thr_type is really a __pointer_to_member_type_info.
- const __pointer_to_member_type_info *thrown_type =
- static_cast <const __pointer_to_member_type_info *> (thr_type);
-
- if (*__context != *thrown_type->__context)
- return false; // not pointers to member of same class
-
- return __pbase_type_info::__pointer_catch (thrown_type, thr_obj, outer);
-}
-
-} // namespace std