annotate src/dirfns.h @ 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 72c96de7a403
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
523
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
1 /*
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
2
11523
fd0a3ac60b0e update copyright notices
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
3 Copyright (C) 1994-2011 John W. Eaton
523
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
4
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
6
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6323
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6323
diff changeset
10 option) any later version.
523
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
11
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
15 for more details.
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
16
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6323
diff changeset
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6323
diff changeset
19 <http://www.gnu.org/licenses/>.
523
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
20
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
21 */
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
22
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
23 #if !defined (octave_dirfns_h)
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
24 #define octave_dirfns_h 1
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
25
1353
57a4bcfe4a00 [project @ 1995-09-05 08:38:16 by jwe]
jwe
parents: 1315
diff changeset
26 #include <ctime>
57a4bcfe4a00 [project @ 1995-09-05 08:38:16 by jwe]
jwe
parents: 1315
diff changeset
27
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1353
diff changeset
28 #include <string>
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1353
diff changeset
29
6323
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 5307
diff changeset
30 #include "oct-time.h"
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 5307
diff changeset
31
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 2907
diff changeset
32 extern std::string polite_directory_format (const std::string&);
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 2907
diff changeset
33 extern std::string base_pathname (const std::string&);
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 2907
diff changeset
34 extern std::string make_absolute (const std::string&, const std::string&);
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 2907
diff changeset
35 extern std::string get_working_directory (const std::string&);
523
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
36
6323
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 5307
diff changeset
37 // The time we last time we changed directories.
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 5307
diff changeset
38 extern octave_time Vlast_chdir_time;
2204
a24158362f9f [project @ 1996-05-15 06:09:42 by jwe]
jwe
parents: 2195
diff changeset
39
523
4a07f0083ab0 [project @ 1994-07-20 18:33:47 by jwe]
jwe
parents:
diff changeset
40 #endif