/usr/include/usbprog/optionparser.h is in libusbprog-dev 0.2.0-2.2+b2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | /*
* (c) 2007-2010, Bernhard Walle <bernhard@bwalle.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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef OPTIONPARSER_H
#define OPTIONPARSER_H
#include <list>
#include <map>
#include <string>
#include <vector>
enum OptionType {
OT_INVALID,
OT_STRING,
OT_INTEGER,
OT_FLAG
};
class OptionValue {
public:
OptionValue();
public:
void setType(OptionType type);
OptionType getType() const;
void setString(const std::string &string);
std::string getString() const;
void setFlag(bool flag);
bool getFlag() const;
void setInteger(int value);
int getInteger() const;
private:
OptionType m_type;
int m_integer;
std::string m_string;
bool m_flag;
};
class Option {
public:
Option();
Option(const std::string &name, char letter,
OptionType type = OT_FLAG,
const std::string &description = "");
public:
void setLongName(const std::string &name);
std::string getLongName() const;
void setLetter(char letter);
char getLetter() const;
void setType(OptionType type);
OptionType getType() const;
void setDescription(const std::string &description);
std::string getDescription() const;
/* that's set by the OptionParser */
void setValue(OptionValue value);
OptionValue getValue() const;
bool isValid() const;
std::string getPlaceholder() const;
private:
std::string m_longName;
std::string m_description;
char m_letter;
OptionType m_type;
OptionValue m_value;
};
class OptionParser {
public:
void addOption(Option option);
void addOption(const std::string &name, char letter,
OptionType type = OT_FLAG,
const std::string &description = "");
void printHelp(std::ostream &os, const std::string &name) const;
bool parse(int argc, char *argv[]);
OptionValue getValue(const std::string &name);
std::vector<std::string> getArgs();
protected:
Option &findOption(char letter);
private:
std::vector<Option> m_options;
std::vector<std::string> m_args;
};
#endif /* OPTIONPARSER_H */
// vim: set sw=4 ts=4 et: :collapseFolds=1:
|