GDB (xrefs)

Public Attributes | List of all members
cplus_struct_type Struct Reference

`#include "gdbtypes.h"`

## Public Attributes
short | n_baseclasses
short | vptr_fieldno
short | nfn_fields
unsigned short | n_template_arguments
int | is_dynamic: 2
struct type * | vptr_basetype
B_TYPE * | virtual_field_bits
B_TYPE * | private_field_bits
B_TYPE * | protected_field_bits
B_TYPE * | ignore_field_bits
struct fn_fieldlist * | fn_fieldlists
struct decl_field * | typedef_field
unsigned | typedef_field_count
struct decl_field * | nested_types
unsigned | nested_types_count
struct symbol ** | template_arguments

## Detailed Description

C++ language-specific information for TYPE_CODE_STRUCT and TYPE_CODE_UNION nodes.

Definition at line 910 of file gdbtypes.h.

## Member Data Documentation

## ◆ fn_fieldlists

struct fn_fieldlist* cplus_struct_type::fn_fieldlists

For classes, structures, and unions, a description of each field, which consists of an overloaded name, followed by the types of arguments that the method expects, and then the name after it has been renamed to make it distinct.

fn_fieldlists points to an array of nfn_fields of these.

Definition at line 999 of file gdbtypes.h.

## ◆ ignore_field_bits

B_TYPE* cplus_struct_type::ignore_field_bits

For classes with fields to be ignored, either this is optimized out or this field has length 0.

Definition at line 990 of file gdbtypes.h.

## ◆ is_dynamic

int cplus_struct_type::is_dynamic

One if this struct is a dynamic class, as defined by the Itanium C++ ABI: if it requires a virtual table pointer, because it or any of its base classes have one or more virtual member functions or virtual base classes. Minus one if not dynamic. Zero if not yet computed.

Definition at line 950 of file gdbtypes.h.

## ◆ n_baseclasses

short cplus_struct_type::n_baseclasses

Number of base classes this type derives from. The baseclasses are stored in the first N_BASECLASSES fields (i.e. the ‘fields’ field of the struct type). The only fields of struct field that are used are: type, name, loc.bitpos.

Definition at line 917 of file gdbtypes.h.

## ◆ n_template_arguments

unsigned short cplus_struct_type::n_template_arguments

Number of template arguments.

Definition at line 942 of file gdbtypes.h.

## ◆ nested_types

struct decl_field* cplus_struct_type::nested_types

The nested types defined by this type. nested_types points to an array of nested_types_count elements.

Definition at line 1011 of file gdbtypes.h.

## ◆ nested_types_count

unsigned cplus_struct_type::nested_types_count

Definition at line 1013 of file gdbtypes.h.

## ◆ nfn_fields

short cplus_struct_type::nfn_fields

Number of methods with unique names. All overloaded methods with the same name count only once.

Definition at line 938 of file gdbtypes.h.

## ◆ private_field_bits

B_TYPE* cplus_struct_type::private_field_bits

For classes with private fields, the number of fields is given by nfields and private_field_bits is a bit vector containing one bit per field.

If the field is private, the corresponding bit will be set.

Definition at line 977 of file gdbtypes.h.

## ◆ protected_field_bits

B_TYPE* cplus_struct_type::protected_field_bits

For classes with protected fields, the number of fields is given by nfields and protected_field_bits is a bit vector containing one bit per field.

If the field is private, the corresponding bit will be set.

Definition at line 985 of file gdbtypes.h.

## ◆ template_arguments

struct symbol** cplus_struct_type::template_arguments

The template arguments. This is an array with N_TEMPLATE_ARGUMENTS elements. This is NULL for non-template classes.

Definition at line 1019 of file gdbtypes.h.

## ◆ typedef_field

struct decl_field* cplus_struct_type::typedef_field

typedefs defined inside this class. typedef_field points to an array of typedef_field_count elements.

Definition at line 1004 of file gdbtypes.h.

## ◆ typedef_field_count

unsigned cplus_struct_type::typedef_field_count

Definition at line 1006 of file gdbtypes.h.

## ◆ virtual_field_bits

B_TYPE* cplus_struct_type::virtual_field_bits

For derived classes, the number of base classes is given by n_baseclasses and virtual_field_bits is a bit vector containing one bit per base class. If the base class is virtual, the corresponding bit will be set. I.E, given:

class A{}; class B{}; class C : public B, public virtual A {};

B is a baseclass of C; A is a virtual baseclass for C. This is a C++ 2.0 language feature.

Definition at line 969 of file gdbtypes.h.

## ◆ vptr_basetype

struct type* cplus_struct_type::vptr_basetype

The base class which defined the virtual function table pointer.

Definition at line 954 of file gdbtypes.h.

## ◆ vptr_fieldno

short cplus_struct_type::vptr_fieldno

Field number of the virtual function table pointer in VPTR_BASETYPE. All access to this field must be through TYPE_VPTR_FIELDNO as one thing it does is check whether the field has been initialized. Initially TYPE_RAW_CPLUS_SPECIFIC has the value of cplus_struct_default, which for portability reasons doesn't initialize this field. TYPE_VPTR_FIELDNO returns -1 for this case.

If -1, we were unable to find the virtual function table pointer in initial symbol reading, and get_vptr_fieldno should be called to find it if possible. get_vptr_fieldno will update this field if possible. Otherwise the value is left at -1.

Unused if this type does not have virtual functions.

Definition at line 933 of file gdbtypes.h.

The documentation for this struct was generated from the following file:

- /tmp/gdb-8.1/gdb/gdbtypes.h