cprover
Loading...
Searching...
No Matches
constant_exprt Class Reference

A constant literal expression. More...

#include <std_expr.h>

Inheritance diagram for constant_exprt:
Collaboration diagram for constant_exprt:

Public Member Functions

 constant_exprt (const irep_idt &_value, typet _type)
const irep_idt & get_value () const
void set_value (const irep_idt &value)
bool is_null_pointer () const
 Returns true if expr has a pointer type and a value NULL; it also returns true when expr has value zero and NULL_is_zero is true; returns false in all other cases.
bool operator== (bool rhs) const
 Return whether the expression lhs is a constant of Boolean type that is representing the Boolean value rhs.
bool operator!= (bool rhs) const
 Return whether the expression lhs is not a constant of Boolean type or is not representing the Boolean value rhs.
bool operator== (int rhs) const
 Return whether the expression lhs is a constant representing the numeric value rhs; only values 0 and 1 are supported for rhs.
bool operator!= (int rhs) const
 Returns the negation of operator==(const exprt &, int).
bool operator== (std::nullptr_t) const
 Return whether the expression lhs is a constant representing the NULL pointer.
bool operator!= (std::nullptr_t) const
 Returns the negation of operator==(const exprt &, std::nullptr_t).
bool operator== (const irept &other) const
bool operator!= (const irept &other) const
Public Member Functions inherited from nullary_exprt
 nullary_exprt (const irep_idt &_id, typet _type)
operandst & operands ()=delete
 remove all operand methods
const operandst & operands () const =delete
const exprt & op0 () const =delete
exprt & op0 ()=delete
const exprt & op1 () const =delete
exprt & op1 ()=delete
const exprt & op2 () const =delete
exprt & op2 ()=delete
const exprt & op3 () const =delete
exprt & op3 ()=delete
void copy_to_operands (const exprt &expr)=delete
void copy_to_operands (const exprt &, const exprt &)=delete
void copy_to_operands (const exprt &, const exprt &, const exprt &)=delete
Public Member Functions inherited from exprt
 exprt ()
 exprt (const irep_idt &_id)
 exprt (irep_idt _id, typet _type)
 exprt (irep_idt _id, typet _type, operandst &&_operands)
 exprt (const irep_idt &id, typet type, source_locationt loc)
typet & type ()
 Return the type of the expression.
const typet & type () const
bool has_operands () const
 Return true if there is at least one operand.
operandst & operands ()
const operandst & operands () const
exprt & with_source_location (source_locationt location) &
 Add the source location from location, if it is non-nil.
exprt && with_source_location (source_locationt location) &&
 Add the source location from location, if it is non-nil.
exprt & with_source_location (const exprt &other) &
 Add the source location from other, if it has any.
exprt && with_source_location (const exprt &other) &&
 Add the source location from other, if it has any.
void reserve_operands (operandst::size_type n)
void copy_to_operands (const exprt &expr)
 Copy the given argument to the end of exprt's operands.
void add_to_operands (const exprt &expr)
 Add the given argument to the end of exprt's operands.
void add_to_operands (exprt &&expr)
 Add the given argument to the end of exprt's operands.
void add_to_operands (exprt &&e1, exprt &&e2)
 Add the given arguments to the end of exprt's operands.
void add_to_operands (exprt &&e1, exprt &&e2, exprt &&e3)
 Add the given arguments to the end of exprt's operands.
bool is_constant () const
 Return whether the expression is a constant.
bool is_true () const
 Return whether the expression is a constant representing true.
bool is_false () const
 Return whether the expression is a constant representing false.
bool is_zero () const
 Return whether the expression is a constant representing 0.
bool is_one () const
 Return whether the expression is a constant representing 1.
bool is_boolean () const
 Return whether the expression represents a Boolean.
const source_locationt & find_source_location () const
 Get a source_locationt from the expression or from its operands (non-recursively).
const source_locationt & source_location () const
source_locationt & add_source_location ()
void drop_source_location ()
void visit (class expr_visitort &visitor)
 These are pre-order traversal visitors, i.e., the visitor is executed on a node before its children have been visited.
void visit (class const_expr_visitort &visitor) const
void visit_pre (std::function< void(exprt &)>)
void visit_pre (std::function< void(const exprt &)>) const
void visit_post (std::function< void(exprt &)>)
 These are post-order traversal visitors, i.e., the visitor is executed on a node after its children have been visited.
void visit_post (std::function< void(const exprt &)>) const
depth_iteratort depth_begin ()
depth_iteratort depth_end ()
const_depth_iteratort depth_begin () const
const_depth_iteratort depth_end () const
const_depth_iteratort depth_cbegin () const
const_depth_iteratort depth_cend () const
depth_iteratort depth_begin (std::function< exprt &()> mutate_root) const
const_unique_depth_iteratort unique_depth_begin () const
const_unique_depth_iteratort unique_depth_end () const
const_unique_depth_iteratort unique_depth_cbegin () const
const_unique_depth_iteratort unique_depth_cend () 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_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
bool ordering (const irept &other) const
 defines ordering on the internal representation
int compare (const irept &i) const
 defines ordering on the internal representation comments are ignored
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
Public Member Functions inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
 sharing_treet (irep_idt _id)
sharing_treet & operator= (const sharing_treet &irep)
 ~sharing_treet ()
const dt & read () const
dt & write ()

Static Public Member Functions

static void check (const exprt &expr, const validation_modet vm=validation_modet::INVARIANT)
static void validate (const exprt &expr, const namespacet &, const validation_modet vm=validation_modet::INVARIANT)
Static Public Member Functions inherited from nullary_exprt
static void check (const exprt &expr, const validation_modet vm=validation_modet::INVARIANT)
static void validate (const exprt &expr, const namespacet &, const validation_modet vm=validation_modet::INVARIANT)
Static Public Member Functions inherited from exprt
static void check (const exprt &, const validation_modet=validation_modet::INVARIANT)
 Check that the expression is well-formed (shallow checks only, i.e., subexpressions and its type are not checked).
static void validate (const exprt &expr, const namespacet &, const validation_modet vm=validation_modet::INVARIANT)
 Check that the expression is well-formed, assuming that its subexpressions and type have all ready been checked for well-formedness.
static void validate_full (const exprt &expr, const namespacet &ns, const validation_modet vm=validation_modet::INVARIANT)
 Check that the expression is well-formed (full check, including checks of all subexpressions and the type).
Static Public 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

Protected Member Functions

bool value_is_zero_string () const
Protected Member Functions inherited from expr_protectedt
 expr_protectedt (irep_idt _id, typet _type)
 expr_protectedt (irep_idt _id, typet _type, operandst _operands)
exprt & op0 ()
const exprt & op0 () const
exprt & op1 ()
const exprt & op1 () const
exprt & op2 ()
const exprt & op2 () const
exprt & op3 ()
const exprt & op3 () const
Protected Member Functions inherited from exprt
exprt & op0 ()
exprt & op1 ()
exprt & op2 ()
exprt & op3 ()
const exprt & op0 () const
const exprt & op1 () const
const exprt & op2 () const
const exprt & op3 () const
exprt & add_expr (const irep_idt &name)
const exprt & find_expr (const irep_idt &name) const
Protected Member Functions inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
void detach ()

Additional Inherited Members

Public Types inherited from exprt
typedef std::vector< exprt > operandst
Public Types inherited from irept
using baset = tree_implementationt
Public Types inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
using dt
using subt
using named_subt
using tree_implementationt
 Used to refer to this class from derived classes.
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.
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

Detailed Description

A constant literal expression.

Definition at line 3006 of file std_expr.h.

Constructor & Destructor Documentation

◆ constant_exprt()

constant_exprt::constant_exprt ( const irep_idt & _value,
typet _type )
inline

Definition at line 3009 of file std_expr.h.

Member Function Documentation

◆ check()

void constant_exprt::check ( const exprt & expr,
const validation_modet vm = validation_modet::INVARIANT )
static

Definition at line 210 of file std_expr.cpp.

◆ get_value()

const irep_idt & constant_exprt::get_value ( ) const
inline

Definition at line 3015 of file std_expr.h.

◆ is_null_pointer()

bool constant_exprt::is_null_pointer ( ) const

Returns true if expr has a pointer type and a value NULL; it also returns true when expr has value zero and NULL_is_zero is true; returns false in all other cases.

Definition at line 170 of file std_expr.cpp.

◆ operator!=() [1/4]

bool constant_exprt::operator!= ( bool rhs) const

Return whether the expression lhs is not a constant of Boolean type or is not representing the Boolean value rhs.

Definition at line 47 of file std_expr.cpp.

◆ operator!=() [2/4]

bool irept::operator!= ( const irept & other) const
inline

Definition at line 429 of file irep.h.

◆ operator!=() [3/4]

bool constant_exprt::operator!= ( int rhs) const

Returns the negation of operator==(const exprt &, int).

Definition at line 164 of file std_expr.cpp.

◆ operator!=() [4/4]

bool constant_exprt::operator!= ( std::nullptr_t rhs) const

Returns the negation of operator==(const exprt &, std::nullptr_t).

Definition at line 204 of file std_expr.cpp.

◆ operator==() [1/4]

bool constant_exprt::operator== ( bool rhs) const

Return whether the expression lhs is a constant of Boolean type that is representing the Boolean value rhs.

Definition at line 42 of file std_expr.cpp.

◆ operator==() [2/4]

bool irept::operator== ( const irept & other) const

Definition at line 427 of file irep.cpp.

◆ operator==() [3/4]

bool constant_exprt::operator== ( int rhs) const

Return whether the expression lhs is a constant representing the numeric value rhs; only values 0 and 1 are supported for rhs.

For value 0 we consider the following types: ID_integer, ID_natural, ID_rational, ID_unsignedbv, ID_signedbv, ID_c_bool, ID_c_bit_field, ID_fixedbv, ID_floatbv, ID_pointer.
For ID_pointer, returns true iff the value is a zero string or a null pointer.
For value 1 we consider the following types: ID_integer, ID_natural, ID_rational, ID_unsignedbv, ID_signedbv, ID_c_bool, ID_c_bit_field, ID_fixedbv, ID_floatbv.
For all other types, return false.

Definition at line 68 of file std_expr.cpp.

◆ operator==() [4/4]

bool constant_exprt::operator== ( std::nullptr_t rhs) const

Return whether the expression lhs is a constant representing the NULL pointer.

Definition at line 198 of file std_expr.cpp.

◆ set_value()

void constant_exprt::set_value ( const irep_idt & value)
inline

Definition at line 3020 of file std_expr.h.

◆ validate()

void constant_exprt::validate ( const exprt & expr,
const namespacet & ,
const validation_modet vm = validation_modet::INVARIANT )
inlinestatic

Definition at line 3049 of file std_expr.h.

◆ value_is_zero_string()

bool constant_exprt::value_is_zero_string ( ) const
protected

Definition at line 26 of file std_expr.cpp.


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