26 #if defined (HAVE_CONFIG_H)
141 void display (
bool follow =
true)
const;
195 static std::shared_ptr<stack_frame>
226 size_t& frame_offset,
227 size_t& data_offset);
230 size_t& frame_offset,
231 size_t& data_offset)
const;
234 size_t& data_offset)
const;
260 void display (
bool follow =
true)
const;
323 return m_flags.at (data_offset);
328 m_flags.at (data_offset) = flag;
357 void display (
bool follow =
true)
const;
402 const std::shared_ptr<stack_frame>&
access_link = std::shared_ptr<stack_frame> ())
423 for (
const auto& nm_ov : local_vars)
424 assign (nm_ov.first, nm_ov.second);
439 static std::shared_ptr<stack_frame>
476 void display (
bool follow =
true)
const;
544 void display (
bool follow =
true)
const;
562 os <<
"scope: " << scope.
name () << std::endl;
566 os <<
"name (frame offset, data offset, storage class):"
569 std::list<symbol_record> symbols = scope.
symbol_list ();
571 for (
auto& sym : symbols)
573 os <<
" " << sym.name () <<
" (" << sym.frame_offset ()
574 <<
", " << sym.data_offset () <<
", " << sym.storage_class ()
644 std::shared_ptr<stack_frame> slink = frame.
static_link ();
647 slink->accept (*
this);
652 std::shared_ptr<stack_frame> alink = frame.
access_link ();
655 alink->accept (*
this);
662 std::shared_ptr<stack_frame> alink = frame.
access_link ();
665 alink->accept (*
this);
672 std::shared_ptr<stack_frame> alink = frame.
access_link ();
675 alink->accept (*
this);
707 const std::list<symbol_record>& symbols)
711 for (
const auto& sym : symbols)
724 for (
const auto& sym : symbols)
741 for (
const auto& sym : symbols)
743 if (pat.
match (sym.name ()))
754 std::list<symbol_record> symbols = scope.
symbol_list ();
774 bool have_regexp =
false)
781 bool have_regexp =
false)
812 std::list<std::string>
names (
void)
const
814 std::list<std::string>
retval;
820 std::list<std::string> nm_list = lst.
names ();
822 for (
const auto& nm : nm_list)
837 for (
const auto& syminf : lst)
838 retval.push_back (syminf);
857 std::string scope_name = nm_sil.first;
860 map_list[j] = lst.
map_value (scope_name, n_frames-j);
872 os <<
"\nvariables in scope: " << nm_sil.first <<
"\n\n";
886 std::shared_ptr<stack_frame> slink = frame.
static_link ();
889 slink->accept (*
this);
894 std::shared_ptr<stack_frame> alink = frame.
access_link ();
897 alink->accept (*
this);
904 std::shared_ptr<stack_frame> alink = frame.
access_link ();
907 alink->accept (*
this);
914 std::shared_ptr<stack_frame> alink = frame.
access_link ();
917 alink->accept (*
this);
928 std::list<symbol_record>
931 std::list<symbol_record> new_symbols;
935 for (
const auto& sym : symbols)
939 std::string
name = sym.name ();
947 new_symbols.push_back (sym);
961 for (
const auto& sym : symbols)
963 std::string
name = sym.name ();
973 new_symbols.push_back (sym);
988 for (
const auto& sym : symbols)
990 std::string
name = sym.name ();
1000 new_symbols.push_back (sym);
1013 std::list<symbol_record> symbols = scope.
symbol_list ();
1016 symbols =
filter (frame, symbols);
1036 const std::shared_ptr<stack_frame>& parent_link,
1037 const std::shared_ptr<stack_frame>& static_link)
1045 const std::shared_ptr<stack_frame>& parent_link,
1046 const std::shared_ptr<stack_frame>& static_link)
1053 const std::shared_ptr<stack_frame>& parent_link,
1054 const std::shared_ptr<stack_frame>& static_link,
1055 const std::shared_ptr<stack_frame>& access_link)
1062 const std::shared_ptr<stack_frame>& parent_link,
1063 const std::shared_ptr<stack_frame>& static_link,
1071 const std::shared_ptr<stack_frame>& parent_link,
1072 const std::shared_ptr<stack_frame>& static_link)
1083 warning (
"invalid call to stack_frame::clear_values; please report");
1091 for (
const auto& sym : symrec_list)
1100 symbol_stats.
append (syminf);
1104 return symbol_stats;
1108 bool have_regexp,
bool return_list,
1109 bool verbose,
const std::string& whos_line_fmt,
1110 const std::string& msg)
1123 else if (! sym_inf_accum.
is_empty ())
1127 octave_stdout <<
"Variables visible from the current scope:\n";
1160 std::list<octave_scalar_map> ws_list;
1170 for (
const auto& sym_name : symbols.
names ())
1175 ws.
assign (sym_name, val);
1178 ws_list.push_back (ws);
1180 std::shared_ptr<stack_frame> nxt = frame->
access_link ();
1184 Cell ws_frames (ws_list.size (), 1);
1187 for (
const auto& elt : ws_list)
1188 ws_frames(i++) = elt;
1198 std::list<std::string>
retval;
1202 const std::map<std::string, symbol_record>& symbols = scope.
symbols ();
1204 for (
const auto& nm_sr : symbols)
1207 retval.push_back (nm_sr.first);
1278 std::string nm = sym.
name ();
1281 "global: '%s' is defined in the current scope.\n",
1284 "global: in a future version, global variables must be declared before use.\n");
1295 "global: global value overrides existing local value");
1302 "global: existing local value used to initialize global variable");
1385 os <<
"at top level" << std::endl;
1388 os <<
"stopped in " <<
fcn_name ();
1392 os <<
" at line " <<
line ();
1402 os <<
"-- [stack_frame] (" <<
this <<
") --" << std::endl;
1404 os <<
"parent link: ";
1411 os <<
"static link: ";
1418 os <<
"access link: ";
1425 os <<
"line: " <<
m_line << std::endl;
1426 os <<
"column: " <<
m_column << std::endl;
1427 os <<
"index: " <<
m_index << std::endl;
1434 os <<
"FOLLOWING ACCESS LINKS:" << std::endl;
1435 std::shared_ptr<stack_frame> frm =
access_link ();
1438 frm->display (
false);
1441 frm = frm->access_link ();
1449 os <<
"-- [compiled_fcn_stack_frame] (" <<
this <<
") --" << std::endl;
1464 const std::shared_ptr<stack_frame>& parent_link,
1465 const std::shared_ptr<stack_frame>& static_link)
1466 :
stack_frame (tw, index, parent_link, static_link,
1467 get_access_link (static_link)),
1468 m_script (script), m_unwind_protect_frame (nullptr),
1469 m_lexical_frame_offsets (get_num_symbols (script), 1),
1470 m_value_offsets (get_num_symbols (script), 0)
1489 size_t num_script_symbols = script_scope.
num_symbols ();
1491 resize (num_script_symbols);
1493 const std::map<std::string, symbol_record>& script_symbols
1500 (
const std::map<std::string, symbol_record>& script_symbols)
1511 for (
const auto& nm_sr : script_symbols)
1513 std::string
name = nm_sr.first;
1520 while (parent_scope)
1522 const std::map<std::string, symbol_record>& parent_scope_symbols
1525 auto p = parent_scope_symbols.find (
name);
1527 if (p != parent_scope_symbols.end ())
1532 size_t script_sr_data_offset = script_sr.
data_offset ();
1550 error (
"symbol '%s' cannot be added to static scope",
1556 const std::map<std::string, symbol_record>& eval_scope_symbols
1559 for (
const auto& nm_sr : script_symbols)
1561 std::string
name = nm_sr.first;
1564 auto p = eval_scope_symbols.find (
name);
1568 if (p == eval_scope_symbols.end ())
1571 eval_scope_sr = p->second;
1573 size_t script_sr_data_offset = script_sr.
data_offset ();
1595 assert (data_offset >=
size ());
1603 std::map<std::string, symbol_record> tmp_symbols;
1604 tmp_symbols[sym.
name ()] = sym;
1611 std::shared_ptr<stack_frame>
1619 while (alink->is_user_script_frame ())
1621 if (alink->access_link ())
1622 alink = alink->access_link ();
1698 size_t& frame_offset,
1699 size_t& data_offset)
const
1710 std::string
name = script_sr.
name ();
1716 while (parent_scope)
1718 const std::map<std::string, symbol_record>& parent_scope_symbols
1721 auto p = parent_scope_symbols.find (
name);
1723 if (p != parent_scope_symbols.end ())
1728 frame_offset = parent_scope_sr.
frame_offset () + count;
1743 const std::map<std::string, symbol_record>& eval_scope_symbols
1746 std::string
name = script_sr.
name ();
1748 auto p = eval_scope_symbols.find (
name);
1752 if (p != eval_scope_symbols.end ())
1755 eval_scope_sr = p->second;
1770 size_t& frame_offset,
1771 size_t& data_offset)
const
1776 if (frame_offset == 0)
1784 if (data_offset >=
size ())
1795 if (frame_offset == 0)
1819 size_t& frame_offset,
1820 size_t& data_offset)
1825 if (frame_offset == 0)
1827 if (data_offset >=
size ())
1844 if (frame_offset == 0)
1859 std::map<std::string, symbol_record> tmp_symbols;
1860 tmp_symbols[sym.
name ()] = sym;
1877 size_t frame_offset;
1891 for (
size_t i = 0; i < frame_offset; i++)
1893 std::shared_ptr<stack_frame> nxt = frame->
access_link ();
1898 error (
"internal error: invalid access link in function call stack");
1900 if (data_offset >= frame->
size ())
1908 size_t frame_offset;
1921 for (
size_t i = 0; i < frame_offset; i++)
1923 std::shared_ptr<stack_frame> nxt = frame->
access_link ();
1928 error (
"internal error: invalid access link in function call stack");
1930 if (data_offset >= frame->
size ())
1936 return frame->
varval (data_offset);
1949 error (
"internal error: invalid switch case");
1954 size_t frame_offset;
1963 for (
size_t i = 0; i < frame_offset; i++)
1965 std::shared_ptr<stack_frame> nxt = frame->
access_link ();
1969 if (data_offset >= frame->
size ())
1970 frame->
resize (data_offset+1);
1975 return frame->
varref (data_offset);
1988 error (
"internal error: invalid switch case");
1996 if (data_offset >=
size ())
2004 if (frame_offset > 1)
2005 error (
"variables must be made PERSISTENT or GLOBAL in the first scope in which they are used");
2007 std::shared_ptr<stack_frame> frame =
access_link ();
2009 if (data_offset >= frame->size ())
2010 frame->resize (data_offset+1);
2012 frame->set_scope_flag (data_offset, flag);
2019 os <<
"-- [script_stack_frame] (" <<
this <<
") --" << std::endl;
2049 os <<
"-- [base_value_stack_frame] (" <<
this <<
") --" << std::endl;
2052 os <<
"values: " <<
m_values.size ()
2053 <<
" elements (idx, scope flag, type):" << std::endl;
2055 for (
size_t i = 0; i <
m_values.size (); i++)
2057 os <<
" (" << i <<
", " <<
m_flags.at (i) <<
", ";
2069 std::shared_ptr<stack_frame>
2071 const std::shared_ptr<stack_frame>& static_link)
2073 std::shared_ptr<stack_frame> alink;
2080 error (
"internal call stack error (invalid static link)");
2087 if (caller_nesting_depth < nesting_depth)
2102 int links_to_follow = caller_nesting_depth - nesting_depth + 1;
2106 while (alink && --links_to_follow >= 0)
2107 alink = alink->access_link ();
2110 error (
"internal function nesting error (invalid access link)");
2121 const std::list<symbol_record>& symbols = fcn_scope.
symbol_list ();
2126 for (
const auto& sym : symbols)
2128 size_t frame_offset = sym.frame_offset ();
2130 if (frame_offset > 0)
2133 size_t data_offset = sym.data_offset ();
2135 if (data_offset >=
size ())
2172 std::shared_ptr<stack_frame> nxt = frame->
access_link ();
2228 for (
size_t i = 0; i < frame_offset; i++)
2230 std::shared_ptr<stack_frame> nxt = frame->
access_link ();
2235 error (
"internal error: invalid access link in function call stack");
2237 if (data_offset >= frame->
size ())
2253 for (
size_t i = 0; i < frame_offset; i++)
2255 std::shared_ptr<stack_frame> nxt = frame->
access_link ();
2260 error (
"internal error: invalid access link in function call stack");
2262 if (data_offset >= frame->
size ())
2268 return frame->
varval (data_offset);
2281 error (
"internal error: invalid switch case");
2294 for (
size_t i = 0; i < frame_offset; i++)
2296 std::shared_ptr<stack_frame> nxt = frame->
access_link ();
2300 if (data_offset >= frame->
size ())
2301 frame->
resize (data_offset+1);
2306 return frame->
varref (data_offset);
2319 error (
"internal error: invalid switch case");
2327 error (
"variables must be made PERSISTENT or GLOBAL in the first scope in which they are used");
2331 if (data_offset >=
size ())
2341 os <<
"-- [user_fcn_stack_frame] (" <<
this <<
") --" << std::endl;
2383 if (data_offset >=
size ())
2396 if (data_offset >=
size ())
2411 error (
"internal error: invalid switch case");
2421 if (data_offset >=
size ())
2436 error (
"internal error: invalid switch case");
2447 if (data_offset >=
size ())
2457 os <<
"-- [scope_stack_frame] (" <<
this <<
") --" << std::endl;
Array< T > sort(int dim=0, sortmode mode=ASCENDING) const
Size of the specified dimension.
bool match(const std::string &str) const
void append(const elt_type &s)
virtual octave_value varval(const symbol_record &sym) const=0
void display(bool follow=true) const
octave_value get_auto_fcn_var(auto_var_type avt) const
std::vector< scope_flags > m_flags
std::vector< octave_value > m_values
std::vector< octave_value > m_auto_vars
virtual octave_value & varref(const symbol_record &sym)=0
base_value_stack_frame(tree_evaluator &tw, size_t num_symbols, 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::scope_flags get_scope_flag(size_t data_offset) const
void set_scope_flag(size_t data_offset, scope_flags flag)
base_value_stack_frame & operator=(const base_value_stack_frame &elt)=delete
base_value_stack_frame(void)=delete
base_value_stack_frame(const base_value_stack_frame &elt)=default
octave_value varval(size_t data_offset) const
octave_value & varref(size_t data_offset)
void set_auto_fcn_var(auto_var_type avt, const octave_value &val)
~base_value_stack_frame(void)=default
~compiled_fcn_stack_frame(void)=default
bool is_compiled_fcn_frame(void) const
void display(bool follow=true) const
symbol_record insert_symbol(const std::string &name)
compiled_fcn_stack_frame(tree_evaluator &tw, octave_function *fcn, size_t index, const std::shared_ptr< stack_frame > &parent_link, const std::shared_ptr< stack_frame > &static_link)
symbol_record lookup_symbol(const std::string &name) const
stack_frame::scope_flags scope_flag(const symbol_record &sym) const
compiled_fcn_stack_frame & operator=(const compiled_fcn_stack_frame &elt)=delete
void mark_scope(const symbol_record &sym, scope_flags flag)
compiled_fcn_stack_frame(const compiled_fcn_stack_frame &elt)=default
void set_auto_fcn_var(auto_var_type avt, const octave_value &val)
octave_value varval(const symbol_record &sym) const
symbol_scope get_scope(void) const
void accept(stack_frame_walker &sfw)
octave_value & varref(const symbol_record &sym)
compiled_fcn_stack_frame(void)=delete
octave_value get_auto_fcn_var(auto_var_type avt) const
bool is_match(const std::string &buffer)
~scope_stack_frame(void)=default
scope_stack_frame(tree_evaluator &tw, const symbol_scope &scope, size_t index, const std::shared_ptr< stack_frame > &parent_link, const std::shared_ptr< stack_frame > &static_link)
scope_stack_frame & operator=(const scope_stack_frame &elt)=delete
void display(bool follow=true) const
void accept(stack_frame_walker &sfw)
void mark_scope(const symbol_record &sym, scope_flags flag)
bool is_scope_frame(void) const
symbol_record insert_symbol(const std::string &)
scope_stack_frame(const scope_stack_frame &elt)=default
octave_value varval(size_t data_offset) const
octave_value & varref(size_t data_offset)
scope_stack_frame(void)=delete
symbol_scope get_scope(void) const
symbol_record lookup_symbol(const std::string &name) const
scope_flags scope_flag(const symbol_record &sym) const
void set_script_offsets(void)
script_stack_frame(const script_stack_frame &elt)=default
void set_auto_fcn_var(auto_var_type avt, const octave_value &val)
unwind_protect * unwind_protect_frame(void)
void set_script_offsets_internal(const std::map< std::string, symbol_record > &symbols)
script_stack_frame(void)=delete
void get_val_offsets_with_insert(const symbol_record &sym, size_t &frame_offset, size_t &data_offset)
virtual octave_value varval(const symbol_record &sym) const=0
bool is_user_script_frame(void) const
static size_t get_num_symbols(octave_user_script *script)
void display(bool follow=true) const
unwind_protect * m_unwind_protect_frame
bool get_val_offsets_internal(const symbol_record &sym, size_t &frame_offset, size_t &data_offset) const
bool get_val_offsets(const symbol_record &sym, size_t &frame_offset, size_t &data_offset) const
scope_flags scope_flag(const symbol_record &sym) const
static std::shared_ptr< stack_frame > get_access_link(const std::shared_ptr< stack_frame > &static_link)
void mark_scope(const symbol_record &sym, scope_flags flag)
symbol_record insert_symbol(const std::string &)
virtual octave_value & varref(const symbol_record &sym)=0
symbol_record lookup_symbol(const std::string &name) const
symbol_scope get_scope(void) const
octave_value get_auto_fcn_var(auto_var_type avt) const
octave_user_script * m_script
std::vector< size_t > m_value_offsets
std::vector< size_t > m_lexical_frame_offsets
~script_stack_frame(void)
void accept(stack_frame_walker &sfw)
script_stack_frame & operator=(const script_stack_frame &elt)=delete
void resize_and_update_script_offsets(const symbol_record &sym)
virtual void visit_compiled_fcn_stack_frame(compiled_fcn_stack_frame &)=0
virtual void visit_script_stack_frame(script_stack_frame &)=0
virtual void visit_scope_stack_frame(scope_stack_frame &)=0
virtual void visit_user_fcn_stack_frame(user_fcn_stack_frame &)=0
virtual ~stack_frame_walker(void)=default
stack_frame_walker & operator=(const stack_frame_walker &)=delete
stack_frame_walker(const stack_frame_walker &)=delete
bool is_persistent(const symbol_record &sym) const
void clear_variables(void)
octave_value value(const symbol_record &sym, const std::string &type, const std::list< octave_value_list > &idx) const
void clear_variable_regexp(const std::string &pattern)
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)
virtual symbol_scope get_scope(void) const =0
void assign(const symbol_record &sym, const octave_value &val)
std::shared_ptr< stack_frame > m_static_link
bool is_global(const symbol_record &sym) const
symbol_info_list all_variables(void)
symbol_info_list regexp_symbol_info(const std::string &pattern)
tree_evaluator & m_evaluator
virtual scope_flags get_scope_flag(size_t) const
void clear_variable_pattern(const std::string &pattern)
virtual void set_scope_flag(size_t, scope_flags)
virtual void display(bool follow=true) const
symbol_info_list make_symbol_info_list(const std::list< symbol_record > &symrec_list) const
std::list< std::string > variable_names(void) const
std::shared_ptr< stack_frame > m_parent_link
std::shared_ptr< stack_frame > access_link(void) const
void clear_variable(const std::string &name)
bool is_defined(const symbol_record &sym) const
octave_value workspace(void)
virtual octave_value & varref(const symbol_record &sym)=0
std::shared_ptr< stack_frame > m_access_link
std::string fcn_name(bool print_subfn=true) const
virtual void clear_values(void)
void mark_global(const symbol_record &sym)
std::shared_ptr< stack_frame > parent_link(void) const
bool is_variable(const symbol_record &sym) const
std::shared_ptr< stack_frame > static_link(void) const
virtual size_t size(void) const
void clear(const symbol_record &sym)
std::string fcn_file_name(void) const
static stack_frame * create(tree_evaluator &tw, octave_function *fcn, size_t index, const std::shared_ptr< stack_frame > &parent_link, const std::shared_ptr< stack_frame > &static_link)
bool is_object(const symbol_record &sym) const
symbol_info_list glob_symbol_info(const std::string &pattern)
void install_variable(const symbol_record &sym, const octave_value &value, bool global)
std::map< std::string, octave_value > local_vars_map
virtual octave_value varval(const symbol_record &sym) const =0
virtual void accept(stack_frame_walker &sfw)=0
void display_stopped_in_message(std::ostream &os) const
virtual void resize(size_t)
void visit_compiled_fcn_stack_frame(compiled_fcn_stack_frame &frame)
void clear_symbols(stack_frame &frame, const std::list< symbol_record > &symbols)
void visit_scope_stack_frame(scope_stack_frame &frame)
symbol_cleaner(const std::string &pattern, bool have_regexp=false)
symbol_cleaner(const string_vector &patterns, bool have_regexp=false)
~symbol_cleaner(void)=default
void visit_script_stack_frame(script_stack_frame &frame)
void visit_user_fcn_stack_frame(user_fcn_stack_frame &frame)
symbol_cleaner(const symbol_cleaner &)=delete
void maybe_clear_symbol(stack_frame &frame, const symbol_record &sym)
void clean_frame(stack_frame &frame)
symbol_cleaner(bool clear_all_names=true, bool clear_objects=false)
std::set< std::string > m_cleared_names
symbol_cleaner & operator=(const symbol_cleaner &)=delete
bool is_empty(void) const
symbol_info_list symbol_info(void) const
void visit_user_fcn_stack_frame(user_fcn_stack_frame &frame)
void visit_compiled_fcn_stack_frame(compiled_fcn_stack_frame &frame)
std::list< symbol_record > filter(stack_frame &frame, const std::list< symbol_record > &symbols)
std::list< std::pair< std::string, symbol_info_list > > m_sym_inf_list
~symbol_info_accumulator(void)=default
symbol_info_accumulator(const symbol_info_accumulator &)=delete
octave_map map_value(void) const
std::list< std::string > names(void) const
void append_list(stack_frame &frame)
symbol_info_accumulator(const string_vector &patterns, bool have_regexp=false)
symbol_info_accumulator & operator=(const symbol_info_accumulator &)=delete
void visit_scope_stack_frame(scope_stack_frame &frame)
std::set< std::string > m_found_names
void visit_script_stack_frame(script_stack_frame &frame)
void display(std::ostream &os, const std::string &format) const
symbol_info_accumulator(const std::string &pattern, bool have_regexp=false)
symbol_info_accumulator(bool match_all=true, bool first_only=true)
std::pair< std::string, symbol_info_list > syminf_list_elt
octave_map map_value(const std::string &caller_function_name, int nesting_level) const
octave_value varval(const std::string &name) const
void display(std::ostream &os, const std::string &format) const
std::list< std::string > names(void) const
symbol_record dup(void) const
void set_frame_offset(size_t offset)
size_t frame_offset(void) const
size_t data_offset(void) const
std::string name(void) const
std::string name(void) const
octave_value & persistent_varref(size_t data_offset)
size_t nesting_depth(void) const
std::shared_ptr< symbol_scope_rep > parent_scope(void) const
symbol_record lookup_symbol(const std::string &name) const
std::list< symbol_record > symbol_list(void) const
symbol_record find_symbol(const std::string &name)
symbol_record insert(const std::string &name)
size_t num_symbols(void) const
octave_value persistent_varval(size_t data_offset) const
const std::map< std::string, symbol_record > & symbols(void) const
bool is_nested(void) const
octave_value global_varval(const std::string &name) const
octave_value & global_varref(const std::string &name)
static std::shared_ptr< stack_frame > get_access_link(octave_user_function *fcn, const std::shared_ptr< stack_frame > &static_link)
user_fcn_stack_frame & operator=(const user_fcn_stack_frame &elt)=delete
unwind_protect * m_unwind_protect_frame
void mark_scope(const symbol_record &sym, scope_flags flag)
octave_user_function * m_fcn
unwind_protect * unwind_protect_frame(void)
symbol_record insert_symbol(const std::string &)
user_fcn_stack_frame(void)=delete
void display(bool follow=true) const
static size_t get_num_symbols(octave_user_function *fcn)
symbol_scope get_scope(void) const
bool is_user_fcn_frame(void) const
scope_flags scope_flag(const symbol_record &sym) const
~user_fcn_stack_frame(void)
user_fcn_stack_frame(tree_evaluator &tw, octave_user_function *fcn, 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)
user_fcn_stack_frame(tree_evaluator &tw, octave_user_function *fcn, 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 >())
user_fcn_stack_frame(const user_fcn_stack_frame &elt)=default
octave_value varval(size_t data_offset) const
octave_value & varref(size_t data_offset)
symbol_record lookup_symbol(const std::string &name) const
void accept(stack_frame_walker &sfw)
virtual std::string type_name(void) const
std::string name(void) const
static octave_map cat(int dim, octave_idx_type n, const octave_scalar_map *map_list)
void assign(const std::string &k, const octave_value &val)
octave::symbol_scope scope(void)
std::string type_name(void) const
std::string type_name(void) const
octave_idx_type get_count(void) const
void call_object_destructor(void)
bool is_defined(void) const
std::string type_name(void) const
std::ostream & list_in_columns(std::ostream &, int width=0, const std::string &prefix="") const
octave_idx_type numel(void) const
void warning(const char *fmt,...)
void warning_with_id(const char *id, const char *fmt,...)
void error(const char *fmt,...)
#define panic_impossible()
static void display_scope(std::ostream &os, const symbol_scope &scope)
size_t format(std::ostream &os, const char *fmt,...)
#define OCTAVE_LOCAL_BUFFER(T, buf, size)
return octave_value(v1.char_array_value() . concat(v2.char_array_value(), ra_idx),((a1.is_sq_string()||a2.is_sq_string()) ? '\'' :'"'))
octave_value::octave_value(const Array< char > &chm, char type) return retval