aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/inc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2000-04-10 16:21:28 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2000-04-10 16:21:28 +0000
commit6d61f400fd019ac06026d7aaa412e076096a7d37 (patch)
tree3768b8d8cee3530ee2196a4ce4071d1941cdee6e /gcc/cp/inc
parent4b7ee6157ab47830d9b198c2f968dbef9388e768 (diff)
downloadgcc-6d61f400fd019ac06026d7aaa412e076096a7d37.zip
gcc-6d61f400fd019ac06026d7aaa412e076096a7d37.tar.gz
gcc-6d61f400fd019ac06026d7aaa412e076096a7d37.tar.bz2
cxxabi.h (__pointer_type_info): Add restrict and incomplete flags.
* inc/cxxabi.h (__pointer_type_info): Add restrict and incomplete flags. (__pointer_type_info::__pointer_catch): New virtual function. (__pointer_to_member_type_info): Derive from __pointer_type_info. Adjust. (__pointer_to_member_type_info::__do_catch): Remove. (__pointer_to_member_type_info::__is_pointer_p): Declare. (__pointer_to_member_type_info::__pointer_catch): Declare. * rtti.c (qualifier_flags): Add restrict flag. (ptmd_initializer): Reorder members. (create_tinfo_types): Expand comments. Reorder ptmd_desc_type_node members. * tinfo2.cc (__pointer_to_member_type_info::__is_pointer_p): Implement. (__pointer_type_info::__do_catch): Move specific code into __pointer_catch. Call it. (__pointer_type_info::__pointer_catch): Non-pointer-to-member specific catch checking. Fix void conversion check. (__pointer_to_member_type_info::__do_catch): Remove. (__pointer_to_member_type_info::__pointer_catch): Implement. From-SVN: r33061
Diffstat (limited to 'gcc/cp/inc')
-rw-r--r--gcc/cp/inc/cxxabi.h35
1 files changed, 18 insertions, 17 deletions
diff --git a/gcc/cp/inc/cxxabi.h b/gcc/cp/inc/cxxabi.h
index 66a6607..a40482c 100644
--- a/gcc/cp/inc/cxxabi.h
+++ b/gcc/cp/inc/cxxabi.h
@@ -64,15 +64,22 @@ public:
public:
enum quals_masks {
const_mask = 0x1,
- volatile_mask = 0x2
+ volatile_mask = 0x2,
+ restrict_mask = 0x4,
+ incomplete_mask = 0x8
};
/* implementation defined member functions */
protected:
virtual bool __is_pointer_p () const;
protected:
- virtual bool __do_catch (const std::type_info *__thr_type, void **__thr_obj,
+ virtual bool __do_catch (const std::type_info *__thr_type,
+ void **__thr_obj,
unsigned __outer) const;
+protected:
+ virtual bool __pointer_catch (const __pointer_type_info *__thr_type,
+ void **__thr_obj,
+ unsigned __outer) const;
};
/* type information for array objects */
@@ -120,36 +127,30 @@ public:
/* type information for a pointer to member variable (not function) */
class __pointer_to_member_type_info
- : public std::type_info
+ : public __pointer_type_info
{
/* abi defined member variables */
public:
const __class_type_info *klass; /* class of the member */
- const std::type_info *type; /* type of the pointed to member */
- int quals; /* qualifications of the pointed to type */
/* abi defined member functions */
public:
virtual ~__pointer_to_member_type_info ();
public:
explicit __pointer_to_member_type_info (const char *__n,
- const __class_type_info *__klass,
+ int __quals,
const std::type_info *__type,
- int __quals)
- : std::type_info (__n), klass (__klass), type (__type), quals (__quals)
+ const __class_type_info *__klass)
+ : __pointer_type_info (__n, __quals, __type), klass (__klass)
{ }
-/* implementation defined types */
-public:
- enum quals_masks {
- const_mask = 0x1,
- volatile_mask = 0x2
- };
-
/* implementation defined member functions */
protected:
- virtual bool __do_catch (const std::type_info *__thr_type, void **__thr_obj,
- unsigned __outer) const;
+ virtual bool __is_pointer_p () const;
+protected:
+ virtual bool __pointer_catch (const __pointer_type_info *__thr_type,
+ void **__thr_obj,
+ unsigned __outer) const;
};
class __class_type_info;