#include "stack-frame.h"
Public Types | |
enum | auto_var_type { ARG_NAMES , IGNORED , NARGIN , NARGOUT , SAVED_WARNING_STATES , NUM_AUTO_VARS } |
typedef std::map< std::string, octave_value > | local_vars_map |
enum | scope_flags { LOCAL , GLOBAL , PERSISTENT } |
Public Member Functions | |
stack_frame (const stack_frame &elt)=default | |
stack_frame (tree_evaluator &tw, std::size_t index, const std::shared_ptr< stack_frame > &parent_link, const std::shared_ptr< stack_frame > &static_link, const std::shared_ptr< stack_frame > &access_link) | |
stack_frame (void)=delete | |
virtual | ~stack_frame (void)=default |
virtual void | accept (stack_frame_walker &sfw)=0 |
std::shared_ptr< stack_frame > | access_link (void) const |
symbol_info_list | all_variables (void) |
void | assign (const std::string &name, const octave_value &val) |
void | assign (const symbol_record &sym, const octave_value &val) |
void | assign (octave_value::assign_op op, const symbol_record &sym, const std::string &type, const std::list< octave_value_list > &idx, const octave_value &rhs) |
virtual void | break_closure_cycles (const std::shared_ptr< stack_frame > &) |
void | clear (const symbol_record &sym) |
void | clear_objects (void) |
virtual void | clear_values (void) |
void | clear_variable (const std::string &name) |
void | clear_variable_pattern (const std::string &pattern) |
void | clear_variable_pattern (const string_vector &patterns) |
void | clear_variable_regexp (const std::string &pattern) |
void | clear_variable_regexp (const string_vector &patterns) |
void | clear_variables (void) |
void | column (int c) |
int | column (void) const |
virtual void | display (bool follow=true) const |
void | display_stopped_in_message (std::ostream &os) const |
std::string | fcn_file_name (void) const |
std::string | fcn_name (bool print_subfn=true) const |
octave_value | find_subfunction (const std::string &name) const |
virtual octave_function * | function (void) const |
virtual octave_value | get_auto_fcn_var (auto_var_type) const =0 |
std::string | get_dispatch_class (void) const |
virtual symbol_scope | get_scope (void) const =0 |
virtual scope_flags | get_scope_flag (std::size_t) const |
symbol_info_list | get_symbol_info (void) |
symbol_info_list | glob_symbol_info (const std::string &pattern) |
std::size_t | index (void) const |
virtual symbol_record | insert_symbol (const std::string &)=0 |
void | install_variable (const std::string &name, const octave_value &value, bool global) |
void | install_variable (const symbol_record &sym, const octave_value &value, bool global) |
bool | is_closure_context (void) const |
virtual bool | is_compiled_fcn_frame (void) const |
bool | is_defined (const symbol_record &sym) const |
bool | is_global (const std::string &name) const |
bool | is_global (const symbol_record &sym) const |
bool | is_local_variable (const std::string &name) const |
bool | is_object (const std::string &name) const |
bool | is_object (const symbol_record &sym) const |
bool | is_persistent (const std::string &name) const |
bool | is_persistent (const symbol_record &sym) const |
virtual bool | is_scope_frame (void) const |
virtual bool | is_user_fcn_frame (void) const |
virtual bool | is_user_script_frame (void) const |
bool | is_variable (const std::string &name) const |
bool | is_variable (const symbol_record &sym) const |
void | line (int l) |
int | line (void) const |
virtual symbol_record | lookup_symbol (const std::string &) const =0 |
void | make_global (const symbol_record &sym) |
void | make_persistent (const symbol_record &sym) |
symbol_info_list | make_symbol_info_list (const std::list< symbol_record > &symrec_list) const |
void | mark_closure_context (void) |
void | mark_global (const symbol_record &sym) |
void | mark_persistent (const symbol_record &sym) |
virtual void | mark_scope (const symbol_record &, scope_flags)=0 |
void | non_const_unary_op (octave_value::unary_op op, const symbol_record &sym, const std::string &type, const std::list< octave_value_list > &idx) |
stack_frame & | operator= (const stack_frame &elt)=delete |
std::shared_ptr< stack_frame > | parent_link (void) const |
symbol_info_list | regexp_symbol_info (const std::string &pattern) |
virtual void | resize (std::size_t) |
virtual scope_flags | scope_flag (const symbol_record &) const =0 |
virtual void | set_auto_fcn_var (auto_var_type, const octave_value &)=0 |
void | set_dispatch_class (const std::string &class_name) |
virtual void | set_scope_flag (std::size_t, scope_flags) |
virtual std::size_t | size (void) const |
std::shared_ptr< stack_frame > | static_link (void) const |
void | unmark_global (const symbol_record &sym) |
void | unmark_persistent (const symbol_record &sym) |
virtual unwind_protect * | unwind_protect_frame (void) |
octave_value | value (const symbol_record &sym, const std::string &type, const std::list< octave_value_list > &idx) const |
std::list< std::string > | variable_names (void) const |
virtual octave_value & | varref (const symbol_record &sym)=0 |
virtual octave_value & | varref (std::size_t data_offset) |
octave_value | varval (const std::string &name) const |
virtual octave_value | varval (const symbol_record &sym) const =0 |
virtual octave_value | varval (std::size_t data_offset) const |
octave_value | who (const string_vector &patterns, bool have_regexp, bool return_list, bool verbose, const std::string &whos_line_fmt, const std::string &msg) |
octave_value | workspace (void) |
Static Public Member Functions | |
static stack_frame * | create (tree_evaluator &tw, const symbol_scope &scope, std::size_t index, const std::shared_ptr< stack_frame > &parent_link, const std::shared_ptr< stack_frame > &static_link) |
static stack_frame * | create (tree_evaluator &tw, octave_function *fcn, std::size_t index, const std::shared_ptr< stack_frame > &parent_link, const std::shared_ptr< stack_frame > &static_link) |
static stack_frame * | create (tree_evaluator &tw, octave_user_function *fcn, std::size_t index, const std::shared_ptr< stack_frame > &parent_link, const std::shared_ptr< stack_frame > &static_link, const local_vars_map &local_vars, const std::shared_ptr< stack_frame > &access_link=std::shared_ptr< stack_frame >()) |
static stack_frame * | create (tree_evaluator &tw, octave_user_function *fcn, std::size_t index, const std::shared_ptr< stack_frame > &parent_link, const std::shared_ptr< stack_frame > &static_link, const std::shared_ptr< stack_frame > &access_link=std::shared_ptr< stack_frame >()) |
static stack_frame * | create (tree_evaluator &tw, octave_user_script *script, std::size_t index, const std::shared_ptr< stack_frame > &parent_link, const std::shared_ptr< stack_frame > &static_link) |
Protected Attributes | |
std::shared_ptr< stack_frame > | m_access_link |
int | m_column |
std::string | m_dispatch_class |
tree_evaluator & | m_evaluator |
std::size_t | m_index |
bool | m_is_closure_context |
int | m_line |
std::shared_ptr< stack_frame > | m_parent_link |
std::shared_ptr< stack_frame > | m_static_link |
Definition at line 108 of file stack-frame.h.
typedef std::map<std::string, octave_value> stack_frame::local_vars_map |
Definition at line 112 of file stack-frame.h.
Enumerator | |
---|---|
ARG_NAMES | |
IGNORED | |
NARGIN | |
NARGOUT | |
SAVED_WARNING_STATES | |
NUM_AUTO_VARS |
Definition at line 130 of file stack-frame.h.
Enumerator | |
---|---|
LOCAL | |
GLOBAL | |
PERSISTENT |
Definition at line 120 of file stack-frame.h.
|
delete |
|
inline |
Definition at line 142 of file stack-frame.h.
|
default |
|
virtualdefault |
|
pure virtual |
Implemented in scope_stack_frame, user_fcn_stack_frame, script_stack_frame, and compiled_fcn_stack_frame.
Referenced by all_variables(), clear_objects(), clear_variable(), clear_variable_pattern(), clear_variable_regexp(), clear_variables(), glob_symbol_info(), regexp_symbol_info(), and who().
|
inline |
Definition at line 317 of file stack-frame.h.
References m_access_link.
Referenced by create(), display(), user_fcn_stack_frame::lookup_symbol(), script_stack_frame::mark_scope(), script_stack_frame::scope_flag(), user_fcn_stack_frame::scope_flag(), script_stack_frame::varref(), user_fcn_stack_frame::varref(), script_stack_frame::varval(), user_fcn_stack_frame::varval(), symbol_cleaner::visit_scope_stack_frame(), symbol_info_accumulator::visit_scope_stack_frame(), symbol_cleaner::visit_script_stack_frame(), symbol_info_accumulator::visit_script_stack_frame(), symbol_cleaner::visit_user_fcn_stack_frame(), symbol_info_accumulator::visit_user_fcn_stack_frame(), and workspace().
symbol_info_list stack_frame::all_variables | ( | void | ) |
Definition at line 1161 of file stack-frame.cc.
References accept(), and symbol_info_accumulator::symbol_info().
Referenced by get_symbol_info(), and workspace().
|
inline |
Definition at line 456 of file stack-frame.h.
References assign(), and insert_symbol().
|
inline |
Definition at line 445 of file stack-frame.h.
References octave_value::call_object_destructor(), octave_value::get_count(), octave_value::storable_value(), and varref().
Referenced by user_fcn_stack_frame::user_fcn_stack_frame(), assign(), clear(), and install_variable().
|
inline |
Definition at line 463 of file stack-frame.h.
References octave_value::assign(), assign(), octave_value::op_asn_eq, and varref().
|
inlinevirtual |
Reimplemented in user_fcn_stack_frame.
Definition at line 555 of file stack-frame.h.
|
inline |
Definition at line 517 of file stack-frame.h.
References assign(), is_global(), is_persistent(), unmark_global(), and unmark_persistent().
Referenced by install_variable(), and symbol_cleaner::maybe_clear_symbol().
void stack_frame::clear_objects | ( | void | ) |
Definition at line 1345 of file stack-frame.cc.
References accept().
|
virtual |
Reimplemented in user_fcn_stack_frame.
Definition at line 1092 of file stack-frame.cc.
References warning().
void stack_frame::clear_variable | ( | const std::string & | name | ) |
Definition at line 1352 of file stack-frame.cc.
References accept().
void stack_frame::clear_variable_pattern | ( | const std::string & | pattern | ) |
Definition at line 1359 of file stack-frame.cc.
References accept().
void stack_frame::clear_variable_pattern | ( | const string_vector & | patterns | ) |
Definition at line 1366 of file stack-frame.cc.
References accept().
void stack_frame::clear_variable_regexp | ( | const std::string & | pattern | ) |
Definition at line 1373 of file stack-frame.cc.
References accept().
void stack_frame::clear_variable_regexp | ( | const string_vector & | patterns | ) |
Definition at line 1380 of file stack-frame.cc.
References accept().
void stack_frame::clear_variables | ( | void | ) |
Definition at line 1387 of file stack-frame.cc.
References accept().
|
inline |
Definition at line 207 of file stack-frame.h.
References m_column.
|
inline |
Definition at line 208 of file stack-frame.h.
References m_column.
|
static |
Definition at line 1080 of file stack-frame.cc.
References index(), parent_link(), and static_link().
|
static |
Definition at line 1040 of file stack-frame.cc.
References index(), parent_link(), and static_link().
Referenced by call_stack::push().
|
static |
Definition at line 1068 of file stack-frame.cc.
References access_link(), index(), parent_link(), and static_link().
|
static |
Definition at line 1058 of file stack-frame.cc.
References access_link(), index(), parent_link(), and static_link().
|
static |
Definition at line 1049 of file stack-frame.cc.
References index(), parent_link(), and static_link().
|
virtual |
Reimplemented in scope_stack_frame, user_fcn_stack_frame, base_value_stack_frame, script_stack_frame, and compiled_fcn_stack_frame.
Definition at line 1410 of file stack-frame.cc.
References access_link(), m_access_link, m_column, m_index, m_line, m_parent_link, m_static_link, and octave_stdout.
Referenced by compiled_fcn_stack_frame::display(), script_stack_frame::display(), and base_value_stack_frame::display().
void stack_frame::display_stopped_in_message | ( | std::ostream & | os | ) | const |
Definition at line 1394 of file stack-frame.cc.
References fcn_file_name(), fcn_name(), index(), and line().
|
inline |
Definition at line 210 of file stack-frame.h.
References octave_function::fcn_file_name().
Referenced by display_stopped_in_message().
|
inline |
Definition at line 217 of file stack-frame.h.
References octave_base_value::is_anonymous_function(), octave_function::name(), and octave_function::parent_fcn_name().
Referenced by display_stopped_in_message().
|
inline |
Definition at line 510 of file stack-frame.h.
References symbol_scope::find_subfunction(), and get_scope().
|
inlinevirtual |
Reimplemented in user_fcn_stack_frame, script_stack_frame, and compiled_fcn_stack_frame.
Definition at line 243 of file stack-frame.h.
|
pure virtual |
Implemented in base_value_stack_frame, script_stack_frame, and compiled_fcn_stack_frame.
|
inline |
Definition at line 540 of file stack-frame.h.
References m_dispatch_class.
|
pure virtual |
Implemented in scope_stack_frame, user_fcn_stack_frame, script_stack_frame, and compiled_fcn_stack_frame.
Referenced by symbol_info_accumulator::append_list(), symbol_cleaner::clean_frame(), find_subfunction(), user_fcn_stack_frame::lookup_symbol(), variable_names(), script_stack_frame::varref(), user_fcn_stack_frame::varref(), script_stack_frame::varval(), and user_fcn_stack_frame::varval().
|
virtual |
Reimplemented in base_value_stack_frame.
Definition at line 1263 of file stack-frame.cc.
References panic_impossible.
Referenced by script_stack_frame::scope_flag(), user_fcn_stack_frame::scope_flag(), script_stack_frame::varref(), user_fcn_stack_frame::varref(), script_stack_frame::varval(), and user_fcn_stack_frame::varval().
|
inline |
Definition at line 273 of file stack-frame.h.
References all_variables().
symbol_info_list stack_frame::glob_symbol_info | ( | const std::string & | pattern | ) |
Definition at line 1227 of file stack-frame.cc.
References accept(), and symbol_info_accumulator::symbol_info().
|
inline |
Definition at line 202 of file stack-frame.h.
References m_index.
Referenced by create(), and display_stopped_in_message().
|
pure virtual |
Implemented in compiled_fcn_stack_frame, scope_stack_frame, user_fcn_stack_frame, and script_stack_frame.
Referenced by assign(), and install_variable().
|
inline |
Definition at line 418 of file stack-frame.h.
References insert_symbol(), install_variable(), and value().
void stack_frame::install_variable | ( | const symbol_record & | sym, |
const octave_value & | value, | ||
bool | global | ||
) |
Definition at line 1281 of file stack-frame.cc.
References assign(), clear(), tree_evaluator::global_varref(), tree_evaluator::global_varval(), octave_value::is_defined(), is_global(), m_evaluator, mark_global(), symbol_record::name(), value(), varval(), and warning_with_id().
Referenced by install_variable(), make_global(), and make_persistent().
|
inline |
Definition at line 558 of file stack-frame.h.
References m_is_closure_context.
|
inlinevirtual |
Reimplemented in compiled_fcn_stack_frame.
Definition at line 195 of file stack-frame.h.
|
inline |
Definition at line 343 of file stack-frame.h.
Referenced by symbol_info_accumulator::filter().
|
inline |
Definition at line 396 of file stack-frame.h.
References is_global(), and lookup_symbol().
|
inline |
Definition at line 391 of file stack-frame.h.
References GLOBAL, and scope_flag().
Referenced by clear(), install_variable(), is_global(), is_local_variable(), make_persistent(), and make_symbol_info_list().
|
inline |
Definition at line 364 of file stack-frame.h.
References is_global(), is_variable(), and lookup_symbol().
|
inline |
Definition at line 378 of file stack-frame.h.
References is_object(), and lookup_symbol().
|
inline |
Definition at line 371 of file stack-frame.h.
References octave_value::isobject(), and varval().
Referenced by is_object(), and symbol_cleaner::maybe_clear_symbol().
|
inline |
Definition at line 408 of file stack-frame.h.
References is_persistent(), and lookup_symbol().
|
inline |
Definition at line 403 of file stack-frame.h.
References PERSISTENT, and scope_flag().
Referenced by clear(), is_persistent(), make_global(), and make_symbol_info_list().
|
inlinevirtual |
Reimplemented in scope_stack_frame.
Definition at line 198 of file stack-frame.h.
|
inlinevirtual |
Reimplemented in user_fcn_stack_frame.
Definition at line 197 of file stack-frame.h.
Referenced by make_symbol_info_list().
|
inlinevirtual |
Reimplemented in script_stack_frame.
Definition at line 196 of file stack-frame.h.
|
inline |
Definition at line 357 of file stack-frame.h.
References is_variable(), and lookup_symbol().
|
inline |
Definition at line 350 of file stack-frame.h.
References octave_value::is_defined(), and varval().
Referenced by is_local_variable(), is_variable(), and variable_names().
|
inline |
Definition at line 204 of file stack-frame.h.
References m_line.
|
inline |
Definition at line 205 of file stack-frame.h.
References m_line.
Referenced by display_stopped_in_message().
|
pure virtual |
Implemented in scope_stack_frame, user_fcn_stack_frame, script_stack_frame, and compiled_fcn_stack_frame.
Referenced by is_global(), is_local_variable(), is_object(), is_persistent(), is_variable(), and varval().
|
inline |
Definition at line 297 of file stack-frame.h.
References error(), install_variable(), is_persistent(), mark_global(), and symbol_record::name().
|
inline |
Definition at line 278 of file stack-frame.h.
References error(), install_variable(), symbol_record::is_formal(), is_global(), mark_persistent(), and symbol_record::name().
symbol_info_list stack_frame::make_symbol_info_list | ( | const std::list< symbol_record > & | symrec_list | ) | const |
Definition at line 1098 of file stack-frame.cc.
References base_list< elt_type >::append(), octave_value::is_defined(), is_global(), is_persistent(), is_user_fcn_frame(), value(), and varval().
Referenced by symbol_info_accumulator::append_list().
|
inline |
Definition at line 557 of file stack-frame.h.
References m_is_closure_context.
|
inline |
Definition at line 323 of file stack-frame.h.
References GLOBAL, and mark_scope().
Referenced by install_variable(), and make_global().
|
inline |
Definition at line 333 of file stack-frame.h.
References mark_scope(), and PERSISTENT.
Referenced by make_persistent().
|
pure virtual |
Implemented in scope_stack_frame, user_fcn_stack_frame, script_stack_frame, and compiled_fcn_stack_frame.
Referenced by mark_global(), mark_persistent(), unmark_global(), and unmark_persistent().
|
inline |
Definition at line 479 of file stack-frame.h.
References octave_value::non_const_unary_op(), and varref().
|
delete |
|
inline |
symbol_info_list stack_frame::regexp_symbol_info | ( | const std::string & | pattern | ) |
Definition at line 1236 of file stack-frame.cc.
References accept(), and symbol_info_accumulator::symbol_info().
|
virtual |
Reimplemented in base_value_stack_frame, and script_stack_frame.
Definition at line 1254 of file stack-frame.cc.
References panic_impossible.
Referenced by script_stack_frame::varref(), and user_fcn_stack_frame::varref().
|
pure virtual |
Implemented in scope_stack_frame, user_fcn_stack_frame, script_stack_frame, and compiled_fcn_stack_frame.
Referenced by is_global(), and is_persistent().
|
pure virtual |
Implemented in base_value_stack_frame, script_stack_frame, and compiled_fcn_stack_frame.
|
inline |
Definition at line 542 of file stack-frame.h.
References m_dispatch_class.
|
virtual |
Reimplemented in base_value_stack_frame.
Definition at line 1272 of file stack-frame.cc.
References panic_impossible.
|
virtual |
Reimplemented in base_value_stack_frame, and script_stack_frame.
Definition at line 1245 of file stack-frame.cc.
References panic_impossible.
Referenced by script_stack_frame::scope_flag(), user_fcn_stack_frame::scope_flag(), script_stack_frame::varref(), user_fcn_stack_frame::varref(), script_stack_frame::varval(), and user_fcn_stack_frame::varval().
|
inline |
Definition at line 314 of file stack-frame.h.
References m_static_link.
Referenced by create(), script_stack_frame::get_access_link(), user_fcn_stack_frame::get_access_link(), symbol_cleaner::visit_compiled_fcn_stack_frame(), and symbol_info_accumulator::visit_compiled_fcn_stack_frame().
|
inline |
Definition at line 328 of file stack-frame.h.
References LOCAL, and mark_scope().
Referenced by clear().
|
inline |
Definition at line 338 of file stack-frame.h.
References LOCAL, and mark_scope().
Referenced by clear().
|
inlinevirtual |
Reimplemented in user_fcn_stack_frame, and script_stack_frame.
Definition at line 245 of file stack-frame.h.
|
inline |
Definition at line 490 of file stack-frame.h.
References octave_value::is_constant(), octave_value_list::length(), octave_value(), octave_value::subsref(), and varval().
Referenced by install_variable(), and make_symbol_info_list().
std::list< std::string > stack_frame::variable_names | ( | void | ) | const |
Definition at line 1208 of file stack-frame.cc.
References get_scope(), is_variable(), and symbol_scope::symbols().
|
pure virtual |
Implemented in scope_stack_frame, user_fcn_stack_frame, script_stack_frame, and compiled_fcn_stack_frame.
Referenced by assign(), non_const_unary_op(), script_stack_frame::varref(), and user_fcn_stack_frame::varref().
|
virtual |
Reimplemented in base_value_stack_frame.
Definition at line 1336 of file stack-frame.cc.
References panic_impossible.
|
inline |
Definition at line 434 of file stack-frame.h.
References lookup_symbol(), octave_value(), and varval().
|
pure virtual |
Implemented in scope_stack_frame, user_fcn_stack_frame, script_stack_frame, and compiled_fcn_stack_frame.
Referenced by install_variable(), is_object(), is_variable(), make_symbol_info_list(), value(), varval(), script_stack_frame::varval(), and user_fcn_stack_frame::varval().
|
virtual |
Reimplemented in base_value_stack_frame.
Definition at line 1327 of file stack-frame.cc.
References panic_impossible.
octave_value stack_frame::who | ( | const string_vector & | patterns, |
bool | have_regexp, | ||
bool | return_list, | ||
bool | verbose, | ||
const std::string & | whos_line_fmt, | ||
const std::string & | msg | ||
) |
Definition at line 1119 of file stack-frame.cc.
References accept(), symbol_info_accumulator::display(), symbol_info_accumulator::is_empty(), string_vector::list_in_columns(), symbol_info_accumulator::map_value(), symbol_info_accumulator::names(), octave_stdout, and octave_value().
octave_value stack_frame::workspace | ( | void | ) |
Definition at line 1170 of file stack-frame.cc.
References access_link(), all_variables(), octave_scalar_map::assign(), octave_value::is_defined(), symbol_info_list::names(), and symbol_info_list::varval().
|
protected |
Definition at line 591 of file stack-frame.h.
Referenced by access_link(), user_fcn_stack_frame::break_closure_cycles(), display(), script_stack_frame::get_auto_fcn_var(), script_stack_frame::get_val_offsets_internal(), script_stack_frame::lookup_symbol(), script_stack_frame::set_auto_fcn_var(), and script_stack_frame::set_script_offsets_internal().
|
protected |
Definition at line 574 of file stack-frame.h.
|
protected |
Definition at line 595 of file stack-frame.h.
Referenced by get_dispatch_class(), and set_dispatch_class().
|
protected |
Definition at line 565 of file stack-frame.h.
Referenced by install_variable(), script_stack_frame::varref(), user_fcn_stack_frame::varref(), scope_stack_frame::varref(), script_stack_frame::varval(), user_fcn_stack_frame::varval(), and scope_stack_frame::varval().
|
protected |
Definition at line 577 of file stack-frame.h.
|
protected |
Definition at line 569 of file stack-frame.h.
Referenced by is_closure_context(), and mark_closure_context().
|
protected |
Definition at line 573 of file stack-frame.h.
|
protected |
Definition at line 581 of file stack-frame.h.
Referenced by display(), and parent_link().
|
protected |
Definition at line 586 of file stack-frame.h.
Referenced by display(), and static_link().