Mercurial > octave-nkf
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 |
rev | line source |
---|---|
2924 | 1 /* |
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 | 4 |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
7016 | 9 Free Software Foundation; either version 3 of the License, or (at your |
10 option) any later version. | |
2924 | 11 |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
2924 | 20 |
21 */ | |
22 | |
2926 | 23 #if !defined (octave_glob_match_h) |
24 #define octave_glob_match_h 1 | |
2924 | 25 |
26 #include <string> | |
27 | |
28 #include "Array.h" | |
29 #include "str-vec.h" | |
30 | |
31 class | |
6108 | 32 OCTAVE_API |
2924 | 33 glob_match |
34 { | |
35 public: | |
36 | |
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 | 43 |
6095 | 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 | 47 |
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 | 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 | 54 |
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 | 64 |
65 ~glob_match (void) { } | |
66 | |
3504 | 67 void set_pattern (const std::string& p) { pat = p; } |
2924 | 68 |
69 void set_pattern (const string_vector& p) { pat = p; } | |
70 | |
10148 | 71 bool match (const std::string& str) const; |
2924 | 72 |
10148 | 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 | 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 | 88 string_vector glob (void) const; |
2924 | 89 |
90 private: | |
91 | |
92 // Globbing pattern(s). | |
93 string_vector pat; | |
94 | |
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 | 99 }; |
100 | |
101 #endif |