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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
1 /*
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
8
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
9 This file is part of Octave.
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
20
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
21 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6720
diff changeset
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
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
24
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
25 */
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
29 #endif
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
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
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
45 #include "lo-ieee.h"
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
30770ba4457a [project @ 1998-11-13 03:44:31 by jwe]
jwe
parents: 3136
diff changeset
52 #include "ov-base.h"
30770ba4457a [project @ 1998-11-13 03:44:31 by jwe]
jwe
parents: 3136
diff changeset
53 #include "ov-base-mat.h"
30770ba4457a [project @ 1998-11-13 03:44:31 by jwe]
jwe
parents: 3136
diff changeset
54 #include "ov-base-mat.cc"
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
57 #include "pr-output.h"
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
58
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4455
diff changeset
59 template class octave_base_matrix<charNDArray>;
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
fa2f5d4e55db [project @ 2007-06-14 01:18:25 by dbateman]
dbateman
parents: 6686
diff changeset
64 const char *p = matrix.data ();
fa2f5d4e55db [project @ 2007-06-14 01:18:25 by dbateman]
dbateman
parents: 6686
diff changeset
65 if (numel () == 1 && *p == ':')
fa2f5d4e55db [project @ 2007-06-14 01:18:25 by dbateman]
dbateman
parents: 6686
diff changeset
66 return idx_vector (':');
fa2f5d4e55db [project @ 2007-06-14 01:18:25 by dbateman]
dbateman
parents: 6686
diff changeset
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
fa2f5d4e55db [project @ 2007-06-14 01:18:25 by dbateman]
dbateman
parents: 6686
diff changeset
69 }
fa2f5d4e55db [project @ 2007-06-14 01:18:25 by dbateman]
dbateman
parents: 6686
diff changeset
70
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
71 double
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
72 octave_char_matrix::double_value (bool) const
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
abbf63293766 [project @ 2003-07-11 01:01:16 by jwe]
jwe
parents: 4192
diff changeset
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
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
81 }
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
127 Complex
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
128 octave_char_matrix::complex_value (bool) const
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
abbf63293766 [project @ 2003-07-11 01:01:16 by jwe]
jwe
parents: 4192
diff changeset
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
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
137 }
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
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
ef3a14fb6847 [project @ 2003-11-22 12:25:44 by jwe]
jwe
parents: 4612
diff changeset
217 void
ef3a14fb6847 [project @ 2003-11-22 12:25:44 by jwe]
jwe
parents: 4612
diff changeset
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
ef3a14fb6847 [project @ 2003-11-22 12:25:44 by jwe]
jwe
parents: 4612
diff changeset
220 {
ef3a14fb6847 [project @ 2003-11-22 12:25:44 by jwe]
jwe
parents: 4612
diff changeset
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
ef3a14fb6847 [project @ 2003-11-22 12:25:44 by jwe]
jwe
parents: 4612
diff changeset
223 }
ef3a14fb6847 [project @ 2003-11-22 12:25:44 by jwe]
jwe
parents: 4612
diff changeset
224
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
225 mxArray *
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
226 octave_char_matrix::as_mxArray (void) const
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
227 {
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
228 mxArray *retval = new mxArray (mxCHAR_CLASS, dims (), mxREAL);
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
229
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
230 mxChar *pr = static_cast<mxChar *> (retval->get_data ());
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
231
6686
2aad75fcc93a [project @ 2007-06-03 20:58:28 by dbateman]
dbateman
parents: 5900
diff changeset
232 mwSize nel = numel ();
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
233
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
234 const char *p = matrix.data ();
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
235
6686
2aad75fcc93a [project @ 2007-06-03 20:58:28 by dbateman]
dbateman
parents: 5900
diff changeset
236 for (mwIndex i = 0; i < nel; i++)
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
237 pr[i] = p[i];
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
238
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
239 return retval;
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
240 }
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
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 }