comparison libinterp/corefcn/strfns.cc @ 17787:175b392e91fe

Use GNU style coding conventions for code in libinterp/ * libinterp/corefcn/Cell.h, libinterp/corefcn/__contourc__.cc, libinterp/corefcn/__dispatch__.cc, libinterp/corefcn/__lin_interpn__.cc, libinterp/corefcn/__pchip_deriv__.cc, libinterp/corefcn/__qp__.cc, libinterp/corefcn/balance.cc, libinterp/corefcn/besselj.cc, libinterp/corefcn/betainc.cc, libinterp/corefcn/bitfcns.cc, libinterp/corefcn/bsxfun.cc, libinterp/corefcn/c-file-ptr-stream.cc, libinterp/corefcn/c-file-ptr-stream.h, libinterp/corefcn/cellfun.cc, libinterp/corefcn/colloc.cc, libinterp/corefcn/comment-list.h, libinterp/corefcn/conv2.cc, libinterp/corefcn/daspk.cc, libinterp/corefcn/dasrt.cc, libinterp/corefcn/dassl.cc, libinterp/corefcn/data.cc, libinterp/corefcn/debug.cc, libinterp/corefcn/defaults.cc, libinterp/corefcn/defaults.in.h, libinterp/corefcn/defun-int.h, libinterp/corefcn/defun.cc, libinterp/corefcn/det.cc, libinterp/corefcn/dirfns.cc, libinterp/corefcn/display.cc, libinterp/corefcn/dlmread.cc, libinterp/corefcn/dot.cc, libinterp/corefcn/dynamic-ld.cc, libinterp/corefcn/dynamic-ld.h, libinterp/corefcn/eig.cc, libinterp/corefcn/ellipj.cc, libinterp/corefcn/error.cc, libinterp/corefcn/error.h, libinterp/corefcn/event-queue.h, libinterp/corefcn/fft.cc, libinterp/corefcn/fft2.cc, libinterp/corefcn/fftn.cc, libinterp/corefcn/file-io.cc, libinterp/corefcn/filter.cc, libinterp/corefcn/find.cc, libinterp/corefcn/gammainc.cc, libinterp/corefcn/gcd.cc, libinterp/corefcn/getgrent.cc, libinterp/corefcn/getpwent.cc, libinterp/corefcn/getrusage.cc, libinterp/corefcn/givens.cc, libinterp/corefcn/gl-render.cc, libinterp/corefcn/gl2ps-renderer.cc, libinterp/corefcn/gl2ps-renderer.h, libinterp/corefcn/graphics.cc, libinterp/corefcn/graphics.in.h, libinterp/corefcn/gripes.cc, libinterp/corefcn/gripes.h, libinterp/corefcn/help.cc, libinterp/corefcn/hess.cc, libinterp/corefcn/hex2num.cc, libinterp/corefcn/input.cc, libinterp/corefcn/input.h, libinterp/corefcn/inv.cc, libinterp/corefcn/jit-ir.h, libinterp/corefcn/jit-typeinfo.cc, libinterp/corefcn/jit-typeinfo.h, libinterp/corefcn/jit-util.h, libinterp/corefcn/kron.cc, libinterp/corefcn/load-path.cc, libinterp/corefcn/load-path.h, libinterp/corefcn/load-save.cc, libinterp/corefcn/load-save.h, libinterp/corefcn/lookup.cc, libinterp/corefcn/ls-ascii-helper.cc, libinterp/corefcn/ls-hdf5.cc, libinterp/corefcn/ls-hdf5.h, libinterp/corefcn/ls-mat-ascii.cc, libinterp/corefcn/ls-mat-ascii.h, libinterp/corefcn/ls-mat4.cc, libinterp/corefcn/ls-mat5.cc, libinterp/corefcn/ls-mat5.h, libinterp/corefcn/ls-oct-ascii.cc, libinterp/corefcn/lsode.cc, libinterp/corefcn/lu.cc, libinterp/corefcn/luinc.cc, libinterp/corefcn/mappers.cc, libinterp/corefcn/matrix_type.cc, libinterp/corefcn/max.cc, libinterp/corefcn/md5sum.cc, libinterp/corefcn/mex.cc, libinterp/corefcn/mexproto.h, libinterp/corefcn/mgorth.cc, libinterp/corefcn/mxarray.in.h, libinterp/corefcn/nproc.cc, libinterp/corefcn/oct-hist.cc, libinterp/corefcn/oct-lvalue.h, libinterp/corefcn/oct-map.cc, libinterp/corefcn/oct-map.h, libinterp/corefcn/oct-obj.h, libinterp/corefcn/oct-prcstrm.h, libinterp/corefcn/oct-stdstrm.h, libinterp/corefcn/oct-stream.cc, libinterp/corefcn/oct-stream.h, libinterp/corefcn/octave-link.cc, libinterp/corefcn/octave-link.h, libinterp/corefcn/pager.cc, libinterp/corefcn/pinv.cc, libinterp/corefcn/pr-output.cc, libinterp/corefcn/procstream.h, libinterp/corefcn/profiler.cc, libinterp/corefcn/pt-jit.cc, libinterp/corefcn/pt-jit.h, libinterp/corefcn/quad.cc, libinterp/corefcn/quadcc.cc, libinterp/corefcn/qz.cc, libinterp/corefcn/rand.cc, libinterp/corefcn/rcond.cc, libinterp/corefcn/regexp.cc, libinterp/corefcn/schur.cc, libinterp/corefcn/sighandlers.cc, libinterp/corefcn/sighandlers.h, libinterp/corefcn/sparse-xdiv.cc, libinterp/corefcn/sparse-xdiv.h, libinterp/corefcn/sparse-xpow.cc, libinterp/corefcn/sparse.cc, libinterp/corefcn/spparms.cc, libinterp/corefcn/sqrtm.cc, libinterp/corefcn/str2double.cc, libinterp/corefcn/strfind.cc, libinterp/corefcn/strfns.cc, libinterp/corefcn/sub2ind.cc, libinterp/corefcn/svd.cc, libinterp/corefcn/syl.cc, libinterp/corefcn/symtab.cc, libinterp/corefcn/symtab.h, libinterp/corefcn/syscalls.cc, libinterp/corefcn/sysdep.cc, libinterp/corefcn/sysdep.h, libinterp/corefcn/time.cc, libinterp/corefcn/toplev.cc, libinterp/corefcn/toplev.h, libinterp/corefcn/tril.cc, libinterp/corefcn/txt-eng-ft.cc, libinterp/corefcn/txt-eng-ft.h, libinterp/corefcn/txt-eng.h, libinterp/corefcn/typecast.cc, libinterp/corefcn/urlwrite.cc, libinterp/corefcn/utils.cc, libinterp/corefcn/variables.cc, libinterp/corefcn/variables.h, libinterp/corefcn/xdiv.cc, libinterp/corefcn/xdiv.h, libinterp/corefcn/xnorm.h, libinterp/corefcn/xpow.cc, libinterp/corefcn/xpow.h, libinterp/corefcn/zfstream.cc, libinterp/corefcn/zfstream.h, libinterp/dldfcn/__delaunayn__.cc, libinterp/dldfcn/__dsearchn__.cc, libinterp/dldfcn/__eigs__.cc, libinterp/dldfcn/__fltk_uigetfile__.cc, libinterp/dldfcn/__glpk__.cc, libinterp/dldfcn/__init_fltk__.cc, libinterp/dldfcn/__init_gnuplot__.cc, libinterp/dldfcn/__magick_read__.cc, libinterp/dldfcn/__voronoi__.cc, libinterp/dldfcn/amd.cc, libinterp/dldfcn/ccolamd.cc, libinterp/dldfcn/chol.cc, libinterp/dldfcn/colamd.cc, libinterp/dldfcn/convhulln.cc, libinterp/dldfcn/dmperm.cc, libinterp/dldfcn/fftw.cc, libinterp/dldfcn/qr.cc, libinterp/dldfcn/symbfact.cc, libinterp/dldfcn/symrcm.cc, libinterp/dldfcn/tsearch.cc, libinterp/octave-value/ov-base-diag.cc, libinterp/octave-value/ov-base-diag.h, libinterp/octave-value/ov-base-int.cc, libinterp/octave-value/ov-base-int.h, libinterp/octave-value/ov-base-mat.h, libinterp/octave-value/ov-base-scalar.cc, libinterp/octave-value/ov-base-scalar.h, libinterp/octave-value/ov-base-sparse.cc, libinterp/octave-value/ov-base-sparse.h, libinterp/octave-value/ov-base.cc, libinterp/octave-value/ov-base.h, libinterp/octave-value/ov-bool-mat.cc, libinterp/octave-value/ov-bool-mat.h, libinterp/octave-value/ov-bool-sparse.cc, libinterp/octave-value/ov-bool-sparse.h, libinterp/octave-value/ov-bool.cc, libinterp/octave-value/ov-bool.h, libinterp/octave-value/ov-builtin.cc, libinterp/octave-value/ov-builtin.h, libinterp/octave-value/ov-cell.cc, libinterp/octave-value/ov-cell.h, libinterp/octave-value/ov-ch-mat.cc, libinterp/octave-value/ov-ch-mat.h, libinterp/octave-value/ov-class.cc, libinterp/octave-value/ov-class.h, libinterp/octave-value/ov-colon.h, libinterp/octave-value/ov-complex.cc, libinterp/octave-value/ov-complex.h, libinterp/octave-value/ov-cx-diag.cc, libinterp/octave-value/ov-cx-diag.h, libinterp/octave-value/ov-cx-mat.cc, libinterp/octave-value/ov-cx-mat.h, libinterp/octave-value/ov-cx-sparse.cc, libinterp/octave-value/ov-cx-sparse.h, libinterp/octave-value/ov-dld-fcn.h, libinterp/octave-value/ov-fcn-handle.cc, libinterp/octave-value/ov-fcn-handle.h, libinterp/octave-value/ov-fcn-inline.cc, libinterp/octave-value/ov-fcn-inline.h, libinterp/octave-value/ov-fcn.h, libinterp/octave-value/ov-float.cc, libinterp/octave-value/ov-float.h, libinterp/octave-value/ov-flt-complex.cc, libinterp/octave-value/ov-flt-complex.h, libinterp/octave-value/ov-flt-cx-diag.cc, libinterp/octave-value/ov-flt-cx-diag.h, libinterp/octave-value/ov-flt-cx-mat.cc, libinterp/octave-value/ov-flt-cx-mat.h, libinterp/octave-value/ov-flt-re-diag.cc, libinterp/octave-value/ov-flt-re-diag.h, libinterp/octave-value/ov-flt-re-mat.cc, libinterp/octave-value/ov-flt-re-mat.h, libinterp/octave-value/ov-int16.cc, libinterp/octave-value/ov-int32.cc, libinterp/octave-value/ov-int64.cc, libinterp/octave-value/ov-int8.cc, libinterp/octave-value/ov-intx.h, libinterp/octave-value/ov-java.cc, libinterp/octave-value/ov-lazy-idx.h, libinterp/octave-value/ov-mex-fcn.cc, libinterp/octave-value/ov-mex-fcn.h, libinterp/octave-value/ov-null-mat.cc, libinterp/octave-value/ov-null-mat.h, libinterp/octave-value/ov-oncleanup.cc, libinterp/octave-value/ov-perm.cc, libinterp/octave-value/ov-perm.h, libinterp/octave-value/ov-range.cc, libinterp/octave-value/ov-range.h, libinterp/octave-value/ov-re-diag.cc, libinterp/octave-value/ov-re-diag.h, libinterp/octave-value/ov-re-mat.cc, libinterp/octave-value/ov-re-mat.h, libinterp/octave-value/ov-re-sparse.cc, libinterp/octave-value/ov-re-sparse.h, libinterp/octave-value/ov-scalar.cc, libinterp/octave-value/ov-scalar.h, libinterp/octave-value/ov-str-mat.cc, libinterp/octave-value/ov-str-mat.h, libinterp/octave-value/ov-struct.cc, libinterp/octave-value/ov-struct.h, libinterp/octave-value/ov-type-conv.h, libinterp/octave-value/ov-typeinfo.cc, libinterp/octave-value/ov-typeinfo.h, libinterp/octave-value/ov-uint16.cc, libinterp/octave-value/ov-uint32.cc, libinterp/octave-value/ov-uint64.cc, libinterp/octave-value/ov-uint8.cc, libinterp/octave-value/ov-usr-fcn.cc, libinterp/octave-value/ov-usr-fcn.h, libinterp/octave-value/ov.cc, libinterp/octave-value/ov.h, libinterp/octave.cc, libinterp/operators/op-b-bm.cc, libinterp/operators/op-b-sbm.cc, libinterp/operators/op-bm-b.cc, libinterp/operators/op-bm-bm.cc, libinterp/operators/op-cdm-cdm.cc, libinterp/operators/op-chm.cc, libinterp/operators/op-class.cc, libinterp/operators/op-cm-cm.cc, libinterp/operators/op-cm-cs.cc, libinterp/operators/op-cm-s.cc, libinterp/operators/op-cm-scm.cc, libinterp/operators/op-cm-sm.cc, libinterp/operators/op-cs-cm.cc, libinterp/operators/op-cs-cs.cc, libinterp/operators/op-cs-scm.cc, libinterp/operators/op-cs-sm.cc, libinterp/operators/op-dm-dm.cc, libinterp/operators/op-dm-scm.cc, libinterp/operators/op-double-conv.cc, libinterp/operators/op-fcdm-fcdm.cc, libinterp/operators/op-fcm-fcm.cc, libinterp/operators/op-fcm-fcs.cc, libinterp/operators/op-fcm-fm.cc, libinterp/operators/op-fcm-fs.cc, libinterp/operators/op-fcs-fcm.cc, libinterp/operators/op-fcs-fcs.cc, libinterp/operators/op-fcs-fm.cc, libinterp/operators/op-fcs-fs.cc, libinterp/operators/op-fdm-fdm.cc, libinterp/operators/op-float-conv.cc, libinterp/operators/op-fm-fcm.cc, libinterp/operators/op-fm-fcs.cc, libinterp/operators/op-fm-fm.cc, libinterp/operators/op-fm-fs.cc, libinterp/operators/op-fs-fcm.cc, libinterp/operators/op-fs-fcs.cc, libinterp/operators/op-fs-fm.cc, libinterp/operators/op-fs-fs.cc, libinterp/operators/op-m-cm.cc, libinterp/operators/op-m-cs.cc, libinterp/operators/op-m-m.cc, libinterp/operators/op-m-s.cc, libinterp/operators/op-m-scm.cc, libinterp/operators/op-m-sm.cc, libinterp/operators/op-pm-scm.cc, libinterp/operators/op-range.cc, libinterp/operators/op-s-cm.cc, libinterp/operators/op-s-cs.cc, libinterp/operators/op-s-scm.cc, libinterp/operators/op-sbm-b.cc, libinterp/operators/op-sbm-bm.cc, libinterp/operators/op-sbm-sbm.cc, libinterp/operators/op-scm-cm.cc, libinterp/operators/op-scm-cs.cc, libinterp/operators/op-scm-m.cc, libinterp/operators/op-scm-s.cc, libinterp/operators/op-scm-scm.cc, libinterp/operators/op-scm-sm.cc, libinterp/operators/op-sm-cm.cc, libinterp/operators/op-sm-m.cc, libinterp/operators/op-sm-s.cc, libinterp/operators/op-sm-scm.cc, libinterp/operators/op-sm-sm.cc, libinterp/operators/op-str-m.cc, libinterp/operators/op-str-s.cc, libinterp/operators/op-str-str.cc, libinterp/operators/ops.h, libinterp/parse-tree/lex.h, libinterp/parse-tree/parse.h, libinterp/parse-tree/pt-arg-list.cc, libinterp/parse-tree/pt-arg-list.h, libinterp/parse-tree/pt-assign.cc, libinterp/parse-tree/pt-assign.h, libinterp/parse-tree/pt-binop.cc, libinterp/parse-tree/pt-binop.h, libinterp/parse-tree/pt-bp.h, libinterp/parse-tree/pt-cbinop.cc, libinterp/parse-tree/pt-check.cc, libinterp/parse-tree/pt-colon.cc, libinterp/parse-tree/pt-colon.h, libinterp/parse-tree/pt-const.cc, libinterp/parse-tree/pt-decl.cc, libinterp/parse-tree/pt-decl.h, libinterp/parse-tree/pt-eval.cc, libinterp/parse-tree/pt-except.h, libinterp/parse-tree/pt-exp.h, libinterp/parse-tree/pt-fcn-handle.cc, libinterp/parse-tree/pt-id.cc, libinterp/parse-tree/pt-id.h, libinterp/parse-tree/pt-idx.cc, libinterp/parse-tree/pt-idx.h, libinterp/parse-tree/pt-loop.h, libinterp/parse-tree/pt-mat.cc, libinterp/parse-tree/pt-misc.cc, libinterp/parse-tree/pt-misc.h, libinterp/parse-tree/pt-pr-code.cc, libinterp/parse-tree/pt-select.h, libinterp/parse-tree/pt-stmt.h, libinterp/parse-tree/token.h, libinterp/version.cc: Use GNU style coding conventions for code in libinterp/
author Rik <rik@octave.org>
date Mon, 28 Oct 2013 19:51:46 -0700
parents d63878346099
children 6a71e5030df5
comparison
equal deleted inserted replaced
17786:34d9812a943b 17787:175b392e91fe
39 #include "oct-obj.h" 39 #include "oct-obj.h"
40 #include "unwind-prot.h" 40 #include "unwind-prot.h"
41 #include "utils.h" 41 #include "utils.h"
42 42
43 DEFUN (char, args, , 43 DEFUN (char, args, ,
44 "-*- texinfo -*-\n\ 44 "-*- texinfo -*-\n\
45 @deftypefn {Built-in Function} {} char (@var{x})\n\ 45 @deftypefn {Built-in Function} {} char (@var{x})\n\
46 @deftypefnx {Built-in Function} {} char (@var{x}, @dots{})\n\ 46 @deftypefnx {Built-in Function} {} char (@var{x}, @dots{})\n\
47 @deftypefnx {Built-in Function} {} char (@var{s1}, @var{s2}, @dots{})\n\ 47 @deftypefnx {Built-in Function} {} char (@var{s1}, @var{s2}, @dots{})\n\
48 @deftypefnx {Built-in Function} {} char (@var{cell_array})\n\ 48 @deftypefnx {Built-in Function} {} char (@var{cell_array})\n\
49 Create a string array from one or more numeric matrices, character\n\ 49 Create a string array from one or more numeric matrices, character\n\
170 %! assert (x(2,:), "bar "); 170 %! assert (x(2,:), "bar ");
171 %! assert (x(3,:), "foobar"); 171 %! assert (x(3,:), "foobar");
172 */ 172 */
173 173
174 DEFUN (strvcat, args, , 174 DEFUN (strvcat, args, ,
175 "-*- texinfo -*-\n\ 175 "-*- texinfo -*-\n\
176 @deftypefn {Built-in Function} {} strvcat (@var{x})\n\ 176 @deftypefn {Built-in Function} {} strvcat (@var{x})\n\
177 @deftypefnx {Built-in Function} {} strvcat (@var{x}, @dots{})\n\ 177 @deftypefnx {Built-in Function} {} strvcat (@var{x}, @dots{})\n\
178 @deftypefnx {Built-in Function} {} strvcat (@var{s1}, @var{s2}, @dots{})\n\ 178 @deftypefnx {Built-in Function} {} strvcat (@var{s1}, @var{s2}, @dots{})\n\
179 @deftypefnx {Built-in Function} {} strvcat (@var{cell_array})\n\ 179 @deftypefnx {Built-in Function} {} strvcat (@var{cell_array})\n\
180 Create a character array from one or more numeric matrices, character\n\ 180 Create a character array from one or more numeric matrices, character\n\
301 %!error strvcat () 301 %!error strvcat ()
302 */ 302 */
303 303
304 304
305 DEFUN (ischar, args, , 305 DEFUN (ischar, args, ,
306 "-*- texinfo -*-\n\ 306 "-*- texinfo -*-\n\
307 @deftypefn {Built-in Function} {} ischar (@var{x})\n\ 307 @deftypefn {Built-in Function} {} ischar (@var{x})\n\
308 Return true if @var{x} is a character array.\n\ 308 Return true if @var{x} is a character array.\n\
309 @seealso{isfloat, isinteger, islogical, isnumeric, iscellstr, isa}\n\ 309 @seealso{isfloat, isinteger, islogical, isnumeric, iscellstr, isa}\n\
310 @end deftypefn") 310 @end deftypefn")
311 { 311 {
339 */ 339 */
340 340
341 static octave_value 341 static octave_value
342 do_strcmp_fun (const octave_value& arg0, const octave_value& arg1, 342 do_strcmp_fun (const octave_value& arg0, const octave_value& arg1,
343 octave_idx_type n, const char *fcn_name, 343 octave_idx_type n, const char *fcn_name,
344 bool (*array_op) (const charNDArray&, const charNDArray&, octave_idx_type), 344 bool (*array_op) (const charNDArray&, const charNDArray&,
345 bool (*str_op) (const std::string&, const std::string&, octave_idx_type)) 345 octave_idx_type),
346 bool (*str_op) (const std::string&, const std::string&,
347 octave_idx_type))
346 348
347 { 349 {
348 octave_value retval; 350 octave_value retval;
349 351
350 bool s1_string = arg0.is_string (); 352 bool s1_string = arg0.is_string ();
426 428
427 if (cell.length () == r) 429 if (cell.length () == r)
428 { 430 {
429 if (cell_val.is_cellstr ()) 431 if (cell_val.is_cellstr ())
430 { 432 {
431 const Array<std::string> cellstr = cell_val.cellstr_value (); 433 const Array<std::string> cellstr
434 = cell_val.cellstr_value ();
432 for (octave_idx_type i = 0; i < cellstr.length (); i++) 435 for (octave_idx_type i = 0; i < cellstr.length (); i++)
433 output(i) = str_op (str[i], cellstr(i), n); 436 output(i) = str_op (str[i], cellstr(i), n);
434 } 437 }
435 else 438 else
436 { 439 {
437 // FIXME: should we warn here? 440 // FIXME: should we warn here?
438 for (octave_idx_type i = 0; i < r; i++) 441 for (octave_idx_type i = 0; i < r; i++)
439 { 442 {
440 if (cell(i).is_string ()) 443 if (cell(i).is_string ())
441 output(i) = str_op (str[i], cell(i).string_value (), n); 444 output(i) = str_op (str[i],
445 cell(i).string_value (), n);
442 } 446 }
443 } 447 }
444 448
445 retval = output; 449 retval = output;
446 } 450 }
558 { 562 {
559 return s1 == s2; 563 return s1 == s2;
560 } 564 }
561 565
562 DEFUN (strcmp, args, , 566 DEFUN (strcmp, args, ,
563 "-*- texinfo -*-\n\ 567 "-*- texinfo -*-\n\
564 @deftypefn {Built-in Function} {} strcmp (@var{s1}, @var{s2})\n\ 568 @deftypefn {Built-in Function} {} strcmp (@var{s1}, @var{s2})\n\
565 Return 1 if the character strings @var{s1} and @var{s2} are the same,\n\ 569 Return 1 if the character strings @var{s1} and @var{s2} are the same,\n\
566 and 0 otherwise.\n\ 570 and 0 otherwise.\n\
567 \n\ 571 \n\
568 If either @var{s1} or @var{s2} is a cell array of strings, then an array\n\ 572 If either @var{s1} or @var{s2} is a cell array of strings, then an array\n\
638 %!error strcmp ("foo", "bar", 3) 642 %!error strcmp ("foo", "bar", 3)
639 */ 643 */
640 644
641 // Apparently, Matlab ignores the dims with strncmp. It also 645 // Apparently, Matlab ignores the dims with strncmp. It also
642 static bool 646 static bool
643 strncmp_array_op (const charNDArray& s1, const charNDArray& s2, octave_idx_type n) 647 strncmp_array_op (const charNDArray& s1, const charNDArray& s2,
648 octave_idx_type n)
644 { 649 {
645 octave_idx_type l1 = s1.numel (), l2 = s2.numel (); 650 octave_idx_type l1 = s1.numel (), l2 = s2.numel ();
646 return (n > 0 && n <= l1 && n <= l2 651 return (n > 0 && n <= l1 && n <= l2
647 && std::equal (s1.data (), s1.data () + n, s2.data ())); 652 && std::equal (s1.data (), s1.data () + n, s2.data ()));
648 } 653 }
657 return (n > 0 && n <= l1 && n <= l2 662 return (n > 0 && n <= l1 && n <= l2
658 && std::equal (s1.data (), s1.data () + n, s2.data ())); 663 && std::equal (s1.data (), s1.data () + n, s2.data ()));
659 } 664 }
660 665
661 DEFUN (strncmp, args, , 666 DEFUN (strncmp, args, ,
662 "-*- texinfo -*-\n\ 667 "-*- texinfo -*-\n\
663 @deftypefn {Built-in Function} {} strncmp (@var{s1}, @var{s2}, @var{n})\n\ 668 @deftypefn {Built-in Function} {} strncmp (@var{s1}, @var{s2}, @var{n})\n\
664 Return 1 if the first @var{n} characters of strings @var{s1} and @var{s2} are\n\ 669 Return 1 if the first @var{n} characters of strings @var{s1} and @var{s2} are\n\
665 the same, and 0 otherwise.\n\ 670 the same, and 0 otherwise.\n\
666 \n\ 671 \n\
667 @example\n\ 672 @example\n\
743 } 748 }
744 749
745 // Ditto for string. 750 // Ditto for string.
746 static bool 751 static bool
747 strcmpi_str_op (const std::string& s1, const std::string& s2, 752 strcmpi_str_op (const std::string& s1, const std::string& s2,
748 octave_idx_type) 753 octave_idx_type)
749 { 754 {
750 return (s1.size () == s2.size () 755 return (s1.size () == s2.size ()
751 && std::equal (s1.data (), s1.data () + s1.size (), s2.data (), 756 && std::equal (s1.data (), s1.data () + s1.size (), s2.data (),
752 icmp_char_eq ())); 757 icmp_char_eq ()));
753 } 758 }
754 759
755 DEFUNX ("strcmpi", Fstrcmpi, args, , 760 DEFUNX ("strcmpi", Fstrcmpi, args, ,
756 "-*- texinfo -*-\n\ 761 "-*- texinfo -*-\n\
757 @deftypefn {Built-in Function} {} strcmpi (@var{s1}, @var{s2})\n\ 762 @deftypefn {Built-in Function} {} strcmpi (@var{s1}, @var{s2})\n\
758 Return 1 if the character strings @var{s1} and @var{s2} are the same,\n\ 763 Return 1 if the character strings @var{s1} and @var{s2} are the same,\n\
759 disregarding case of alphabetic characters, and 0 otherwise.\n\ 764 disregarding case of alphabetic characters, and 0 otherwise.\n\
760 \n\ 765 \n\
761 If either @var{s1} or @var{s2} is a cell array of strings, then an array\n\ 766 If either @var{s1} or @var{s2} is a cell array of strings, then an array\n\
789 %!assert (strcmpi ("abc123", "ABC123"), true) 794 %!assert (strcmpi ("abc123", "ABC123"), true)
790 */ 795 */
791 796
792 // Like strncmp. 797 // Like strncmp.
793 static bool 798 static bool
794 strncmpi_array_op (const charNDArray& s1, const charNDArray& s2, octave_idx_type n) 799 strncmpi_array_op (const charNDArray& s1, const charNDArray& s2,
800 octave_idx_type n)
795 { 801 {
796 octave_idx_type l1 = s1.numel (), l2 = s2.numel (); 802 octave_idx_type l1 = s1.numel (), l2 = s2.numel ();
797 return (n > 0 && n <= l1 && n <= l2 803 return (n > 0 && n <= l1 && n <= l2
798 && std::equal (s1.data (), s1.data () + n, s2.data (), 804 && std::equal (s1.data (), s1.data () + n, s2.data (),
799 icmp_char_eq ())); 805 icmp_char_eq ()));
800 } 806 }
801 807
802 // Ditto. 808 // Ditto.
803 static bool 809 static bool
804 strncmpi_str_op (const std::string& s1, const std::string& s2, octave_idx_type n) 810 strncmpi_str_op (const std::string& s1, const std::string& s2,
811 octave_idx_type n)
805 { 812 {
806 octave_idx_type l1 = s1.length (), l2 = s2.length (); 813 octave_idx_type l1 = s1.length (), l2 = s2.length ();
807 return (n > 0 && n <= l1 && n <= l2 814 return (n > 0 && n <= l1 && n <= l2
808 && std::equal (s1.data (), s1.data () + n, s2.data (), 815 && std::equal (s1.data (), s1.data () + n, s2.data (),
809 icmp_char_eq ())); 816 icmp_char_eq ()));
810 } 817 }
811 818
812 DEFUNX ("strncmpi", Fstrncmpi, args, , 819 DEFUNX ("strncmpi", Fstrncmpi, args, ,
813 "-*- texinfo -*-\n\ 820 "-*- texinfo -*-\n\
814 @deftypefn {Built-in Function} {} strncmpi (@var{s1}, @var{s2}, @var{n})\n\ 821 @deftypefn {Built-in Function} {} strncmpi (@var{s1}, @var{s2}, @var{n})\n\
815 Return 1 if the first @var{n} character of @var{s1} and @var{s2} are the\n\ 822 Return 1 if the first @var{n} character of @var{s1} and @var{s2} are the\n\
816 same, disregarding case of alphabetic characters, and 0 otherwise.\n\ 823 same, disregarding case of alphabetic characters, and 0 otherwise.\n\
817 \n\ 824 \n\
818 If either @var{s1} or @var{s2} is a cell array of strings, then an array\n\ 825 If either @var{s1} or @var{s2} is a cell array of strings, then an array\n\
855 /* 862 /*
856 %!assert (strncmpi ("abc123", "ABC456", 3), true) 863 %!assert (strncmpi ("abc123", "ABC456", 3), true)
857 */ 864 */
858 865
859 DEFUN (list_in_columns, args, , 866 DEFUN (list_in_columns, args, ,
860 "-*- texinfo -*-\n\ 867 "-*- texinfo -*-\n\
861 @deftypefn {Built-in Function} {} list_in_columns (@var{arg}, @var{width}, @var{prefix})\n\ 868 @deftypefn {Built-in Function} {} list_in_columns (@var{arg}, @var{width}, @var{prefix})\n\
862 Return a string containing the elements of @var{arg} listed in\n\ 869 Return a string containing the elements of @var{arg} listed in\n\
863 columns with an overall maximum width of @var{width} and optional\n\ 870 columns with an overall maximum width of @var{width} and optional\n\
864 prefix @var{prefix}. The argument @var{arg} must be a cell array\n\ 871 prefix @var{prefix}. The argument @var{arg} must be a cell array\n\
865 of character strings or a character array. If @var{width} is not\n\ 872 of character strings or a character array. If @var{width} is not\n\
919 { 926 {
920 error ("list_in_columns: WIDTH must be an integer"); 927 error ("list_in_columns: WIDTH must be an integer");
921 return retval; 928 return retval;
922 } 929 }
923 } 930 }
924 931
925 std::string prefix; 932 std::string prefix;
926 933
927 if (nargin > 2) 934 if (nargin > 2)
928 { 935 {
929 if (args(2).is_string ()) 936 if (args(2).is_string ())