annotate libinterp/octave-value/ov-ch-mat.cc @ 31138:b3ca7f891750

maint: use "m_" prefix for member variables in class octave_base_matrix. * ov-base-int.cc, ov-base-mat.cc, ov-base-mat.h, ov-base.h, ov-bool-mat.cc, ov-bool-mat.h, ov-cell.cc, ov-cell.h, ov-ch-mat.cc, ov-ch-mat.h, ov-cx-mat.cc, ov-cx-mat.h, ov-flt-cx-mat.cc, ov-flt-cx-mat.h, ov-flt-re-mat.cc, ov-flt-re-mat.h, ov-intx.h, ov-re-mat.cc, ov-re-mat.h, ov-str-mat.cc, ov-str-mat.h: use "m_" prefix for member variables in class octave_base_matrix.
author Rik <rik@octave.org>
date Sun, 10 Jul 2022 18:26:24 -0700
parents 83f9f8bda883
children aac27ad79be6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30279
diff changeset
3 // Copyright (C) 1996-2022 The Octave Project Developers
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ////////////////////////////////////////////////////////////////////////
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
25
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
26 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21200
diff changeset
27 # include "config.h"
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
28 #endif
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
29
9941
1369f13ae6b2 several fixes by M. Goffioul
Jaroslav Hajek <highegg@gmail.com>
parents: 9813
diff changeset
30 #include <cctype>
25438
cb1606f78f6b prefer <istream>, <ostream>, or <iosfwd> to <iostream> where possible
John W. Eaton <jwe@octave.org>
parents: 25415
diff changeset
31 #include <ostream>
2901
e6d25bc478dd [project @ 1997-04-30 03:41:26 by jwe]
jwe
parents: 2847
diff changeset
32
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
33 #include "dNDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
34 #include "fNDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
35 #include "int8NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
36 #include "int16NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
37 #include "int32NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
38 #include "int64NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
39 #include "uint8NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
40 #include "uint16NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
41 #include "uint32NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
42 #include "uint64NDArray.h"
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
43
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
44 #include "lo-ieee.h"
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
45 #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
46 #include "unicase-wrappers.h"
25415
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
47 #include "unictype-wrappers.h"
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
48 #include "unistr-wrappers.h"
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
49
15149
62a35ae7d6a2 use forward decls for mxArray in ov.h and ov-base.h
John W. Eaton <jwe@octave.org>
parents: 15057
diff changeset
50 #include "mxarray.h"
3219
30770ba4457a [project @ 1998-11-13 03:44:31 by jwe]
jwe
parents: 3136
diff changeset
51 #include "ov-base.h"
30770ba4457a [project @ 1998-11-13 03:44:31 by jwe]
jwe
parents: 3136
diff changeset
52 #include "ov-base-mat.h"
30770ba4457a [project @ 1998-11-13 03:44:31 by jwe]
jwe
parents: 3136
diff changeset
53 #include "ov-base-mat.cc"
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
54 #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
55 #include "errwarn.h"
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
56 #include "pr-output.h"
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
57
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4455
diff changeset
58 template class octave_base_matrix<charNDArray>;
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
59
29569
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
60 octave::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
61 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
62 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
63 const char *p = m_matrix.data ();
6720
fa2f5d4e55db [project @ 2007-06-14 01:18:25 by dbateman]
dbateman
parents: 6686
diff changeset
64 if (numel () == 1 && *p == ':')
29569
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
65 return octave::idx_vector (':');
6720
fa2f5d4e55db [project @ 2007-06-14 01:18:25 by dbateman]
dbateman
parents: 6686
diff changeset
66 else
29569
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
67 return octave::idx_vector (array_value (true));
6720
fa2f5d4e55db [project @ 2007-06-14 01:18:25 by dbateman]
dbateman
parents: 6686
diff changeset
68 }
fa2f5d4e55db [project @ 2007-06-14 01:18:25 by dbateman]
dbateman
parents: 6686
diff changeset
69
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
70 double
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
71 octave_char_matrix::double_value (bool) const
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
72 {
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
73 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
74 err_invalid_conversion ("character matrix", "real scalar");
4455
abbf63293766 [project @ 2003-07-11 01:01:16 by jwe]
jwe
parents: 4192
diff changeset
75
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
76 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
77 "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
78
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
79 return static_cast<unsigned char> (m_matrix(0, 0));
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
80 }
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
81
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
82 float
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
83 octave_char_matrix::float_value (bool) const
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
84 {
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
85 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
86 err_invalid_conversion ("character matrix", "real scalar");
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
87
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
88 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
89 "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
90
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
91 return static_cast<unsigned char> (m_matrix(0, 0));
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
92 }
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
93
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
94 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
95 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
96 {
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 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
98
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
99 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
100 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
101
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
102 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
103 "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
104
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
105 retval = octave_int64 (m_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
106
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 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
108 }
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 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
111 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
112 {
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 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
114
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
115 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
116 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
117
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
118 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
119 "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
120
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
121 retval = octave_uint64 (m_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
122
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 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
124 }
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
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
126 Complex
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
127 octave_char_matrix::complex_value (bool) const
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
128 {
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
129 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
130 err_invalid_conversion ("character matrix", "complex scalar");
4455
abbf63293766 [project @ 2003-07-11 01:01:16 by jwe]
jwe
parents: 4192
diff changeset
131
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
132 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
133 "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
134
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
135 return Complex (static_cast<unsigned char> (m_matrix(0, 0)), 0);
2376
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
136 }
2142216bf85a [project @ 1996-10-12 01:39:07 by jwe]
jwe
parents:
diff changeset
137
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
138 FloatComplex
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
139 octave_char_matrix::float_complex_value (bool) const
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
140 {
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
141 float tmp = lo_ieee_float_nan_value ();
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
142
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
143 FloatComplex retval (tmp, tmp);
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
144
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
145 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
146 err_invalid_conversion ("character matrix", "complex scalar");
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
147
21118
3ac9f47fb04b Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents: 21100
diff changeset
148 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
149 "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
150
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
151 retval = static_cast<unsigned char> (m_matrix(0, 0));
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
152
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
153 return retval;
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
154 }
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
155
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
156 octave_value
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
157 octave_char_matrix::as_double (void) const
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
158 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
159 return NDArray (m_matrix);
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
160 }
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 octave_value
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
163 octave_char_matrix::as_single (void) const
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
164 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
165 return FloatNDArray (m_matrix);
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
166 }
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 octave_value
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
169 octave_char_matrix::as_int8 (void) const
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
170 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
171 return int8NDArray (m_matrix);
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
172 }
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 octave_value
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
175 octave_char_matrix::as_int16 (void) const
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
176 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
177 return int16NDArray (m_matrix);
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
178 }
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 octave_value
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
181 octave_char_matrix::as_int32 (void) const
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
182 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
183 return int32NDArray (m_matrix);
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
184 }
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 octave_value
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
187 octave_char_matrix::as_int64 (void) const
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
188 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
189 return int64NDArray (m_matrix);
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
190 }
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 octave_value
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
193 octave_char_matrix::as_uint8 (void) const
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
194 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
195 return uint8NDArray (m_matrix);
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
196 }
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 octave_value
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
199 octave_char_matrix::as_uint16 (void) const
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
200 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
201 return uint16NDArray (m_matrix);
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
202 }
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 octave_value
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
205 octave_char_matrix::as_uint32 (void) const
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
206 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
207 return uint32NDArray (m_matrix);
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
208 }
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 octave_value
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
211 octave_char_matrix::as_uint64 (void) const
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
212 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
213 return uint64NDArray (m_matrix);
22296
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
214 }
8b18f46f6427 revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents: 22197
diff changeset
215
4643
ef3a14fb6847 [project @ 2003-11-22 12:25:44 by jwe]
jwe
parents: 4612
diff changeset
216 void
ef3a14fb6847 [project @ 2003-11-22 12:25:44 by jwe]
jwe
parents: 4612
diff changeset
217 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
218 bool pr_as_read_syntax) const
4643
ef3a14fb6847 [project @ 2003-11-22 12:25:44 by jwe]
jwe
parents: 4612
diff changeset
219 {
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
220 octave_print_internal (os, m_matrix, pr_as_read_syntax,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
221 current_print_indent_level ());
4643
ef3a14fb6847 [project @ 2003-11-22 12:25:44 by jwe]
jwe
parents: 4612
diff changeset
222 }
ef3a14fb6847 [project @ 2003-11-22 12:25:44 by jwe]
jwe
parents: 4612
diff changeset
223
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
224 mxArray *
28126
4c21f99b4ad5 handle interleaved complex data and new typed data access functions for mex
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
225 octave_char_matrix::as_mxArray (bool interleaved) const
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
226 {
28126
4c21f99b4ad5 handle interleaved complex data and new typed data access functions for mex
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
227 mxArray *retval = new mxArray (interleaved, mxCHAR_CLASS, dims (), mxREAL);
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
228
28126
4c21f99b4ad5 handle interleaved complex data and new typed data access functions for mex
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
229 mxChar *pd = static_cast<mxChar *> (retval->get_data ());
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
230
6686
2aad75fcc93a [project @ 2007-06-03 20:58:28 by dbateman]
dbateman
parents: 5900
diff changeset
231 mwSize nel = numel ();
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
232
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
233 const char *pdata = m_matrix.data ();
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
234
6686
2aad75fcc93a [project @ 2007-06-03 20:58:28 by dbateman]
dbateman
parents: 5900
diff changeset
235 for (mwIndex i = 0; i < nel; i++)
28126
4c21f99b4ad5 handle interleaved complex data and new typed data access functions for mex
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
236 pd[i] = pdata[i];
5900
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
237
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
238 return retval;
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
239 }
c20eb7330d13 [project @ 2006-07-22 08:31:16 by jwe]
jwe
parents: 5781
diff changeset
240
15491
c9844b82945f reformat interesting comment
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15452
diff changeset
241 // 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
242 // 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
243 // 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
244 // 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
245 // functions are int (*) (int), even in C++. Wicked!
9812
f80c566bc751 improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents: 9690
diff changeset
246 static inline int xisascii (int c)
15850
ffd1a99733bd build: Check for isascii() before using it.
Rik <rik@octave.org>
parents: 15501
diff changeset
247 {
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
248 #if defined (HAVE_ISASCII)
15850
ffd1a99733bd build: Check for isascii() before using it.
Rik <rik@octave.org>
parents: 15501
diff changeset
249 return isascii (c);
ffd1a99733bd build: Check for isascii() before using it.
Rik <rik@octave.org>
parents: 15501
diff changeset
250 #else
ffd1a99733bd build: Check for isascii() before using it.
Rik <rik@octave.org>
parents: 15501
diff changeset
251 return (c >= 0x00 && c <= 0x7f);
ffd1a99733bd build: Check for isascii() before using it.
Rik <rik@octave.org>
parents: 15501
diff changeset
252 #endif
ffd1a99733bd build: Check for isascii() before using it.
Rik <rik@octave.org>
parents: 15501
diff changeset
253 }
9689
34d6f005db4b eliminate is_string argument from octave_value character array constructors
John W. Eaton <jwe@octave.org>
parents: 8956
diff changeset
254
9812
f80c566bc751 improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents: 9690
diff changeset
255 octave_value
f80c566bc751 improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents: 9690
diff changeset
256 octave_char_matrix::map (unary_mapper_t umap) const
f80c566bc751 improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents: 9690
diff changeset
257 {
15501
814c4b0d5c49 make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents: 15491
diff changeset
258 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
259
9812
f80c566bc751 improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents: 9690
diff changeset
260 switch (umap)
f80c566bc751 improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents: 9690
diff changeset
261 {
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22323
diff changeset
262 #define STRING_MAPPER(UMAP,FCN,TYPE) \
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22323
diff changeset
263 case umap_ ## UMAP: \
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
264 return octave_value (m_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
265
9813
8fa32b527d9a improve & partially revert previous change
Jaroslav Hajek <highegg@gmail.com>
parents: 9812
diff changeset
266 STRING_MAPPER (xisascii, xisascii, bool);
25415
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
267
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
268 #define STRING_U8_MAPPER(UMAP,FCN) \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
269 case umap_ ## UMAP: \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
270 { \
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
271 charNDArray in_m = m_matrix; \
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
272 Array<octave_idx_type> p (dim_vector (m_matrix.ndims (), 1)); \
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
273 if (m_matrix.ndims () > 1) \
25415
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
274 { \
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
275 for (octave_idx_type i=0; i < m_matrix.ndims (); i++) \
25415
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
276 p(i) = i; \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
277 p(0) = 1; \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
278 p(1) = 0; \
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
279 in_m = m_matrix.permute (p); \
25415
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
280 } \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
281 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
282 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
283 uint32_t uc; \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
284 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
285 { \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
286 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
287 if (mblen < 1) \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
288 mblen = 1; \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
289 bool is_upper = FCN (uc); \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
290 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
291 b_array(i+j) = is_upper; \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
292 i += mblen; \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
293 } \
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
294 return octave_value ((m_matrix.ndims () > 1) ? b_array.permute (p, true) \
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
295 : b_array); \
25415
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
296 }
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 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
299 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
300 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
301 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
302 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
303 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
304 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
305 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
306 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
307 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
308 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
309
39cf8145405f Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25054
diff changeset
310 #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
311 case umap_ ## UMAP: \
39cf8145405f Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25054
diff changeset
312 { \
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
313 charNDArray in_m = m_matrix; \
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
314 Array<octave_idx_type> p (dim_vector (m_matrix.ndims (), 1)); \
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
315 if (m_matrix.ndims () > 1) \
25415
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
316 { \
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
317 for (octave_idx_type i=0; i < m_matrix.ndims (); i++) \
25415
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
318 p(i) = i; \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
319 p(0) = 1; \
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
320 p(1) = 0; \
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
321 in_m = m_matrix.permute (p); \
25415
d4bc8590b5cf Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25413
diff changeset
322 } \
30346
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30279
diff changeset
323 std::size_t output_length = in_m.numel (); \
25413
39cf8145405f Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25054
diff changeset
324 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
325 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
326 uint8_t *buf = reinterpret_cast<uint8_t *> (ch_array.fortran_vec ()); \
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
327 U8_FCN (in, m_matrix.numel (), nullptr, buf, &output_length); \
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
328 if (output_length != static_cast<std::size_t> (m_matrix.numel ())) \
25413
39cf8145405f Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25054
diff changeset
329 { \
27069
0a62d9a6aa2d Place Octave's warning and error IDs in to the "Octave" namespace (bug #56213).
Rik <rik@octave.org>
parents: 26376
diff changeset
330 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
331 "UMAP: Possible multi-byte error."); \
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
332 return octave_value (m_matrix.map<char, int (&) (int)> (STD_FCN)); \
25413
39cf8145405f Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25054
diff changeset
333 } \
31138
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
334 return octave_value ((m_matrix.ndims () > 1) ? ch_array.permute (p, true)\
b3ca7f891750 maint: use "m_" prefix for member variables in class octave_base_matrix.
Rik <rik@octave.org>
parents: 30565
diff changeset
335 : ch_array); \
25413
39cf8145405f Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25054
diff changeset
336 }
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 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
339 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
340
20711
7b608fadc663 Make error messages more specific about the variable and problem encountered.
Rik <rik@octave.org>
parents: 20252
diff changeset
341 // 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
342 // 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
343 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
344 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
345 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
346 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
347 case umap_imag:
30279
68aa1e839578 allow isfinite to work for character arrays (bug #61411)
Guillaume Flandin <guillaume.offline@gmail.com>
parents: 29655
diff changeset
348 case umap_isfinite:
15501
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 }