| 1 | #ifndef WILDCARD_H_INCLUDED | 
| 2 | #define WILDCARD_H_INCLUDED | 
| 3 |  | 
| 4 | // Copyright (C) 1996 - 2002 Florian Schintke | 
| 5 | // | 
| 6 | // This is free software; you can redistribute it and/or modify it under | 
| 7 | // the terms of the GNU General Public License as published by the Free | 
| 8 | // Software Foundation; either version 2, or (at your option) any later | 
| 9 | // version. | 
| 10 | // | 
| 11 | // Thanks to the E.S.O. - ACS project that has done this C++ interface | 
| 12 | // to the wildcards pttern matching algorithm | 
| 13 |  | 
| 14 | //#ifndef __cplusplus | 
| 15 | //#error This is a C++ include file and cannot be used from plain C | 
| 16 | //#endif | 
| 17 |  | 
| 18 | // Implementation of the UN*X wildcards | 
| 19 | // Supported wild-characters: '*', '?'; sets: [a-z], '!' negation | 
| 20 | // Examples: | 
| 21 | //       '[a-g]l*i?n' matches 'florian' | 
| 22 | //       '[!abc]*e' matches 'smile' | 
| 23 | //       '[-z] matches 'a' | 
| 24 |  | 
| 25 | class Wildcard | 
| 26 | { | 
| 27 | public: | 
| 28 | // This function implements the UN*X wildcards and returns: | 
| 29 | // 0 - if *wildcard does not match *test | 
| 30 | // 1 - if *wildcard matches *test | 
| 31 | static int wildcardfit (const char *wildcard, const char *test); | 
| 32 |  | 
| 33 | private: | 
| 34 | // Scans a set of characters and returns 0 if the set mismatches at this | 
| 35 | // position in the teststring and 1 if it is matching | 
| 36 | // wildcard is set to the closing ] and test is unmodified if mismatched | 
| 37 | // and otherwise the char pointer is pointing to the next character | 
| 38 | static int set (const char **wildcard, const char **test); | 
| 39 |  | 
| 40 | // Scans an asterisk | 
| 41 | static int asterisk (const char **wildcard, const char **test); | 
| 42 | }; | 
| 43 |  | 
| 44 | #endif |