Go to the documentation of this file.
3 #ifndef CPROVER_SOLVERS_SMT2_INCREMENTAL_SMT_INDEX_H
4 #define CPROVER_SOLVERS_SMT2_INCREMENTAL_SMT_INDEX_H
25 template <
typename sub_
classt>
26 const sub_classt *
cast()
const &;
35 template <
typename derivedt>
48 template <
typename derivedt>
52 std::is_base_of<irept, derivedt>::value &&
54 "Only irept based classes need to upcast smt_sortt to store it.");
57 template <
typename derivedt>
60 return static_cast<irept &&
>(std::move(index));
63 template <
typename derivedt>
73 std::size_t
value()
const;
90 #endif // CPROVER_SOLVERS_SMT2_INCREMENTAL_SMT_INDEX_H
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
bool operator!=(const smt_indext &) const
void accept(smt_index_const_downcast_visitort &) const
std::string pretty(unsigned indent=0, unsigned max_indent=0) const
For implementation of indexed identifiers.
irep_idt identifier() const
virtual void visit(const smt_numeral_indext &)=0
static const smt_indext & downcast(const irept &)
smt_numeral_indext(std::size_t value)
const sub_classt * cast() const &
smt_symbol_indext(irep_idt identifier)
std::size_t value() const
bool operator==(const smt_indext &) const
static irept upcast(smt_indext index)
Class for adding the ability to up and down cast smt_indext to and from irept.
There are a large number of kinds of tree structured or tree-like data in CPROVER.