diff options
Diffstat (limited to 'tclap-1.2.1/examples/test5.cpp')
-rw-r--r-- | tclap-1.2.1/examples/test5.cpp | 118 |
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(>est); + 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; } +} + + + |