annotate README @ 15869:5e5705b3e505 classdef

Implement some embryonic handle-classdef semantic. * libinterp/octave-value/ov-classdef.h (cdef_object_rep::subsasgn, handle_cdef_object::subsasgn, octave_classdef::subsasgn): New method declarations. (handle_cdef_object::~handle_cdef_object): New destructor declaration. (cdef_class::cdef_class_rep::handle_class): New boolean field. (cdef_class::cdef_class_rep::cdef_class_rep): Initialize it. (cdef_class::cdef_class_rep::mark_as_handle_class, cdef_class::cdef_class_rep::is_handle_class, cdef_class::mark_as_handle_class, cdef_class::is_handle_class): Manipulate it. (cdef_class::cdef_class_rep::get_name): New method. (cdef_class::get_name): Use it. (cdef_class::cdef_class_rep::initialize_object, cdef_class::cdef_class_rep::subsref_meta, cdef_class::cdef_class_rep::run_constructor, cdef_class::cdef_class_rep::construct, cdef_class:initialize_object, cdef_class::subsref_meta, cdef_class::run_constructor, cdef_class::construct): New methods. (cdef_class::cdef_class_rep::find_method, cdef_class::find_method): Add "local" argument. (cdef_class::cdef_class_rep::find_names, cdef_class::find_names): Change signature to use std::set and a boolean flag. (cdef_class::cdef_class_rep::find_methods, cdef_class::find_methods): Change signature to use a boolean flag as second argument. (cdef_class::make_meta_class): New static method. (cdef_class::get_method_function, cdef_class::get_constructor_function): New methods. (cdef_property::cdef_property_rep::set_value, cdef_property::set_value): Make cdef_object argument non const. (cdef_property::cder_property_rep::is_relative_set): New method. (cdef_property::get_get_access, cdef_property::get_set_access): Delete methods. (cdef_property::check_get_access, cdef_property::check_set_access): Remove string argument. (cdef_method::get_access): Delete method. (cdef_method::check_access): Remove string argument. * libinterp/octave-value/ov-classdef.cc (gripe_method_access, gripe_property_access): Support access specified as cell array of classes. (make_function_of_class): New static function(s). (check_access (std::string, std::string), superclass_access): Remove static functions. (lookup_class): Use symbol_table when class hasn't been loaded yet. (lookup_classes): Returns std::list<cdef_class> instead of Cell. (class_get_superclasses, class_get_inferiorclasses): Use it. (to_ov (const std::list<cdef_class>&)): New static function. (get_class_context, check_access (const cdef_class&, const octave_value&)): Likewise. (handle_cdef_object::subsref): Use new signature of access check methods. (property_get_defaultvalue): New built-in property accessor. (make_class): Change signature to support multiple inheritance. Set "Sealed" to false by default. Determine value for HandleCompatible property and handle-class representation. (make_property): Take cdef_class as first argument. Add DefaultValue and HasDefault properties. Call make_function_of_class for property accessors. (make_attribute): Take cdef_class as first argument. (make_method): Likewise. Call make_function_of_class. (make_method (octave_builtin::fcn)): Do no construct a function handle object. (octave_classdef::subsasgn, handle_cdef_object::subsasgn): New method. (class octave_classdef_proxy): New class. (cdef_class::get_method_function): Use it, new method. (handle_cdef_object::~handle_cdef_object): New destructor. (cdef_class_rep::find_method): New boolean "local" argument. When true, only look into the current class, not in superclasses. (cdef_class_rep::find_methods): New signature. (cdef_class_rep::get_methods): Use it. (cdef_class_rep::find_properties): New signature. (cdef_class_rep::get_properties): Use it. (cdef_class_rep::find_names): New signature. (cdef_class_rep::get_names): Use it. (cdef_class_rep::subsref_meta, cdef_class_rep::initialize_object, cdef_class_rep::run_constructor, cdef_class_rep::construct): New methods. (compute_attribute_value, attribute_to_string): New static functions. (cdef_class::make_meta_class): Change signature, non const argument. Implement it. (cdef_property_rep::get_value): Do not check access here. (cdef_property_rep::set_value, cdef_property_rep::is_recursive_set): New method. (cdef_property_rep::check_get_access, cdef_property_rep::check_set_access, cdef_method_rep::check_access): Use static check_access utility function. (install_classdef): Adapt to change of signature of make_class. Mark meta classes as sealed. Add HandleCompatible property to meta.class. Add DefaultValue and HasDefault properties to meta.property. * libinterp/parse-tree/pt-classdef.h (tree_classdef::make_meta_class): Change return type to (octave_function *). * libinterp/parse-tree/pt-classdef.cc (tree_classdef::make_meta_class): Likewise. Call cdef_class::get_constructor_function. * libinterp/parse-tree/oct-parse.yy (parse_fcn_file): Adapt to new signature of tree_classdef::make_meta_class. * libinterp/octave-value/ov-fcn.h (octave_function::is_classdef_constructor): New virtual method. * libinterp/octave-value/ov-usr-fcn.h (octave_user_function::class_ctor_type): New private enum. (octave_user_function::mark_as_class_constructor, octave_user_function::is_class_constructor): Use it. (octave_user_function::mark_as_classdef_constructor, octave_user_function::is_classdef_constructor): New methods. (octave_user_function::class_constructor): Turn into class_ctor_type. * libinterp/octave-value/of-usr-fcn.cc (octave_user_function::octave_user_function): Initialize class_constructor. (octave_user_function::do_multi_index_op): When function is a classdef constructor, extract the first argument and use it to populate the first output argument.
author Michael Goffioul <michael.goffioul@gmail.com>
date Tue, 01 Jan 2013 19:42:17 -0500
parents c49d891eb263
children d63878346099
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2993
91589ab98e37 [project @ 1997-05-21 21:44:54 by jwe]
jwe
parents: 2885
diff changeset
1 GNU Octave -- a high-level language for numerical computations.
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
2
14138
72c96de7a403 maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents: 12733
diff changeset
3 Copyright (C) 1996-2012 John W. Eaton
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
4
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
5 Overview
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
6 --------
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
7
2993
91589ab98e37 [project @ 1997-05-21 21:44:54 by jwe]
jwe
parents: 2885
diff changeset
8 GNU Octave is a high-level language, primarily intended for numerical
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
9 computations. It provides a convenient command line interface for
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
10 solving linear and nonlinear problems numerically.
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
11
2993
91589ab98e37 [project @ 1997-05-21 21:44:54 by jwe]
jwe
parents: 2885
diff changeset
12 GNU Octave is free software; you can redistribute it and/or modify it
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
13 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: 5307
diff changeset
14 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5307
diff changeset
15 option) any later version.
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
16
2993
91589ab98e37 [project @ 1997-05-21 21:44:54 by jwe]
jwe
parents: 2885
diff changeset
17 GNU Octave is distributed in the hope that it will be useful, but
91589ab98e37 [project @ 1997-05-21 21:44:54 by jwe]
jwe
parents: 2885
diff changeset
18 WITHOUT ANY WARRANTY; without even the implied warranty of
91589ab98e37 [project @ 1997-05-21 21:44:54 by jwe]
jwe
parents: 2885
diff changeset
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file
91589ab98e37 [project @ 1997-05-21 21:44:54 by jwe]
jwe
parents: 2885
diff changeset
20 COPYING for more details.
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
21
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
22 Availability
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
23 ------------
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
24
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
25 The latest released version of Octave is always available via
8922
25b85c36208f update README
John W. Eaton <jwe@octave.org>
parents: 7088
diff changeset
26 anonymous ftp from ftp.gnu.org and its many mirror sites around the
25b85c36208f update README
John W. Eaton <jwe@octave.org>
parents: 7088
diff changeset
27 world. You may also find links to binary distributions at
25b85c36208f update README
John W. Eaton <jwe@octave.org>
parents: 7088
diff changeset
28 http://www.octave.org/download.html. The current development sources
11453
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
29 may be found on Savannah (http://savannah.gnu.org/projects/octave)
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
30 under the Source Code tab.
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
31
11453
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
32 Installation
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
33 ------------
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
34
11453
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
35 Octave requires approximately 1.4 GB of disk storage to unpack and
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
36 compile from source (significantly less, 400 MB, if you don't compile
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
37 with debugging symbols). Once installed, Octave requires
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
38 approximately 350MB of disk space (again, considerably less, 70 MB,
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
39 if you don't build shared libraries or the binaries and libraries do
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
40 not include debugging symbols).
2484
ccaffe93c32f [project @ 1996-11-07 23:24:46 by jwe]
jwe
parents: 2330
diff changeset
41
3148
8cdcb8945695 [project @ 1998-02-06 21:25:11 by jwe]
jwe
parents: 2993
diff changeset
42 To compile Octave, you will need a recent version of GNU Make. You
9031
1052a66078cf Documentation cleanup of top-level Octave directory (READMEs, INSTALL)
Rik <rdrider0-list@yahoo.com>
parents: 8922
diff changeset
43 will also need a recent version of g++ or another ANSI C++ compiler.
7088
5eb3db6e4042 [project @ 2007-10-31 20:35:10 by jwe]
jwe
parents: 7016
diff changeset
44 You will also need a Fortran 77 compiler or f2c. If you use f2c, you
5eb3db6e4042 [project @ 2007-10-31 20:35:10 by jwe]
jwe
parents: 7016
diff changeset
45 will need a script like fort77 that works like a normal Fortran
5eb3db6e4042 [project @ 2007-10-31 20:35:10 by jwe]
jwe
parents: 7016
diff changeset
46 compiler by combining f2c with your C compiler in a single script.
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
47
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
48 YOU MUST HAVE GNU MAKE TO COMPILE OCTAVE. Octave's Makefiles use
2484
ccaffe93c32f [project @ 1996-11-07 23:24:46 by jwe]
jwe
parents: 2330
diff changeset
49 features of GNU Make that are not present in other versions of make.
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
50 GNU Make is very portable and easy to install.
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
51
12733
b67c2d580a25 maint: clean up top-level directory
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
52 See the notes in the files INSTALL and the system-specific README files
b67c2d580a25 maint: clean up top-level directory
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
53 in the etc directory of the Octave source distribution for more specific
b67c2d580a25 maint: clean up top-level directory
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
54 installation instructions.
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
55
11453
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
56 Bugs and Patches
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
57 ----------------
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
58
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
59 The file BUGS explains the recommended procedure for reporting bugs
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
60 or contributing patches.
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
61
2580
fa7dd5fc7c59 [project @ 1996-12-10 06:30:41 by jwe]
jwe
parents: 2484
diff changeset
62 Documentation
fa7dd5fc7c59 [project @ 1996-12-10 06:30:41 by jwe]
jwe
parents: 2484
diff changeset
63 -------------
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
64
11453
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
65 Octave's manual has been revised for version 3.4, but it is lagging a
2580
fa7dd5fc7c59 [project @ 1996-12-10 06:30:41 by jwe]
jwe
parents: 2484
diff changeset
66 bit behind the development of the software. In particular, there is
7088
5eb3db6e4042 [project @ 2007-10-31 20:35:10 by jwe]
jwe
parents: 7016
diff changeset
67 currently no complete documentation of the C++ class libraries. If
11453
780a8b80c3e8 README: Update WWW links and disk space requirements.
Rik <octave@nomad.inbox5.com>
parents: 9031
diff changeset
68 you notice omissions or inconsistencies, please report them on the
15497
c49d891eb263 Update broken or inconsistent project and wiki urls
Mike Miller <mtmiller@ieee.org>
parents: 14138
diff changeset
69 bug tracker at http://bugs.octave.org. Specific suggestions for ways
c49d891eb263 Update broken or inconsistent project and wiki urls
Mike Miller <mtmiller@ieee.org>
parents: 14138
diff changeset
70 to improve Octave and its documentation are always welcome. Reports
c49d891eb263 Update broken or inconsistent project and wiki urls
Mike Miller <mtmiller@ieee.org>
parents: 14138
diff changeset
71 with patches are even more welcome.
2330
12ff450cbb1f [project @ 1996-07-19 01:39:22 by jwe]
jwe
parents:
diff changeset
72
2582
c6385e7b5e8f [project @ 1996-12-10 07:41:44 by jwe]
jwe
parents: 2580
diff changeset
73 Additional Information
c6385e7b5e8f [project @ 1996-12-10 07:41:44 by jwe]
jwe
parents: 2580
diff changeset
74 ----------------------
c6385e7b5e8f [project @ 1996-12-10 07:41:44 by jwe]
jwe
parents: 2580
diff changeset
75
c6385e7b5e8f [project @ 1996-12-10 07:41:44 by jwe]
jwe
parents: 2580
diff changeset
76 Up to date information about Octave is available on the WWW at the
7088
5eb3db6e4042 [project @ 2007-10-31 20:35:10 by jwe]
jwe
parents: 7016
diff changeset
77 URL http://www.octave.org, including archives of the help, bug, and
5eb3db6e4042 [project @ 2007-10-31 20:35:10 by jwe]
jwe
parents: 7016
diff changeset
78 maintainers mailing lists.
2582
c6385e7b5e8f [project @ 1996-12-10 07:41:44 by jwe]
jwe
parents: 2580
diff changeset
79
7088
5eb3db6e4042 [project @ 2007-10-31 20:35:10 by jwe]
jwe
parents: 7016
diff changeset
80
12733
b67c2d580a25 maint: clean up top-level directory
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
81 Last updated: Fri, 10 Jun 2011 14:02:32 EDT