libFirm
Enumeration

Enumeration types need not necessarily be represented explicitly by Firm types, as the frontend can lower them to integer constants as well. More...

Typedefs

typedef struct ir_enum_const ir_enum_const
 Enumeration constant.

Functions

ir_type * new_type_enumeration (ident *name, size_t n_enums)
 Create a new type enumeration – set the enumerators independently.
ir_type * new_d_type_enumeration (ident *name, size_t n_enums, type_dbg_info *db)
 Create a new type enumeration with debug information – set the enumerators independently.
ident * get_enumeration_ident (const ir_type *enumeration)
 Returns enumeration identifier.
const char * get_enumeration_name (const ir_type *enumeration)
 Returns enumeration identifier as c-string.
void set_enumeration_const (ir_type *enumeration, size_t pos, ident *nameid, ir_tarval *con)
 Sets an enumeration constant to a enumeration type at a given position.
size_t get_enumeration_n_enums (const ir_type *enumeration)
 Returns the number of enumeration values of this enumeration.
ir_enum_const * get_enumeration_const (const ir_type *enumeration, size_t pos)
 Returns the enumeration constant at a given position.
ir_type * get_enumeration_owner (const ir_enum_const *enum_cnst)
 Returns the enumeration type owner of an enumeration constant.
void set_enumeration_value (ir_enum_const *enum_cnst, ir_tarval *con)
 Sets the enumeration constant value.
ir_tarval * get_enumeration_value (const ir_enum_const *enum_cnst)
 Returns the enumeration constant value.
void set_enumeration_nameid (ir_enum_const *enum_cnst, ident *id)
 Assign an ident to an enumeration constant.
ident * get_enumeration_const_nameid (const ir_enum_const *enum_cnst)
 Returns the assigned ident of an enumeration constant.
const char * get_enumeration_const_name (const ir_enum_const *enum_cnst)
 Returns the assigned name of an enumeration constant.
int is_Enumeration_type (const ir_type *enumeration)
 Returns true if a type is a enumeration type.
const tp_op * get_tpop_enumeration (void)
 Returns type opcode for enumeration type.

Variables

const tp_op * type_enumeration
 This type opcode marks that the corresponding type is an enumeration type.

Detailed Description

Enumeration types need not necessarily be represented explicitly by Firm types, as the frontend can lower them to integer constants as well.

For debugging purposes or similar tasks this information is useful. The type state layout_fixed is set, if all enumeration constants have their tarvals assigned. Until then

Typedef Documentation

typedef struct ir_enum_const ir_enum_const

Enumeration constant.

Definition at line 81 of file firm_types.h.

Function Documentation

ir_enum_const* get_enumeration_const ( const ir_type *  enumeration,
size_t  pos 
)

Returns the enumeration constant at a given position.

const char* get_enumeration_const_name ( const ir_enum_const *  enum_cnst)

Returns the assigned name of an enumeration constant.

ident* get_enumeration_const_nameid ( const ir_enum_const *  enum_cnst)

Returns the assigned ident of an enumeration constant.

ident* get_enumeration_ident ( const ir_type *  enumeration)

Returns enumeration identifier.

size_t get_enumeration_n_enums ( const ir_type *  enumeration)

Returns the number of enumeration values of this enumeration.

const char* get_enumeration_name ( const ir_type *  enumeration)

Returns enumeration identifier as c-string.

ir_type* get_enumeration_owner ( const ir_enum_const *  enum_cnst)

Returns the enumeration type owner of an enumeration constant.

ir_tarval* get_enumeration_value ( const ir_enum_const *  enum_cnst)

Returns the enumeration constant value.

const tp_op* get_tpop_enumeration ( void  )

Returns type opcode for enumeration type.

See Also
type_enumeration
int is_Enumeration_type ( const ir_type *  enumeration)

Returns true if a type is a enumeration type.

ir_type* new_d_type_enumeration ( ident *  name,
size_t  n_enums,
type_dbg_info *  db 
)

Create a new type enumeration with debug information – set the enumerators independently.

ir_type* new_type_enumeration ( ident *  name,
size_t  n_enums 
)

Create a new type enumeration – set the enumerators independently.

void set_enumeration_const ( ir_type *  enumeration,
size_t  pos,
ident *  nameid,
ir_tarval *  con 
)

Sets an enumeration constant to a enumeration type at a given position.

void set_enumeration_nameid ( ir_enum_const *  enum_cnst,
ident *  id 
)

Assign an ident to an enumeration constant.

void set_enumeration_value ( ir_enum_const *  enum_cnst,
ir_tarval *  con 
)

Sets the enumeration constant value.

Variable Documentation

const tp_op* type_enumeration

This type opcode marks that the corresponding type is an enumeration type.

Consequently it contains a list of idents for the enumeration identifiers and a list of target values that are the constants used to implement the enumerators. This struct is dynamically allocated but constant for the lifetime of the library.

Definition at line 1968 of file typerep.h.