Mercurial > octave-libtiff
changeset 24285:d22d2936f580
store subfunction names in scope instead of function object
* symscope.h (symbol_scope::m_subfunction_names): New data member.
(symbol_scope::has_subfunctions,
symbol_scope::stash_subfunction_names,
symbol_scope::subfunction_names): New functions.
* ov-usr-fcn.h, ov-usr-fcn.cc (octave_user_function::has_subfunctions,
octave_user_function::stash_subfunction_names,
octave_user_function::subfunction_names): Forward to symbol_scope
functions.
(octave_user_function::subfcn_names): Delete data member.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Sun, 19 Nov 2017 21:17:25 -0500 |
parents | 81557c74be7f |
children | 6bfb96ab73cb |
files | libinterp/corefcn/symscope.h libinterp/octave-value/ov-usr-fcn.cc libinterp/octave-value/ov-usr-fcn.h |
diffstat | 3 files changed, 30 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/symscope.h Sun Nov 19 16:01:05 2017 -0500 +++ b/libinterp/corefcn/symscope.h Sun Nov 19 21:17:25 2017 -0500 @@ -525,6 +525,21 @@ void mark_subfunctions_in_scope_as_private (const std::string& class_name); + bool has_subfunctions (void) const + { + return ! m_subfunction_names.empty (); + } + + void stash_subfunction_names (const std::list<std::string>& names) + { + m_subfunction_names = names; + } + + std::list<std::string> subfunction_names (void) const + { + return m_subfunction_names; + } + std::list<workspace_element> workspace_info (void) const; octave_value dump (void) const; @@ -562,6 +577,10 @@ // Map from symbol names to subfunctions. std::map<std::string, octave_value> m_subfunctions; + // The list of subfunctions (if any) in the order they appear in + // the function file. + std::list<std::string> m_subfunction_names; + // The associated user code (may be null). octave_user_function *m_fcn;
--- a/libinterp/octave-value/ov-usr-fcn.cc Sun Nov 19 16:01:05 2017 -0500 +++ b/libinterp/octave-value/ov-usr-fcn.cc Sun Nov 19 21:17:25 2017 -0500 @@ -460,14 +460,19 @@ bool octave_user_function::has_subfunctions (void) const { - return ! subfcn_names.empty (); + return m_scope->has_subfunctions (); } void -octave_user_function::stash_subfunction_names - (const std::list<std::string>& names) +octave_user_function::stash_subfunction_names (const std::list<std::string>& names) { - subfcn_names = names; + m_scope->stash_subfunction_names (names); +} + +std::list<std::string> +octave_user_function::subfunction_names (void) const +{ + return m_scope->subfunction_names (); } octave_value_list
--- a/libinterp/octave-value/ov-usr-fcn.h Sun Nov 19 16:01:05 2017 -0500 +++ b/libinterp/octave-value/ov-usr-fcn.h Sun Nov 19 21:17:25 2017 -0500 @@ -311,10 +311,7 @@ void stash_subfunction_names (const std::list<std::string>& names); - std::list<std::string> subfunction_names (void) const - { - return subfcn_names; - } + std::list<std::string> subfunction_names (void) const; octave_value_list all_va_args (const octave_value_list& args); @@ -447,10 +444,6 @@ // The name of the parent function, if any. std::string parent_name; - // The list of subfunctions (if any) in the order they appear in the - // file. - std::list<std::string> subfcn_names; - // The time the file was parsed. octave::sys::time t_parsed; @@ -469,7 +462,7 @@ // The number of arguments that have names. int num_named_args; - // TRUE means this subfunction of a primary function. + // TRUE means this is a subfunction of a primary function. bool subfunction; // TRUE means this is an inline function.