summaryrefslogtreecommitdiff
path: root/src/private_typeinfo.h
diff options
context:
space:
mode:
authorHoward Hinnant <hhinnant@apple.com>2012-01-09 17:10:00 +0000
committerHoward Hinnant <hhinnant@apple.com>2012-01-09 17:10:00 +0000
commit152beb7a421a05155ae339434c2b48e2151111cd (patch)
tree60822ac22bc3e9bc01276850dfa69515f5a02dc7 /src/private_typeinfo.h
parent3fa75e1680116753824c47e3eba5648abbf891d0 (diff)
Getting a start on the typeinfo infrastructure.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@147776 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'src/private_typeinfo.h')
-rw-r--r--src/private_typeinfo.h130
1 files changed, 130 insertions, 0 deletions
diff --git a/src/private_typeinfo.h b/src/private_typeinfo.h
new file mode 100644
index 0000000..2a36985
--- /dev/null
+++ b/src/private_typeinfo.h
@@ -0,0 +1,130 @@
+//===------------------------ private_typeinfo.h --------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef __PRIVATE_TYPEINFO_H_
+#define __PRIVATE_TYPEINFO_H_
+
+#include <typeinfo>
+
+namespace __cxxabiv1
+{
+
+class __fundamental_type_info
+ : public std::type_info
+{
+public:
+ virtual ~__fundamental_type_info();
+};
+
+class __array_type_info
+ : public std::type_info
+{
+public:
+ virtual ~__array_type_info();
+};
+
+class __function_type_info
+ : public std::type_info
+{
+public:
+ virtual ~__function_type_info();
+};
+
+class __enum_type_info
+ : public std::type_info
+{
+public:
+ virtual ~__enum_type_info();
+};
+
+class __class_type_info
+ : public std::type_info
+{
+public:
+ virtual ~__class_type_info();
+};
+
+class __si_class_type_info
+ : public __class_type_info
+{
+public:
+ const __class_type_info* __base_type;
+
+ virtual ~__si_class_type_info();
+};
+
+struct __base_class_type_info
+{
+public:
+ const __class_type_info* __base_type;
+ long __offset_flags;
+
+ enum __offset_flags_masks
+ {
+ __virtual_mask = 0x1,
+ __public_mask = 0x2,
+ __offset_shift = 8
+ };
+};
+
+class __vmi_class_type_info
+ : public __class_type_info
+{
+public:
+ unsigned int __flags;
+ unsigned int __base_count;
+ __base_class_type_info __base_info[1];
+
+ enum __flags_masks
+ {
+ __non_diamond_repeat_mask = 0x1,
+ __diamond_shaped_mask = 0x2
+ };
+
+ virtual ~__vmi_class_type_info();
+};
+
+class __pbase_type_info
+ : public std::type_info
+{
+public:
+ unsigned int __flags;
+ const std::type_info* __pointee;
+
+ enum __masks
+ {
+ __const_mask = 0x1,
+ __volatile_mask = 0x2,
+ __restrict_mask = 0x4,
+ __incomplete_mask = 0x8,
+ __incomplete_class_mask = 0x10
+ };
+
+ virtual ~__pbase_type_info();
+};
+
+class __pointer_type_info
+ : public __pbase_type_info
+{
+public:
+ virtual ~__pointer_type_info();
+};
+
+class __pointer_to_member_type_info
+ : public __pbase_type_info
+{
+public:
+ const __class_type_info* __context;
+
+ virtual ~__pointer_to_member_type_info();
+};
+
+} // __cxxabiv1
+
+#endif // __PRIVATE_TYPEINFO_H_