annotate libinterp/octave-value/ov-null-mat.h @ 20654:b65888ec820e draft default tip gccjit

dmalcom gcc jit import
author Stefan Mahr <dac922@gmx.de>
date Fri, 27 Feb 2015 16:59:36 +0100
parents 4197fc428c7d
children
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
19731
4197fc428c7d maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents: 17822
diff changeset
3 Copyright (C) 2008-2015 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
17822
ebb3ef964372 maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents: 17787
diff changeset
23 #if !defined (octave_ov_null_mat_h)
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
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
26 #include "ov.h"
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
27 #include "ov-re-mat.h"
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
28 #include "ov-str-mat.h"
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
29
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
30 // Design rationale:
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
31 // 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
32 // object, that can have shallow copies. Cloning the object returns just a
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
33 // normal empty matrix, so all the shallow copies are, in fact, read-only. This
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
34 // conveniently ensures that any attempt to fiddle with the null matrix
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
35 // destroys its special status.
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
36
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
37 // The special [] value.
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 class
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
40 OCTINTERP_API
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
41 octave_null_matrix : public octave_matrix
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
42 {
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
43 octave_null_matrix (void) : 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 public:
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 static const octave_value instance;
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 bool is_null_value (void) const { return true; }
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
50
8345
c777f3ce02d8 smarter conversion lookup
Jaroslav Hajek <highegg@gmail.com>
parents: 8150
diff changeset
51 type_conv_info numeric_conversion_function (void) const;
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
52
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
53 private:
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 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
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
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
58 // The special "" value
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
59
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
60 class
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
61 OCTINTERP_API
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
62 octave_null_str : public octave_char_matrix_str
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
63 {
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
64 octave_null_str (void) : 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 public:
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 static const octave_value instance;
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 bool is_null_value (void) const { return true; }
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
71
8345
c777f3ce02d8 smarter conversion lookup
Jaroslav Hajek <highegg@gmail.com>
parents: 8150
diff changeset
72 type_conv_info numeric_conversion_function (void) const;
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
73
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
74
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
75 private:
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
76
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
77 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
78 };
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 // The special '' value
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
81
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
82 class
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
83 OCTINTERP_API
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
84 octave_null_sq_str : public octave_char_matrix_sq_str
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
85 {
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
86 octave_null_sq_str (void) : octave_char_matrix_sq_str () { }
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
87
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
88 public:
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
89
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
90 static const octave_value instance;
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
91
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
92 bool is_null_value (void) const { return true; }
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
93
8345
c777f3ce02d8 smarter conversion lookup
Jaroslav Hajek <highegg@gmail.com>
parents: 8150
diff changeset
94 type_conv_info numeric_conversion_function (void) const;
8150
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
95
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
96 private:
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
97
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
98 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
283989f2da9b make null assignment matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
99 };
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 #endif