Mercurial > hg > octave-nkf
annotate src/ov-bool.h @ 15536:2e8eb9ac43a5 stable rc-3-6-4-0
3.6.4-rc0 release candidate
* configure.ac (AC_INIT): Version is now 3.6.2-rc0.
(OCTAVE_RELEASE_DATE): Now 2012-05-11.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 17 Oct 2012 10:05:44 -0400 |
parents | 72c96de7a403 |
children |
rev | line source |
---|---|
2871 | 1 /* |
2 | |
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
13142
diff
changeset
|
3 Copyright (C) 1996-2012 John W. Eaton |
2871 | 4 |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
7016 | 9 Free Software Foundation; either version 3 of the License, or (at your |
10 option) any later version. | |
2871 | 11 |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
2871 | 20 |
21 */ | |
22 | |
23 #if !defined (octave_bool_h) | |
24 #define octave_bool_h 1 | |
25 | |
26 #include <cstdlib> | |
27 | |
8950
d865363208d6
include <iosfwd> instead of <iostream> in header files
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
28 #include <iosfwd> |
2871 | 29 #include <string> |
30 | |
31 #include "lo-utils.h" | |
32 #include "mx-base.h" | |
33 #include "oct-alloc.h" | |
34 #include "str-vec.h" | |
35 | |
4970 | 36 #include "oct-stream.h" |
2871 | 37 #include "ov-base.h" |
3223 | 38 #include "ov-base-scalar.h" |
10544
9961fc022d9d
fix assignment to non-existing variables and octave_value::assign
Jaroslav Hajek <highegg@gmail.com>
parents:
10343
diff
changeset
|
39 #include "ov-bool-mat.h" |
7503
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
40 #include "ov-scalar.h" |
2871 | 41 #include "ov-typeinfo.h" |
42 | |
43 class octave_value_list; | |
44 | |
45 class tree_walker; | |
46 | |
47 // Real scalar values. | |
48 | |
49 class | |
10343
2ef5144ccb0d
Add few OCTINTERP_API tags.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
10313
diff
changeset
|
50 OCTINTERP_API |
3223 | 51 octave_bool : public octave_base_scalar<bool> |
2871 | 52 { |
53 public: | |
54 | |
55 octave_bool (void) | |
3223 | 56 : octave_base_scalar<bool> (false) { } |
2871 | 57 |
58 octave_bool (bool b) | |
3223 | 59 : octave_base_scalar<bool> (b) { } |
2871 | 60 |
61 octave_bool (const octave_bool& s) | |
3223 | 62 : octave_base_scalar<bool> (s) { } |
2871 | 63 |
64 ~octave_bool (void) { } | |
65 | |
5759 | 66 octave_base_value *clone (void) const { return new octave_bool (*this); } |
10544
9961fc022d9d
fix assignment to non-existing variables and octave_value::assign
Jaroslav Hajek <highegg@gmail.com>
parents:
10343
diff
changeset
|
67 octave_base_value *empty_clone (void) const { return new octave_bool_matrix (); } |
2871 | 68 |
8345
c777f3ce02d8
smarter conversion lookup
Jaroslav Hajek <highegg@gmail.com>
parents:
8202
diff
changeset
|
69 type_conv_info numeric_conversion_function (void) const; |
2871 | 70 |
5885 | 71 octave_value do_index_op (const octave_value_list& idx, |
10313 | 72 bool resize_ok = false); |
2871 | 73 |
74 idx_vector index_vector (void) const { return idx_vector (scalar); } | |
75 | |
9685 | 76 builtin_type_t builtin_type (void) const { return btyp_bool; } |
77 | |
2871 | 78 bool is_real_scalar (void) const { return true; } |
79 | |
5881 | 80 bool is_bool_scalar (void) const { return true; } |
81 | |
3209 | 82 bool is_bool_type (void) const { return true; } |
83 | |
2871 | 84 bool is_real_type (void) const { return true; } |
3209 | 85 |
9841
6f1ea8241c99
make isnumeric yield false on logicals
Jaroslav Hajek <highegg@gmail.com>
parents:
9812
diff
changeset
|
86 bool is_numeric_type (void) const { return false; } |
6f1ea8241c99
make isnumeric yield false on logicals
Jaroslav Hajek <highegg@gmail.com>
parents:
9812
diff
changeset
|
87 |
2871 | 88 bool is_true (void) const { return scalar; } |
89 | |
5533 | 90 int8NDArray |
91 int8_array_value (void) const | |
92 { return int8NDArray (dim_vector (1, 1), scalar); } | |
93 | |
94 int16NDArray | |
95 int16_array_value (void) const | |
96 { return int16NDArray (dim_vector (1, 1), scalar); } | |
97 | |
98 int32NDArray | |
99 int32_array_value (void) const | |
100 { return int32NDArray (dim_vector (1, 1), scalar); } | |
101 | |
102 int64NDArray | |
103 int64_array_value (void) const | |
104 { return int64NDArray (dim_vector (1, 1), scalar); } | |
105 | |
106 uint8NDArray | |
107 uint8_array_value (void) const | |
108 { return uint8NDArray (dim_vector (1, 1), scalar); } | |
109 | |
110 uint16NDArray | |
111 uint16_array_value (void) const | |
112 { return uint16NDArray (dim_vector (1, 1), scalar); } | |
113 | |
114 uint32NDArray | |
115 uint32_array_value (void) const | |
116 { return uint32NDArray (dim_vector (1, 1), scalar); } | |
117 | |
118 uint64NDArray | |
119 uint64_array_value (void) const | |
120 { return uint64NDArray (dim_vector (1, 1), scalar); } | |
121 | |
13142
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
122 octave_int8 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
123 int8_scalar_value (void) const { return octave_int8 (scalar); } |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
124 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
125 octave_int16 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
126 int16_scalar_value (void) const { return octave_int16 (scalar); } |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
127 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
128 octave_int32 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
129 int32_scalar_value (void) const { return octave_int32 (scalar); } |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
130 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
131 octave_int64 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
132 int64_scalar_value (void) const { return octave_int64 (scalar); } |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
133 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
134 octave_uint8 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
135 uint8_scalar_value (void) const { return octave_uint8 (scalar); } |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
136 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
137 octave_uint16 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
138 uint16_scalar_value (void) const { return octave_uint16 (scalar); } |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
139 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
140 octave_uint32 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
141 uint32_scalar_value (void) const { return octave_uint32 (scalar); } |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
142 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
143 octave_uint64 |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
144 uint64_scalar_value (void) const { return octave_uint64 (scalar); } |
d803d2702a39
improve compatibility of concatenation (bug #33966)
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
145 |
2871 | 146 double double_value (bool = false) const { return scalar; } |
147 | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
148 float float_value (bool = false) const { return scalar; } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
149 |
2916 | 150 double scalar_value (bool = false) const { return scalar; } |
151 | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
152 float float_scalar_value (bool = false) const { return scalar; } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
153 |
3145 | 154 Matrix matrix_value (bool = false) const |
155 { return Matrix (1, 1, scalar); } | |
2871 | 156 |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
157 FloatMatrix float_matrix_value (bool = false) const |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
158 { return FloatMatrix (1, 1, scalar); } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
159 |
4630 | 160 NDArray array_value (bool = false) const |
7919
9d080df0c843
new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
161 { return NDArray (dim_vector (1, 1), static_cast<double> (scalar)); } |
4630 | 162 |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
163 FloatNDArray float_array_value (bool = false) const |
7919
9d080df0c843
new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
164 { return FloatNDArray (dim_vector (1, 1), static_cast<double> (scalar)); } |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
165 |
2871 | 166 Complex complex_value (bool = false) const { return scalar; } |
167 | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
168 FloatComplex float_complex_value (bool = false) const { return scalar; } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
169 |
2871 | 170 ComplexMatrix complex_matrix_value (bool = false) const |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
171 { return ComplexMatrix (1, 1, Complex (scalar)); } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
172 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
173 FloatComplexMatrix float_complex_matrix_value (bool = false) const |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
174 { return FloatComplexMatrix (1, 1, FloatComplex (scalar)); } |
2871 | 175 |
4630 | 176 ComplexNDArray complex_array_value (bool = false) const |
177 { return ComplexNDArray (dim_vector (1, 1), Complex (scalar)); } | |
178 | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
179 FloatComplexNDArray float_complex_array_value (bool = false) const |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
180 { return FloatComplexNDArray (dim_vector (1, 1), FloatComplex (scalar)); } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7740
diff
changeset
|
181 |
6099 | 182 SparseMatrix sparse_matrix_value (bool = false) const |
183 { return SparseMatrix (Matrix (1, 1, scalar)); } | |
184 | |
8202
cf59d542f33e
replace all TODOs and XXXs with FIXMEs
Jaroslav Hajek <highegg@gmail.com>
parents:
7919
diff
changeset
|
185 // FIXME Need SparseComplexMatrix (Matrix) constructor!!! |
6099 | 186 SparseComplexMatrix sparse_complex_matrix_value (bool = false) const |
187 { return SparseComplexMatrix (sparse_matrix_value ()); } | |
188 | |
189 SparseBoolMatrix sparse_bool_matrix_value (bool = false) const | |
190 { return SparseBoolMatrix (boolMatrix (1, 1, scalar)); } | |
191 | |
5533 | 192 charNDArray |
193 char_array_value (bool = false) const | |
194 { | |
195 charNDArray retval (dim_vector (1, 1)); | |
196 retval(0) = static_cast<char> (scalar); | |
197 return retval; | |
198 } | |
199 | |
5944 | 200 bool bool_value (bool = false) const { return scalar; } |
2871 | 201 |
5944 | 202 boolMatrix bool_matrix_value (bool = false) const |
2871 | 203 { return boolMatrix (1, 1, scalar); } |
204 | |
5944 | 205 boolNDArray bool_array_value (bool = false) const |
4847 | 206 { return boolNDArray (dim_vector (1, 1), scalar); } |
207 | |
5731 | 208 octave_value resize (const dim_vector& dv, bool fill = false) const; |
4915 | 209 |
5279 | 210 octave_value convert_to_str_internal (bool pad, bool force, char type) const; |
2871 | 211 |
6974 | 212 bool save_ascii (std::ostream& os); |
4687 | 213 |
214 bool load_ascii (std::istream& is); | |
215 | |
216 bool save_binary (std::ostream& os, bool& save_as_floats); | |
217 | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
218 bool load_binary (std::istream& is, bool swap, |
10313 | 219 oct_mach_info::float_format fmt); |
4687 | 220 |
221 #if defined (HAVE_HDF5) | |
222 bool save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats); | |
223 | |
9881
b3089dba88bf
Remove HDF5 cruft for older versions of HDF5
Kacper Kowalik
parents:
9841
diff
changeset
|
224 bool load_hdf5 (hid_t loc_id, const char *name); |
4687 | 225 #endif |
226 | |
4970 | 227 int write (octave_stream& os, int block_size, |
10313 | 228 oct_data_conv::data_type output_type, int skip, |
229 oct_mach_info::float_format flt_fmt) const | |
4970 | 230 { |
231 return os.write (bool_array_value (), block_size, output_type, | |
10313 | 232 skip, flt_fmt); |
4970 | 233 } |
234 | |
5900 | 235 mxArray *as_mxArray (void) const; |
236 | |
7503
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
237 // Mapper functions are converted to double for treatment |
9812
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9685
diff
changeset
|
238 octave_value map (unary_mapper_t umap) const |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9685
diff
changeset
|
239 { |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9685
diff
changeset
|
240 octave_scalar m (scalar_value ()); |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9685
diff
changeset
|
241 return m.map (umap); |
7503
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
242 } |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
243 |
2871 | 244 private: |
245 | |
4612 | 246 DECLARE_OCTAVE_ALLOCATOR |
2871 | 247 |
4612 | 248 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA |
2871 | 249 }; |
250 | |
251 #endif |