Mercurial > octave
annotate libinterp/octave-value/ov-ch-mat.cc @ 27919:1891570abac8
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2020.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 06 Jan 2020 22:29:51 -0500 |
parents | b442ec6dda5c |
children | bd51beb6205e |
rev | line source |
---|---|
2376 | 1 /* |
2 | |
27919
1891570abac8
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
27918
diff
changeset
|
3 Copyright (C) 1996-2020 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27069
diff
changeset
|
4 |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27069
diff
changeset
|
5 See the file COPYRIGHT.md in the top-level directory of this distribution |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27069
diff
changeset
|
6 or <https://octave.org/COPYRIGHT.html/>. |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27069
diff
changeset
|
7 |
2376 | 8 |
9 This file is part of Octave. | |
10 | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
11 Octave is free software: you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22508
diff
changeset
|
12 under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
13 the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22508
diff
changeset
|
14 (at your option) any later version. |
2376 | 15 |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22508
diff
changeset
|
16 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22508
diff
changeset
|
17 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22508
diff
changeset
|
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22508
diff
changeset
|
19 GNU General Public License for more details. |
2376 | 20 |
21 You should have received a copy of the GNU General Public License | |
7016 | 22 along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
23 <https://www.gnu.org/licenses/>. |
2376 | 24 |
25 */ | |
26 | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
27 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21200
diff
changeset
|
28 # include "config.h" |
2376 | 29 #endif |
30 | |
9941
1369f13ae6b2
several fixes by M. Goffioul
Jaroslav Hajek <highegg@gmail.com>
parents:
9813
diff
changeset
|
31 #include <cctype> |
25438
cb1606f78f6b
prefer <istream>, <ostream>, or <iosfwd> to <iostream> where possible
John W. Eaton <jwe@octave.org>
parents:
25415
diff
changeset
|
32 #include <ostream> |
2901 | 33 |
22296
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
34 #include "dNDArray.h" |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
35 #include "fNDArray.h" |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
36 #include "int8NDArray.h" |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
37 #include "int16NDArray.h" |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
38 #include "int32NDArray.h" |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
39 #include "int64NDArray.h" |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
40 #include "uint8NDArray.h" |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
41 #include "uint16NDArray.h" |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
42 #include "uint32NDArray.h" |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
43 #include "uint64NDArray.h" |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
44 |
2376 | 45 #include "lo-ieee.h" |
46 #include "mx-base.h" | |
25413
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
47 #include "unicase-wrappers.h" |
25415
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
48 #include "unictype-wrappers.h" |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
49 #include "unistr-wrappers.h" |
2376 | 50 |
15149
62a35ae7d6a2
use forward decls for mxArray in ov.h and ov-base.h
John W. Eaton <jwe@octave.org>
parents:
15057
diff
changeset
|
51 #include "mxarray.h" |
3219 | 52 #include "ov-base.h" |
53 #include "ov-base-mat.h" | |
54 #include "ov-base-mat.cc" | |
2376 | 55 #include "ov-ch-mat.h" |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
20711
diff
changeset
|
56 #include "errwarn.h" |
2376 | 57 #include "pr-output.h" |
58 | |
4513 | 59 template class octave_base_matrix<charNDArray>; |
2376 | 60 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
61 idx_vector |
18130
e473c4853afc
enable non-integer ranges as indices by default and deprecate preference
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
62 octave_char_matrix::index_vector (bool /* require_integers */) const |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
63 { |
6720 | 64 const char *p = matrix.data (); |
65 if (numel () == 1 && *p == ':') | |
66 return idx_vector (':'); | |
67 else | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
68 return idx_vector (array_value (true)); |
6720 | 69 } |
70 | |
2376 | 71 double |
72 octave_char_matrix::double_value (bool) const | |
73 { | |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
74 if (rows () == 0 || columns () == 0) |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
75 err_invalid_conversion ("character matrix", "real scalar"); |
4455 | 76 |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
77 warn_implicit_conversion ("Octave:array-to-scalar", |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
78 "character matrix", "real scalar"); |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
79 |
22477
6bf1cbb90705
Remove unnecessary initializations in float_value and double_value methods
Julien Bect <julien.bect@centralesupelec.fr>
parents:
22407
diff
changeset
|
80 return static_cast<unsigned char> (matrix(0, 0)); |
2376 | 81 } |
82 | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
83 float |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
84 octave_char_matrix::float_value (bool) const |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
85 { |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
86 if (rows () == 0 && columns () == 0) |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
87 err_invalid_conversion ("character matrix", "real scalar"); |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
88 |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
89 warn_implicit_conversion ("Octave:array-to-scalar", |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
90 "character matrix", "real scalar"); |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
91 |
22477
6bf1cbb90705
Remove unnecessary initializations in float_value and double_value methods
Julien Bect <julien.bect@centralesupelec.fr>
parents:
22407
diff
changeset
|
92 return static_cast<unsigned char> (matrix(0, 0)); |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
93 } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
94 |
20252
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
95 octave_int64 |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
96 octave_char_matrix::int64_scalar_value () const |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
97 { |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
98 octave_int64 retval = 0; |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
99 |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
100 if (rows () == 0 || columns () == 0) |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
101 err_invalid_conversion ("character matrix", "int64 scalar"); |
20252
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
102 |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
103 warn_implicit_conversion ("Octave:array-to-scalar", |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
104 "character matrix", "int64 scalar"); |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
105 |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
106 retval = octave_int64 (matrix(0, 0)); |
20252
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
107 |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
108 return retval; |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
109 } |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
110 |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
111 octave_uint64 |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
112 octave_char_matrix::uint64_scalar_value () const |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
113 { |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
114 octave_uint64 retval = 0; |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
115 |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
116 if (rows () == 0 || columns () == 0) |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
117 err_invalid_conversion ("character matrix", "uint64 scalar"); |
20252
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
118 |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
119 warn_implicit_conversion ("Octave:array-to-scalar", |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
120 "character matrix", "uint64 scalar"); |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
121 |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
122 retval = octave_uint64 (matrix(0, 0)); |
20252
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
123 |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
124 return retval; |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
125 } |
7fa170cc14fe
Return correct hex value for printf when used with string inputs (bug #45263).
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
126 |
2376 | 127 Complex |
128 octave_char_matrix::complex_value (bool) const | |
129 { | |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
130 if (rows () == 0 && columns () == 0) |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
131 err_invalid_conversion ("character matrix", "complex scalar"); |
4455 | 132 |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
133 warn_implicit_conversion ("Octave:array-to-scalar", |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
134 "character matrix", "complex scalar"); |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
135 |
22508
0b278f54f60a
Remove unnecessary initializations in complex_value methods.
Julien Bect <jbect@users.sourceforge.net>
parents:
22477
diff
changeset
|
136 return Complex (static_cast<unsigned char> (matrix(0, 0)), 0); |
2376 | 137 } |
138 | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
139 FloatComplex |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
140 octave_char_matrix::float_complex_value (bool) const |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
141 { |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
142 float tmp = lo_ieee_float_nan_value (); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
143 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
144 FloatComplex retval (tmp, tmp); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
145 |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
146 if (rows () == 0 || columns () == 0) |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
147 err_invalid_conversion ("character matrix", "complex scalar"); |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
148 |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
149 warn_implicit_conversion ("Octave:array-to-scalar", |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
150 "character matrix", "complex scalar"); |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
151 |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
152 retval = static_cast<unsigned char> (matrix(0, 0)); |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
153 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
154 return retval; |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
155 } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
156 |
22296
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
157 octave_value |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
158 octave_char_matrix::as_double (void) const |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
159 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
160 return NDArray (matrix); |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
161 } |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
162 |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
163 octave_value |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
164 octave_char_matrix::as_single (void) const |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
165 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
166 return FloatNDArray (matrix); |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
167 } |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
168 |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
169 octave_value |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
170 octave_char_matrix::as_int8 (void) const |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
171 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
172 return int8NDArray (matrix); |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
173 } |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
174 |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
175 octave_value |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
176 octave_char_matrix::as_int16 (void) const |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
177 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
178 return int16NDArray (matrix); |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
179 } |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
180 |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
181 octave_value |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
182 octave_char_matrix::as_int32 (void) const |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
183 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
184 return int32NDArray (matrix); |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
185 } |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
186 |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
187 octave_value |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
188 octave_char_matrix::as_int64 (void) const |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
189 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
190 return int64NDArray (matrix); |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
191 } |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
192 |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
193 octave_value |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
194 octave_char_matrix::as_uint8 (void) const |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
195 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
196 return uint8NDArray (matrix); |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
197 } |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
198 |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
199 octave_value |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
200 octave_char_matrix::as_uint16 (void) const |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
201 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
202 return uint16NDArray (matrix); |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
203 } |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
204 |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
205 octave_value |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
206 octave_char_matrix::as_uint32 (void) const |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
207 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
208 return uint32NDArray (matrix); |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
209 } |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
210 |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
211 octave_value |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
212 octave_char_matrix::as_uint64 (void) const |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
213 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
214 return uint64NDArray (matrix); |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
215 } |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
216 |
4643 | 217 void |
218 octave_char_matrix::print_raw (std::ostream& os, | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
219 bool pr_as_read_syntax) const |
4643 | 220 { |
221 octave_print_internal (os, matrix, pr_as_read_syntax, | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
222 current_print_indent_level ()); |
4643 | 223 } |
224 | |
5900 | 225 mxArray * |
226 octave_char_matrix::as_mxArray (void) const | |
227 { | |
228 mxArray *retval = new mxArray (mxCHAR_CLASS, dims (), mxREAL); | |
229 | |
230 mxChar *pr = static_cast<mxChar *> (retval->get_data ()); | |
231 | |
6686 | 232 mwSize nel = numel (); |
5900 | 233 |
234 const char *p = matrix.data (); | |
235 | |
6686 | 236 for (mwIndex i = 0; i < nel; i++) |
5900 | 237 pr[i] = p[i]; |
238 | |
239 return retval; | |
240 } | |
241 | |
15491
c9844b82945f
reformat interesting comment
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15452
diff
changeset
|
242 // The C++ standard guarantees cctype defines functions, not macros (and |
c9844b82945f
reformat interesting comment
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15452
diff
changeset
|
243 // hence macros *CAN'T* be defined if only cctype is included) so |
15850
ffd1a99733bd
build: Check for isascii() before using it.
Rik <rik@octave.org>
parents:
15501
diff
changeset
|
244 // there's no need to fuck around. The exceptions are isascii and |
ffd1a99733bd
build: Check for isascii() before using it.
Rik <rik@octave.org>
parents:
15501
diff
changeset
|
245 // toascii, which are not C++. Oddly enough, all those character |
ffd1a99733bd
build: Check for isascii() before using it.
Rik <rik@octave.org>
parents:
15501
diff
changeset
|
246 // functions are int (*) (int), even in C++. Wicked! |
9812
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
247 static inline int xisascii (int c) |
15850
ffd1a99733bd
build: Check for isascii() before using it.
Rik <rik@octave.org>
parents:
15501
diff
changeset
|
248 { |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
249 #if defined (HAVE_ISASCII) |
15850
ffd1a99733bd
build: Check for isascii() before using it.
Rik <rik@octave.org>
parents:
15501
diff
changeset
|
250 return isascii (c); |
ffd1a99733bd
build: Check for isascii() before using it.
Rik <rik@octave.org>
parents:
15501
diff
changeset
|
251 #else |
ffd1a99733bd
build: Check for isascii() before using it.
Rik <rik@octave.org>
parents:
15501
diff
changeset
|
252 return (c >= 0x00 && c <= 0x7f); |
ffd1a99733bd
build: Check for isascii() before using it.
Rik <rik@octave.org>
parents:
15501
diff
changeset
|
253 #endif |
ffd1a99733bd
build: Check for isascii() before using it.
Rik <rik@octave.org>
parents:
15501
diff
changeset
|
254 } |
9689
34d6f005db4b
eliminate is_string argument from octave_value character array constructors
John W. Eaton <jwe@octave.org>
parents:
8956
diff
changeset
|
255 |
9812
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
256 octave_value |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
257 octave_char_matrix::map (unary_mapper_t umap) const |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
258 { |
15501
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
259 octave_value retval; |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
260 |
9812
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
261 switch (umap) |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
262 { |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
263 #define STRING_MAPPER(UMAP,FCN,TYPE) \ |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
264 case umap_ ## UMAP: \ |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
265 return octave_value (matrix.map<TYPE, int (&) (int)> (FCN)) |
9689
34d6f005db4b
eliminate is_string argument from octave_value character array constructors
John W. Eaton <jwe@octave.org>
parents:
8956
diff
changeset
|
266 |
9813
8fa32b527d9a
improve & partially revert previous change
Jaroslav Hajek <highegg@gmail.com>
parents:
9812
diff
changeset
|
267 STRING_MAPPER (xisascii, xisascii, bool); |
25415
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
268 |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
269 #define STRING_U8_MAPPER(UMAP,FCN) \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
270 case umap_ ## UMAP: \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
271 { \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
272 charNDArray in_m = matrix; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
273 Array<octave_idx_type> p (dim_vector (matrix.ndims (), 1)); \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
274 if (matrix.ndims () > 1) \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
275 { \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
276 for (octave_idx_type i=0; i < matrix.ndims (); i++) \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
277 p(i) = i; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
278 p(0) = 1; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
279 p(1) = 0; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
280 in_m = matrix.permute (p); \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
281 } \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
282 boolNDArray b_array = boolNDArray (in_m.dims ()); \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
283 const uint8_t *in = reinterpret_cast<const uint8_t *> (in_m.data ()); \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
284 uint32_t uc; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
285 for (octave_idx_type i = 0; i < in_m.numel (); ) \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
286 { \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
287 int mblen = octave_u8_strmbtouc_wrapper (&uc, in + i); \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
288 if (mblen < 1) \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
289 mblen = 1; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
290 bool is_upper = FCN (uc); \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
291 for (int j = 0; j < mblen; j++) \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
292 b_array(i+j) = is_upper; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
293 i += mblen; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
294 } \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
295 return octave_value ((matrix.ndims () > 1) ? b_array.permute (p, true) \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
296 : b_array); \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
297 } |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
298 |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
299 STRING_U8_MAPPER (xisalnum, octave_uc_is_alnum_wrapper); |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
300 STRING_U8_MAPPER (xisalpha, octave_uc_is_alpha_wrapper); |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
301 STRING_U8_MAPPER (xiscntrl, octave_uc_is_cntrl_wrapper); |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
302 STRING_U8_MAPPER (xisdigit, octave_uc_is_digit_wrapper); |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
303 STRING_U8_MAPPER (xisgraph, octave_uc_is_graph_wrapper); |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
304 STRING_U8_MAPPER (xislower, octave_uc_is_lower_wrapper); |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
305 STRING_U8_MAPPER (xisprint, octave_uc_is_print_wrapper); |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
306 STRING_U8_MAPPER (xispunct, octave_uc_is_punct_wrapper); |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
307 STRING_U8_MAPPER (xisspace, octave_uc_is_space_wrapper); |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
308 STRING_U8_MAPPER (xisupper, octave_uc_is_upper_wrapper); |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
309 STRING_U8_MAPPER (xisxdigit, octave_uc_is_xdigit_wrapper); |
25413
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
310 |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
311 #define STRING_U8_FCN(UMAP,U8_FCN,STD_FCN) \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
312 case umap_ ## UMAP: \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
313 { \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
314 charNDArray in_m = matrix; \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
315 Array<octave_idx_type> p (dim_vector (matrix.ndims (), 1)); \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
316 if (matrix.ndims () > 1) \ |
25415
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
317 { \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
318 for (octave_idx_type i=0; i < matrix.ndims (); i++) \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
319 p(i) = i; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
320 p(0) = 1; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
321 p(1) = 0; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
322 in_m = matrix.permute (p); \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
323 } \ |
25413
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
324 size_t output_length = in_m.numel (); \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
325 charNDArray ch_array = charNDArray (in_m.dims ()); \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
326 const uint8_t *in = reinterpret_cast<const uint8_t *> (in_m.data ()); \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
327 uint8_t *buf = reinterpret_cast<uint8_t *> (ch_array.fortran_vec ()); \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
328 U8_FCN (in, matrix.numel (), nullptr, buf, &output_length); \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
329 if (output_length != static_cast<size_t> (matrix.numel ())) \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
330 { \ |
27069
0a62d9a6aa2d
Place Octave's warning and error IDs in to the "Octave" namespace (bug #56213).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
331 warning_with_id ("Octave:multi_byte_char_length", \ |
25413
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
332 "UMAP: Possible multi-byte error."); \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
333 return octave_value (matrix.map<char, int (&) (int)> (STD_FCN)); \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
334 } \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
335 return octave_value ((matrix.ndims () > 1) ? ch_array.permute (p, true)\ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
336 : ch_array); \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
337 } |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
338 |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
339 STRING_U8_FCN (xtolower, octave_u8_tolower_wrapper, std::tolower); |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
340 STRING_U8_FCN (xtoupper, octave_u8_toupper_wrapper, std::toupper); |
9689
34d6f005db4b
eliminate is_string argument from octave_value character array constructors
John W. Eaton <jwe@octave.org>
parents:
8956
diff
changeset
|
341 |
20711
7b608fadc663
Make error messages more specific about the variable and problem encountered.
Rik <rik@octave.org>
parents:
20252
diff
changeset
|
342 // For Matlab compatibility, these should work on ASCII values |
7b608fadc663
Make error messages more specific about the variable and problem encountered.
Rik <rik@octave.org>
parents:
20252
diff
changeset
|
343 // without error or warning. |
15501
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
344 case umap_abs: |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
345 case umap_ceil: |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
346 case umap_fix: |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
347 case umap_floor: |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
348 case umap_imag: |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
349 case umap_isinf: |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
350 case umap_isnan: |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
351 case umap_real: |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
352 case umap_round: |
9812
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
353 { |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
354 octave_matrix m (array_value (true)); |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
355 return m.map (umap); |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
356 } |
15501
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
357 |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
358 default: |
20711
7b608fadc663
Make error messages more specific about the variable and problem encountered.
Rik <rik@octave.org>
parents:
20252
diff
changeset
|
359 error ("%s: argument must be numeric", get_umap_name (umap)); |
15501
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
360 break; |
9812
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
361 } |
15501
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
362 |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
363 return retval; |
9812
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
364 } |