cprover
struct_typet Class Reference

Structure type, corresponds to C style structs. More...

#include <std_types.h>

+ Inheritance diagram for struct_typet:
+ Collaboration diagram for struct_typet:

Classes

class  baset
 Base class or struct that a class or struct inherits from. More...
 

Public Types

typedef std::vector< basetbasest
 
- Public Types inherited from struct_union_typet
typedef std::vector< componenttcomponentst
 
- Public Types inherited from irept
using baset = tree_implementationt
 
- Public Types inherited from sharing_treet< irept, std::map< irep_namet, irept > >
using dt = tree_nodet< irept, std::map< irep_namet, irept >, true >
 
using subt = typename dt::subt
 
using named_subt = typename dt::named_subt
 
using tree_implementationt = sharing_treet
 Used to refer to this class from derived classes. More...
 

Public Member Functions

 struct_typet ()
 
 struct_typet (componentst _components)
 
bool is_prefix_of (const struct_typet &other) const
 Returns true if the struct is a prefix of other, i.e., if this struct has n components then the component types and names of this struct must match the first n components of other struct. More...
 
bool is_class () const
 A struct may be a class, where members may have access restrictions. More...
 
const basestbases () const
 Get the collection of base classes/structs. More...
 
basestbases ()
 Get the collection of base classes/structs. More...
 
void add_base (const struct_tag_typet &base)
 Add a base class/struct. More...
 
optionalt< basetget_base (const irep_idt &id) const
 Return the base with the given name, if exists. More...
 
bool has_base (const irep_idt &id) const
 Test whether id is a base class/struct. More...
 
- Public Member Functions inherited from struct_union_typet
 struct_union_typet (const irep_idt &_id)
 
 struct_union_typet (const irep_idt &_id, componentst _components)
 
const componentstcomponents () const
 
componentstcomponents ()
 
bool has_component (const irep_idt &component_name) const
 
const componenttget_component (const irep_idt &component_name) const
 Get the reference to a component with given name. More...
 
std::size_t component_number (const irep_idt &component_name) const
 Return the sequence number of the component with given name. More...
 
const typetcomponent_type (const irep_idt &component_name) const
 
irep_idt get_tag () const
 
void set_tag (const irep_idt &tag)
 
bool is_class () const
 A struct may be a class, where members may have access restrictions. More...
 
irep_idt default_access () const
 Return the access specification for members where access has not been modified. More...
 
bool is_incomplete () const
 A struct/union may be incomplete. More...
 
void make_incomplete ()
 A struct/union may be incomplete. More...
 
- Public Member Functions inherited from typet
 typet ()
 
 typet (const irep_idt &_id)
 
 typet (irep_idt _id, typet _subtype)
 
const typetsubtype () const
 
typetsubtype ()
 
bool has_subtypes () const
 
bool has_subtype () const
 
void remove_subtype ()
 
const source_locationtsource_location () const
 
source_locationtadd_source_location ()
 
typetadd_type (const irep_namet &name)
 
const typetfind_type (const irep_namet &name) const
 
- Public Member Functions inherited from irept
bool is_nil () const
 
bool is_not_nil () const
 
 irept (const irep_idt &_id)
 
 irept (const irep_idt &_id, const named_subt &_named_sub, const subt &_sub)
 
 irept ()=default
 
const irep_idtid () const
 
const std::string & id_string () const
 
void id (const irep_idt &_data)
 
const ireptfind (const irep_namet &name) const
 
ireptadd (const irep_namet &name)
 
ireptadd (const irep_namet &name, irept irep)
 
const std::string & get_string (const irep_namet &name) const
 
const irep_idtget (const irep_namet &name) const
 
bool get_bool (const irep_namet &name) const
 
signed int get_int (const irep_namet &name) const
 
std::size_t get_size_t (const irep_namet &name) const
 
long long get_long_long (const irep_namet &name) const
 
void set (const irep_namet &name, const irep_idt &value)
 
void set (const irep_namet &name, irept irep)
 
void set (const irep_namet &name, const long long value)
 
void remove (const irep_namet &name)
 
void move_to_sub (irept &irep)
 
void move_to_named_sub (const irep_namet &name, irept &irep)
 
bool operator== (const irept &other) const
 
bool operator!= (const irept &other) const
 
void swap (irept &irep)
 
bool operator< (const irept &other) const
 defines ordering on the internal representation More...
 
bool ordering (const irept &other) const
 defines ordering on the internal representation More...
 
int compare (const irept &i) const
 defines ordering on the internal representation comments are ignored More...
 
void clear ()
 
void make_nil ()
 
subtget_sub ()
 
const subtget_sub () const
 
named_subtget_named_sub ()
 
const named_subtget_named_sub () const
 
std::size_t hash () const
 
std::size_t full_hash () const
 
bool full_eq (const irept &other) const
 
std::string pretty (unsigned indent=0, unsigned max_indent=0) const
 
- Public Member Functions inherited from sharing_treet< irept, std::map< irep_namet, irept > >
 sharing_treet (irep_idt _id)
 
 sharing_treet (irep_idt _id, named_subt _named_sub, subt _sub)
 
 sharing_treet ()
 
 sharing_treet (const sharing_treet &irep)
 
 sharing_treet (sharing_treet &&irep)
 
sharing_treetoperator= (const sharing_treet &irep)
 
sharing_treetoperator= (sharing_treet &&irep)
 
 ~sharing_treet ()
 
const dtread () const
 
dtwrite ()
 

Additional Inherited Members

- Static Public Member Functions inherited from typet
static void check (const typet &, const validation_modet=validation_modet::INVARIANT)
 Check that the type is well-formed (shallow checks only, i.e., subtypes are not checked) More...
 
static void validate (const typet &type, const namespacet &, const validation_modet vm=validation_modet::INVARIANT)
 Check that the type is well-formed, assuming that its subtypes have already been checked for well-formedness. More...
 
static void validate_full (const typet &type, const namespacet &ns, const validation_modet vm=validation_modet::INVARIANT)
 Check that the type is well-formed (full check, including checks of subtypes) More...
 
- Static Public Member Functions inherited from irept
static bool is_comment (const irep_namet &name)
 
static std::size_t number_of_non_comments (const named_subt &)
 count the number of named_sub elements that are not comments More...
 
- Protected Member Functions inherited from sharing_treet< irept, std::map< irep_namet, irept > >
void detach ()
 
- Static Protected Member Functions inherited from sharing_treet< irept, std::map< irep_namet, irept > >
static void remove_ref (dt *old_data)
 
static void nonrecursive_destructor (dt *old_data)
 Does the same as remove_ref, but using an explicit stack instead of recursion. More...
 
- Protected Attributes inherited from sharing_treet< irept, std::map< irep_namet, irept > >
dtdata
 
- Static Protected Attributes inherited from sharing_treet< irept, std::map< irep_namet, irept > >
static dt empty_d
 

Detailed Description

Structure type, corresponds to C style structs.

Definition at line 225 of file std_types.h.

Member Typedef Documentation

◆ basest

typedef std::vector<baset> struct_typet::basest

Definition at line 254 of file std_types.h.

Constructor & Destructor Documentation

◆ struct_typet() [1/2]

struct_typet::struct_typet ( )
inline

Definition at line 228 of file std_types.h.

◆ struct_typet() [2/2]

struct_typet::struct_typet ( componentst  _components)
inlineexplicit

Definition at line 232 of file std_types.h.

Member Function Documentation

◆ add_base()

void struct_typet::add_base ( const struct_tag_typet base)

Add a base class/struct.

Parameters
baseType of case/class struct to be added.

Definition at line 88 of file std_types.cpp.

◆ bases() [1/2]

basest& struct_typet::bases ( )
inline

Get the collection of base classes/structs.

Definition at line 263 of file std_types.h.

◆ bases() [2/2]

const basest& struct_typet::bases ( ) const
inline

Get the collection of base classes/structs.

Definition at line 257 of file std_types.h.

◆ get_base()

optionalt< struct_typet::baset > struct_typet::get_base ( const irep_idt id) const

Return the base with the given name, if exists.

Parameters
idThe name of the base we are looking for.
Returns
The base if exists.

Definition at line 93 of file std_types.cpp.

◆ has_base()

bool struct_typet::has_base ( const irep_idt id) const
inline

Test whether id is a base class/struct.

Parameters
idsymbol type name
Returns
True if, and only if, the symbol type id is a base class/struct.

Definition at line 280 of file std_types.h.

◆ is_class()

bool struct_typet::is_class ( ) const
inline

A struct may be a class, where members may have access restrictions.

Definition at line 240 of file std_types.h.

◆ is_prefix_of()

bool struct_typet::is_prefix_of ( const struct_typet other) const

Returns true if the struct is a prefix of other, i.e., if this struct has n components then the component types and names of this struct must match the first n components of other struct.

Parameters
otherStruct type to compare with.

Definition at line 107 of file std_types.cpp.


The documentation for this class was generated from the following files: