annotate libinterp/octave-value/ov-null-mat.h @ 23219:3ac9f9ecfae5 stable

maint: Update copyright dates.
author John W. Eaton <jwe@octave.org>
date Wed, 22 Feb 2017 12:39:29 -0500
parents e9a0469dedd9
children 092078913d54
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
1 /*
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
2
23219
3ac9f9ecfae5 maint: Update copyright dates.
John W. Eaton <jwe@octave.org>
parents: 23083
diff changeset
3 Copyright (C) 2008-2017 Jaroslav Hajek
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
4
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
5 This file is part of Octave.
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
6
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
10 option) any later version.
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
11
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
15 for more details.
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
16
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, see
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
19 <http://www.gnu.org/licenses/>.
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
20
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
21 */
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
22
20791
f7084eae3318 maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents: 19697
diff changeset
23 #if ! defined (octave_ov_null_mat_h)
17822
ebb3ef964372 maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents: 17787
diff changeset
24 #define octave_ov_null_mat_h 1
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
25
21244
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 20791
diff changeset
26 #include "octave-config.h"
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 20791
diff changeset
27
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
28 #include "ov.h"
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
29 #include "ov-re-mat.h"
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
30 #include "ov-str-mat.h"
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
31
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
32 // Design rationale:
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
33 // The constructors are hidden. There is only one null matrix (or null string)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
34 // object, that can have shallow copies. Cloning the object returns just a
21751
b571fc85953f maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents: 21244
diff changeset
35 // normal empty matrix, so all the shallow copies are, in fact, read-only.
b571fc85953f maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents: 21244
diff changeset
36 // This conveniently ensures that any attempt to fiddle with the null matrix
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
37 // destroys its special status.
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
38
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
39 // The special [] value.
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
40
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
41 class
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
42 OCTINTERP_API
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
43 octave_null_matrix : public octave_matrix
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
44 {
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
45 octave_null_matrix (void) : octave_matrix () { }
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
46
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
47 public:
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
48
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
49 static const octave_value instance;
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
50
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
51 bool is_null_value (void) const { return true; }
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
52
8345
c777f3ce02d8 smarter conversion lookup
Jaroslav Hajek <highegg@gmail.com>
parents: 8150
diff changeset
53 type_conv_info numeric_conversion_function (void) const;
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
54
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
55 private:
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
56
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
57 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
58 };
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
59
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
60 // The special "" value
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
61
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
62 class
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
63 OCTINTERP_API
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
64 octave_null_str : public octave_char_matrix_str
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
65 {
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
66 octave_null_str (void) : octave_char_matrix_str () { }
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
67
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
68 public:
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
69
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
70 static const octave_value instance;
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
71
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
72 bool is_null_value (void) const { return true; }
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
73
8345
c777f3ce02d8 smarter conversion lookup
Jaroslav Hajek <highegg@gmail.com>
parents: 8150
diff changeset
74 type_conv_info numeric_conversion_function (void) const;
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
75
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
76 private:
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
77
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
78 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
79 };
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
80
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
81 // The special '' value
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
82
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
83 class
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
84 OCTINTERP_API
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
85 octave_null_sq_str : public octave_char_matrix_sq_str
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
86 {
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
87 octave_null_sq_str (void) : octave_char_matrix_sq_str () { }
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
88
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
89 public:
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
90
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
91 static const octave_value instance;
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
92
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
93 bool is_null_value (void) const { return true; }
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
94
8345
c777f3ce02d8 smarter conversion lookup
Jaroslav Hajek <highegg@gmail.com>
parents: 8150
diff changeset
95 type_conv_info numeric_conversion_function (void) const;
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
96
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
97 private:
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
98
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
99 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
100 };
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
101
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
102 #endif