Mercurial > octave
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);