#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; } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 16129 | tjuricek |
Rename/move files again... this time to the hyphenated-approach. |
||
//guest/tjuricek/file_system_client/main/vendor/tclap-1.2.1/examples/test5.cpp | |||||
#1 | 16119 | tjuricek | Rename/move to meet workshop project conventions. | ||
//guest/tjuricek/fsclient/vendor/tclap-1.2.1/examples/test5.cpp | |||||
#1 | 16118 | tjuricek |
FSClient initial version: handles add, edit This is a proof-of-concept app that mirrors an existing Perforce workspace to handle running commands like "p4 add" and "p4 edit" automatically when your apps add and write files. See the readme for more information. |