Support fusion for ELFv2 stubs
[deliverable/binutils-gdb.git] / gdb / gdbtypes.h
index 97411d142c99e4f1791028f1225e075e6323f79b..86b1d629f441909396d2e790dd06dd5d555a78b6 100644 (file)
    languages using a common representation defined in gdbtypes.h.
 
    The main data structure is main_type; it consists of a code (such
-   as TYPE_CODE_ENUM for enumeration types), a number of
+   as #TYPE_CODE_ENUM for enumeration types), a number of
    generally-useful fields such as the printable name, and finally a
-   field type_specific that is a union of info specific to particular
-   languages or other special cases (such as calling convention).
+   field main_type::type_specific that is a union of info specific to
+   particular languages or other special cases (such as calling
+   convention).
 
-   The available type codes are defined in enum type_code.  The enum
+   The available type codes are defined in enum #type_code.  The enum
    includes codes both for types that are common across a variety
    of languages, and for types that are language-specific.
 
-   Most accesses to type fields go through macros such as TYPE_CODE
-   and TYPE_FN_FIELD_CONST.  These are written such that they can be
-   used as both rvalues and lvalues.
+   Most accesses to type fields go through macros such as
+   #TYPE_CODE(thistype) and #TYPE_FN_FIELD_CONST(thisfn, n).  These are
+   written such that they can be used as both rvalues and lvalues.
  */
 
 #include "hashtab.h"
@@ -331,8 +332,10 @@ enum type_instance_flag_value
 #define TYPE_OBJFILE(t) (TYPE_OBJFILE_OWNED(t)? TYPE_OWNER(t).objfile : NULL)
 
 /* * True if this type was declared using the "class" keyword.  This is
-   only valid for C++ structure types, and only used for displaying
-   the type.  If false, the structure was declared as a "struct".  */
+   only valid for C++ structure and enum types.  If false, a structure
+   was declared as a "struct"; if true it was declared "class".  For
+   enum types, this is true when "enum class" or "enum struct" was
+   used to declare the type..  */
 
 #define TYPE_DECLARED_CLASS(t) (TYPE_MAIN_TYPE (t)->flag_declared_class)
 
@@ -663,6 +666,16 @@ struct main_type
       /* * High bound of range.  */
 
       struct dynamic_prop high;
+
+      /* True if HIGH range bound contains the number of elements in the
+        subrange. This affects how the final hight bound is computed.  */
+
+      int flag_upper_bound_is_count : 1;
+
+      /* True if LOW or/and HIGH are resolved into a static bound from
+        a dynamic one.  */
+
+      int flag_bound_evaluated : 1;
     } *bounds;
 
   } flds_bnds;
@@ -1206,7 +1219,6 @@ extern void allocate_gnat_aux_type (struct type *);
 #define TYPE_VPTR_BASETYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype
 #define TYPE_DOMAIN_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype
 #define TYPE_VPTR_FIELDNO(thistype) TYPE_MAIN_TYPE(thistype)->vptr_fieldno
-#define TYPE_FN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fields
 #define TYPE_NFN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields
 #define TYPE_SPECIFIC_FIELD(thistype) \
   TYPE_MAIN_TYPE(thistype)->type_specific_field
This page took 0.028984 seconds and 4 git commands to generate.