Mercurial > octave
diff libinterp/corefcn/defun.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 | 14723784b9f2 |
children | 91c8f006ed8b |
line wrap: on
line diff
--- a/libinterp/corefcn/defun.cc Fri Jun 09 11:36:34 2017 -0400 +++ b/libinterp/corefcn/defun.cc Fri Jun 09 02:21:28 2017 -0400 @@ -91,7 +91,9 @@ { octave_value fcn (new octave_builtin (f, name, file, doc)); - symbol_table::install_built_in_function (name, fcn); + symbol_table& symtab = octave::__get_symbol_table__ ("install_builtin_function"); + + symtab.install_built_in_function (name, fcn); } void @@ -101,7 +103,9 @@ { octave_value fcn (new octave_builtin (m, name, file, doc)); - symbol_table::install_built_in_function (name, fcn); + symbol_table& symtab = octave::__get_symbol_table__ ("install_builtin_function"); + + symtab.install_built_in_function (name, fcn); } void @@ -116,7 +120,9 @@ octave_value fval (fcn); - symbol_table::install_built_in_function (name, fval); + symbol_table& symtab = octave::__get_symbol_table__ ("install_dld_function"); + + symtab.install_built_in_function (name, fval); } void @@ -131,7 +137,9 @@ octave_value fval (fcn); - symbol_table::install_built_in_function (name, fval); + symbol_table& symtab = octave::__get_symbol_table__ ("install_dld_function"); + + symtab.install_built_in_function (name, fval); } void @@ -145,19 +153,25 @@ octave_value fval (fcn); - symbol_table::install_built_in_function (name, fval); + symbol_table& symtab = octave::__get_symbol_table__ ("install_mex_function"); + + symtab.install_built_in_function (name, fval); } void alias_builtin (const std::string& alias, const std::string& name) { - symbol_table::alias_built_in_function (alias, name); + symbol_table& symtab = octave::__get_symbol_table__ ("alias_builtin"); + + symtab.alias_built_in_function (alias, name); } void install_builtin_dispatch (const std::string& name, const std::string& klass) { - symbol_table::install_built_in_dispatch (name, klass); + symbol_table& symtab = octave::__get_symbol_table__ ("install_builtin_dispatch"); + + symtab.install_built_in_dispatch (name, klass); } octave::dynamic_library