summaryrefslogtreecommitdiff
path: root/Source/cmRemoveCommand.cxx
diff options
context:
space:
mode:
authorKen Martin <ken.martin@kitware.com>2002-04-22 11:50:43 -0400
committerKen Martin <ken.martin@kitware.com>2002-04-22 11:50:43 -0400
commit9c69be42deb1aba6c37eaad2d5b2c07bae58a13a (patch)
treeb37b8233610560555b7be1b21c560b98da82bab5 /Source/cmRemoveCommand.cxx
parent6d58f21a3578a6b06211d9fff28e38ff07759b04 (diff)
downloadcmake-9c69be42deb1aba6c37eaad2d5b2c07bae58a13a.tar.gz
updated for 1.4
Diffstat (limited to 'Source/cmRemoveCommand.cxx')
-rw-r--r--Source/cmRemoveCommand.cxx77
1 files changed, 77 insertions, 0 deletions
diff --git a/Source/cmRemoveCommand.cxx b/Source/cmRemoveCommand.cxx
new file mode 100644
index 0000000000..982432b4d3
--- /dev/null
+++ b/Source/cmRemoveCommand.cxx
@@ -0,0 +1,77 @@
+/*=========================================================================
+
+ Program: Insight Segmentation & Registration Toolkit
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+ Copyright (c) 2002 Insight Consortium. All rights reserved.
+ See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm 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.
+
+=========================================================================*/
+#include "cmRemoveCommand.h"
+
+// cmRemoveCommand
+bool cmRemoveCommand::InitialPass(std::vector<std::string> const& args)
+{
+ if(args.size() < 2 )
+ {
+ this->SetError("called with incorrect number of arguments");
+ return false;
+ }
+
+ const char* variable = args[0].c_str(); // VAR is always first
+ // get the old value
+ const char* cacheValue
+ = m_Makefile->GetDefinition(variable);
+
+ // expand the variable
+ std::vector<std::string> varArgsExpanded;
+ std::vector<std::string> temp;
+ temp.push_back(std::string(cacheValue));
+ cmSystemTools::ExpandListArguments(temp, varArgsExpanded);
+
+ // expand the args
+ // check for REMOVE(VAR v1 v2 ... vn)
+ std::vector<std::string> argsExpanded;
+ std::vector<std::string> temp2;
+ for(unsigned int j = 1; j < args.size(); ++j)
+ {
+ temp2.push_back(args[j]);
+ }
+ cmSystemTools::ExpandListArguments(temp2, argsExpanded);
+
+ // now create the new value
+ std::string value;
+ for(unsigned int j = 1; j < varArgsExpanded.size(); ++j)
+ {
+ int found = 0;
+ for(unsigned int k = 1; k < argsExpanded.size(); ++k)
+ {
+ if (varArgsExpanded[j] == argsExpanded[k])
+ {
+ found = 1;
+ break;
+ }
+ }
+ if (!found)
+ {
+ if (value.size())
+ {
+ value += ";";
+ }
+ value += varArgsExpanded[j];
+ }
+ }
+
+ // add the definition
+ m_Makefile->AddDefinition(variable, value.c_str());
+
+ return true;
+}
+