cprover
interpretert Class Reference

#include <interpreter_class.h>

Inheritance diagram for interpretert:
[legend]
Collaboration diagram for interpretert:
[legend]

Classes

struct  function_assignments_contextt
 
struct  function_assignmentt
 
class  memory_cellt
 
class  stack_framet
 

Public Types

typedef std::vector< function_assignmenttfunction_assignmentst
 
typedef std::vector< mp_integermp_vectort
 
typedef std::pair< irep_idt, irep_idtassignment_idt
 
typedef std::pair< exprt, exprtdiff_pairt
 
typedef std::map< assignment_idt, diff_pairtside_effects_differencet
 
typedef std::pair< irep_idt, exprtinput_entryt
 
typedef std::map< irep_idt, exprtinput_valuest
 
typedef std::map< irep_idt, typetdynamic_typest
 
typedef std::map< irep_idt, function_assignmentstoutput_valuest
 
typedef std::list< function_assignments_contexttfunction_assignments_contextst
 
typedef std::map< irep_idt, std::list< function_assignments_contextt > > list_input_varst
 
- Public Types inherited from messaget
enum  message_levelt {
  M_ERROR =1, M_WARNING =2, M_RESULT =4, M_STATUS =6,
  M_STATISTICS =8, M_PROGRESS =9, M_DEBUG =10
}
 

Public Member Functions

 interpretert (const symbol_tablet &_symbol_table, const goto_functionst &_goto_functions, message_handlert &_message_handler)
 
void operator() ()
 
void print_memory (bool input_flags)
 Prints the current state of the memory map Since messaget mdofifies class members, print functions are nonconst. More...
 
const dynamic_typestget_dynamic_types ()
 
- Public Member Functions inherited from messaget
virtual void set_message_handler (message_handlert &_message_handler)
 
message_handlertget_message_handler ()
 
 messaget ()
 
 messaget (const messaget &other)
 
messagetoperator= (const messaget &other)
 
 messaget (message_handlert &_message_handler)
 
virtual ~messaget ()
 
mstreamtget_mstream (unsigned message_level) const
 
mstreamterror () const
 
mstreamtwarning () const
 
mstreamtresult () const
 
mstreamtstatus () const
 
mstreamtstatistics () const
 
mstreamtprogress () const
 
mstreamtdebug () const
 
void conditional_output (mstreamt &mstream, const std::function< void(mstreamt &)> &output_generator) const
 Generate output to mstream using output_generator if the configured verbosity is at least as high as that of mstream. More...
 

Public Attributes

output_valuest output_values
 

Protected Types

typedef std::unordered_map< irep_idt, mp_integermemory_mapt
 
typedef std::map< mp_integer, irep_idtinverse_memory_mapt
 
typedef sparse_vectort< memory_celltmemoryt
 
typedef std::map< std::string, const irep_idt & > parameter_sett
 
typedef std::pair< const irep_idt, const irep_idtstruct_member_idt
 
typedef std::map< struct_member_idt, const exprtstruct_valuest
 
typedef std::stack< stack_frametcall_stackt
 

Protected Member Functions

const inverse_memory_mapt::value_type & address_to_object_record (const mp_integer &address) const
 
irep_idt address_to_identifier (const mp_integer &address) const
 
mp_integer address_to_offset (const mp_integer &address) const
 
mp_integer base_address_to_alloc_size (const mp_integer &address) const
 
mp_integer base_address_to_actual_size (const mp_integer &address) const
 
void build_memory_map ()
 Creates a memory map of all static symbols in the program. More...
 
void build_memory_map (const symbolt &symbol)
 
mp_integer build_memory_map (const irep_idt &id, const typet &type)
 Populates dynamic entries of the memory map. More...
 
typet concretize_type (const typet &type)
 turns a variable length array type into a fixed array type More...
 
bool unbounded_size (const typet &)
 
mp_integer get_size (const typet &type)
 Retrieves the actual size of the provided structured type. More...
 
struct_typet::componentt get_component (const irep_idt &object, const mp_integer &offset)
 retrieves the member at offset More...
 
typet get_type (const irep_idt &id) const
 returns the type object corresponding to id More...
 
exprt get_value (const typet &type, const mp_integer &offset=0, bool use_non_det=false)
 retrives the constant value at memory location offset as an object of type type More...
 
exprt get_value (const typet &type, mp_vectort &rhs, const mp_integer &offset=0)
 returns the value at offset in the form of type given a memory buffer rhs which is typically a structured type More...
 
exprt get_value (const irep_idt &id)
 
void step ()
 executes a single step and updates the program counter More...
 
void execute_assert ()
 
void execute_assume ()
 
void execute_assign ()
 executes the assign statement at the current pc value More...
 
void execute_goto ()
 executes a goto instruction More...
 
void execute_function_call ()
 
void execute_other ()
 executes side effects of 'other' instructions More...
 
void execute_decl ()
 
void clear_input_flags ()
 Clears memoy r/w flag initialization. More...
 
void allocate (const mp_integer &address, const mp_integer &size)
 reserves memory block of size at address More...
 
void assign (const mp_integer &address, const mp_vectort &rhs)
 sets the memory at address with the given rhs value (up to sizeof(rhs)) More...
 
void read (const mp_integer &address, mp_vectort &dest) const
 Reads a memory address and loads it into the dest variable. More...
 
void read_unbounded (const mp_integer &address, mp_vectort &dest) const
 
virtual void command ()
 reads a user command and executes it. More...
 
bool evaluate_boolean (const exprt &expr)
 
bool count_type_leaves (const typet &source_type, mp_integer &result)
 Count the number of leaf subtypes of ty, a leaf type is a type that is not an array or a struct. More...
 
bool byte_offset_to_memory_offset (const typet &source_type, const mp_integer &byte_offset, mp_integer &result)
 Supposing the caller has an mp_vector representing a value with type 'source_type', this yields the offset into that vector at which to find a value at byte address 'offset'. More...
 
bool memory_offset_to_byte_offset (const typet &source_type, const mp_integer &cell_offset, mp_integer &result)
 Similarly to the above, the interpreter's memory objects contain mp_integers that represent variable-sized struct members. More...
 
void evaluate (const exprt &expr, mp_vectort &dest)
 Evaluate an expression. More...
 
mp_integer evaluate_address (const exprt &expr, bool fail_quietly=false)
 
void initialize (bool init)
 Initializes the memory map of the interpreter and [optionally] runs up to the entry point (thus doing the cprover initialization) More...
 
void show_state ()
 displays the current position of the pc and corresponding code More...
 

Protected Attributes

const symbol_tabletsymbol_table
 
const namespacet ns
 
const goto_functionstgoto_functions
 
memory_mapt memory_map
 
inverse_memory_mapt inverse_memory_map
 
memoryt memory
 
mp_integer stack_pointer
 
call_stackt call_stack
 
input_valuest input_vars
 
list_input_varst function_input_vars
 
goto_functionst::function_mapt::const_iterator function
 
goto_programt::const_targett pc
 
goto_programt::const_targett next_pc
 
goto_programt::const_targett target_assert
 
goto_tracet steps
 
bool done
 
bool show
 
bool stop_on_assertion
 
size_t num_steps
 
size_t total_steps
 
dynamic_typest dynamic_types
 
int num_dynamic_objects
 
mp_integer stack_depth
 
unsigned thread_id
 
- Protected Attributes inherited from messaget
message_handlertmessage_handler
 
mstreamt mstream
 

Static Protected Attributes

static const size_t npos =std::numeric_limits<size_t>::max()
 

Additional Inherited Members

- Static Public Member Functions inherited from messaget
static unsigned eval_verbosity (const std::string &user_input, const message_levelt default_verbosity, message_handlert &dest)
 Parse a (user-)provided string as a verbosity level and set it as the verbosity of dest. More...
 
static mstreamteom (mstreamt &m)
 
static mstreamtendl (mstreamt &m)
 

Detailed Description

Definition at line 27 of file interpreter_class.h.

Member Typedef Documentation

◆ assignment_idt

Definition at line 62 of file interpreter_class.h.

◆ call_stackt

Definition at line 257 of file interpreter_class.h.

◆ diff_pairt

typedef std::pair<exprt, exprt> interpretert::diff_pairt

Definition at line 65 of file interpreter_class.h.

◆ dynamic_typest

Definition at line 77 of file interpreter_class.h.

◆ function_assignments_contextst

◆ function_assignmentst

Definition at line 57 of file interpreter_class.h.

◆ input_entryt

Definition at line 71 of file interpreter_class.h.

◆ input_valuest

Definition at line 74 of file interpreter_class.h.

◆ inverse_memory_mapt

Definition at line 109 of file interpreter_class.h.

◆ list_input_varst

Definition at line 96 of file interpreter_class.h.

◆ memory_mapt

typedef std::unordered_map<irep_idt, mp_integer> interpretert::memory_mapt
protected

Definition at line 108 of file interpreter_class.h.

◆ memoryt

Definition at line 180 of file interpreter_class.h.

◆ mp_vectort

typedef std::vector<mp_integer> interpretert::mp_vectort

Definition at line 59 of file interpreter_class.h.

◆ output_valuest

Definition at line 79 of file interpreter_class.h.

◆ parameter_sett

typedef std::map<std::string, const irep_idt &> interpretert::parameter_sett
protected

Definition at line 181 of file interpreter_class.h.

◆ side_effects_differencet

◆ struct_member_idt

typedef std::pair<const irep_idt, const irep_idt> interpretert::struct_member_idt
protected

Definition at line 183 of file interpreter_class.h.

◆ struct_valuest

typedef std::map<struct_member_idt, const exprt> interpretert::struct_valuest
protected

Definition at line 184 of file interpreter_class.h.

Constructor & Destructor Documentation

◆ interpretert()

interpretert::interpretert ( const symbol_tablet _symbol_table,
const goto_functionst _goto_functions,
message_handlert _message_handler 
)
inline

Definition at line 30 of file interpreter_class.h.

References show.

Member Function Documentation

◆ address_to_identifier()

irep_idt interpretert::address_to_identifier ( const mp_integer address) const
inlineprotected

◆ address_to_object_record()

const inverse_memory_mapt::value_type& interpretert::address_to_object_record ( const mp_integer address) const
inlineprotected

Definition at line 113 of file interpreter_class.h.

References CHECK_RETURN, and inverse_memory_map.

Referenced by address_to_identifier(), and address_to_offset().

◆ address_to_offset()

mp_integer interpretert::address_to_offset ( const mp_integer address) const
inlineprotected

◆ allocate()

void interpretert::allocate ( const mp_integer address,
const mp_integer size 
)
protected

◆ assign()

◆ base_address_to_actual_size()

mp_integer interpretert::base_address_to_actual_size ( const mp_integer address) const
inlineprotected

◆ base_address_to_alloc_size()

mp_integer interpretert::base_address_to_alloc_size ( const mp_integer address) const
inlineprotected

◆ build_memory_map() [1/3]

void interpretert::build_memory_map ( )
protected

◆ build_memory_map() [2/3]

◆ build_memory_map() [3/3]

mp_integer interpretert::build_memory_map ( const irep_idt id,
const typet type 
)
protected

Populates dynamic entries of the memory map.

Returns
Updates the memory map to include variable id if it does not exist

Definition at line 932 of file interpreter.cpp.

References base_address_to_alloc_size(), concretize_type(), dynamic_types, get_size(), integer2ulong(), inverse_memory_map, memory, memory_map, sparse_vectort< T >::resize(), and sparse_vectort< T >::size().

◆ byte_offset_to_memory_offset()

bool interpretert::byte_offset_to_memory_offset ( const typet source_type,
const mp_integer offset,
mp_integer result 
)
protected

Supposing the caller has an mp_vector representing a value with type 'source_type', this yields the offset into that vector at which to find a value at byte address 'offset'.

We need this because the interpreter's memory map uses unlabelled variable-width values – for example, a C value { { 1, 2 }, 3, 4 } of type struct { int x[2]; char y; unsigned long z; } would be represented [1,2,3,4], with the source type needed alongside to figure out which member is targeted by a byte-extract operation.

parameters: 'source_type', 'offset' (unit: bytes),
Returns
Offset into a vector of interpreter values; returns true on error

Definition at line 152 of file interpreter_evaluate.cpp.

References count_type_leaves(), evaluate(), irept::id(), member_offset(), ns, pointer_offset_size(), messaget::result(), to_array_type(), and to_struct_type().

Referenced by evaluate(), and evaluate_address().

◆ clear_input_flags()

void interpretert::clear_input_flags ( )
protected

Clears memoy r/w flag initialization.

Definition at line 93 of file interpreter_evaluate.cpp.

References memory, interpretert::memory_cellt::UNKNOWN, and interpretert::memory_cellt::WRITTEN_BEFORE_READ.

Referenced by initialize().

◆ command()

void interpretert::command ( )
protectedvirtual

◆ concretize_type()

typet interpretert::concretize_type ( const typet type)
protected

turns a variable length array type into a fixed array type

Definition at line 905 of file interpreter.cpp.

References messaget::eom(), evaluate(), irept::find(), from_integer(), irept::id(), messaget::result(), typet::subtype(), and messaget::warning().

Referenced by build_memory_map().

◆ count_type_leaves()

bool interpretert::count_type_leaves ( const typet ty,
mp_integer result 
)
protected

Count the number of leaf subtypes of ty, a leaf type is a type that is not an array or a struct.

For instance the count for a type such as struct { (int[3])[5]; int } would be 16 = (3 * 5 + 1).

Parameters
tya type
[out]resultNumber of leaf primitive types in ty
Returns
returns true on error

Definition at line 109 of file interpreter_evaluate.cpp.

References struct_union_typet::components(), evaluate(), irept::id(), messaget::result(), to_array_type(), and to_struct_type().

Referenced by byte_offset_to_memory_offset(), evaluate(), and memory_offset_to_byte_offset().

◆ evaluate()

void interpretert::evaluate ( const exprt expr,
mp_vectort dest 
)
protected

Evaluate an expression.

Parameters
exprexpression to evaluate
[out]destvector in which the result of the evaluation is stored

Definition at line 296 of file interpreter_evaluate.cpp.

References address_to_identifier(), address_to_offset(), arith_left_shift(), arith_right_shift(), binary2integer(), bitwise_and(), bitwise_neg(), bitwise_or(), bitwise_xor(), build_memory_map(), byte_offset_to_memory_offset(), count_type_leaves(), messaget::eom(), messaget::error(), evaluate_address(), forall_operands, from_expr(), fixedbvt::from_expr(), ieee_floatt::from_expr(), fixedbvt::from_integer(), ieee_floatt::from_integer(), function, get_size(), side_effect_exprt::get_statement(), get_string_container(), get_type(), fixedbvt::get_value(), get_value(), constant_exprt::get_value(), exprt::has_operands(), irept::id(), id2string(), integer2binary(), integer2size_t(), integer2string(), exprt::is_true(), logic_right_shift(), memory, memory_offset_to_byte_offset(), ns, num_dynamic_objects, exprt::op0(), exprt::op1(), exprt::op2(), exprt::operands(), ieee_floatt::pack(), irept::pretty(), read(), read_unbounded(), messaget::result(), rotate_left(), rotate_right(), fixedbvt::set_value(), show, simplify_expr(), sparse_vectort< T >::size(), fixedbvt::spec, typet::subtype(), to_array_type(), to_bitvector_type(), to_constant_expr(), to_fixedbv_type(), to_floatbv_type(), to_integer(), to_side_effect_expr(), to_signedbv_type(), to_unsignedbv_type(), to_with_expr(), exprt::type(), unbounded_size(), ieee_floatt::unpack(), and messaget::warning().

Referenced by byte_offset_to_memory_offset(), concretize_type(), count_type_leaves(), evaluate_address(), evaluate_boolean(), execute_assign(), execute_function_call(), execute_other(), get_size(), memory_offset_to_byte_offset(), and step().

◆ evaluate_address()

◆ evaluate_boolean()

bool interpretert::evaluate_boolean ( const exprt expr)
inlineprotected

Definition at line 278 of file interpreter_class.h.

References evaluate().

Referenced by execute_assert(), execute_assume(), and execute_goto().

◆ execute_assert()

void interpretert::execute_assert ( )
protected

Definition at line 743 of file interpreter.cpp.

References messaget::eom(), messaget::error(), evaluate_boolean(), pc, show, stop_on_assertion, and target_assert.

Referenced by step().

◆ execute_assign()

◆ execute_assume()

void interpretert::execute_assume ( )
protected

Definition at line 737 of file interpreter.cpp.

References evaluate_boolean(), and pc.

Referenced by step().

◆ execute_decl()

void interpretert::execute_decl ( )
protected

Definition at line 417 of file interpreter.cpp.

References pc, and PRECONDITION.

Referenced by step().

◆ execute_function_call()

◆ execute_goto()

void interpretert::execute_goto ( )
protected

executes a goto instruction

Definition at line 368 of file interpreter.cpp.

References evaluate_boolean(), next_pc, and pc.

Referenced by step().

◆ execute_other()

void interpretert::execute_other ( )
protected

executes side effects of 'other' instructions

Definition at line 383 of file interpreter.cpp.

References assign(), DATA_INVARIANT, messaget::eom(), messaget::error(), evaluate(), evaluate_address(), get_size(), id2string(), and pc.

Referenced by step().

◆ get_component()

struct_typet::componentt interpretert::get_component ( const irep_idt object,
const mp_integer offset 
)
protected

retrieves the member at offset

parameters: an object and a memory offset

Definition at line 424 of file interpreter.cpp.

References struct_union_typet::components(), namespace_baset::follow(), get_size(), irept::id(), namespacet::lookup(), ns, to_struct_type(), and symbolt::type.

Referenced by get_value().

◆ get_dynamic_types()

const dynamic_typest& interpretert::get_dynamic_types ( )
inline

Definition at line 98 of file interpreter_class.h.

References dynamic_types.

◆ get_size()

mp_integer interpretert::get_size ( const typet type)
protected

Retrieves the actual size of the provided structured type.

Unbounded objects get allocated 2^32 address space each (of a 2^64 sized space).

Parameters
typea structured type
Returns
Size of the given type

Definition at line 987 of file interpreter.cpp.

References CHECK_RETURN, struct_union_typet::components(), evaluate(), irept::find(), namespace_baset::follow(), from_integer(), irept::id(), ns, typet::subtype(), to_integer(), to_struct_type(), to_union_type(), exprt::type(), and unbounded_size().

Referenced by build_memory_map(), evaluate(), evaluate_address(), execute_assign(), execute_other(), get_component(), and get_value().

◆ get_type()

typet interpretert::get_type ( const irep_idt id) const
protected

returns the type object corresponding to id

Definition at line 450 of file interpreter.cpp.

References dynamic_types, symbol_table_baset::lookup_ref(), symbol_table, and symbolt::type.

Referenced by evaluate(), and get_value().

◆ get_value() [1/3]

exprt interpretert::get_value ( const typet type,
const mp_integer offset = 0,
bool  use_non_det = false 
)
protected

◆ get_value() [2/3]

◆ get_value() [3/3]

exprt interpretert::get_value ( const irep_idt id)
protected

◆ initialize()

void interpretert::initialize ( bool  init)
protected

Initializes the memory map of the interpreter and [optionally] runs up to the entry point (thus doing the cprover initialization)

Definition at line 63 of file interpreter.cpp.

References build_memory_map(), call_stack, clear_input_flags(), done, goto_functionst::entry_point(), goto_functionst::function_map, goto_functions, input_vars, npos, pc, show_state(), stack_depth, step(), and total_steps.

Referenced by command(), and operator()().

◆ memory_offset_to_byte_offset()

bool interpretert::memory_offset_to_byte_offset ( const typet source_type,
const mp_integer full_cell_offset,
mp_integer result 
)
protected

Similarly to the above, the interpreter's memory objects contain mp_integers that represent variable-sized struct members.

This counts the size of type leaves to determine the byte offset corresponding to a memory offset.

parameters: An interpreter memory offset and the type to interpret that
memory
Returns
The corresponding byte offset. Returns true on error

Definition at line 229 of file interpreter_evaluate.cpp.

References count_type_leaves(), evaluate(), irept::id(), member_offset(), ns, pointer_offset_size(), messaget::result(), to_array_type(), and to_struct_type().

Referenced by evaluate().

◆ operator()()

void interpretert::operator() ( void  )

◆ print_memory()

void interpretert::print_memory ( bool  input_flags)

Prints the current state of the memory map Since messaget mdofifies class members, print functions are nonconst.

Definition at line 1073 of file interpreter.cpp.

References address_to_identifier(), address_to_offset(), messaget::debug(), messaget::eom(), interpretert::memory_cellt::initialized, memory, and interpretert::memory_cellt::value.

Referenced by command().

◆ read()

void interpretert::read ( const mp_integer address,
mp_vectort dest 
) const
protected

Reads a memory address and loads it into the dest variable.

Marks cell as READ_BEFORE_WRITTEN if cell has never been written.

Definition at line 24 of file interpreter_evaluate.cpp.

References interpretert::memory_cellt::initialized, integer2ulong(), memory, interpretert::memory_cellt::READ_BEFORE_WRITTEN, sparse_vectort< T >::size(), interpretert::memory_cellt::UNKNOWN, and interpretert::memory_cellt::value.

Referenced by evaluate().

◆ read_unbounded()

◆ show_state()

void interpretert::show_state ( )
protected

displays the current position of the pc and corresponding code

Definition at line 104 of file interpreter.cpp.

References messaget::eom(), function, ns, pc, show, messaget::status(), and total_steps.

Referenced by command(), and initialize().

◆ step()

◆ unbounded_size()

bool interpretert::unbounded_size ( const typet type)
protected

Member Data Documentation

◆ call_stack

call_stackt interpretert::call_stack
protected

◆ done

bool interpretert::done
protected

Definition at line 266 of file interpreter_class.h.

Referenced by command(), initialize(), operator()(), and step().

◆ dynamic_types

dynamic_typest interpretert::dynamic_types
protected

Definition at line 273 of file interpreter_class.h.

Referenced by build_memory_map(), get_dynamic_types(), get_type(), and get_value().

◆ function

goto_functionst::function_mapt::const_iterator interpretert::function
protected

Definition at line 263 of file interpreter_class.h.

Referenced by evaluate(), evaluate_address(), show_state(), and step().

◆ function_input_vars

list_input_varst interpretert::function_input_vars
protected

Definition at line 261 of file interpreter_class.h.

Referenced by execute_function_call().

◆ goto_functions

const goto_functionst& interpretert::goto_functions
protected

Definition at line 106 of file interpreter_class.h.

Referenced by execute_function_call(), and initialize().

◆ input_vars

input_valuest interpretert::input_vars
protected

Definition at line 260 of file interpreter_class.h.

Referenced by initialize().

◆ inverse_memory_map

inverse_memory_mapt interpretert::inverse_memory_map
protected

◆ memory

◆ memory_map

memory_mapt interpretert::memory_map
protected

Definition at line 110 of file interpreter_class.h.

Referenced by build_memory_map(), and evaluate_address().

◆ next_pc

goto_programt::const_targett interpretert::next_pc
protected

Definition at line 264 of file interpreter_class.h.

Referenced by execute_function_call(), execute_goto(), and step().

◆ npos

const std::size_t interpretert::npos =std::numeric_limits<size_t>::max()
staticprotected

Definition at line 269 of file interpreter_class.h.

Referenced by command(), and initialize().

◆ ns

◆ num_dynamic_objects

int interpretert::num_dynamic_objects
protected

Definition at line 274 of file interpreter_class.h.

Referenced by build_memory_map(), and evaluate().

◆ num_steps

size_t interpretert::num_steps
protected

Definition at line 270 of file interpreter_class.h.

Referenced by command().

◆ output_values

output_valuest interpretert::output_values

Definition at line 80 of file interpreter_class.h.

◆ pc

◆ show

bool interpretert::show
protected

◆ stack_depth

mp_integer interpretert::stack_depth
protected

Definition at line 275 of file interpreter_class.h.

Referenced by command(), and initialize().

◆ stack_pointer

mp_integer interpretert::stack_pointer
protected

Definition at line 191 of file interpreter_class.h.

Referenced by build_memory_map(), and execute_function_call().

◆ steps

goto_tracet interpretert::steps
protected

Definition at line 265 of file interpreter_class.h.

Referenced by command(), execute_assign(), execute_function_call(), and step().

◆ stop_on_assertion

bool interpretert::stop_on_assertion
protected

Definition at line 268 of file interpreter_class.h.

Referenced by execute_assert().

◆ symbol_table

const symbol_tablet& interpretert::symbol_table
protected

Definition at line 101 of file interpreter_class.h.

Referenced by build_memory_map(), get_type(), and get_value().

◆ target_assert

goto_programt::const_targett interpretert::target_assert
protected

Definition at line 264 of file interpreter_class.h.

Referenced by execute_assert().

◆ thread_id

unsigned interpretert::thread_id
protected

Definition at line 276 of file interpreter_class.h.

Referenced by step().

◆ total_steps

size_t interpretert::total_steps
protected

Definition at line 271 of file interpreter_class.h.

Referenced by assign(), initialize(), operator()(), show_state(), and step().


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