summaryrefslogtreecommitdiff
path: root/tclap-1.2.1/examples/test5.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tclap-1.2.1/examples/test5.cpp')
-rw-r--r--tclap-1.2.1/examples/test5.cpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/tclap-1.2.1/examples/test5.cpp b/tclap-1.2.1/examples/test5.cpp
new file mode 100644
index 0000000..ebc5e4a
--- /dev/null
+++ b/tclap-1.2.1/examples/test5.cpp
@@ -0,0 +1,118 @@
+
+
+#include "tclap/CmdLine.h"
+#include <iostream>
+#include <string>
+
+using namespace TCLAP;
+using namespace std;
+
+string _orTest;
+string _orTest2;
+string _testc;
+bool _testd;
+
+void parseOptions(int argc, char** argv);
+
+int main(int argc, char** argv)
+{
+
+ parseOptions(argc,argv);
+
+ cout << "for A OR B we got : " << _orTest<< endl
+ << "for string C we got : " << _testc << endl
+ << "for string D we got : " << _testd << endl
+ << "for E or F or G we got: " << _orTest2 << endl;
+
+}
+
+
+void parseOptions(int argc, char** argv)
+{
+ try {
+
+ CmdLine cmd("this is a message", ' ', "0.99" );
+
+ //
+ // Define arguments
+ //
+
+ ValueArg<string> atest("a", "aaa", "or test a", true, "homer", "string");
+ ValueArg<string> btest("b", "bbb", "or test b", true, "homer", "string");
+ cmd.xorAdd( atest, btest );
+
+ ValueArg<string> ctest("c", "ccc", "c test", true, "homer", "string");
+ cmd.add( ctest );
+
+ SwitchArg dtest("", "ddd", "d test", false);
+ cmd.add( dtest );
+
+ ValueArg<string> etest("", "eee", "e test", false, "homer", "string");
+ ValueArg<string> ftest("", "fff", "f test", false, "homer", "string");
+ ValueArg<string> gtest("g", "ggg", "g test", false, "homer", "string");
+ vector<Arg*> xorlist;
+ xorlist.push_back(&etest);
+ xorlist.push_back(&ftest);
+ xorlist.push_back(&gtest);
+ cmd.xorAdd( xorlist );
+
+ MultiArg<string> itest("i", "iii", "or test i", true, "string");
+ MultiArg<string> jtest("j", "jjj", "or test j", true, "string");
+ cmd.xorAdd( itest, jtest );
+
+ //
+ // Parse the command line.
+ //
+ cmd.parse(argc,argv);
+
+
+ //
+ // Set variables
+ //
+
+ if ( atest.isSet() )
+ _orTest = atest.getValue();
+ else if ( btest.isSet() )
+ _orTest = btest.getValue();
+ else
+ // Should never get here because TCLAP will note that one of the
+ // required args above has not been set.
+ throw("very bad things...");
+
+ _testc = ctest.getValue();
+ _testd = dtest.getValue();
+
+ if ( etest.isSet() )
+ _orTest2 = etest.getValue();
+ else if ( ftest.isSet() )
+ _orTest2 = ftest.getValue();
+ else if ( gtest.isSet() )
+ _orTest2 = gtest.getValue();
+ else
+ throw("still bad");
+
+ if ( jtest.isSet() )
+ {
+ cout << "for J:" << endl;
+ vector<string> v = jtest.getValue();
+ for ( int z = 0; static_cast<unsigned int>(z) < v.size(); z++ )
+ cout << " " << z << " " << v[z] << endl;
+ }
+ else if ( itest.isSet() )
+ {
+ cout << "for I:" << endl;
+ vector<string> v = itest.getValue();
+ for ( int z = 0; static_cast<unsigned int>(z) < v.size(); z++ )
+ cout << " " << z << " " << v[z] << endl;
+ }
+ else
+ throw("yup, still bad");
+
+
+
+ } catch ( ArgException& e )
+ { cout << "ERROR: " << e.error() << " " << e.argId() << endl; }
+}
+
+
+