blob: 2a36985730b76423c99b4fbd9f934888a506c1a8 [file] [log] [blame]
Howard Hinnant152beb72012-01-09 17:10:00 +00001//===------------------------ private_typeinfo.h --------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef __PRIVATE_TYPEINFO_H_
11#define __PRIVATE_TYPEINFO_H_
12
13#include <typeinfo>
14
15namespace __cxxabiv1
16{
17
18class __fundamental_type_info
19 : public std::type_info
20{
21public:
22 virtual ~__fundamental_type_info();
23};
24
25class __array_type_info
26 : public std::type_info
27{
28public:
29 virtual ~__array_type_info();
30};
31
32class __function_type_info
33 : public std::type_info
34{
35public:
36 virtual ~__function_type_info();
37};
38
39class __enum_type_info
40 : public std::type_info
41{
42public:
43 virtual ~__enum_type_info();
44};
45
46class __class_type_info
47 : public std::type_info
48{
49public:
50 virtual ~__class_type_info();
51};
52
53class __si_class_type_info
54 : public __class_type_info
55{
56public:
57 const __class_type_info* __base_type;
58
59 virtual ~__si_class_type_info();
60};
61
62struct __base_class_type_info
63{
64public:
65 const __class_type_info* __base_type;
66 long __offset_flags;
67
68 enum __offset_flags_masks
69 {
70 __virtual_mask = 0x1,
71 __public_mask = 0x2,
72 __offset_shift = 8
73 };
74};
75
76class __vmi_class_type_info
77 : public __class_type_info
78{
79public:
80 unsigned int __flags;
81 unsigned int __base_count;
82 __base_class_type_info __base_info[1];
83
84 enum __flags_masks
85 {
86 __non_diamond_repeat_mask = 0x1,
87 __diamond_shaped_mask = 0x2
88 };
89
90 virtual ~__vmi_class_type_info();
91};
92
93class __pbase_type_info
94 : public std::type_info
95{
96public:
97 unsigned int __flags;
98 const std::type_info* __pointee;
99
100 enum __masks
101 {
102 __const_mask = 0x1,
103 __volatile_mask = 0x2,
104 __restrict_mask = 0x4,
105 __incomplete_mask = 0x8,
106 __incomplete_class_mask = 0x10
107 };
108
109 virtual ~__pbase_type_info();
110};
111
112class __pointer_type_info
113 : public __pbase_type_info
114{
115public:
116 virtual ~__pointer_type_info();
117};
118
119class __pointer_to_member_type_info
120 : public __pbase_type_info
121{
122public:
123 const __class_type_info* __context;
124
125 virtual ~__pointer_to_member_type_info();
126};
127
128} // __cxxabiv1
129
130#endif // __PRIVATE_TYPEINFO_H_