searchPattern.hh 876 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <string>
  3. #include <regex>
  4. class JSonElement;
  5. class SearchPattern
  6. {
  7. public:
  8. SearchPattern(const std::string &);
  9. ~SearchPattern();
  10. bool isEmpty() const;
  11. bool match(const std::string &other, const JSonElement *) const;
  12. /**
  13. * Comparison function, for std::search use
  14. **/
  15. bool operator()(char a, char b);
  16. private:
  17. void evalFlags(const char *);
  18. std::string pattern;
  19. std::regex *regex;
  20. short flags;
  21. short typeFlag;
  22. static const short FLAG_CASE;
  23. static const short FLAG_WHOLEWORD;
  24. static const short FLAG_WHOLESTR;
  25. static const short FLAG_REGEX;
  26. static const short TYPE_BOOL;
  27. static const short TYPE_NUMBER;
  28. static const short TYPE_STRING;
  29. static const short TYPE_OBJKEY;
  30. };