cprover
typet Class Reference

The type of an expression, extends irept. More...

#include <type.h>

+ Inheritance diagram for typet:
+ Collaboration diagram for typet:

Public Member Functions

 typet ()
 
 typet (const irep_idt &_id)
 
 typet (const irep_idt &_id, const 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 ()
 
 irept (const irept &irep)
 
 irept (irept &&irep)
 
ireptoperator= (const irept &irep)
 
ireptoperator= (irept &&irep)
 
 ~irept ()
 
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, const 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
 
unsigned int get_unsigned_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, const 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 More...
 
void clear ()
 
void make_nil ()
 
subtget_sub ()
 
const subtget_sub () const
 
named_subtget_named_sub ()
 
const named_subtget_named_sub () const
 
named_subtget_comments ()
 
const named_subtget_comments () 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
 
const dtread () const
 
dtwrite ()
 

Static Public Member Functions

static void check (const typet &type, const validation_modet vm=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 &ns, 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...
 

Additional Inherited Members

- Public Types inherited from irept
typedef std::vector< ireptsubt
 
typedef std::map< irep_namet, ireptnamed_subt
 
- Protected Member Functions inherited from irept
void detach ()
 
- Static Protected Member Functions inherited from irept
static bool is_comment (const irep_namet &name)
 
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 irept
dtdata
 
- Static Protected Attributes inherited from irept
static dt empty_d
 

Detailed Description

The type of an expression, extends irept.

Types may have subtypes. This is modeled with two subs named “subtype” (a single type) and “subtypes” (a vector of types). The class typet only adds specialized methods for accessing the subtype information to the interface of irept. For pre-defined types see std_types.h and mathematical_types.h.

Definition at line 27 of file type.h.

Constructor & Destructor Documentation

◆ typet() [1/3]

typet::typet ( )
inline

Definition at line 30 of file type.h.

◆ typet() [2/3]

typet::typet ( const irep_idt _id)
inlineexplicit

Definition at line 32 of file type.h.

◆ typet() [3/3]

typet::typet ( const irep_idt _id,
const typet _subtype 
)
inline

Definition at line 33 of file type.h.

Member Function Documentation

◆ add_source_location()

source_locationt& typet::add_source_location ( )
inline

Definition at line 67 of file type.h.

◆ add_type()

typet& typet::add_type ( const irep_namet name)
inline

Definition at line 72 of file type.h.

◆ check()

static void typet::check ( const typet type,
const validation_modet  vm = validation_modet::INVARIANT 
)
inlinestatic

Check that the type is well-formed (shallow checks only, i.e., subtypes are not checked)

Subclasses may override this function to provide specific well-formedness checks for the corresponding types.

The validation mode indicates whether well-formedness check failures are reported via DATA_INVARIANT violations or exceptions.

Definition at line 90 of file type.h.

◆ find_type()

const typet& typet::find_type ( const irep_namet name) const
inline

Definition at line 77 of file type.h.

◆ has_subtype()

bool typet::has_subtype ( ) const
inline

Definition at line 56 of file type.h.

◆ has_subtypes()

bool typet::has_subtypes ( ) const
inline

Definition at line 53 of file type.h.

◆ remove_subtype()

void typet::remove_subtype ( )
inline

Definition at line 59 of file type.h.

◆ source_location()

const source_locationt& typet::source_location ( ) const
inline

Definition at line 62 of file type.h.

◆ subtype() [1/2]

const typet& typet::subtype ( ) const
inline

Definition at line 38 of file type.h.

◆ subtype() [2/2]

typet& typet::subtype ( )
inline

Definition at line 45 of file type.h.

◆ validate()

static void typet::validate ( const typet type,
const namespacet ns,
const validation_modet  vm = validation_modet::INVARIANT 
)
inlinestatic

Check that the type is well-formed, assuming that its subtypes have already been checked for well-formedness.

Subclasses may override this function to provide specific well-formedness checks for the corresponding types.

The validation mode indicates whether well-formedness check failures are reported via DATA_INVARIANT violations or exceptions.

Definition at line 104 of file type.h.

◆ validate_full()

static void typet::validate_full ( const typet type,
const namespacet ns,
const validation_modet  vm = validation_modet::INVARIANT 
)
inlinestatic

Check that the type is well-formed (full check, including checks of subtypes)

Subclasses may override this function, though in most cases the provided implementation should be sufficient.

The validation mode indicates whether well-formedness check failures are reported via DATA_INVARIANT violations or exceptions.

Definition at line 120 of file type.h.


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