annotate liboctave/util/glob-match.h @ 20651:e54ecb33727e

lo-array-gripes.cc: Remove FIXME's related to buffer size. * lo-array-gripes.cc: Remove FIXME's related to buffer size. Shorten sprintf buffers from 100 to 64 characters (still well more than 19 required). Use 'const' decorator on constant value for clarity. Remove extra space between variable and array bracket.
author Rik <rik@octave.org>
date Mon, 12 Oct 2015 21:13:47 -0700
parents a9574e3c6e9e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
1 /*
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
2
19731
4197fc428c7d maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents: 17744
diff changeset
3 Copyright (C) 1996-2015 John W. Eaton
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
4
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
6
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6108
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6108
diff changeset
10 option) any later version.
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
11
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
15 for more details.
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
16
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6108
diff changeset
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6108
diff changeset
19 <http://www.gnu.org/licenses/>.
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
20
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
21 */
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
22
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2924
diff changeset
23 #if !defined (octave_glob_match_h)
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2924
diff changeset
24 #define octave_glob_match_h 1
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
25
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
26 #include <string>
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
27
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
28 #include "Array.h"
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
29 #include "str-vec.h"
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
30
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
31 class
6108
143b556ce725 [project @ 2006-10-27 01:45:54 by jwe]
jwe
parents: 6095
diff changeset
32 OCTAVE_API
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
33 glob_match
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
34 {
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
35 public:
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
36
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
37 enum opts
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
38 {
15466
d174210ce1ec use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
39 pathname = 1, // No wildcard can ever match '/'.
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
40 noescape = 2, // Backslashes don't quote special chars.
15466
d174210ce1ec use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
41 period = 4 // Leading '.' is matched only explicitly.
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
42 };
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
43
6095
a8aa7a014c22 [project @ 2006-10-26 01:22:31 by jwe]
jwe
parents: 5307
diff changeset
44 glob_match (const std::string& p,
10312
cbc402e64d83 untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
45 unsigned int xopts = pathname|noescape|period)
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
46 : pat (p), fnmatch_flags (opts_to_fnmatch_flags (xopts)) { }
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
47
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
48 glob_match (const string_vector& p = string_vector (),
10312
cbc402e64d83 untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
49 unsigned int xopts = pathname|noescape|period)
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
50 : pat (p), fnmatch_flags (opts_to_fnmatch_flags (xopts)) { }
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
51
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
52 glob_match (const glob_match& gm)
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
53 : pat (gm.pat), fnmatch_flags (gm.fnmatch_flags) { }
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
54
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
55 glob_match& operator = (const glob_match& gm)
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
56 {
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
57 if (this != &gm)
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
58 {
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
59 pat = gm.pat;
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
60 fnmatch_flags = gm.fnmatch_flags;
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
61 }
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
62 return *this;
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
63 }
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
64
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
65 ~glob_match (void) { }
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
66
3504
5eef8a2294bd [project @ 2000-02-01 10:06:51 by jwe]
jwe
parents: 2926
diff changeset
67 void set_pattern (const std::string& p) { pat = p; }
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
68
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
69 void set_pattern (const string_vector& p) { pat = p; }
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
70
10148
deba43069023 don't install oct-glob.h
John W. Eaton <jwe@octave.org>
parents: 10139
diff changeset
71 bool match (const std::string& str) const;
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
72
10148
deba43069023 don't install oct-glob.h
John W. Eaton <jwe@octave.org>
parents: 10139
diff changeset
73 Array<bool> match (const string_vector& str) const
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
74 {
20267
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 19731
diff changeset
75 int n = str.numel ();
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
76
11570
57632dea2446 attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
77 Array<bool> retval (dim_vector (n, 1));
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
78
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
79 for (int i = 0; i < n; i++)
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
80 retval(i) = match (str[i]);
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
81
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
82 return retval;
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
83 }
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
84
9994
fdc3a43c0be8 avoid conflict with gnulib defining glob to be rpl_glob
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
85 // We forward to glob_internal here to avoid problems with gnulib's
fdc3a43c0be8 avoid conflict with gnulib defining glob to be rpl_glob
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
86 // glob.h defining glob to be rpl_glob.
fdc3a43c0be8 avoid conflict with gnulib defining glob to be rpl_glob
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
87
10148
deba43069023 don't install oct-glob.h
John W. Eaton <jwe@octave.org>
parents: 10139
diff changeset
88 string_vector glob (void) const;
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
89
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
90 private:
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
91
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
92 // Globbing pattern(s).
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
93 string_vector pat;
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
94
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
95 // Option flags.
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
96 int fnmatch_flags;
9994
fdc3a43c0be8 avoid conflict with gnulib defining glob to be rpl_glob
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
97
10138
805a83ecd3da avoid conflict between glob.h definition of glob and glob_match::glob function
John W. Eaton <jwe@octave.org>
parents: 9994
diff changeset
98 int opts_to_fnmatch_flags (unsigned int xopts) const;
2924
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
99 };
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
100
50edcdd3ec22 [project @ 1997-05-03 20:21:03 by jwe]
jwe
parents:
diff changeset
101 #endif