summaryrefslogtreecommitdiffstats
path: root/Source/cmStringCommand.cxx
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2007-04-27 01:50:52 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2007-04-27 01:50:52 (GMT)
commit1d4613a63bbdd5eafc8add05bf58e5c61c7ca5e5 (patch)
tree937bd98a875d3961b9be9092e9cac75510e0f7e7 /Source/cmStringCommand.cxx
parent6697979aaf1e37f6adfe1335b03b38cc2abeeaac (diff)
downloadCMake-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.cxx41
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)
{