text: /*
   * 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_
  