Don't include sys/personality.h in linux-low.cc anymore
[deliverable/binutils-gdb.git] / gdb / gdbtypes.h
index 30e8ac54260430daccb9f41af75f493a45e8be53..bb4d26eef1a1a842ec77c6a386e63d298b28eddb 100644 (file)
@@ -220,20 +220,6 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_flag_value, type_instance_flags);
 
 #define TYPE_NOTTEXT(t)        (((t)->instance_flags ()) & TYPE_INSTANCE_FLAG_NOTTEXT)
 
-/* * True if this type was declared using the "class" keyword.  This is
-   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)
-
-/* * 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.  */
 
@@ -815,12 +801,12 @@ struct main_type
   /* * True if this type was declared with "class" rather than
      "struct".  */
 
-  unsigned int flag_declared_class : 1;
+  unsigned int m_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;
+  unsigned int m_flag_flag_enum : 1;
 
   /* * A discriminant telling us which field of the type_specific
      union is being used for this type, if any.  */
@@ -1187,6 +1173,37 @@ struct type
     this->main_type->m_flag_endianity_not_default = endianity_is_not_default;
   }
 
+
+  /* True if this type was declared using the "class" keyword.  This is
+     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.  */
+
+  bool is_declared_class () const
+  {
+    return this->main_type->m_flag_declared_class;
+  }
+
+  void set_is_declared_class (bool is_declared_class) const
+  {
+    this->main_type->m_flag_declared_class = is_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.  */
+
+  bool is_flag_enum () const
+  {
+    return this->main_type->m_flag_flag_enum;
+  }
+
+  void set_is_flag_enum (bool is_flag_enum)
+  {
+    this->main_type->m_flag_flag_enum = is_flag_enum;
+  }
+
   /* * Assuming that THIS is a TYPE_CODE_FIXED_POINT, return a reference
      to this type's fixed_point_info.  */
 
@@ -1245,6 +1262,8 @@ struct type
   /* Set the owner of the type to be OBJFILE.  */
   void set_owner (objfile *objfile)
   {
+    gdb_assert (objfile != nullptr);
+
     this->main_type->m_owner.objfile = objfile;
     this->main_type->m_flag_objfile_owned = true;
   }
@@ -1252,6 +1271,8 @@ struct type
   /* Set the owner of the type to be ARCH.  */
   void set_owner (gdbarch *arch)
   {
+    gdb_assert (arch != nullptr);
+
     this->main_type->m_owner.gdbarch = arch;
     this->main_type->m_flag_objfile_owned = false;
   }
@@ -1259,7 +1280,7 @@ struct type
   /* Return the objfile owner of this type.
 
      Return nullptr if this type is not objfile-owned.  */
-  struct objfile *objfile () const
+  struct objfile *objfile_owner () const
   {
     if (!this->is_objfile_owned ())
       return nullptr;
@@ -1270,7 +1291,7 @@ struct type
   /* Return the gdbarch owner of this type.
 
      Return nullptr if this type is not gdbarch-owned.  */
-  gdbarch *arch () const
+  gdbarch *arch_owner () const
   {
     if (this->is_objfile_owned ())
       return nullptr;
@@ -1278,6 +1299,13 @@ struct type
     return this->main_type->m_owner.gdbarch;
   }
 
+  /* Return the type's architecture.  For types owned by an
+     architecture, that architecture is returned.  For types owned by an
+     objfile, that objfile's architecture is returned.
+
+     The return value is always non-nullptr.  */
+  gdbarch *arch () const;
+
   /* * Return true if this is an integer type whose logical (bit) size
      differs from its storage size; false otherwise.  Always return
      false for non-integer (i.e., non-TYPE_SPECIFIC_INT) types.  */
@@ -2236,8 +2264,8 @@ extern const struct floatformat *floatformats_bfloat16[BFD_ENDIAN_UNKNOWN];
 
 #define TYPE_ALLOC(t,size)                                              \
   (obstack_alloc (((t)->is_objfile_owned ()                             \
-                  ? &((t)->objfile ()->objfile_obstack)                \
-                  : gdbarch_obstack ((t)->arch ())),                   \
+                  ? &((t)->objfile_owner ()->objfile_obstack)          \
+                  : gdbarch_obstack ((t)->arch_owner ())),             \
                  size))
 
 
@@ -2254,12 +2282,6 @@ extern struct type *alloc_type (struct objfile *);
 extern struct type *alloc_type_arch (struct gdbarch *);
 extern struct type *alloc_type_copy (const struct type *);
 
-/* * Return the type's architecture.  For types owned by an
-   architecture, that architecture is returned.  For types owned by an
-   objfile, that objfile's architecture is returned.  */
-
-extern struct gdbarch *get_type_arch (const struct type *);
-
 /* * This returns the target type (or NULL) of TYPE, also skipping
    past typedefs.  */
 
@@ -2284,6 +2306,7 @@ extern struct type *init_float_type (struct objfile *, int, const char *,
                                     const struct floatformat **,
                                     enum bfd_endian = BFD_ENDIAN_UNKNOWN);
 extern struct type *init_decfloat_type (struct objfile *, int, const char *);
+extern bool can_create_complex_type (struct type *);
 extern struct type *init_complex_type (const char *, struct type *);
 extern struct type *init_pointer_type (struct objfile *, int, const char *,
                                       struct type *);
@@ -2657,9 +2680,9 @@ extern bool is_fixed_point_type (struct type *type);
 extern void allocate_fixed_point_type_info (struct type *type);
 
 /* * When the type includes explicit byte ordering, return that.
-   Otherwise, the byte ordering from gdbarch_byte_order for 
-   get_type_arch is returned.  */
-   
+   Otherwise, the byte ordering from gdbarch_byte_order for
+   the type's arch is returned.  */
+
 extern enum bfd_endian type_byte_order (const struct type *type);
 
 /* A flag to enable printing of debugging information of C++
This page took 0.027456 seconds and 4 git commands to generate.