CBMC
|
Stores identifiers in unescaped and unquoted form. More...
#include <smt_terms.h>
Public Member Functions | |
smt_identifier_termt (irep_idt identifier, smt_sortt sort, std::vector< smt_indext > indices={}) | |
Constructs an identifier term with the given identifier and sort . More... | |
irep_idt | identifier () const |
std::vector< std::reference_wrapper< const smt_indext > > | indices () const |
Public Member Functions inherited from smt_termt | |
smt_termt ()=delete | |
bool | operator== (const smt_termt &) const |
bool | operator!= (const smt_termt &) const |
const smt_sortt & | get_sort () const |
void | accept (smt_term_const_downcast_visitort &) const |
void | accept (smt_term_const_downcast_visitort &&) const |
std::string | pretty (unsigned indent=0, unsigned max_indent=0) const |
Additional Inherited Members | |
Protected Types inherited from irept | |
using | baset = tree_implementationt |
Protected Types inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > > | |
using | dt = tree_nodet< irept, forward_list_as_mapt< irep_idt, 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... | |
Protected Member Functions inherited from smt_termt | |
smt_termt (irep_idt id, smt_sortt sort) | |
Protected 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_idt & | id () const |
const std::string & | id_string () const |
void | id (const irep_idt &_data) |
const irept & | find (const irep_idt &name) const |
irept & | add (const irep_idt &name) |
irept & | add (const irep_idt &name, irept irep) |
const std::string & | get_string (const irep_idt &name) const |
const irep_idt & | get (const irep_idt &name) const |
bool | get_bool (const irep_idt &name) const |
signed int | get_int (const irep_idt &name) const |
std::size_t | get_size_t (const irep_idt &name) const |
long long | get_long_long (const irep_idt &name) const |
void | set (const irep_idt &name, const irep_idt &value) |
void | set (const irep_idt &name, irept irep) |
void | set (const irep_idt &name, const long long value) |
void | set_size_t (const irep_idt &name, const std::size_t value) |
void | remove (const irep_idt &name) |
void | move_to_sub (irept &irep) |
void | move_to_named_sub (const irep_idt &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 () |
subt & | get_sub () |
const subt & | get_sub () const |
named_subt & | get_named_sub () |
const named_subt & | get_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 |
Protected Member Functions inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > > | |
void | detach () |
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_treet & | operator= (const sharing_treet &irep) |
sharing_treet & | operator= (sharing_treet &&irep) |
~sharing_treet () | |
const dt & | read () const |
dt & | write () |
Static Protected Member Functions inherited from irept | |
static bool | is_comment (const irep_idt &name) |
static std::size_t | number_of_non_comments (const named_subt &) |
count the number of named_sub elements that are not comments More... | |
Static Protected Member Functions inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, 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, forward_list_as_mapt< irep_idt, irept > > | |
dt * | data |
Static Protected Attributes inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > > | |
static dt | empty_d |
Private Member Functions inherited from smt_indext::storert< smt_identifier_termt > | |
storert () | |
Static Private Member Functions inherited from smt_indext::storert< smt_identifier_termt > | |
static irept | upcast (smt_indext index) |
static const smt_indext & | downcast (const irept &) |
Stores identifiers in unescaped and unquoted form.
Any escaping or quoting required should be performed during printing.
The SMT-LIB standard Version 2.6 refers to "indexed" identifiers which have 1 or more indices and "simple" identifiers which have no indicies. The internal smt_identifier_termt
class is used for both kinds of identifier which are distinguished based on whether the collection of indices
is empty or not.
Definition at line 91 of file smt_terms.h.
smt_identifier_termt::smt_identifier_termt | ( | irep_idt | identifier, |
smt_sortt | sort, | ||
std::vector< smt_indext > | indices = {} |
||
) |
Constructs an identifier term with the given identifier
and sort
.
identifier | This should be the unescaped form of the identifier. Escaping of the identifier if required is to be performed as part of the printing operation. The given identifier is checked to ensure that it has not already been escaped, in order to avoid escaping it twice. Performing escaping during the printing will ensure that the identifiers output conform to the specification of the concrete form. |
sort | The sort which this term will have. All terms in our abstract form must be sorted, even if those sorts are not printed in all contexts. |
indices | This should be collection of indices for an indexed identifier, or an empty collection for simple (non-indexed) identifiers. |
Definition at line 60 of file smt_terms.cpp.
irep_idt smt_identifier_termt::identifier | ( | ) | const |
Definition at line 81 of file smt_terms.cpp.
std::vector< std::reference_wrapper< const smt_indext > > smt_identifier_termt::indices | ( | ) | const |
Definition at line 87 of file smt_terms.cpp.