#include "tclap/CmdLine.h" #include <iterator> #include <algorithm> // Define a simple 3D vector type template<typename T, size_t LEN> struct Vect { typedef TCLAP::StringLike ValueCategory; T v[LEN]; // operator= will be used to assign to the vector Vect& operator=(const std::string &str) { std::istringstream iss(str); for (size_t n = 0; n < LEN; n++) { if (!(iss >> v[n])) { std::ostringstream oss; oss << " is not a vector of size " << LEN; throw TCLAP::ArgParseException(str + oss.str()); } } if (!iss.eof()) { std::ostringstream oss; oss << " is not a vector of size " << LEN; throw TCLAP::ArgParseException(str + oss.str()); } return *this; } std::ostream& print(std::ostream &os) const { std::copy(v, v + LEN, std::ostream_iterator<T>(os, " ")); return os; } }; int main(int argc, char *argv[]) { TCLAP::CmdLine cmd("Command description message", ' ', "0.9"); TCLAP::ValueArg< Vect<double, 3> > vec("v", "vect", "vector", true, Vect<double, 3>(), "3D vector", cmd); try { cmd.parse(argc, argv); } catch(std::exception &e) { std::cout << e.what() << std::endl; return EXIT_FAILURE; } vec.getValue().print(std::cout); std::cout << std::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/test15.cpp | |||||
#1 | 16119 | tjuricek | Rename/move to meet workshop project conventions. | ||
//guest/tjuricek/fsclient/vendor/tclap-1.2.1/examples/test15.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. |