*** empty log message ***
[deliverable/binutils-gdb.git] / gdb / gdbtypes.h
index ddad0dcbdbf6bca93e844cfe09b9efeb7001eee6..07c3a8656d94aeaa8b09d1b1903bb8f7de8f41eb 100644 (file)
@@ -290,6 +290,12 @@ enum type_instance_flag_value
 
 #define TYPE_DECLARED_CLASS(t) (TYPE_MAIN_TYPE (t)->flag_declared_class)
 
+/* True if this type is a "flag" enum.  A flag enum is one where all
+   the values are pairwise disjoint when "and"ed together.  This
+   affects how enum values are printed.  */
+
+#define TYPE_FLAG_ENUM(t) (TYPE_MAIN_TYPE (t)->flag_flag_enum)
+
 /* Constant type.  If this is set, the corresponding type has a
    const modifier.  */
 
@@ -400,6 +406,11 @@ struct main_type
      "struct".  */
   unsigned int flag_declared_class : 1;
 
+  /* True if this is an enum type with disjoint values.  This affects
+     how the enum is printed.  */
+
+  unsigned int flag_flag_enum : 1;
+
   /* A discriminant telling us which field of the type_specific union
      is being used for this type, if any.  */
   ENUM_BITFIELD(type_specific_kind) type_specific_field : 3;
@@ -425,9 +436,11 @@ struct main_type
   /* Name of this type, or NULL if none.
 
      This is used for printing only, except by poorly designed C++ code.
-     For looking up a name, look for a symbol in the VAR_DOMAIN.  */
+     For looking up a name, look for a symbol in the VAR_DOMAIN.
+     This is generally allocated in the objfile's obstack.
+     However coffread.c uses malloc.  */
 
-  char *name;
+  const char *name;
 
   /* Tag name for this type, or NULL if none.  This means that the
      name of the type consists of a keyword followed by the tag name.
@@ -440,7 +453,7 @@ struct main_type
      One more legitimate use is that if TYPE_FLAG_STUB is set, this is
      the name to use to look for definitions in other files.  */
 
-  char *tag_name;
+  const char *tag_name;
 
   /* Every type is now associated with a particular objfile, and the
      type is allocated on the objfile_obstack for that objfile.  One problem
@@ -545,7 +558,7 @@ struct main_type
         NULL for range bounds, array domains, and member function
         arguments.  */
 
-      char *name;
+      const char *name;
     } *fields;
 
     /* Union member used for range types.  */
@@ -750,9 +763,11 @@ struct cplus_struct_type
     struct fn_fieldlist
       {
 
-       /* The overloaded name.  */
+       /* The overloaded name.
+          This is generally allocated in the objfile's obstack.
+          However stabsread.c sometimes uses malloc.  */
 
-       char *name;
+       const char *name;
 
        /* The number of methods with this name.  */
 
@@ -851,13 +866,6 @@ struct cplus_struct_type
     struct symbol **template_arguments;
   };
 
-/* Struct used in computing virtual base list.  */
-struct vbase
-  {
-    struct type *vbasetype;    /* pointer to virtual base */
-    struct vbase *next;                /* next in chain */
-  };
-
 /* Struct used to store conversion rankings.  */
 struct rank
   {
@@ -1450,7 +1458,7 @@ extern void smash_to_methodptr_type (struct type *, struct type *);
 
 extern struct type *allocate_stub_method (struct type *);
 
-extern char *type_name_no_tag (const struct type *);
+extern const char *type_name_no_tag (const struct type *);
 
 extern const char *type_name_no_tag_or_error (struct type *type);
 
@@ -1478,10 +1486,10 @@ extern struct type *lookup_string_range_type (struct type *, int, int);
 extern struct type *create_set_type (struct type *, struct type *);
 
 extern struct type *lookup_unsigned_typename (const struct language_defn *,
-                                             struct gdbarch *,char *);
+                                             struct gdbarch *, const char *);
 
 extern struct type *lookup_signed_typename (const struct language_defn *,
-                                           struct gdbarch *,char *);
+                                           struct gdbarch *, const char *);
 
 extern struct type *check_typedef (struct type *);
 
This page took 0.026928 seconds and 4 git commands to generate.