| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #ifndef cmStringReplaceHelper_h
- #define cmStringReplaceHelper_h
- #include "cmsys/RegularExpression.hxx"
- #include <string>
- #include <vector>
- class cmMakefile;
- class cmStringReplaceHelper
- {
- public:
- cmStringReplaceHelper(const std::string& regex,
- const std::string& replace_expr,
- cmMakefile* makefile = nullptr);
- bool IsRegularExpressionValid() const
- {
- return this->RegularExpression.is_valid();
- }
- bool IsReplaceExpressionValid() const
- {
- return this->ValidReplaceExpression;
- }
- bool Replace(const std::string& input, std::string& output);
- const std::string& GetError() { return this->ErrorString; }
- private:
- class RegexReplacement
- {
- public:
- RegexReplacement(const char* s)
- : Number(-1)
- , Value(s)
- {
- }
- RegexReplacement(const std::string& s)
- : Number(-1)
- , Value(s)
- {
- }
- RegexReplacement(int n)
- : Number(n)
- {
- }
- RegexReplacement() {}
- int Number;
- std::string Value;
- };
- void ParseReplaceExpression();
- std::string ErrorString;
- std::string RegExString;
- cmsys::RegularExpression RegularExpression;
- bool ValidReplaceExpression = true;
- std::string ReplaceExpression;
- std::vector<RegexReplacement> Replacements;
- cmMakefile* Makefile = nullptr;
- };
- #endif
|