summaryrefslogtreecommitdiffstats
path: root/Source/WXDialog/CommandLineInfo.cpp
diff options
context:
space:
mode:
authorJorgen Bodde <jorgb@xs4all.nl>2005-06-30 19:54:14 (GMT)
committerJorgen Bodde <jorgb@xs4all.nl>2005-06-30 19:54:14 (GMT)
commit8c28e4e9f0b82ec96b4b68c370a8fc50333b093c (patch)
treead8c3ff74a3ef384d0c1df3f2b2f7781b9de42bd /Source/WXDialog/CommandLineInfo.cpp
parent099587c4ee40f05e99666eeab92a0357cd932a38 (diff)
downloadCMake-8c28e4e9f0b82ec96b4b68c370a8fc50333b093c.zip
CMake-8c28e4e9f0b82ec96b4b68c370a8fc50333b093c.tar.gz
CMake-8c28e4e9f0b82ec96b4b68c370a8fc50333b093c.tar.bz2
Initial checkin new wx dialog
Diffstat (limited to 'Source/WXDialog/CommandLineInfo.cpp')
-rw-r--r--Source/WXDialog/CommandLineInfo.cpp136
1 files changed, 136 insertions, 0 deletions
diff --git a/Source/WXDialog/CommandLineInfo.cpp b/Source/WXDialog/CommandLineInfo.cpp
new file mode 100644
index 0000000..490dd61
--- /dev/null
+++ b/Source/WXDialog/CommandLineInfo.cpp
@@ -0,0 +1,136 @@
+/*=========================================================================
+
+ Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+ Author: Jorgen Bodde
+
+ 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.
+
+=========================================================================*/
+
+#include "CommandLineInfo.h"
+
+#include "cmSystemTools.h"
+
+///////////////////////////////////////////////////////////////
+// cmCommandLineInfo
+
+cmCommandLineInfo::cmCommandLineInfo()
+{
+ this->m_WhereSource = "";
+ this->m_WhereBuild = "";
+ this->m_AdvancedValues = false;
+ this->m_GeneratorChoiceString = "";
+ this->m_LastUnknownParameter = "";
+ this->m_ValidArguments = "";
+ this->m_ExitAfterLoad = false;
+}
+
+///////////////////////////////////////////////////////////////
+cmCommandLineInfo::~cmCommandLineInfo()
+{
+}
+
+///////////////////////////////////////////////////////////////
+void cmCommandLineInfo::ParseCommandLine(int argc, char* argv[])
+{
+ int cc;
+ for ( cc = 1; cc < argc; cc ++ )
+ {
+ if ( strlen(argv[cc]) < 1 )
+ {
+ continue;
+ }
+ bool valid = true;
+ std::string argument = argv[cc];
+ if ( argument.size() > 1 &&
+ this->m_ValidArguments.find(argument[1]) == std::string::npos )
+ {
+ valid = false;
+ }
+ this->ParseParam(argument, valid, (cc + 1 == argc));
+ }
+ this->m_ExecutablePath = cmSystemTools::GetFilenamePath(argv[0]);
+}
+
+///////////////////////////////////////////////////////////////
+int cmCommandLineInfo::GetBoolValue(const std::string& v) {
+ std::string value = cmSystemTools::LowerCase(v);
+ if (value == "1" ||
+ value == "on" ||
+ value == "true" ||
+ value == "yes")
+ {
+ return 1;
+ }
+ else if (value == "0" ||
+ value == "off" ||
+ value == "false" ||
+ value == "no")
+ {
+ return -1;
+ }
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////
+// Parse param
+
+void cmCommandLineInfo::ParseParam(const std::string& parameter,
+ bool know_about, bool /*last*/)
+{
+ if(!know_about)
+ {
+ this->m_LastUnknownParameter = parameter;
+ }
+ else
+ {
+ std::string sParam(parameter.c_str(), 1, parameter.npos);
+ // Single letter valued flag like /B=value or /B:value
+ std::string value;
+ if (sParam[1] == '=' || sParam[1] == ':')
+ {
+ value = std::string(parameter.c_str()+3);
+ }
+ else
+ {
+ value = std::string(parameter.c_str()+2);
+ }
+ int res;
+ switch (sParam[0])
+ {
+ case 'A':
+ res = cmCommandLineInfo::GetBoolValue(value);
+ if (res == 1)
+ {
+ this->m_AdvancedValues = true;
+ }
+ else if (res == -1)
+ {
+ this->m_AdvancedValues = false;
+ }
+ break;
+ case 'B':
+ this->m_WhereBuild = value;
+ break;
+ case 'G':
+ this->m_GeneratorChoiceString = value;
+ break;
+ case 'Q':
+ this->m_ExitAfterLoad = true;
+ break;
+ case 'H':
+ this->m_WhereSource = value;
+ break;
+ }
+ }
+}