Mercurial > hg > octave-jordi
view src/octave.gperf @ 13241:2a8dcb5b3a00
improve default indexing for objects
* ov-class.cc (octave_class::is_class_method): Also return true for
anonymous functions executing in the context of a class method or
constructor.
* ov-class.h (octave_class:do_multi_index_op): New function.
* ov-fcn.h (octave_function::is_private_function_of_class): Now const.
(octave_function::is_anonymous_function_of_class): New virtual function.
* ov-usr-fcn.h (octave_function::anonymous_function): New data member.
(octave_user_function::mark_as_anonymous_function): New function.
(octave_user_function::is_anonymous_function): New function.
(octave_user_function::is_anonymous_function_of_class): New function.
* ov-usr-fcn.cc (octave_user_function::octave_user_function):
Initialize anonymous_function data member.
(octave_user_function::profiler_name): Distinguish between inline and
anonymous functions.
(octave_user_function::do_multi_index_op): Use is_anonymous_function
instead of checking whether cmd_list is marked as an anonymous
function body.
* pt-fcn-handle.cc (tree_anon_fcn_handle::rvalue1): If parent function
is a class method or constructor, stash the dispatch type in the new
function. Mark the new function as anonymous, not inline.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 28 Sep 2011 16:45:21 -0400 |
parents | fd0a3ac60b0e |
children | 027a2186cd90 |
line wrap: on
line source
%{ /* Copyright (C) 1995-2011 John W. Eaton This file is part of Octave. Octave is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see <http://www.gnu.org/licenses/>. NOTE: gperf 2.7.2 will silently generate bad code if there are blank lines following the "%{" marker above. This comment block seems to be handled correctly. */ enum octave_kw_id { break_kw, case_kw, catch_kw, classdef_kw, continue_kw, do_kw, else_kw, elseif_kw, end_kw, end_try_catch_kw, end_unwind_protect_kw, endclassdef_kw, endevents_kw, endfor_kw, endfunction_kw, endif_kw, endmethods_kw, endproperties_kw, endswitch_kw, endwhile_kw, events_kw, for_kw, function_kw, get_kw, global_kw, if_kw, magic_file_kw, magic_line_kw, methods_kw, otherwise_kw, properties_kw, return_kw, set_kw, static_kw, switch_kw, try_kw, until_kw, unwind_protect_kw, unwind_protect_cleanup_kw, while_kw }; %} struct octave_kw { const char *name; int tok; octave_kw_id kw_id; }; %% break, BREAK, break_kw case, CASE, case_kw catch, CATCH, catch_kw classdef, CLASSDEF, classdef_kw continue, CONTINUE, continue_kw do, DO, do_kw else, ELSE, else_kw elseif, ELSEIF, elseif_kw end, END, end_kw end_try_catch, END, end_try_catch_kw end_unwind_protect, END, end_unwind_protect_kw endclassdef, END, endclassdef_kw endevents, END, endevents_kw endfor, END, endfor_kw endfunction, END, endfunction_kw endif, END, endif_kw endmethods, END, endmethods_kw endproperties, END, endproperties_kw endswitch, END, endswitch_kw endwhile, END, endwhile_kw events, EVENTS, events_kw for, FOR, for_kw function, FCN, function_kw get, GET, get_kw global, GLOBAL, global_kw if, IF, if_kw methods, METHODS, methods_kw otherwise, OTHERWISE, otherwise_kw persistent, STATIC, static_kw properties, PROPERTIES, properties_kw return, FUNC_RET, return_kw set, SET, set_kw static, STATIC, static_kw switch, SWITCH, switch_kw try, TRY, try_kw until, UNTIL, until_kw unwind_protect, UNWIND, unwind_protect_kw unwind_protect_cleanup, CLEANUP, unwind_protect_cleanup_kw while, WHILE, while_kw __FILE__, DQ_STRING, magic_file_kw __LINE__, NUM, magic_line_kw