/* * File: GlobMatcher.h * * Copyright (c) Freescale Semiconductor, Inc. All rights reserved. * See included license file for license details. */ #if !defined(_GlobMatcher_h_) #define _GlobMatcher_h_ #include "StringMatcher.h" namespace elftosb { /*! * \brief This class uses glob pattern matching to match strings. * * Glob patterns: * - * matches zero or more characters * - ? matches any single character * - [set] matches any character in the set * - [^set] matches any character NOT in the set * where a set is a group of characters or ranges. a range * is written as two characters seperated with a hyphen: a-z denotes * all characters between a to z inclusive. * - [-set] set matches a literal hypen and any character in the set * - []set] matches a literal close bracket and any character in the set * * - char matches itself except where char is '*' or '?' or '[' * - \\char matches char, including any pattern character * * Examples: * - a*c ac abc abbc ... * - a?c acc abc aXc ... * - a[a-z]c aac abc acc ... * - a[-a-z]c a-c aac abc ... */ class GlobMatcher : public StringMatcher { public: //! \brief Constructor. GlobMatcher(const std::string & pattern) : StringMatcher(), m_pattern(pattern) { } //! \brief Returns whether \a testValue matches the glob pattern. virtual bool match(const std::string & testValue); protected: std::string m_pattern; //!< The glob pattern to match against. //! \brief Glob implementation. bool globMatch(const char * str, const char * p); }; }; // namespace elftosb #endif // _GlobMatcher_h_