comparison libinterp/octave-value/ov-classdef.cc @ 18262:69990d5edcc2

Allow to parse external methods declaration in classdef files. * libinterp/parse-tree/parser.h (octave_base_parser::start_classdef_external_method, octave_base_parser::finish_classdef_external_method): New methods. * libinterp/parse-tree/oct-parse.in.yy (octave_base_parser::start_classdef_external_method, octave_base_parser::finish_classdef_external_method): Likewise. (%destructor): Add missing directives for classdef-related types. (method, method_decl, method_decl1): New nonterminal rules. (methods_list): Use "method" on terminal. * libinterp/octave-value/ov-classdef.cc (cdef_package::cdef_package_rep::meta_subsref): When searching for package methods, only issue an error when error_state is not set.
author Michael Goffioul <michael.goffioul@gmail.com>
date Sun, 12 Jan 2014 15:54:43 -0500
parents c4f5c781c3ca
children b5be1a2aa5ab
comparison
equal deleted inserted replaced
18260:bffa6c8255a9 18262:69990d5edcc2
3174 else if (type.size () > 1 && idx.size () > 1) 3174 else if (type.size () > 1 && idx.size () > 1)
3175 retval = o.next_subsref (nargout, type, idx, 1); 3175 retval = o.next_subsref (nargout, type, idx, 1);
3176 else 3176 else
3177 retval(0) = o; 3177 retval(0) = o;
3178 } 3178 }
3179 else 3179 else if (! error_state)
3180 error ("member `%s' in package `%s' does not exist", 3180 error ("member `%s' in package `%s' does not exist",
3181 nm.c_str (), get_name ().c_str ()); 3181 nm.c_str (), get_name ().c_str ());
3182 } 3182 }
3183 else 3183 else
3184 error ("invalid meta.package indexing, expected a symbol name"); 3184 error ("invalid meta.package indexing, expected a symbol name");