Mercurial > octave
comparison liboctave/util/oct-string.h @ 31607:aac27ad79be6 stable
maint: Re-indent code after switch to using namespace macros.
* build-env.h, build-env.in.cc, Cell.h, __betainc__.cc, __eigs__.cc,
__ftp__.cc, __ichol__.cc, __ilu__.cc, __isprimelarge__.cc, __magick_read__.cc,
__pchip_deriv__.cc, amd.cc, base-text-renderer.cc, base-text-renderer.h,
besselj.cc, bitfcns.cc, bsxfun.cc, c-file-ptr-stream.h, call-stack.cc,
call-stack.h, ccolamd.cc, cellfun.cc, chol.cc, colamd.cc, dasrt.cc, data.cc,
debug.cc, defaults.cc, defaults.h, det.cc, display.cc, display.h, dlmread.cc,
dynamic-ld.cc, dynamic-ld.h, ellipj.cc, environment.cc, environment.h,
error.cc, error.h, errwarn.h, event-manager.cc, event-manager.h,
event-queue.cc, event-queue.h, fcn-info.cc, fcn-info.h, fft.cc, fft2.cc,
file-io.cc, filter.cc, find.cc, ft-text-renderer.cc, ft-text-renderer.h,
gcd.cc, gl-render.cc, gl-render.h, gl2ps-print.cc, gl2ps-print.h,
graphics-toolkit.cc, graphics-toolkit.h, graphics.cc, gsvd.cc, gtk-manager.cc,
gtk-manager.h, help.cc, help.h, hook-fcn.cc, hook-fcn.h, input.cc, input.h,
interpreter-private.cc, interpreter-private.h, interpreter.cc, interpreter.h,
inv.cc, jsondecode.cc, jsonencode.cc, latex-text-renderer.cc,
latex-text-renderer.h, load-path.cc, load-path.h, load-save.cc, load-save.h,
lookup.cc, ls-hdf5.cc, ls-mat4.cc, ls-mat5.cc, lsode.cc, lu.cc, mappers.cc,
matrix_type.cc, max.cc, mex.cc, mexproto.h, mxarray.h, mxtypes.in.h,
oct-errno.in.cc, oct-hdf5-types.cc, oct-hist.cc, oct-hist.h, oct-map.cc,
oct-map.h, oct-opengl.h, oct-prcstrm.h, oct-process.cc, oct-process.h,
oct-stdstrm.h, oct-stream.cc, oct-stream.h, oct-strstrm.h,
octave-default-image.h, ordqz.cc, ordschur.cc, pager.cc, pager.h, pinv.cc,
pow2.cc, pr-output.cc, psi.cc, qr.cc, quadcc.cc, rand.cc, regexp.cc,
settings.cc, settings.h, sighandlers.cc, sighandlers.h, sparse-xpow.cc,
sqrtm.cc, stack-frame.cc, stack-frame.h, stream-euler.cc, strfns.cc, svd.cc,
syminfo.cc, syminfo.h, symrcm.cc, symrec.cc, symrec.h, symscope.cc, symscope.h,
symtab.cc, symtab.h, sysdep.cc, sysdep.h, text-engine.cc, text-engine.h,
text-renderer.cc, text-renderer.h, time.cc, toplev.cc, typecast.cc,
url-handle-manager.cc, url-handle-manager.h, urlwrite.cc, utils.cc, utils.h,
variables.cc, variables.h, xdiv.cc, __delaunayn__.cc, __init_fltk__.cc,
__init_gnuplot__.cc, __ode15__.cc, __voronoi__.cc, audioread.cc, convhulln.cc,
gzip.cc, cdef-class.cc, cdef-class.h, cdef-fwd.h, cdef-manager.cc,
cdef-manager.h, cdef-method.cc, cdef-method.h, cdef-object.cc, cdef-object.h,
cdef-package.cc, cdef-package.h, cdef-property.cc, cdef-property.h,
cdef-utils.cc, cdef-utils.h, ov-base-diag.cc, ov-base-int.cc, ov-base-mat.cc,
ov-base-mat.h, ov-base-scalar.cc, ov-base.cc, ov-base.h, ov-bool-mat.cc,
ov-bool-mat.h, ov-bool-sparse.cc, ov-bool.cc, ov-builtin.h, ov-cell.cc,
ov-ch-mat.cc, ov-class.cc, ov-class.h, ov-classdef.cc, ov-classdef.h,
ov-complex.cc, ov-cx-diag.cc, ov-cx-mat.cc, ov-cx-sparse.cc, ov-dld-fcn.cc,
ov-dld-fcn.h, ov-fcn-handle.cc, ov-fcn-handle.h, ov-fcn.h, ov-float.cc,
ov-flt-complex.cc, ov-flt-cx-diag.cc, ov-flt-cx-mat.cc, ov-flt-re-diag.cc,
ov-flt-re-mat.cc, ov-flt-re-mat.h, ov-intx.h, ov-java.cc, ov-lazy-idx.cc,
ov-legacy-range.cc, ov-magic-int.cc, ov-mex-fcn.cc, ov-mex-fcn.h,
ov-null-mat.cc, ov-perm.cc, ov-range.cc, ov-re-diag.cc, ov-re-mat.cc,
ov-re-mat.h, ov-re-sparse.cc, ov-scalar.cc, ov-str-mat.cc, ov-struct.cc,
ov-typeinfo.cc, ov-typeinfo.h, ov-usr-fcn.cc, ov-usr-fcn.h, ov.cc, ov.h, ovl.h,
octave.cc, octave.h, op-b-sbm.cc, op-bm-sbm.cc, op-cs-scm.cc, op-fm-fcm.cc,
op-fs-fcm.cc, op-s-scm.cc, op-scm-cs.cc, op-scm-s.cc, op-sm-cs.cc, ops.h,
anon-fcn-validator.cc, anon-fcn-validator.h, bp-table.cc, bp-table.h,
comment-list.cc, comment-list.h, filepos.h, lex.h, oct-lvalue.cc, oct-lvalue.h,
parse.h, profiler.cc, profiler.h, pt-anon-scopes.cc, pt-anon-scopes.h,
pt-arg-list.cc, pt-arg-list.h, pt-args-block.cc, pt-args-block.h,
pt-array-list.cc, pt-array-list.h, pt-assign.cc, pt-assign.h, pt-binop.cc,
pt-binop.h, pt-bp.cc, pt-bp.h, pt-cbinop.cc, pt-cbinop.h, pt-cell.cc,
pt-cell.h, pt-check.cc, pt-check.h, pt-classdef.cc, pt-classdef.h, pt-cmd.h,
pt-colon.cc, pt-colon.h, pt-const.cc, pt-const.h, pt-decl.cc, pt-decl.h,
pt-eval.cc, pt-eval.h, pt-except.cc, pt-except.h, pt-exp.cc, pt-exp.h,
pt-fcn-handle.cc, pt-fcn-handle.h, pt-id.cc, pt-id.h, pt-idx.cc, pt-idx.h,
pt-jump.h, pt-loop.cc, pt-loop.h, pt-mat.cc, pt-mat.h, pt-misc.cc, pt-misc.h,
pt-pr-code.cc, pt-pr-code.h, pt-select.cc, pt-select.h, pt-spmd.cc, pt-spmd.h,
pt-stmt.cc, pt-stmt.h, pt-tm-const.cc, pt-tm-const.h, pt-unop.cc, pt-unop.h,
pt-walk.cc, pt-walk.h, pt.cc, pt.h, token.cc, token.h, Range.cc, Range.h,
idx-vector.cc, idx-vector.h, range-fwd.h, CollocWt.cc, CollocWt.h,
aepbalance.cc, aepbalance.h, chol.cc, chol.h, gepbalance.cc, gepbalance.h,
gsvd.cc, gsvd.h, hess.cc, hess.h, lo-mappers.cc, lo-mappers.h, lo-specfun.cc,
lo-specfun.h, lu.cc, lu.h, oct-convn.cc, oct-convn.h, oct-fftw.cc, oct-fftw.h,
oct-norm.cc, oct-norm.h, oct-rand.cc, oct-rand.h, oct-spparms.cc,
oct-spparms.h, qr.cc, qr.h, qrp.cc, qrp.h, randgamma.cc, randgamma.h,
randmtzig.cc, randmtzig.h, randpoisson.cc, randpoisson.h, schur.cc, schur.h,
sparse-chol.cc, sparse-chol.h, sparse-lu.cc, sparse-lu.h, sparse-qr.cc,
sparse-qr.h, svd.cc, svd.h, child-list.cc, child-list.h, dir-ops.cc, dir-ops.h,
file-ops.cc, file-ops.h, file-stat.cc, file-stat.h, lo-sysdep.cc, lo-sysdep.h,
lo-sysinfo.cc, lo-sysinfo.h, mach-info.cc, mach-info.h, oct-env.cc, oct-env.h,
oct-group.cc, oct-group.h, oct-password.cc, oct-password.h, oct-syscalls.cc,
oct-syscalls.h, oct-time.cc, oct-time.h, oct-uname.cc, oct-uname.h,
action-container.cc, action-container.h, base-list.h, cmd-edit.cc, cmd-edit.h,
cmd-hist.cc, cmd-hist.h, f77-fcn.h, file-info.cc, file-info.h,
lo-array-errwarn.cc, lo-array-errwarn.h, lo-hash.cc, lo-hash.h, lo-ieee.h,
lo-regexp.cc, lo-regexp.h, lo-utils.cc, lo-utils.h, oct-base64.cc,
oct-base64.h, oct-glob.cc, oct-glob.h, oct-inttypes.h, oct-mutex.cc,
oct-mutex.h, oct-refcount.h, oct-shlib.cc, oct-shlib.h, oct-sparse.cc,
oct-sparse.h, oct-string.h, octave-preserve-stream-state.h, pathsearch.cc,
pathsearch.h, quit.cc, quit.h, unwind-prot.cc, unwind-prot.h, url-transfer.cc,
url-transfer.h:
Re-indent code after switch to using namespace macros.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 01 Dec 2022 18:02:15 -0800 |
parents | e88a07dec498 |
children | 597f3ee61a48 |
comparison
equal
deleted
inserted
replaced
31605:e88a07dec498 | 31607:aac27ad79be6 |
---|---|
32 | 32 |
33 #include "oct-cmplx.h" | 33 #include "oct-cmplx.h" |
34 | 34 |
35 OCTAVE_BEGIN_NAMESPACE(octave) | 35 OCTAVE_BEGIN_NAMESPACE(octave) |
36 | 36 |
37 //! Octave string utility functions. | 37 //! Octave string utility functions. |
38 //! | 38 //! |
39 //! This functions provide a C++ interface to most string functions | 39 //! This functions provide a C++ interface to most string functions |
40 //! available in the Octave interpreter. | 40 //! available in the Octave interpreter. |
41 //! | 41 //! |
42 //! Specializations for Array may consider its dimensions in addition | 42 //! Specializations for Array may consider its dimensions in addition |
43 //! to the actual string contents. | 43 //! to the actual string contents. |
44 //! | 44 //! |
45 //! @attention | 45 //! @attention |
46 //! Octave's string comparison functions return true when strings are | 46 //! Octave's string comparison functions return true when strings are |
47 //! are equal, just the opposite of the corresponding C library functions. | 47 //! are equal, just the opposite of the corresponding C library functions. |
48 //! In addition, Octave's function only return bool and do not check | 48 //! In addition, Octave's function only return bool and do not check |
49 //! lexicographical order. | 49 //! lexicographical order. |
50 | 50 |
51 OCTAVE_BEGIN_NAMESPACE(string) | 51 OCTAVE_BEGIN_NAMESPACE(string) |
52 | 52 |
53 //! True if strings are the same. | 53 //! True if strings are the same. |
54 //! | 54 //! |
55 //! ## Specialization for Array<char> | 55 //! ## Specialization for Array<char> |
56 //! | 56 //! |
57 //! When comparing whole Array of chars, the actual Array dimensions | 57 //! When comparing whole Array of chars, the actual Array dimensions |
58 //! are significant. A column vector and row vector with the same | 58 //! are significant. A column vector and row vector with the same |
59 //! char array, will still return false. | 59 //! char array, will still return false. |
60 | 60 |
61 template <typename T> | 61 template <typename T> |
62 OCTAVE_API bool | 62 OCTAVE_API bool |
63 strcmp (const T& str_a, const T& str_b); | 63 strcmp (const T& str_a, const T& str_b); |
64 | 64 |
65 //! True if string is the same as character sequence. | 65 //! True if string is the same as character sequence. |
66 //! | 66 //! |
67 //! Compares a string to the null-terminated character sequence | 67 //! Compares a string to the null-terminated character sequence |
68 //! beginning at the character pointed to by str_b. | 68 //! beginning at the character pointed to by str_b. |
69 //! | 69 //! |
70 //! ## Specialization for Array<char> | 70 //! ## Specialization for Array<char> |
71 //! | 71 //! |
72 //! For purposes of comparison of dimensions, the character sequence | 72 //! For purposes of comparison of dimensions, the character sequence |
73 //! is considered to be a row vector. | 73 //! is considered to be a row vector. |
74 | 74 |
75 template <typename T> | 75 template <typename T> |
76 OCTAVE_API bool | 76 OCTAVE_API bool |
77 strcmp (const T& str_a, const typename T::value_type *str_b); | 77 strcmp (const T& str_a, const typename T::value_type *str_b); |
78 | 78 |
79 //! True if strings are the same, ignoring case. | 79 //! True if strings are the same, ignoring case. |
80 //! | 80 //! |
81 //! ## Specialization for Array<char> | 81 //! ## Specialization for Array<char> |
82 //! | 82 //! |
83 //! When comparing whole Array of chars, the actual Array dimensions | 83 //! When comparing whole Array of chars, the actual Array dimensions |
84 //! are significant. A column vector and row vector with the same | 84 //! are significant. A column vector and row vector with the same |
85 //! char array, will still return false. | 85 //! char array, will still return false. |
86 | 86 |
87 template <typename T> | 87 template <typename T> |
88 OCTAVE_API bool | 88 OCTAVE_API bool |
89 strcmpi (const T& str_a, const T& str_b); | 89 strcmpi (const T& str_a, const T& str_b); |
90 | 90 |
91 //! True if string is the same as character sequence, ignoring case. | 91 //! True if string is the same as character sequence, ignoring case. |
92 //! | 92 //! |
93 //! ## Specialization for Array<char> | 93 //! ## Specialization for Array<char> |
94 //! | 94 //! |
95 //! For purposes of comparison of dimensions, the character sequence | 95 //! For purposes of comparison of dimensions, the character sequence |
96 //! is considered to be a row vector. | 96 //! is considered to be a row vector. |
97 | 97 |
98 template <typename T> | 98 template <typename T> |
99 OCTAVE_API bool | 99 OCTAVE_API bool |
100 strcmpi (const T& str_a, const typename T::value_type *str_b); | 100 strcmpi (const T& str_a, const typename T::value_type *str_b); |
101 | 101 |
102 //! True if the first N characters are the same. | 102 //! True if the first N characters are the same. |
103 //! | 103 //! |
104 //! ## Specialization for Array<char> | 104 //! ## Specialization for Array<char> |
105 //! | 105 //! |
106 //! The comparison is done in the first N characters, the actual | 106 //! The comparison is done in the first N characters, the actual |
107 //! dimensions of the Array are irrelevant. A row vector and | 107 //! dimensions of the Array are irrelevant. A row vector and |
108 //! a column vector of the same still return true. | 108 //! a column vector of the same still return true. |
109 | 109 |
110 template <typename T> | 110 template <typename T> |
111 OCTAVE_API bool | 111 OCTAVE_API bool |
112 strncmp (const T& str_a, const T& str_b, | 112 strncmp (const T& str_a, const T& str_b, |
113 const typename T::size_type n); | 113 const typename T::size_type n); |
114 | 114 |
115 //! True if the first N characters are the same. | 115 //! True if the first N characters are the same. |
116 template <typename T> | 116 template <typename T> |
117 OCTAVE_API bool | 117 OCTAVE_API bool |
118 strncmp (const T& str_a, const typename T::value_type *str_b, | 118 strncmp (const T& str_a, const typename T::value_type *str_b, |
119 const typename T::size_type n); | 119 const typename T::size_type n); |
120 | 120 |
121 //! True if the first N characters are the same, ignoring case. | 121 //! True if the first N characters are the same, ignoring case. |
122 //! | 122 //! |
123 //! ## Specialization for Array<char> | 123 //! ## Specialization for Array<char> |
124 //! | 124 //! |
125 //! The comparison is done in the first N characters, the actual | 125 //! The comparison is done in the first N characters, the actual |
126 //! dimensions of the Array are irrelevant. A row vector and | 126 //! dimensions of the Array are irrelevant. A row vector and |
127 //! a column vector of the same still return true. | 127 //! a column vector of the same still return true. |
128 | 128 |
129 template <typename T> | 129 template <typename T> |
130 OCTAVE_API bool | 130 OCTAVE_API bool |
131 strncmpi (const T& str_a, const T& str_b, | 131 strncmpi (const T& str_a, const T& str_b, |
132 const typename T::size_type n); | 132 const typename T::size_type n); |
133 | 133 |
134 //! True if the first N characters are the same, ignoring case. | 134 //! True if the first N characters are the same, ignoring case. |
135 template <typename T> | 135 template <typename T> |
136 OCTAVE_API bool | 136 OCTAVE_API bool |
137 strncmpi (const T& str_a, const typename T::value_type *str_b, | 137 strncmpi (const T& str_a, const typename T::value_type *str_b, |
138 const typename T::size_type n); | 138 const typename T::size_type n); |
139 | 139 |
140 extern OCTAVE_API Complex | 140 extern OCTAVE_API Complex |
141 str2double (const std::string& str_arg); | 141 str2double (const std::string& str_arg); |
142 | 142 |
143 extern OCTAVE_API std::string | 143 extern OCTAVE_API std::string |
144 u8_to_encoding (const std::string& who, const std::string& u8_string, | 144 u8_to_encoding (const std::string& who, const std::string& u8_string, |
145 const std::string& encoding); | 145 const std::string& encoding); |
146 | 146 |
147 extern OCTAVE_API std::string | 147 extern OCTAVE_API std::string |
148 u8_from_encoding (const std::string& who, const std::string& native_string, | 148 u8_from_encoding (const std::string& who, const std::string& native_string, |
149 const std::string& encoding); | 149 const std::string& encoding); |
150 | 150 |
151 enum u8_fallback_type | 151 enum u8_fallback_type |
152 { | 152 { |
153 U8_REPLACEMENT_CHAR, | 153 U8_REPLACEMENT_CHAR, |
154 U8_ISO_8859_1 | 154 U8_ISO_8859_1 |
155 }; | 155 }; |
156 | 156 |
157 extern OCTAVE_API unsigned int | 157 extern OCTAVE_API unsigned int |
158 u8_validate (const std::string& who, std::string& in_string, | 158 u8_validate (const std::string& who, std::string& in_string, |
159 const u8_fallback_type type = U8_REPLACEMENT_CHAR); | 159 const u8_fallback_type type = U8_REPLACEMENT_CHAR); |
160 | 160 |
161 | 161 |
162 template<class Facet> | 162 template<class Facet> |
163 struct | 163 struct |
164 deletable_facet : Facet | 164 deletable_facet : Facet |
165 { | 165 { |
166 template<class ...Args> | 166 template<class ...Args> |
167 deletable_facet (Args&& ...args) | 167 deletable_facet (Args&& ...args) |
168 : Facet (std::forward<Args> (args)...) | 168 : Facet (std::forward<Args> (args)...) |
169 { } | 169 { } |
170 | 170 |
171 // destructor needs to be public | 171 // destructor needs to be public |
172 ~deletable_facet () {} | 172 ~deletable_facet () { } |
173 }; | 173 }; |
174 | 174 |
175 class | 175 class |
176 OCTAVE_API | 176 OCTAVE_API |
177 codecvt_u8 : public std::codecvt<char, char, std::mbstate_t> | 177 codecvt_u8 : public std::codecvt<char, char, std::mbstate_t> |
178 { | 178 { |
179 public: | 179 public: |
180 | 180 |
181 // No copying! | 181 // No copying! |
182 | 182 |
183 codecvt_u8 (codecvt_u8 &) = delete; | 183 codecvt_u8 (codecvt_u8&) = delete; |
184 | 184 |
185 codecvt_u8& operator = (codecvt_u8 &) = delete; | 185 codecvt_u8& operator = (codecvt_u8&) = delete; |
186 | 186 |
187 codecvt_u8 (const std::string &enc) | 187 codecvt_u8 (const std::string& enc) |
188 : m_enc (enc) | 188 : m_enc (enc) |
189 { } | 189 { } |
190 | 190 |
191 virtual ~codecvt_u8 () { } | 191 virtual ~codecvt_u8 () { } |
192 | 192 |
193 typedef char InternT; | 193 typedef char InternT; |
194 typedef char ExternT; | 194 typedef char ExternT; |
195 typedef std::mbstate_t StateT; | 195 typedef std::mbstate_t StateT; |
196 | 196 |
197 private: | 197 private: |
198 | 198 |
199 OCTAVE_API | 199 OCTAVE_API |
200 typename std::codecvt<InternT, ExternT, StateT>::result | 200 typename std::codecvt<InternT, ExternT, StateT>::result |
201 do_out (StateT& state, | 201 do_out (StateT& state, |
202 const InternT* from, const InternT* from_end, const InternT*& from_next, | 202 const InternT *from, const InternT *from_end, const InternT *&from_next, |
203 ExternT* to, ExternT* to_end, ExternT*& to_next) const; | 203 ExternT *to, ExternT *to_end, ExternT *&to_next) const; |
204 | 204 |
205 OCTAVE_API | 205 OCTAVE_API |
206 typename std::codecvt<InternT, ExternT, StateT>::result | 206 typename std::codecvt<InternT, ExternT, StateT>::result |
207 do_in (StateT& state, | 207 do_in (StateT& state, |
208 const ExternT* from, const ExternT* from_end, const ExternT*& from_next, | 208 const ExternT *from, const ExternT *from_end, const ExternT *&from_next, |
209 InternT* to, InternT* to_end, InternT*& to_next) const; | 209 InternT *to, InternT *to_end, InternT *&to_next) const; |
210 | 210 |
211 typename std::codecvt<InternT, ExternT, StateT>::result | 211 typename std::codecvt<InternT, ExternT, StateT>::result |
212 do_unshift (StateT& /* state */, ExternT* to, ExternT* /* to_end */, | 212 do_unshift (StateT& /* state */, ExternT *to, ExternT * /* to_end */, |
213 ExternT*& to_next) const | 213 ExternT *&to_next) const |
214 { | 214 { |
215 // FIXME: What is the correct thing to unshift? | 215 // FIXME: What is the correct thing to unshift? |
216 // Just reset? | 216 // Just reset? |
217 to_next = to; | 217 to_next = to; |
218 | 218 |
219 return std::codecvt<InternT, ExternT, StateT>::ok; | 219 return std::codecvt<InternT, ExternT, StateT>::ok; |
220 } | 220 } |
221 | 221 |
222 int do_encoding () const throw () | 222 int do_encoding () const throw () |
223 { | 223 { |
224 // return 0 because UTF-8 encoding is variable length | 224 // return 0 because UTF-8 encoding is variable length |
225 return 0; | 225 return 0; |
226 } | 226 } |
227 | 227 |
228 bool do_always_noconv () const throw () | 228 bool do_always_noconv () const throw () |
229 { | 229 { |
230 // return false to indicate non-identity conversion | 230 // return false to indicate non-identity conversion |
231 return false; | 231 return false; |
232 } | 232 } |
233 | 233 |
234 OCTAVE_API int | 234 OCTAVE_API int |
235 do_length (StateT& state, const ExternT *src, const ExternT *end, | 235 do_length (StateT& state, const ExternT *src, const ExternT *end, |
236 std::size_t max) const; | 236 std::size_t max) const; |
237 | 237 |
238 int do_max_length() const throw () | 238 int do_max_length() const throw () |
239 { | 239 { |
240 // For UTF-8, a maximum of 4 bytes are needed for one character. | 240 // For UTF-8, a maximum of 4 bytes are needed for one character. |
241 return 4; | 241 return 4; |
242 } | 242 } |
243 | 243 |
244 std::string m_enc; | 244 std::string m_enc; |
245 | 245 |
246 }; | 246 }; |
247 | 247 |
248 OCTAVE_END_NAMESPACE(string) | 248 OCTAVE_END_NAMESPACE(string) |
249 OCTAVE_END_NAMESPACE(octave) | 249 OCTAVE_END_NAMESPACE(octave) |
250 | 250 |
251 template <typename T> | 251 template <typename T> |