diff libinterp/corefcn/load-path.cc @ 23599:5cb3a2bb5e1e

don't use singleton for symbol_table This is the first of a series of changes to make the symbol table a part of the interpreter instead of a global object. These changes also aim to simplify the implementation of symbol table so that it is easier to understand and modify. * Functions now own their scope (workspace) data. * The list of subfunctions is contained in the scope rather than a global list. * symtab.h, symtab.cc (class symbol_table): Don't use singleton pattern. * interpreter.h, interpreter.cc (interpreter::m_symbol_table): New data member. (interpreter::~interpreter): Don't set instance to 0. * interpreter-private.h, interpreter-private.cc (__get_symbol_table__): New function. Change all uses of call_stack to access call_stack object from the interpreter.
author John W. Eaton <jwe@octave.org>
date Fri, 09 Jun 2017 02:21:28 -0400
parents f6c5db0a02e7
children 91c8f006ed8b
line wrap: on
line diff
--- a/libinterp/corefcn/load-path.cc	Fri Jun 09 11:36:34 2017 -0400
+++ b/libinterp/corefcn/load-path.cc	Fri Jun 09 02:21:28 2017 -0400
@@ -121,7 +121,9 @@
   // Look in private directory corresponding to current function (if
   // any).
 
-  octave_user_function *curr_fcn = symbol_table::get_curr_fcn ();
+  symbol_table& symtab = octave::__get_symbol_table__ ("find_private_file");
+
+  octave_user_function *curr_fcn = symtab.get_curr_fcn ();
 
   if (curr_fcn)
     {
@@ -1681,7 +1683,10 @@
               {
                 if (file_info_list.empty ())
                   {
-                    if (symbol_table::is_built_in_function_name (base))
+                    symbol_table& symtab
+                      = octave::__get_symbol_table__ ("load_path::package_info::add_to_fcn_map");
+
+                    if (symtab.is_built_in_function_name (base))
                       {
                         std::string fcn_path = octave::sys::file_ops::concat (dir_name, fname);