diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2003-07-10 17:25:54 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2003-07-10 17:25:54 (GMT) |
commit | c4275f54c7d958349ea66458b6da46ae755bf324 (patch) | |
tree | da79dd9f34ae722c3f2b7b582c50de1e843a2da0 /Source/cmStringCommand.cxx | |
parent | a6fd6a0bae63c72b482d3a54342c7f92bc4d5917 (diff) | |
download | CMake-c4275f54c7d958349ea66458b6da46ae755bf324.zip CMake-c4275f54c7d958349ea66458b6da46ae755bf324.tar.gz CMake-c4275f54c7d958349ea66458b6da46ae755bf324.tar.bz2 |
ENH: Add upper and lower case support. Close Bug #79 - STRING TOUPPER and TOLOWER
Diffstat (limited to 'Source/cmStringCommand.cxx')
-rw-r--r-- | Source/cmStringCommand.cxx | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx index 1e13592..f41d582 100644 --- a/Source/cmStringCommand.cxx +++ b/Source/cmStringCommand.cxx @@ -18,6 +18,7 @@ #include <cmsys/RegularExpression.hxx> #include <stdlib.h> // required for atoi +#include <ctype.h> //---------------------------------------------------------------------------- bool cmStringCommand::InitialPass(std::vector<std::string> const& args) { @@ -31,7 +32,15 @@ bool cmStringCommand::InitialPass(std::vector<std::string> const& args) if(subCommand == "REGEX") { return this->HandleRegexCommand(args); - } + } + else if(subCommand == "TOLOWER") + { + return this->HandleToUpperLowerCommand(args, false); + } + else if(subCommand == "TOUPPER") + { + return this->HandleToUpperLowerCommand(args, true); + } else if(subCommand == "COMPARE") { return this->HandleCompareCommand(args); @@ -47,6 +56,35 @@ bool cmStringCommand::InitialPass(std::vector<std::string> const& args) } //---------------------------------------------------------------------------- +bool cmStringCommand::HandleToUpperLowerCommand( + std::vector<std::string> const& args, bool toUpper) +{ + if ( args.size() <= 1 ) + { + this->SetError("no output variable specified"); + return false; + } + + std::string outvar = args[2]; + std::string output; + + bool first = true; + + if (toUpper) + { + output = cmSystemTools::UpperCase(args[1]); + } + else + { + output = cmSystemTools::LowerCase(args[1]); + } + + // Store the output in the provided variable. + m_Makefile->AddDefinition(outvar.c_str(), output.c_str()); + return true; +} + +//---------------------------------------------------------------------------- bool cmStringCommand::HandleAsciiCommand(std::vector<std::string> const& args) { if ( args.size() <= 1 ) |