diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2007-04-27 01:50:52 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2007-04-27 01:50:52 (GMT) |
commit | 1d4613a63bbdd5eafc8add05bf58e5c61c7ca5e5 (patch) | |
tree | 937bd98a875d3961b9be9092e9cac75510e0f7e7 /Source/cmStringCommand.cxx | |
parent | 6697979aaf1e37f6adfe1335b03b38cc2abeeaac (diff) | |
download | CMake-1d4613a63bbdd5eafc8add05bf58e5c61c7ca5e5.zip CMake-1d4613a63bbdd5eafc8add05bf58e5c61c7ca5e5.tar.gz CMake-1d4613a63bbdd5eafc8add05bf58e5c61c7ca5e5.tar.bz2 |
ENH: Add STRING STRIP command
Diffstat (limited to 'Source/cmStringCommand.cxx')
-rw-r--r-- | Source/cmStringCommand.cxx | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx index fa71c90..4bc9ca6 100644 --- a/Source/cmStringCommand.cxx +++ b/Source/cmStringCommand.cxx @@ -68,6 +68,10 @@ bool cmStringCommand::InitialPass(std::vector<std::string> const& args) { return this->HandleSubstringCommand(args); } + else if(subCommand == "STRIP") + { + return this->HandleStripCommand(args); + } else if(subCommand == "RANDOM") { return this->HandleRandomCommand(args); @@ -614,6 +618,43 @@ bool cmStringCommand } //---------------------------------------------------------------------------- +bool cmStringCommand::HandleStripCommand( + std::vector<std::string> const& args) +{ + if(args.size() != 3) + { + this->SetError("sub-command LENGTH requires two arguments."); + return false; + } + + const std::string& stringValue = args[1]; + const std::string& variableName = args[2]; + size_t inStringLength = stringValue.size(); + size_t startPos = inStringLength + 1; + size_t endPos = 0; + const char* ptr = stringValue.c_str(); + size_t cc; + for ( cc = 0; cc < inStringLength; ++ cc ) + { + if ( !isspace(*ptr) ) + { + if ( startPos > inStringLength ) + { + startPos = cc; + } + endPos = cc; + } + ++ ptr; + } + + size_t outLength = endPos - startPos + 1; + + this->Makefile->AddDefinition(variableName.c_str(), + stringValue.substr(startPos, outLength).c_str()); + return true; +} + +//---------------------------------------------------------------------------- bool cmStringCommand ::HandleRandomCommand(std::vector<std::string> const& args) { |