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"
TYPE_CODE_MODULE, /**< Fortran module. */
/* * Internal function type. */
- TYPE_CODE_INTERNAL_FUNCTION
+ TYPE_CODE_INTERNAL_FUNCTION,
+
+ /* * Methods implemented in extension languages. */
+ TYPE_CODE_XMETHOD
};
/* * For now allow source to use TYPE_CODE_CLASS for C++ classes, as
#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)
#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 type is used to represent a GDB internal function. */
struct type *internal_fn;
+
+ /* * This type is used to represent an xmethod. */
+ struct type *xmethod;
};
/* * Return the type table for the specified architecture. */