10#ifndef CPROVER_UTIL_NAMESPACE_H
11#define CPROVER_UTIL_NAMESPACE_H
51 "we are assuming that a name exists in the namespace "
52 "when this function is called - identifier " +
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
C enum tag type, i.e., c_enum_typet with an identifier.
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Base class for all expressions.
A multi namespace is essentially a namespace, with a list of namespaces.
void add(const symbol_table_baset &symbol_table)
Add symbol table to the list of symbol tables this multi-namespace is working with.
bool lookup(const irep_idt &name, const symbolt *&symbol) const override
See documentation for namespace_baset::lookup().
multi_namespacet(const symbol_table_baset &symbol_table)
std::size_t smallest_unused_suffix(const std::string &prefix) const override
See documentation for namespace_baset::smallest_unused_suffix().
symbol_table_listt symbol_table_list
std::vector< const symbol_table_baset * > symbol_table_listt
Basic interface for a namespace.
const symbolt & lookup(const irep_idt &name) const
Lookup a symbol in the namespace.
void follow_macros(exprt &) const
Follow macros to their values in a given expression.
virtual bool lookup(const irep_idt &name, const symbolt *&symbol) const =0
Searches for a symbol named name.
virtual std::size_t smallest_unused_suffix(const std::string &prefix) const =0
Returns the minimal integer n such that there is no symbol (in any of the symbol tables) whose name i...
const union_typet & follow_tag(const union_tag_typet &) const
Follow type tag of union type.
virtual ~namespace_baset()
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
const symbol_table_baset * symbol_table1
bool lookup(const irep_idt &name, const symbolt *&symbol) const override
See documentation for namespace_baset::lookup().
namespacet(const symbol_table_baset &_symbol_table1, const symbol_table_baset &_symbol_table2)
namespacet(const symbol_table_baset &_symbol_table)
const symbol_table_baset & get_symbol_table() const
Return first symbol table registered with the namespace.
const symbol_table_baset * symbol_table2
std::size_t smallest_unused_suffix(const std::string &prefix) const override
See documentation for namespace_baset::smallest_unused_suffix().
namespacet(const symbol_table_baset *_symbol_table1, const symbol_table_baset *_symbol_table2)
A struct or union tag type.
A struct tag type, i.e., struct_typet with an identifier.
Structure type, corresponds to C style structs.
Base type for structs and unions.
Expression to hold a symbol (variable)
The symbol table base class interface.
A tag-based type, i.e., typet with an identifier.
The type of an expression, extends irept.
A union tag type, i.e., union_typet with an identifier.
const std::string & id2string(const irep_idt &d)
#define INVARIANT(CONDITION, REASON)
This macro uses the wrapper function 'invariant_violated_string'.