Mercurial > jwe > octave
annotate libinterp/octave-value/ov-ch-mat.cc @ 28131:4c21f99b4ad5
handle interleaved complex data and new typed data access functions for mex
* mexproto.h, mex.cc, mxarray.h (mxMakeArrayReal, mxMakeArrayComplex,
mxGetDoubles, mxGetSingles, mxGetInt8s, mxGetInt16s, mxGetInt32s,
mxGetInt64s, mxGetUint8s, mxGetUint16s, mxGetUint32s, mxGetUint64s,
mxGetComplexDoubles, mxGetComplexSingles, mxSetDoubles, mxSetSingles,
mxSetInt8s, mxSetInt16s, mxSetInt32s, mxSetInt64s, mxSetUint8s,
mxSetUint16s, mxSetUint32s, mxSetUint64s, mxSetComplexDoubles,
mxSetComplexSingles): New functions. Provide corresponding member
functions in mxArray class hierarchy to handle the actual operations.
(mxGetComplexInt8s, mxGetComplexInt16s, mxGetComplexInt32s,
mxGetComplexInt64s, mxGetComplexUint8s, mxGetComplexUint16s,
mxGetComplexUint32s, mxGetComplexUint64s, mxSetComplexInt8s,
mxSetComplexInt16s, mxSetComplexInt32s, mxSetComplexInt64s,
mxSetComplexUint8s, mxSetComplexUint16s, mxSetComplexUint32s,
mxSetComplexUint64s): Add prototypes and functions, but leave
commented out since we don't have complex integer data.
(class mxArray_number, class mxArray_sparse):
Handle interleaved complex data. In mxArray_octave_value and
mxArray_matlab constructors, handle interleaved flag in constructor to
determine data layout to use when creating mxArray_number or
mxArray_sparse objects.
(mex::make_value): Check flag in mex function to determine whether to
create arrays with interleaved complex.
* ov.h, ov.cc, ov-base.h, ov-base.cc, ov-base-diag.h, ov-base-diag.cc,
ov-bool-mat.h, ov-bool-mat.cc, ov-bool-sparse.h, ov-bool-sparse.cc,
ov-bool.h, ov-bool.cc, ov-cell.h, ov-cell.cc, ov-ch-mat.h,
ov-ch-mat.cc, ov-class.h, ov-class.cc, ov-complex.h, ov-complex.cc,
ov-cx-mat.h, ov-cx-mat.cc, ov-cx-sparse.h, ov-cx-sparse.cc,
ov-float.h, ov-float.cc, ov-flt-complex.h, ov-flt-complex.cc,
ov-flt-cx-mat.h, ov-flt-cx-mat.cc, ov-flt-re-mat.h, ov-flt-re-mat.cc,
ov-intx.h, ov-lazy-idx.h, ov-perm.h, ov-perm.cc, ov-range.h,
ov-range.cc, ov-re-mat.h, ov-re-mat.cc, ov-re-sparse.h,
ov-re-sparse.cc, ov-scalar.h, ov-scalar.cc, ov-struct.h, ov-struct.cc:
In all as_mxArray methods, handle new interleaved input to optionally
create objects that will use interleaved complex data.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 18 Feb 2020 13:16:41 -0500 |
parents | bd51beb6205e |
children | 7854d5752dd2 |
rev | line source |
---|---|
27928
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
diff
changeset
|
2 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
diff
changeset
|
3 // Copyright (C) 1996-2020 The Octave Project Developers |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
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:
27924
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
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:
27924
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:
27924
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:
27924
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
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:
27924
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:
27924
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:
27924
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
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:
27924
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:
27924
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27924
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
2376 | 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 | 28 #endif |
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 | 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 | 44 #include "lo-ieee.h" |
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 | 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 | 51 #include "ov-base.h" |
52 #include "ov-base-mat.h" | |
53 #include "ov-base-mat.cc" | |
2376 | 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 | 56 #include "pr-output.h" |
57 | |
4513 | 58 template class octave_base_matrix<charNDArray>; |
2376 | 59 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
60 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 { |
6720 | 63 const char *p = matrix.data (); |
64 if (numel () == 1 && *p == ':') | |
65 return idx_vector (':'); | |
66 else | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
67 return idx_vector (array_value (true)); |
6720 | 68 } |
69 | |
2376 | 70 double |
71 octave_char_matrix::double_value (bool) const | |
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 | 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 |
22477
6bf1cbb90705
Remove unnecessary initializations in float_value and double_value methods
Julien Bect <julien.bect@centralesupelec.fr>
parents:
22407
diff
changeset
|
79 return static_cast<unsigned char> (matrix(0, 0)); |
2376 | 80 } |
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 |
22477
6bf1cbb90705
Remove unnecessary initializations in float_value and double_value methods
Julien Bect <julien.bect@centralesupelec.fr>
parents:
22407
diff
changeset
|
91 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
|
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 |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
105 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
|
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 |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
121 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
|
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 | 126 Complex |
127 octave_char_matrix::complex_value (bool) const | |
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 | 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 |
22508
0b278f54f60a
Remove unnecessary initializations in complex_value methods.
Julien Bect <jbect@users.sourceforge.net>
parents:
22477
diff
changeset
|
135 return Complex (static_cast<unsigned char> (matrix(0, 0)), 0); |
2376 | 136 } |
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 |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
151 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
|
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 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
159 return NDArray (matrix); |
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 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
165 return FloatNDArray (matrix); |
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 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
171 return int8NDArray (matrix); |
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 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
177 return int16NDArray (matrix); |
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 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
183 return int32NDArray (matrix); |
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 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
189 return int64NDArray (matrix); |
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 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
195 return uint8NDArray (matrix); |
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 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
201 return uint16NDArray (matrix); |
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 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
207 return uint32NDArray (matrix); |
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 { |
8b18f46f6427
revamp double, single, int type conversions
John W. Eaton <jwe@octave.org>
parents:
22197
diff
changeset
|
213 return uint64NDArray (matrix); |
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 | 216 void |
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 | 219 { |
220 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
|
221 current_print_indent_level ()); |
4643 | 222 } |
223 | |
5900 | 224 mxArray * |
28131
4c21f99b4ad5
handle interleaved complex data and new typed data access functions for mex
John W. Eaton <jwe@octave.org>
parents:
27928
diff
changeset
|
225 octave_char_matrix::as_mxArray (bool interleaved) const |
5900 | 226 { |
28131
4c21f99b4ad5
handle interleaved complex data and new typed data access functions for mex
John W. Eaton <jwe@octave.org>
parents:
27928
diff
changeset
|
227 mxArray *retval = new mxArray (interleaved, mxCHAR_CLASS, dims (), mxREAL); |
5900 | 228 |
28131
4c21f99b4ad5
handle interleaved complex data and new typed data access functions for mex
John W. Eaton <jwe@octave.org>
parents:
27928
diff
changeset
|
229 mxChar *pd = static_cast<mxChar *> (retval->get_data ()); |
5900 | 230 |
6686 | 231 mwSize nel = numel (); |
5900 | 232 |
28131
4c21f99b4ad5
handle interleaved complex data and new typed data access functions for mex
John W. Eaton <jwe@octave.org>
parents:
27928
diff
changeset
|
233 const char *pdata = matrix.data (); |
5900 | 234 |
6686 | 235 for (mwIndex i = 0; i < nel; i++) |
28131
4c21f99b4ad5
handle interleaved complex data and new typed data access functions for mex
John W. Eaton <jwe@octave.org>
parents:
27928
diff
changeset
|
236 pd[i] = pdata[i]; |
5900 | 237 |
238 return retval; | |
239 } | |
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: \ |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
264 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
|
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 { \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
271 charNDArray in_m = matrix; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
272 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
|
273 if (matrix.ndims () > 1) \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
274 { \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
275 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
|
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; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
279 in_m = matrix.permute (p); \ |
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 } \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
294 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
|
295 : b_array); \ |
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 { \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
313 charNDArray in_m = matrix; \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
314 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
|
315 if (matrix.ndims () > 1) \ |
25415
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
316 { \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
317 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
|
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; \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
321 in_m = matrix.permute (p); \ |
d4bc8590b5cf
Make "is*" string functions Unicode aware.
Markus Mützel <markus.muetzel@gmx.de>
parents:
25413
diff
changeset
|
322 } \ |
25413
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
323 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
|
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 ()); \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
327 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
|
328 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
|
329 { \ |
27072
0a62d9a6aa2d
Place Octave's warning and error IDs in to the "Octave" namespace (bug #56213).
Rik <rik@octave.org>
parents:
26379
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."); \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
332 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
|
333 } \ |
39cf8145405f
Make "tolower" and "toupper" Unicode aware (bug #53873).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25054
diff
changeset
|
334 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
|
335 : ch_array); \ |
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: |
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_isinf: |
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_isnan: |
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_real: |
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_round: |
9812
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
352 { |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
353 octave_matrix m (array_value (true)); |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
354 return m.map (umap); |
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
355 } |
15501
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
356 |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
357 default: |
20711
7b608fadc663
Make error messages more specific about the variable and problem encountered.
Rik <rik@octave.org>
parents:
20252
diff
changeset
|
358 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
|
359 break; |
9812
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
360 } |
15501
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
361 |
814c4b0d5c49
make numeric mapper functions throw error for char args (bug #37535)
John W. Eaton <jwe@octave.org>
parents:
15491
diff
changeset
|
362 return retval; |
9812
f80c566bc751
improve unary mapper system
Jaroslav Hajek <highegg@gmail.com>
parents:
9690
diff
changeset
|
363 } |