#include <optional>
#include <irep2/irep2.h>
#include <irep2/type_kinds.inc>
Go to the source code of this file.
◆ IREP2_TYPE [1/2]
| #define IREP2_TYPE |
( |
| kind, |
|
|
| pretty ) |
Value:
#define type_macros(name)
Definition irep2_type.h:700
◆ IREP2_TYPE [2/2]
| #define IREP2_TYPE |
( |
| kind, |
|
|
| pretty ) |
◆ irep_typedefs
| #define irep_typedefs |
( |
| basename | ) |
|
Value: template <typename... Args> \
inline type2tc basename##_type2tc(Args &&...args) \
{ \
}
irep_container< typename T::base_type > make_irep(Args &&...args)
Allocate a fresh irep2 node and adopt it into an irep_container.
Definition irep2.h:451
irep_container< type2t > type2tc
Definition irep2.h:430
◆ type_macros
| #define type_macros |
( |
| name | ) |
|
Value: inline bool is_##name##_type(
const expr2tc &e) \
{ \
return e->type->type_id == type2t::name##_id; \
} \
inline bool is_##name##_type(
const type2tc &t) \
{ \
return t->type_id == type2t::name##_id; \
} \
{ \
*t.get(), type2t::name##_id, #name); \
} \
{ \
*t.get(), type2t::name##_id, #name); \
} \
{ \
return is_##
name##_type(t) ? &to_##
name##_type(t) : nullptr; \
}
Derived & irep2_checked_type_cast(type2t &t, type2t::type_ids expected, const char *target_name)
Definition irep2.h:1202
irep_container< expr2t > expr2tc
Definition irep2.h:431
◆ pointer_ref_kindt
How the source spelled a pointer.
The irept form keeps this in the #reference / #rvalue_reference attributes, which have no equivalent here, so a round trip used to erase it.
| Enumerator |
|---|
| NONE | |
| LVALUE | |
| RVALUE | |
◆ irep_typedefs() [1/15]
◆ irep_typedefs() [2/15]
◆ irep_typedefs() [3/15]
◆ irep_typedefs() [4/15]
| irep_typedefs |
( |
complex | | ) |
|
◆ irep_typedefs() [5/15]
| irep_typedefs |
( |
cpp_name | | ) |
|
◆ irep_typedefs() [6/15]
◆ irep_typedefs() [7/15]
| irep_typedefs |
( |
fixedbv | | ) |
|
◆ irep_typedefs() [8/15]
| irep_typedefs |
( |
floatbv | | ) |
|
◆ irep_typedefs() [9/15]
| irep_typedefs |
( |
pointer | | ) |
|
◆ irep_typedefs() [10/15]
| irep_typedefs |
( |
signedbv | | ) |
|
◆ irep_typedefs() [11/15]
◆ irep_typedefs() [12/15]
◆ irep_typedefs() [13/15]
◆ irep_typedefs() [14/15]
| irep_typedefs |
( |
unsignedbv | | ) |
|
◆ irep_typedefs() [15/15]
◆ struct_union_get_component_number()
| std::optional< unsigned int > struct_union_get_component_number |
( |
const type2tc & | t, |
|
|
const irep_idt & | comp ) |
Index of comp in struct/union/complex member_names, or nullopt if it is missing or duplicated (the latter is malformed IR).
◆ struct_union_member_names()
◆ struct_union_members() [1/2]
◆ struct_union_members() [2/2]
Mutating reference to a struct/union's members vector.
Unlike the read-only overload this does NOT synthesise a view for complex_type (which has no members vector), so it is restricted to struct_id and union_id; passing anything else aborts. Detaches t first via the non-const to_*_type accessor, so the returned reference is safe to mutate.
◆ struct_union_name()
◆ struct_union_packed()