23 #if ! defined (octave_call_stack_h)
24 #define octave_call_stack_h 1
26 #include "octave-config.h"
86 typedef std::deque<stack_frame>::iterator
iterator;
102 error (
"unable to create call stack object!");
158 static stack_frame
frame (
size_t idx)
286 bool print_subfn =
true)
293 static std::list<octave_call_stack::stack_frame>
300 : std::list<octave_call_stack::stack_frame> ();
303 static std::list<octave_call_stack::stack_frame>
308 : std::list<octave_call_stack::stack_frame> ();
328 std::deque<stack_frame>
cs;
342 return curr_frame > 1 ? cs[curr_frame-1].m_fcn : cs[0].m_fcn;
353 return curr_frame > 0 && curr_frame < cs.size ()
359 return curr_frame > 0 && curr_frame < cs.size ()
364 const stack_frame& do_frame (
size_t idx)
366 static stack_frame foobar;
368 return idx < cs.size () ? cs[idx] : foobar;
399 curr_frame = cs.size ();
400 cs.push_back (
stack_frame (fcn, scope, context, prev_frame));
448 std::list<octave_call_stack::stack_frame>
453 bool print_subfn)
const;
static bool instance_ok(void)
static void restore_frame(size_t n)
size_t do_current_frame(void)
std::string fcn_name(bool print_subfn=true) const
void do_set_location(int l, int c)
static size_t num_user_code_frames(octave_idx_type &curr_user_frame)
void do_push(octave_function *fcn, symbol_table::scope_id scope, symbol_table::context_id context)
static void push(symbol_table::scope_id scope=symbol_table::current_scope(), symbol_table::context_id context=symbol_table::current_context())
static bool all_scripts(void)
F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_REAL const F77_REAL F77_REAL &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_DBLE F77_DBLE &F77_RET_T const F77_REAL F77_REAL &F77_RET_T F77_REAL F77_REAL &F77_RET_T F77_DBLE F77_DBLE &F77_RET_T const F77_DBLE const F77_DBLE * f
int do_caller_user_code_column(void) const
std::list< octave_call_stack::stack_frame > do_backtrace_frames(size_t nskip, octave_idx_type &curr_user_frame) const
void error(const char *fmt,...)
static octave_function * current(void)
bool do_all_scripts(void) const
static bool goto_frame(size_t n=0, bool verbose=false)
std::deque< stack_frame >::iterator iterator
octave_function * do_current(void) const
static void set_location(int l, int c)
int do_debug_user_code_line(void) const
std::deque< stack_frame >::reverse_iterator reverse_iterator
static void goto_caller_frame(void)
void do_set_column(int c)
static void create_instance(void)
static context_id current_context(void)
octave_user_code * do_debug_user_code(void) const
octave_function * do_caller(void) const
static int debug_user_code_line(void)
static int current_line(void)
std::deque< stack_frame > cs
symbol_table::scope_id do_current_scope(void) const
static octave_user_code * caller_user_code(size_t nskip=0)
static std::string fcn_file_name(const octave_value &fcn)
void do_goto_caller_frame(void)
static std::list< octave_call_stack::stack_frame > backtrace_frames(size_t nskip, octave_idx_type &curr_user_frame)
static octave_function * caller(void)
static symbol_table::scope_id current_scope(void)
static size_t current_frame(void)
std::deque< stack_frame >::const_iterator const_iterator
static llvm::LLVMContext & context
static octave_user_code * debug_user_code(void)
int do_current_column(void) const
bool do_goto_frame(size_t n, bool verbose)
octave_function * do_element(size_t n)
int do_caller_user_code_line(void) const
stack_frame(octave_function *fcn=0, symbol_table::scope_id scope=0, symbol_table::context_id context=0, size_t prev=0)
static void push(octave_function *f, symbol_table::scope_id scope=symbol_table::current_scope(), symbol_table::context_id context=symbol_table::current_context())
static void goto_base_frame(void)
symbol_table::context_id do_current_context(void) const
the sparsity preserving column transformation such that that defines the pivoting threshold can be given in which case it defines the c
octave_map do_backtrace(size_t nskip, octave_idx_type &curr_user_frame, bool print_subfn) const
static void set_column(int c)
symbol_table::scope_id m_scope
size_t do_num_user_code_frames(octave_idx_type &curr_user_frame) const
bool operator==(const dim_vector &a, const dim_vector &b)
static int caller_user_code_line(void)
bool do_goto_frame_relative(int n, bool verbose)
octave::unwind_protect frame
static symbol_table::context_id current_context(void)
static int current_column(void)
static octave_function * element(size_t n)
static int caller_user_code_column(void)
static std::list< octave_call_stack::stack_frame > backtrace_frames(size_t nskip=0)
static void set_line(int l)
static octave_map empty_backtrace(void)
static octave_call_stack * instance
static octave_map backtrace(size_t nskip, octave_idx_type &curr_user_frame, bool print_subfn=true)
int do_current_line(void) const
static bool goto_frame_relative(int n, bool verbose=false)
octave_user_code * do_caller_user_code(size_t nskip) const
stack_frame(const stack_frame &elt)
static int debug_user_code_column(void)
std::deque< stack_frame >::const_reverse_iterator const_reverse_iterator
If this string is the system will ring the terminal sometimes it is useful to be able to print the original representation of the string
int do_debug_user_code_column(void) const
static void cleanup_instance(void)
symbol_table::context_id m_context
static void set_scope_and_context(scope_id scope, context_id context)
void do_goto_base_frame(void)
static scope_id current_scope(void)
static octave_map backtrace(size_t nskip=0)