1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
/*
* Copyright (C) 2002 Dominic Sacr <bugcreator@gmx.de>.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
*/
#ifndef COMMANDLINEPARSER_H
#define COMMANDLINEPARSER_H
#include <string>
#include <vector>
// ============================================================================
// CommandLineParser
// ============================================================================
class CommandLineParser
{
public:
CommandLineParser (int, char **);
typedef std::vector <class CommandLineOption> Options;
const Options & opts() { return m_opts; }
private:
Options m_opts;
};
// ============================================================================
// CommandLineOption
// ============================================================================
class CommandLineOption
{
public:
CommandLineOption (const std::string & o, const std::vector<std::string> & a)
: m_opt (o), m_args (a) { }
bool isOption (const std::string & long_opt, const std::string & short_opt, int min_args = 0, int max_args = -1) const;
std::string argument (int n = 0) const { return (int(m_args.size()) > n) ? m_args[n] : ""; }
void invalid () const;
private:
std::string m_opt;
std::vector <std::string> m_args;
};
// ============================================================================
// CommandLineException
// ============================================================================
class CommandLineException
{
public:
CommandLineException (const std::string & w) : m_what (w) { }
std::string what () const { return m_what; }
private:
std::string m_what;
};
#endif
|