1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- // Copyright Vladimir Prus 2002-2004.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt
- // or copy at http://www.boost.org/LICENSE_1_0.txt)
- #include <boost/program_options.hpp>
- using namespace boost;
- namespace po = boost::program_options;
- #include <iostream>
- #include <algorithm>
- #include <iterator>
- using namespace std;
- // A helper function to simplify the main part.
- template<class T>
- ostream& operator<<(ostream& os, const vector<T>& v)
- {
- copy(v.begin(), v.end(), ostream_iterator<T>(os, " "));
- return os;
- }
- int main(int ac, char* av[])
- {
- try {
- int opt;
- int portnum;
- po::options_description desc("Allowed options");
- desc.add_options()
- ("help", "produce help message")
- ("optimization", po::value<int>(&opt)->default_value(10),
- "optimization level")
- ("verbose,v", po::value<int>()->implicit_value(1),
- "enable verbosity (optionally specify level)")
- ("listen,l", po::value<int>(&portnum)->implicit_value(1001)
- ->default_value(0,"no"),
- "listen on a port.")
- ("include-path,I", po::value< vector<string> >(),
- "include path")
- ("input-file", po::value< vector<string> >(), "input file")
- ;
- po::positional_options_description p;
- p.add("input-file", -1);
- po::variables_map vm;
- po::store(po::command_line_parser(ac, av).
- options(desc).positional(p).run(), vm);
- po::notify(vm);
- if (vm.count("help")) {
- cout << "Usage: options_description [options]\n";
- cout << desc;
- return 0;
- }
- if (vm.count("include-path"))
- {
- cout << "Include paths are: "
- << vm["include-path"].as< vector<string> >() << "\n";
- }
- if (vm.count("input-file"))
- {
- cout << "Input files are: "
- << vm["input-file"].as< vector<string> >() << "\n";
- }
- if (vm.count("verbose")) {
- cout << "Verbosity enabled. Level is " << vm["verbose"].as<int>()
- << "\n";
- }
- cout << "Optimization level is " << opt << "\n";
- cout << "Listen port is " << portnum << "\n";
- }
- catch(std::exception& e)
- {
- cout << e.what() << "\n";
- return 1;
- }
- return 0;
- }
|