diff options
author | Brad King <brad.king@kitware.com> | 2002-11-06 22:35:27 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2002-11-06 22:35:27 (GMT) |
commit | 42c464c05e8f79f82babf83909d918bf26317425 (patch) | |
tree | 10589e522b1acf98fea7f81a6430052c446c6082 /Source/cmStringCommand.h | |
parent | 5417d02a61dfaed3377a017b2ffeaea66f8344ce (diff) | |
download | CMake-42c464c05e8f79f82babf83909d918bf26317425.zip CMake-42c464c05e8f79f82babf83909d918bf26317425.tar.gz CMake-42c464c05e8f79f82babf83909d918bf26317425.tar.bz2 |
ENH: Added STRING command.
Diffstat (limited to 'Source/cmStringCommand.h')
-rw-r--r-- | Source/cmStringCommand.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/Source/cmStringCommand.h b/Source/cmStringCommand.h new file mode 100644 index 0000000..dfb033d --- /dev/null +++ b/Source/cmStringCommand.h @@ -0,0 +1,92 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef cmStringCommand_h +#define cmStringCommand_h + +#include "cmStandardIncludes.h" +#include "cmCommand.h" + +/** \class cmStringCommand + * \brief Common string operations + * + */ +class cmStringCommand : public cmCommand +{ +public: + /** + * This is a virtual constructor for the command. + */ + virtual cmCommand* Clone() + { + return new cmStringCommand; + } + + /** + * This is called when the command is first encountered in + * the CMakeLists.txt file. + */ + virtual bool InitialPass(std::vector<std::string> const& args); + + /** + * The name of the command as specified in CMakeList.txt. + */ + virtual const char* GetName() { return "STRING";} + + /** + * Succinct documentation. + */ + virtual const char* GetTerseDocumentation() + { + return "String operations."; + } + + /** + * More documentation. + */ + virtual const char* GetFullDocumentation() + { + return + "STRING(REGEX MATCH <regular_expression> <output variable> <input> [<input>...])\n" + "STRING(REGEX MATCHALL <regular_expression> <output variable> <input> [<input>...])\n" + "STRING(REGEX REPLACE <regular_expression> <replace_expression> <output variable> <input> [<input>...])\n" + "REGEX MATCH will match the regular expression once and store the match in the output variable.\n" + "REGEX MATCHALL will match the regular expression as many times as possible and store the matches\n" + " in the output variable as a list.\n" + "REGEX REPLACE will match the regular expression as many times as possible and substitute the\n" + " replacement expression for the match in the output.\n"; + } + + cmTypeMacro(cmStringCommand, cmCommand); +protected: + bool HandleRegexCommand(std::vector<std::string> const& args); + bool RegexMatch(std::vector<std::string> const& args); + bool RegexMatchAll(std::vector<std::string> const& args); + bool RegexReplace(std::vector<std::string> const& args); + + 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), value() {} + int number; + std::string value; + }; +}; + + +#endif |