diff libinterp/corefcn/symtab.h @ 26845:6322d51c655c

allow function search in arbitrary scope * fcn-info.h, fcn-info.cc (fcn_info::builtin_find, fcn_info::find, fcn_info::find_function, fcn_info::fcn_info_rep::builtin_find, fcn_info::fcn_info_rep::find, fcn_info::fcn_info_rep::find_function, fcn_info::fcn_info_rep::xfind, fcn_info::fcn_info_rep::x_builtin_find): Pass scope as argument. (fcn_info::find, fcn_info::builtin_find): If given scope is valid, use it, otherwise default to current scope). (fcn_info::fcn_info_rep::xfind): Also search for subfunctions. * symtab.h, symtab.cc (symbol_table::builtin_find, symbol_table::fcn_table_find, symbol_table::find_function): Pass scope as argument. (symbol_table::find_function): Don't search for subfunctions. * symscope.h (symbol_scope::function, symbol_scope:symbol_scope_rep::function): Now const.
author John W. Eaton <jwe@octave.org>
date Tue, 05 Mar 2019 05:01:18 +0000
parents 98f1a964ff33
children 340d44f2f942
line wrap: on
line diff
--- a/libinterp/corefcn/symtab.h	Tue Mar 05 23:26:05 2019 +0100
+++ b/libinterp/corefcn/symtab.h	Tue Mar 05 05:01:18 2019 +0000
@@ -76,10 +76,14 @@
 
     octave_value find_autoload (const std::string& name);
 
-    octave_value builtin_find (const std::string& name);
+    octave_value
+    builtin_find (const std::string& name,
+                  const symbol_scope& search_scope = symbol_scope ());
 
-    octave_value fcn_table_find (const std::string& name,
-                                 const octave_value_list& args = ovl ());
+    octave_value
+    fcn_table_find (const std::string& name,
+                    const octave_value_list& args = ovl (),
+                    const symbol_scope& search_scope = symbol_scope ());
 
     // If NAME is of the form @CLASS/FUNCTION, call
     //
@@ -87,15 +91,19 @@
     //
     // otherwise call
     //
-    //   function_function (NAME, ovl ())
+    //   find_function (NAME, ovl ())
 
-    octave_value find_function (const std::string& name);
+    octave_value
+    find_function (const std::string& name,
+                   const symbol_scope& search_scope = symbol_scope ());
 
     // NAME should just be function name; dispatch type determined
     // from types of ARGS.
 
-    octave_value find_function (const std::string& name,
-                                const octave_value_list& args);
+    octave_value
+    find_function (const std::string& name,
+                   const octave_value_list& args,
+                   const symbol_scope& search_scope = symbol_scope ());
 
     octave_value find_user_function (const std::string& name);