⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cxxabi.h

📁 mingw32.rar
💻 H
📖 第 1 页 / 共 2 页
字号:
  class __class_type_info;  // Type information for a pointer to member variable.  class __pointer_to_member_type_info : public __pbase_type_info  {  public:    __class_type_info* __context;   // Class of the member.    explicit     __pointer_to_member_type_info(const char* __n, int __quals,				  const std::type_info* __type, 				  __class_type_info* __klass)    : __pbase_type_info(__n, __quals, __type), __context(__klass) { }    virtual     ~__pointer_to_member_type_info();  protected:    __pointer_to_member_type_info(const __pointer_to_member_type_info&);    __pointer_to_member_type_info&    operator=(const __pointer_to_member_type_info&);    // Implementation defined member function.    virtual bool     __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,		    unsigned __outer) const;  };  // Helper class for __vmi_class_type.  class __base_class_type_info  {  public:    const __class_type_info* 	__base_type;  // Base class type.    long 			__offset_flags;  // Offset and info.    enum __offset_flags_masks       {	__virtual_mask = 0x1,	__public_mask = 0x2,	__hwm_bit = 2,	__offset_shift = 8          // Bits to shift offset.      };      // Implementation defined member functions.    bool     __is_virtual_p() const    { return __offset_flags & __virtual_mask; }    bool     __is_public_p() const    { return __offset_flags & __public_mask; }    ptrdiff_t     __offset() const    {       // This shift, being of a signed type, is implementation      // defined. GCC implements such shifts as arithmetic, which is      // what we want.      return static_cast<ptrdiff_t>(__offset_flags) >> __offset_shift;    }  };  // Type information for a class.  class __class_type_info : public std::type_info  {  public:    explicit     __class_type_info (const char *__n) : type_info(__n) { }    virtual     ~__class_type_info ();    // Implementation defined types.    // The type sub_kind tells us about how a base object is contained    // within a derived object. We often do this lazily, hence the    // UNKNOWN value. At other times we may use NOT_CONTAINED to mean    // not publicly contained.    enum __sub_kind      {	// We have no idea.	__unknown = 0, 	// Not contained within us (in some circumstances this might	// mean not contained publicly)	__not_contained, 	// Contained ambiguously.	__contained_ambig,     	// Via a virtual path.	__contained_virtual_mask = __base_class_type_info::__virtual_mask, 	// Via a public path.	__contained_public_mask = __base_class_type_info::__public_mask,   	// Contained within us.	__contained_mask = 1 << __base_class_type_info::__hwm_bit,    	__contained_private = __contained_mask,	__contained_public = __contained_mask | __contained_public_mask      };    struct __upcast_result;    struct __dyncast_result;  protected:    // Implementation defined member functions.    virtual bool     __do_upcast(const __class_type_info* __dst_type, void**__obj_ptr) const;    virtual bool     __do_catch(const type_info* __thr_type, void** __thr_obj, 	       unsigned __outer) const;  public:    // Helper for upcast. See if DST is us, or one of our bases.     // Return false if not found, true if found.     virtual bool     __do_upcast(const __class_type_info* __dst, const void* __obj,		__upcast_result& __restrict __result) const;    // Indicate whether SRC_PTR of type SRC_TYPE is contained publicly    // within OBJ_PTR. OBJ_PTR points to a base object of our type,    // which is the destination type. SRC2DST indicates how SRC    // objects might be contained within this type.  If SRC_PTR is one    // of our SRC_TYPE bases, indicate the virtuality. Returns    // not_contained for non containment or private containment.    inline __sub_kind     __find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,		      const __class_type_info* __src_type, 		      const void* __src_ptr) const;    // Helper for dynamic cast. ACCESS_PATH gives the access from the    // most derived object to this base. DST_TYPE indicates the    // desired type we want. OBJ_PTR points to a base of our type    // within the complete object. SRC_TYPE indicates the static type    // started from and SRC_PTR points to that base within the most    // derived object. Fill in RESULT with what we find. Return true    // if we have located an ambiguous match.    virtual bool     __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,		 const __class_type_info* __dst_type, const void* __obj_ptr, 		 const __class_type_info* __src_type, const void* __src_ptr, 		 __dyncast_result& __result) const;        // Helper for find_public_subobj. SRC2DST indicates how SRC_TYPE    // bases are inherited by the type started from -- which is not    // necessarily the current type. The current type will be a base    // of the destination type.  OBJ_PTR points to the current base.    virtual __sub_kind     __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,			 const __class_type_info* __src_type,			 const void* __src_ptr) const;  };  // Type information for a class with a single non-virtual base.  class __si_class_type_info : public __class_type_info  {  public:    const __class_type_info* __base_type;    explicit     __si_class_type_info(const char *__n, const __class_type_info *__base)    : __class_type_info(__n), __base_type(__base) { }    virtual     ~__si_class_type_info();  protected:    __si_class_type_info(const __si_class_type_info&);    __si_class_type_info&    operator=(const __si_class_type_info&);    // Implementation defined member functions.    virtual bool     __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,		 const __class_type_info* __dst_type, const void* __obj_ptr,		 const __class_type_info* __src_type, const void* __src_ptr,		 __dyncast_result& __result) const;    virtual __sub_kind     __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,			 const __class_type_info* __src_type,			 const void* __sub_ptr) const;    virtual bool     __do_upcast(const __class_type_info*__dst, const void*__obj,		__upcast_result& __restrict __result) const;  };  // Type information for a class with multiple and/or virtual bases.  class __vmi_class_type_info : public __class_type_info   {  public:    unsigned int 		__flags;  // Details about the class hierarchy.    unsigned int 		__base_count;  // Dumber of direct bases.    // The array of bases uses the trailing array struct hack so this    // class is not constructable with a normal constructor. It is    // internally generated by the compiler.    __base_class_type_info 	__base_info[1];  // Array of bases.    explicit     __vmi_class_type_info(const char* __n, int ___flags)    : __class_type_info(__n), __flags(___flags), __base_count(0) { }    virtual     ~__vmi_class_type_info();    // Implementation defined types.    enum __flags_masks       {	__non_diamond_repeat_mask = 0x1, // Distinct instance of repeated base.	__diamond_shaped_mask = 0x2, // Diamond shaped multiple inheritance.	__flags_unknown_mask = 0x10      };  protected:    // Implementation defined member functions.    virtual bool     __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,		 const __class_type_info* __dst_type, const void* __obj_ptr,		 const __class_type_info* __src_type, const void* __src_ptr,		 __dyncast_result& __result) const;    virtual __sub_kind     __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr, 			 const __class_type_info* __src_type,			 const void* __src_ptr) const;        virtual bool     __do_upcast(const __class_type_info* __dst, const void* __obj,		__upcast_result& __restrict __result) const;  };  // Dynamic cast runtime.  // src2dst has the following possible values  //  >-1: src_type is a unique public non-virtual base of dst_type  //       dst_ptr + src2dst == src_ptr  //   -1: unspecified relationship  //   -2: src_type is not a public base of dst_type  //   -3: src_type is a multiple public non-virtual base of dst_type  extern "C" void*  __dynamic_cast(const void* __src_ptr, // Starting object.		 const __class_type_info* __src_type, // Static type of object.		 const __class_type_info* __dst_type, // Desired target type.		 ptrdiff_t __src2dst); // How src and dst are related.  // Returns the type_info for the currently handled exception [15.3/8], or  // null if there is none.  extern "C" std::type_info*  __cxa_current_exception_type();} // namespace __cxxabiv1// User programs should use the alias `abi'. namespace abi = __cxxabiv1;#endif // __cplusplus#endif // __CXXABI_H 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -