1/* 2 * File: GlobMatcher.h 3 * 4 * Copyright (c) Freescale Semiconductor, Inc. All rights reserved. 5 * See included license file for license details. 6 */ 7#if !defined(_GlobMatcher_h_) 8#define _GlobMatcher_h_ 9 10#include "StringMatcher.h" 11 12namespace elftosb 13{ 14 15/*! 16 * \brief This class uses glob pattern matching to match strings. 17 * 18 * Glob patterns: 19 * - * matches zero or more characters 20 * - ? matches any single character 21 * - [set] matches any character in the set 22 * - [^set] matches any character NOT in the set 23 * where a set is a group of characters or ranges. a range 24 * is written as two characters seperated with a hyphen: a-z denotes 25 * all characters between a to z inclusive. 26 * - [-set] set matches a literal hypen and any character in the set 27 * - []set] matches a literal close bracket and any character in the set 28 * 29 * - char matches itself except where char is '*' or '?' or '[' 30 * - \\char matches char, including any pattern character 31 * 32 * Examples: 33 * - a*c ac abc abbc ... 34 * - a?c acc abc aXc ... 35 * - a[a-z]c aac abc acc ... 36 * - a[-a-z]c a-c aac abc ... 37 */ 38class GlobMatcher : public StringMatcher 39{ 40public: 41 //! \brief Constructor. 42 GlobMatcher(const std::string & pattern) 43 : StringMatcher(), m_pattern(pattern) 44 { 45 } 46 47 //! \brief Returns whether \a testValue matches the glob pattern. 48 virtual bool match(const std::string & testValue); 49 50protected: 51 std::string m_pattern; //!< The glob pattern to match against. 52 53 //! \brief Glob implementation. 54 bool globMatch(const char * str, const char * p); 55}; 56 57}; // namespace elftosb 58 59#endif // _GlobMatcher_h_ 60