Quark  0.1
CommandLineParser.h++
Go to the documentation of this file.
1 #ifndef __libquark_util_CommandLineParser_hxx
2 #define __libquark_util_CommandLineParser_hxx
3 
4 #include <QString>
5 #include <QStringList>
6 #include <QVector>
7 
8 #include <quark/Quark.h++>
9 
10 namespace quark {
11 namespace util {
12 
25 {
26  public:
27 
33  CommandLineParser(QStringList args);
34 
36  virtual ~CommandLineParser();
37 
49  bool registerOption(QChar opt, const QString &longOpt,
50  const QString &argName = QString(),
51  const QString &description = QString());
52 
61  bool parseArguments();
62 
68  void printUsage();
69 
70  protected:
71 
80  virtual void processOption(QChar opt, const QString &longOpt,
81  const QString &arg) = 0;
82 
90  virtual bool processNonOptionArguments(QStringList args) = 0;
91 
100  virtual bool handleMissingArgument(QChar opt, const QString &longOpt);
101 
110  virtual bool handleInvalidOption(QChar opt, const QString &longOpt);
111 
112  private:
113 
114  QString optionToString(QChar opt, const QString &longOpt) const;
115 
116  struct Option
117  {
118  Option();
119  Option(QChar opt, const QString &longOpt, const QString &argName,
120  const QString &description);
121  QChar opt;
122  QString longOpt;
123  QString argName;
124  QString description;
125 
126  bool takesArg() const;
127  };
128 
129  const Option* findOption(QChar opt) const;
130  const Option* findOption(const QString &longOpt) const;
131 
132  QString _program;
133  QVector<Option> _options;
134  QStringList _args;
135  QStringList _nonOptionArgs;
136 };
137 
138 } // namespace util
139 } // namespace quark
140 
141 #endif // __libquark_util_CommandLineParser_hxx
Definition: BarChartView.h++:6
An abstract base class for parsing command-line arguments.
Definition: CommandLineParser.h++:24
#define LIBQUARK_API
Definition: Quark.h++:18