# HG changeset patch # User John W. Eaton # Date 1348079927 14400 # Node ID 1249a615c91b2c6ebaa168e1293de65b1d17e570 # Parent 2afbe42956829eb7b5990402ebee0e5ae98a99c6 call built-in functions directly in GUI callbacks * main-window.cc: Include builtins.h instead of debug.h and variables.h. (main_window::save_workspace_callback): Call Fsave directly. (main_window::load_workspace_callback): Call Fload directly. (main_window::clear_workspace_callback):Call Fclear directly. (main_window::change_directory_callback): Call Fcd, not octave_env::chdir. (main_window::debug_continue_callback): Call Fdbcont directly. (main_window::debug_step_into_callback): Call Fdbstep directly. (main_window::debug_step_over_callback): Call Fdbstep directly. (main_window::debug_step_out_callback): Call Fdbstep directly. (main_window::debug_quit_callback): Call Fdbquit directly. (main_window::exit_callback): Call Fquit directly. * oct-obj.h (ovl): New functions. * debug.cc, debug.h (debug_step, debug_quit, debug_continue): Delete. * load-save.cc, load-save.h (load_workspace, save_workspace): Delete. * variables.cc, varaibles.h (clear_current_scope): Delete. diff -r 2afbe4295682 -r 1249a615c91b libgui/src/main-window.cc --- a/libgui/src/main-window.cc Wed Sep 19 14:32:30 2012 -0400 +++ b/libgui/src/main-window.cc Wed Sep 19 14:38:47 2012 -0400 @@ -42,11 +42,10 @@ #include "octave-link.h" #include "settings-dialog.h" -#include "debug.h" +#include "builtins.h" #include "defaults.h" #include "load-save.h" #include "toplev.h" -#include "variables.h" #include "version.h" #include "cmd-hist.h" @@ -871,19 +870,19 @@ void main_window::save_workspace_callback (const std::string& file) { - save_workspace (file); + Fsave (ovl (file)); } void main_window::load_workspace_callback (const std::string& file) { - load_workspace (file); + Fload (ovl (file)); } void main_window::clear_workspace_callback (void) { - clear_current_scope (); + Fclear (); } void @@ -897,41 +896,41 @@ void main_window::change_directory_callback (const std::string& directory) { - octave_env::chdir (directory); + Fcd (ovl (directory)); } void main_window::debug_continue_callback (void) { - debug_continue (); + Fdbcont (); } void main_window::debug_step_into_callback (void) { - debug_step ("in"); + Fdbstep (ovl ("in")); } void main_window::debug_step_over_callback (void) { - debug_step (); + Fdbstep (); } void main_window::debug_step_out_callback (void) { - debug_step ("out"); + Fdbstep (ovl ("out")); } void main_window::debug_quit_callback (void) { - debug_quit (); + Fdbquit (); } void main_window::exit_callback (void) { - clean_up_and_exit (0); + Fquit (); } diff -r 2afbe4295682 -r 1249a615c91b libinterp/interp-core/oct-obj.h --- a/libinterp/interp-core/oct-obj.h Wed Sep 19 14:32:30 2012 -0400 +++ b/libinterp/interp-core/oct-obj.h Wed Sep 19 14:38:47 2012 -0400 @@ -166,4 +166,152 @@ DECLARE_OCTAVE_ALLOCATOR }; +// Make it easy to build argument lists for built-in functions or for +// returning values. + +inline octave_value_list +ovl (const octave_value& a0) +{ + octave_value_list retval; + retval(0) = a0; + return retval; +} + +inline octave_value_list +ovl (const octave_value& a0, const octave_value& a1) +{ + octave_value_list retval; + retval(1) = a1; + retval(0) = a0; + return retval; +} + +inline octave_value_list +ovl (const octave_value& a0, const octave_value& a1, + const octave_value& a2) +{ + octave_value_list retval; + retval(2) = a2; + retval(1) = a1; + retval(0) = a0; + return retval; +} + +inline octave_value_list +ovl (const octave_value& a0, const octave_value& a1, + const octave_value& a2, const octave_value& a3) +{ + octave_value_list retval; + retval(3) = a3; + retval(2) = a2; + retval(1) = a1; + retval(0) = a0; + return retval; +} + +inline octave_value_list +ovl (const octave_value& a0, const octave_value& a1, + const octave_value& a2, const octave_value& a3, + const octave_value& a4) +{ + octave_value_list retval; + retval(4) = a4; + retval(3) = a3; + retval(2) = a2; + retval(1) = a1; + retval(0) = a0; + return retval; +} + +inline octave_value_list +ovl (const octave_value& a0, const octave_value& a1, + const octave_value& a2, const octave_value& a3, + const octave_value& a4, const octave_value& a5) +{ + octave_value_list retval; + retval(5) = a5; + retval(4) = a4; + retval(3) = a3; + retval(2) = a2; + retval(1) = a1; + retval(0) = a0; + return retval; +} + +inline octave_value_list +ovl (const octave_value& a0, const octave_value& a1, + const octave_value& a2, const octave_value& a3, + const octave_value& a4, const octave_value& a5, + const octave_value& a6) +{ + octave_value_list retval; + retval(6) = a6; + retval(5) = a5; + retval(4) = a4; + retval(3) = a3; + retval(2) = a2; + retval(1) = a1; + retval(0) = a0; + return retval; +} + +inline octave_value_list +ovl (const octave_value& a0, const octave_value& a1, + const octave_value& a2, const octave_value& a3, + const octave_value& a4, const octave_value& a5, + const octave_value& a6, const octave_value& a7) +{ + octave_value_list retval; + retval(7) = a7; + retval(6) = a6; + retval(5) = a5; + retval(4) = a4; + retval(3) = a3; + retval(2) = a2; + retval(1) = a1; + retval(0) = a0; + return retval; +} + +inline octave_value_list +ovl (const octave_value& a0, const octave_value& a1, + const octave_value& a2, const octave_value& a3, + const octave_value& a4, const octave_value& a5, + const octave_value& a6, const octave_value& a7, + const octave_value& a8) +{ + octave_value_list retval; + retval(8) = a8; + retval(7) = a7; + retval(6) = a6; + retval(5) = a5; + retval(4) = a4; + retval(3) = a3; + retval(2) = a2; + retval(1) = a1; + retval(0) = a0; + return retval; +} + +inline octave_value_list +ovl (const octave_value& a0, const octave_value& a1, + const octave_value& a2, const octave_value& a3, + const octave_value& a4, const octave_value& a5, + const octave_value& a6, const octave_value& a7, + const octave_value& a8, const octave_value& a9) +{ + octave_value_list retval; + retval(9) = a9; + retval(8) = a8; + retval(7) = a7; + retval(6) = a6; + retval(5) = a5; + retval(4) = a4; + retval(3) = a3; + retval(2) = a2; + retval(1) = a1; + retval(0) = a0; + return retval; +} + #endif diff -r 2afbe4295682 -r 1249a615c91b libinterp/interpfcn/debug.cc --- a/libinterp/interpfcn/debug.cc Wed Sep 19 14:32:30 2012 -0400 +++ b/libinterp/interpfcn/debug.cc Wed Sep 19 14:38:47 2012 -0400 @@ -1201,17 +1201,6 @@ DEFALIAS (dbnext, dbstep); -void -debug_step (const std::string& what) -{ - octave_value_list args; - - if (! what.empty ()) - args(0) = what; - - Fdbstep (args); -} - DEFUN (dbcont, args, , "-*- texinfo -*-\n\ @deftypefn {Command} {} dbcont\n\ @@ -1236,12 +1225,6 @@ return octave_value_list (); } -void -debug_continue (void) -{ - Fdbcont (); -} - DEFUN (dbquit, args, , "-*- texinfo -*-\n\ @deftypefn {Command} {} dbquit\n\ @@ -1269,12 +1252,6 @@ return octave_value_list (); } -void -debug_quit (void) -{ - Fdbquit (); -} - DEFUN (isdebugmode, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} isdebugmode ()\n\ diff -r 2afbe4295682 -r 1249a615c91b libinterp/interpfcn/debug.h --- a/libinterp/interpfcn/debug.h Wed Sep 19 14:32:30 2012 -0400 +++ b/libinterp/interpfcn/debug.h Wed Sep 19 14:38:47 2012 -0400 @@ -131,10 +131,4 @@ extern std::string get_file_line (const std::string& fname, size_t line); -extern void OCTINTERP_API debug_continue (void); - -extern void OCTINTERP_API debug_step (const std::string& what = std::string ()); - -extern void OCTINTERP_API debug_quit (void); - #endif diff -r 2afbe4295682 -r 1249a615c91b libinterp/interpfcn/load-save.cc --- a/libinterp/interpfcn/load-save.cc Wed Sep 19 14:32:30 2012 -0400 +++ b/libinterp/interpfcn/load-save.cc Wed Sep 19 14:38:47 2012 -0400 @@ -1443,17 +1443,6 @@ } } -void -load_workspace (const std::string& file) -{ - octave_value_list args; - - if (! file.empty ()) - args(0) = file; - - Fload (args); -} - DEFUN (save, args, , "-*- texinfo -*-\n\ @deftypefn {Command} {} save file\n\ @@ -1755,17 +1744,6 @@ return retval; } -void -save_workspace (const std::string& file) -{ - octave_value_list args; - - if (! file.empty ()) - args(0) = file; - - Fsave (args); -} - DEFUN (crash_dumps_octave_core, args, nargout, "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {@var{val} =} crash_dumps_octave_core ()\n\ diff -r 2afbe4295682 -r 1249a615c91b libinterp/interpfcn/load-save.h --- a/libinterp/interpfcn/load-save.h Wed Sep 19 14:32:30 2012 -0400 +++ b/libinterp/interpfcn/load-save.h Wed Sep 19 14:38:47 2012 -0400 @@ -87,7 +87,4 @@ extern void write_header (std::ostream& os, load_save_format format); -extern OCTINTERP_API void load_workspace (const std::string& file); -extern OCTINTERP_API void save_workspace (const std::string& file); - #endif diff -r 2afbe4295682 -r 1249a615c91b libinterp/interpfcn/variables.cc --- a/libinterp/interpfcn/variables.cc Wed Sep 19 14:32:30 2012 -0400 +++ b/libinterp/interpfcn/variables.cc Wed Sep 19 14:38:47 2012 -0400 @@ -2460,12 +2460,6 @@ return retval; } -void -clear_current_scope (void) -{ - Fclear (); -} - DEFUN (whos_line_format, args, nargout, "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {@var{val} =} whos_line_format ()\n\ diff -r 2afbe4295682 -r 1249a615c91b libinterp/interpfcn/variables.h --- a/libinterp/interpfcn/variables.h Wed Sep 19 14:32:30 2012 -0400 +++ b/libinterp/interpfcn/variables.h Wed Sep 19 14:38:47 2012 -0400 @@ -148,7 +148,4 @@ extern OCTINTERP_API void maybe_missing_function_hook (const std::string& name); -// Equivalent to Fclear without any arguments. -extern OCTINTERP_API void clear_current_scope (void); - #endif