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

📄 cp-tree.h

📁 gcc库的原代码,对编程有很大帮助.
💻 H
📖 第 1 页 / 共 5 页
字号:
/* Nonzero means that grokdeclarator works on a signature-local typedef.  */#define SIGNATURE_GROKKING_TYPEDEF(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.grokking_typedef)/* Nonzero means that this signature contains opaque type declarations.  */#define SIGNATURE_HAS_OPAQUE_TYPEDECLS(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_opaque_typedecls)/* Nonzero means that a signature table has been generated   for this signature.  */#define SIGTABLE_HAS_BEEN_GENERATED(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.sigtable_has_been_generated)/* If NODE is a class, this is the signature type that contains NODE's   signature after it has been computed using sigof().  */#define CLASSTYPE_SIGNATURE(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature)/* If NODE is a signature pointer or signature reference, this is the   signature type the pointer/reference points to.  */#define SIGNATURE_TYPE(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature)/* If NODE is a signature, this is a vector of all methods defined   in the signature or in its base types together with their default   implementations.  */#define SIGNATURE_METHOD_VEC(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature)/* If NODE is a signature, this is the _TYPE node that contains NODE's   signature pointer type.  */#define SIGNATURE_POINTER_TO(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature_pointer_to)/* If NODE is a signature, this is the _TYPE node that contains NODE's   signature reference type.  */#define SIGNATURE_REFERENCE_TO(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature_reference_to)/* The is the VAR_DECL that contains NODE's rtti.  */#define CLASSTYPE_RTTI(NODE) (TYPE_LANG_SPECIFIC(NODE)->rtti)/* List of all explicit methods (chained using DECL_NEXT_METHOD),   in order they were parsed. */#define CLASSTYPE_METHODS(NODE) (TYPE_LANG_SPECIFIC(NODE)->methods)/* Nonzero means that this _CLASSTYPE node overloads operator().  */#define TYPE_OVERLOADS_CALL_EXPR(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_call_overloaded)/* Nonzero means that this _CLASSTYPE node overloads operator[].  */#define TYPE_OVERLOADS_ARRAY_REF(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_array_ref_overloaded)/* Nonzero means that this _CLASSTYPE node overloads operator->.  */#define TYPE_OVERLOADS_ARROW(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_arrow_overloaded)/* Nonzero means that this _CLASSTYPE (or one of its ancestors) uses   multiple inheritance.  If this is 0 for the root of a type   hierarchy, then we can use more efficient search techniques.  */#define TYPE_USES_MULTIPLE_INHERITANCE(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.uses_multiple_inheritance)/* Nonzero means that this _CLASSTYPE (or one of its ancestors) uses   virtual base classes.  If this is 0 for the root of a type   hierarchy, then we can use more efficient search techniques.  */#define TYPE_USES_VIRTUAL_BASECLASSES(NODE) (TREE_LANG_FLAG_3(NODE))/* List of lists of member functions defined in this class.  */#define CLASSTYPE_METHOD_VEC(NODE) TYPE_METHODS(NODE)/* The first type conversion operator in the class (the others can be   searched with TREE_CHAIN), or the first non-constructor function if   there are no type conversion operators.  */#define CLASSTYPE_FIRST_CONVERSION(NODE) \  TREE_VEC_LENGTH (CLASSTYPE_METHOD_VEC (NODE)) > 1 \    ? TREE_VEC_ELT (CLASSTYPE_METHOD_VEC (NODE), 1) \    : NULL_TREE;/* Pointer from any member function to the head of the list of   member functions of the type that member function belongs to.  */#define CLASSTYPE_BASELINK_VEC(NODE) (TYPE_LANG_SPECIFIC(NODE)->baselink_vec)/* Mark bits for depth-first and breath-first searches.  */#define CLASSTYPE_MARKED(NODE)  (TYPE_LANG_SPECIFIC(NODE)->type_flags.marked)#define CLASSTYPE_MARKED2(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.marked2)#define CLASSTYPE_MARKED3(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.marked3)#define CLASSTYPE_MARKED4(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.marked4)#define CLASSTYPE_MARKED5(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.marked5)#define CLASSTYPE_MARKED6(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.marked6)/* Macros to modify the above flags */#define SET_CLASSTYPE_MARKED(NODE)	(CLASSTYPE_MARKED(NODE) = 1)#define CLEAR_CLASSTYPE_MARKED(NODE)	(CLASSTYPE_MARKED(NODE) = 0)#define SET_CLASSTYPE_MARKED2(NODE)	(CLASSTYPE_MARKED2(NODE) = 1)#define CLEAR_CLASSTYPE_MARKED2(NODE)	(CLASSTYPE_MARKED2(NODE) = 0)#define SET_CLASSTYPE_MARKED3(NODE)	(CLASSTYPE_MARKED3(NODE) = 1)#define CLEAR_CLASSTYPE_MARKED3(NODE)	(CLASSTYPE_MARKED3(NODE) = 0)#define SET_CLASSTYPE_MARKED4(NODE)	(CLASSTYPE_MARKED4(NODE) = 1)#define CLEAR_CLASSTYPE_MARKED4(NODE)	(CLASSTYPE_MARKED4(NODE) = 0)#define SET_CLASSTYPE_MARKED5(NODE)	(CLASSTYPE_MARKED5(NODE) = 1)#define CLEAR_CLASSTYPE_MARKED5(NODE)	(CLASSTYPE_MARKED5(NODE) = 0)#define SET_CLASSTYPE_MARKED6(NODE)	(CLASSTYPE_MARKED6(NODE) = 1)#define CLEAR_CLASSTYPE_MARKED6(NODE)	(CLASSTYPE_MARKED6(NODE) = 0)#define CLASSTYPE_TAGS(NODE)		(TYPE_LANG_SPECIFIC(NODE)->tags)/* If this class has any bases, this is the number of the base class from   which our VFIELD is based, -1 otherwise.  If this class has no base   classes, this is not used.   In D : B1, B2, PARENT would be 0, if D's vtable came from B1,   1, if D's vtable came from B2. */#define CLASSTYPE_VFIELD_PARENT(NODE)	(TYPE_LANG_SPECIFIC(NODE)->vfield_parent)/* Remove when done merging.  */#define CLASSTYPE_VFIELD(NODE) TYPE_VFIELD(NODE)/* The number of virtual functions defined for this   _CLASSTYPE node.  */#define CLASSTYPE_VSIZE(NODE) (TYPE_LANG_SPECIFIC(NODE)->vsize)/* The virtual base classes that this type uses.  */#define CLASSTYPE_VBASECLASSES(NODE) (TYPE_LANG_SPECIFIC(NODE)->vbases)/* The virtual function pointer fields that this type contains.  */#define CLASSTYPE_VFIELDS(NODE) (TYPE_LANG_SPECIFIC(NODE)->vfields)/* Number of baseclasses defined for this type.   0 means no base classes.  */#define CLASSTYPE_N_BASECLASSES(NODE) \  (TYPE_BINFO_BASETYPES (NODE) ? TREE_VEC_LENGTH (TYPE_BINFO_BASETYPES(NODE)) : 0)/* Memoize the number of super classes (base classes) tha this node   has.  That way we can know immediately (albeit conservatively how   large a multiple-inheritance matrix we need to build to find   derivation information.  */#define CLASSTYPE_N_SUPERCLASSES(NODE) (TYPE_LANG_SPECIFIC(NODE)->n_ancestors)#define CLASSTYPE_N_VBASECLASSES(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.n_vancestors)/* Record how deep the inheritance is for this class so `void*' conversions   are less favorable than a conversion to the most base type.  */#define CLASSTYPE_MAX_DEPTH(NODE) (TYPE_LANG_SPECIFIC(NODE)->max_depth)/* Used for keeping search-specific information.  Any search routine   which uses this must define what exactly this slot is used for.  */#define CLASSTYPE_SEARCH_SLOT(NODE) (TYPE_LANG_SPECIFIC(NODE)->search_slot)/* Entry for keeping memoization tables for this type to   hopefully speed up search routines.  Since it is a pointer,   it can mean almost anything.  */#define CLASSTYPE_MTABLE_ENTRY(NODE) (TYPE_LANG_SPECIFIC(NODE)->memoized_table_entry)/* This is the total size of the baseclasses defined for this type.   Needed because it is desirable to layout such information   before beginning to process the class itself, and we   don't want to compute it second time when actually laying   out the type for real.  */#define CLASSTYPE_SIZE(NODE) (TYPE_LANG_SPECIFIC(NODE)->size)#define CLASSTYPE_SIZE_UNIT(NODE) (TYPE_LANG_SPECIFIC(NODE)->size_unit)#define CLASSTYPE_MODE(NODE) (TYPE_LANG_SPECIFIC(NODE)->mode)#define CLASSTYPE_ALIGN(NODE) (TYPE_LANG_SPECIFIC(NODE)->align)/* This is the space needed for virtual base classes.  NULL if   there are no virtual basetypes.  */#define CLASSTYPE_VBASE_SIZE(NODE) (TYPE_LANG_SPECIFIC(NODE)->vbase_size)/* A cons list of structure elements which either have constructors   to be called, or virtual function table pointers which   need initializing.  Depending on what is being initialized,   the TREE_PURPOSE and TREE_VALUE fields have different meanings:   Member initialization: <FIELD_DECL, TYPE>   Base class construction: <NULL_TREE, BASETYPE>   Base class initialization: <BASE_INITIALIZATION, THESE_INITIALIZATIONS>   Whole type: <MEMBER_INIT, BASE_INIT>.  */#define CLASSTYPE_BASE_INIT_LIST(NODE) (TYPE_LANG_SPECIFIC(NODE)->base_init_list)/* A cons list of virtual functions which cannot be inherited by   derived classes.  When deriving from this type, the derived   class must provide its own definition for each of these functions.  */#define CLASSTYPE_ABSTRACT_VIRTUALS(NODE) (TYPE_LANG_SPECIFIC(NODE)->abstract_virtuals)/* Nonzero means that this aggr type has been `closed' by a semicolon.  */#define CLASSTYPE_GOT_SEMICOLON(NODE) (TYPE_LANG_SPECIFIC (NODE)->type_flags.got_semicolon)/* Nonzero means that the main virtual function table pointer needs to be   set because base constructors have placed the wrong value there.   If this is zero, it means that they placed the right value there,   and there is no need to change it.  */#define CLASSTYPE_NEEDS_VIRTUAL_REINIT(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.needs_virtual_reinit)/* Nonzero means that if this type has virtual functions, that   the virtual function table will be written out.  */#define CLASSTYPE_VTABLE_NEEDS_WRITING(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.vtable_needs_writing)/* Nonzero means that this type defines its own local type declarations.  */#define CLASSTYPE_LOCAL_TYPEDECLS(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.local_typedecls)/* Nonzero means that this type has an X() constructor.  */#define TYPE_HAS_DEFAULT_CONSTRUCTOR(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_default_ctor)/* Nonzero means the type declared a ctor as private or protected.  We   use this to make sure we don't try to generate a copy ctor for a    class that has a member of type NODE.  */#define TYPE_HAS_NONPUBLIC_CTOR(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_nonpublic_ctor)/* Ditto, for operator=.  */#define TYPE_HAS_NONPUBLIC_ASSIGN_REF(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_nonpublic_assign_ref)/* Many routines need to cons up a list of basetypes for access   checking.  This field contains a TREE_LIST node whose TREE_VALUE   is the main variant of the type, and whose TREE_VIA_PUBLIC   and TREE_VIA_VIRTUAL bits are correctly set.  */#define CLASSTYPE_AS_LIST(NODE) (TYPE_LANG_SPECIFIC(NODE)->as_list)/* Same, but cache a list whose value is the name of this type.  */#define CLASSTYPE_ID_AS_LIST(NODE) (TYPE_LANG_SPECIFIC(NODE)->id_as_list)/* Same, but cache a list whose value is the binfo of this type.  */#define CLASSTYPE_BINFO_AS_LIST(NODE) (TYPE_LANG_SPECIFIC(NODE)->binfo_as_list)/* A list of class types with which this type is a friend.  */#define CLASSTYPE_FRIEND_CLASSES(NODE) (TYPE_LANG_SPECIFIC(NODE)->friend_classes)/* Keep an inheritance lattice around so we can quickly tell whether   a type is derived from another or not.  */#define CLASSTYPE_MI_MATRIX(NODE) (TYPE_LANG_SPECIFIC(NODE)->mi_matrix)/* Say whether this node was declared as a "class" or a "struct".  */#define CLASSTYPE_DECLARED_CLASS(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.declared_class)/* whether this can be globalized.  */#define CLASSTYPE_NO_GLOBALIZE(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.no_globalize)/* Nonzero if this class has const members which have no specified initialization.  */#define CLASSTYPE_READONLY_FIELDS_NEED_INIT(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.const_needs_init)/* Nonzero if this class has ref members which have no specified initialization.  */#define CLASSTYPE_REF_FIELDS_NEED_INIT(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.ref_needs_init)/* Nonzero if this class is included from a header file which employs   `#pragma interface', and it is not included in its implementation file.  */#define CLASSTYPE_INTERFACE_ONLY(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.interface_only)/* Same as above, but for classes whose purpose we do not know.  */#define CLASSTYPE_INTERFACE_UNKNOWN(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.interface_unknown)#define CLASSTYPE_INTERFACE_KNOWN(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.interface_unknown == 0)#define SET_CLASSTYPE_INTERFACE_UNKNOWN_X(NODE,X) (TYPE_LANG_SPECIFIC(NODE)->type_flags.interface_unknown = !!(X))#define SET_CLASSTYPE_INTERFACE_UNKNOWN(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.interface_unknown = 1)#define SET_CLASSTYPE_INTERFACE_KNOWN(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.interface_unknown = 0)/* Nonzero if a _DECL node requires us to output debug info for this class.  */#define CLASSTYPE_DEBUG_REQUESTED(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.debug_requested)#define TYPE_INCOMPLETE(NODE) \  (TYPE_SIZE (NODE) == NULL_TREE && TREE_CODE (NODE) != TEMPLATE_TYPE_PARM)/* Additional macros for inheritance information.  */#define CLASSTYPE_VBINFO(NODE,VIA_PUBLIC) \  (TYPE_LANG_SPECIFIC (NODE)->vbinfo[VIA_PUBLIC])/* When following an binfo-specific chain, this is the cumulative   via-public flag.  */#define BINFO_VIA_PUBLIC(NODE) TREE_LANG_FLAG_5 (NODE)/* When building a matrix to determine by a single lookup   whether one class is derived from another or not,   this field is the index of the class in the table.  */#define CLASSTYPE_CID(NODE) (TYPE_LANG_SPECIFIC(NODE)->cid)#define BINFO_CID(NODE) CLASSTYPE_CID(BINFO_TYPE(NODE))/* Nonzero means marked by DFS or BFS search, including searches   by `get_binfo' and `get_base_distance'.  */#define BINFO_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?CLASSTYPE_MARKED(BINFO_TYPE(NODE)):TREE_LANG_FLAG_0(NODE))/* Macros needed because of C compilers that don't allow conditional   expressions to be lvalues.  Grr!  */#define SET_BINFO_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?SET_CLASSTYPE_MARKED(BINFO_TYPE(NODE)):(TREE_LANG_FLAG_0(NODE)=1))#define CLEAR_BINFO_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?CLEAR_CLASSTYPE_MARKED(BINFO_TYPE(NODE)):(TREE_LANG_FLAG_0(NODE)=0))/* Nonzero means marked in building initialization list.  */#define BINFO_BASEINIT_MARKED(NODE) CLASSTYPE_MARKED2 (BINFO_TYPE (NODE))/* Modifier macros */#define SET_BINFO_BASEINIT_MARKED(NODE) SET_CLASSTYPE_MARKED2 (BINFO_TYPE (NODE))#define CLEAR_BINFO_BASEINIT_MARKED(NODE) CLEAR_CLASSTYPE_MARKED2 (BINFO_TYPE (NODE))/* Nonzero means marked in search through virtual inheritance hierarchy.  */#define BINFO_VBASE_MARKED(NODE) CLASSTYPE_MARKED2 (BINFO_TYPE (NODE))/* Modifier macros */#define SET_BINFO_VBASE_MARKED(NODE) SET_CLASSTYPE_MARKED2 (BINFO_TYPE (NODE))#define CLEAR_BINFO_VBASE_MARKED(NODE) CLEAR_CLASSTYPE_MARKED2 (BINFO_TYPE (NODE))/* Nonzero means marked in search for members or member functions.  */#define BINFO_FIELDS_MARKED(NODE) \  (TREE_VIA_VIRTUAL(NODE)?CLASSTYPE_MARKED2 (BINFO_TYPE (NODE)):TREE_LANG_FLAG_2(NODE))#define SET_BINFO_FIELDS_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?SET_CLASSTYPE_MARKED2(BINFO_TYPE(NODE)):(TREE_LANG_FLAG_2(NODE)=1))#define CLEAR_BINFO_FIELDS_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?CLEAR_CLASSTYPE_MARKED2(BINFO_TYPE(NODE)):(TREE_LANG_FLAG_2(NODE)=0))/* Nonzero means that this class is on a path leading to a new vtable.  */#define BINFO_VTABLE_PATH_MARKED(NODE) \  (TREE_VIA_VIRTUAL(NODE)?CLASSTYPE_MARKED3(BINFO_TYPE(NODE)):TREE_LANG_FLAG_3(NODE))#define SET_BINFO_VTABLE_PATH_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?SET_CLASSTYPE_MARKED3(BINFO_TYPE(NODE)):(TREE_LANG_FLAG_3(NODE)=1))#define CLEAR_BINFO_VTABLE_PATH_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?CLEAR_CLASSTYPE_MARKED3(BINFO_TYPE(NODE)):(TREE_LANG_FLAG_3(NODE)=0))/* Nonzero means that this class has a new vtable.  */#define BINFO_NEW_VTABLE_MARKED(NODE) \  (TREE_VIA_VIRTUAL(NODE)?CLASSTYPE_MARKED4(BINFO_TYPE(NODE)):TREE_LANG_FLAG_4(NODE))#define SET_BINFO_NEW_VTABLE_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?SET_CLASSTYPE_MARKED4(BINFO_TYPE(NODE)):(TREE_LANG_FLAG_4(NODE)=1))#define CLEAR_BINFO_NEW_VTABLE_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?CLEAR_CLASSTYPE_MARKED4(BINFO_TYPE(NODE)):(TREE_LANG_FLAG_4(NODE)=0))/* Nonzero means this class has initialized its virtual baseclasses.  */#define BINFO_VBASE_INIT_MARKED(NODE) \  (TREE_VIA_VIRTUAL(NODE)?CLASSTYPE_MARKED5(BINFO_TYPE(NODE)):TREE_LANG_FLAG_5(NODE))#define SET_BINFO_VBASE_INIT_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?SET_CLASSTYPE_MARKED5(BINFO_TYPE(NODE)):(TREE_LANG_FLAG_5(NODE)=1))#define CLEAR_BINFO_VBASE_INIT_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?CLEAR_CLASSTYPE_MARKED5(BINFO_TYPE(NODE)):(TREE_LANG_FLAG_5(NODE)=0))/* Accessor macros for the vfield slots in structures.  *//* Get the assoc info that caused this vfield to exist.  */

⌨️ 快捷键说明

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