ewmscp  ..
OptionsWithForeignParser.h
Go to the documentation of this file.
1 #ifndef __OptionsWithForeignParser_H__
2 #define __OptionsWithForeignParser_H__
3 
4 #include "Options.h"
5 
6 namespace options {
7 
8  class ForeignOption;
11  private:
12  std::vector<const ForeignOption*> lOptions;
13  std::string lName;
14  std::vector<char *> lArgv;
15  int lArgc;
16  public:
17  ForeignApplicationOptions(const char* aName);
18  void fRegister(const ForeignOption* aOption);
19  void fFinalize();
21  template <typename InputIt> void fFinalize(InputIt from, InputIt to) {
22  fFinalize();
23  for (auto it = from; it != to; ++it) {
24  fAddToArgc(*it);
25  }
26  }
27  void fAddToArgc(const char *aString);
28  void fAddToArgc(const std::string& aString);
29  char **Argv();
30  int *Argc();
31  };
32 
34  class ForeignOption : public base {
35  private:
36  std::string lCanonical;
37  std::string lArg;
39  public:
40  ForeignOption(ForeignApplicationOptions* aForeignApplication,
41  char aShortName, std::string aLongName, std::string aExplanation, short aNargs,
42  const char *aCanonicalForm);
43  void fSetMe(std::istream& aArg, const internal::sourceItem& aSource) override;
44  void fSetMeNoarg(const internal::sourceItem& aSource) override;
45  void fCheckRange() const override;
46  void fAddToRangeFromStream(std::istream& aStream) override;
47  void fAddDefaultFromStream(std::istream& aStream) override;
48  void fWriteValue(std::ostream& aStream) const override;
49  virtual ~ForeignOption();
50  virtual void fAddArgs() const;
51  };
52 
53 } // end of namespace options
54 
55 #endif
options::ForeignApplicationOptions::ForeignApplicationOptions
ForeignApplicationOptions(const char *aName)
construct an object of typs ForeignApplicationOptions
Definition: OptionsWithForeignParser.cpp:8
options::ForeignOption::fAddArgs
virtual void fAddArgs() const
add args of this option tho the argument vector of the option list
Definition: OptionsWithForeignParser.cpp:70
options::ForeignOption::lArg
std::string lArg
Definition: OptionsWithForeignParser.h:37
options::ForeignOption::lCanonical
std::string lCanonical
Definition: OptionsWithForeignParser.h:36
options::ForeignOption::fSetMe
void fSetMe(std::istream &aArg, const internal::sourceItem &aSource) override
remember argument ad register in list of options that were set.
Definition: OptionsWithForeignParser.cpp:59
options::ForeignApplicationOptions
class to hold a list of options that are to be handled by a foreign option parser
Definition: OptionsWithForeignParser.h:10
options::base
base class for options
Definition: Options.h:193
options::ForeignOption::lOptions
ForeignApplicationOptions * lOptions
Definition: OptionsWithForeignParser.h:38
options::ForeignApplicationOptions::fFinalize
void fFinalize()
build the internal argument vector for the call to the external parser
Definition: OptionsWithForeignParser.cpp:22
options::ForeignOption::fAddDefaultFromStream
void fAddDefaultFromStream(std::istream &aStream) override
just read away the line, we cannot do anything sensible here
Definition: OptionsWithForeignParser.cpp:85
options
Definition: Options.h:33
Options.h
options::ForeignApplicationOptions::fFinalize
void fFinalize(InputIt from, InputIt to)
build the internal argument vector for the call to the external parser and adds strings from the iter...
Definition: OptionsWithForeignParser.h:21
options::ForeignApplicationOptions::lArgc
int lArgc
Definition: OptionsWithForeignParser.h:15
options::ForeignOption::~ForeignOption
virtual ~ForeignOption()
Definition: OptionsWithForeignParser.cpp:57
options::ForeignApplicationOptions::Argc
int * Argc()
return a pointer to the argument count for use with the external parser
Definition: OptionsWithForeignParser.cpp:44
options::ForeignOption::fCheckRange
void fCheckRange() const override
range checking does not work, we know no ranges
Definition: OptionsWithForeignParser.cpp:77
options::ForeignApplicationOptions::Argv
char ** Argv()
return an argument vector for use with the external parser
Definition: OptionsWithForeignParser.cpp:40
options::ForeignApplicationOptions::fAddToArgc
void fAddToArgc(const char *aString)
add string to the argument vector for the external parser
Definition: OptionsWithForeignParser.cpp:30
options::internal::sourceItem
class to remember from which line (or item) of a file/line an option was set from
Definition: Options.h:53
options::ForeignOption::fAddToRangeFromStream
void fAddToRangeFromStream(std::istream &aStream) override
just read away the line, we cannot do anything sensible here
Definition: OptionsWithForeignParser.cpp:81
options::ForeignApplicationOptions::fRegister
void fRegister(const ForeignOption *aOption)
add aOption to the list of options that were set.
Definition: OptionsWithForeignParser.cpp:14
options::ForeignOption::fWriteValue
void fWriteValue(std::ostream &aStream) const override
write textual representation of value to a std::ostream
Definition: OptionsWithForeignParser.cpp:88
options::ForeignOption::fSetMeNoarg
void fSetMeNoarg(const internal::sourceItem &aSource) override
Definition: OptionsWithForeignParser.cpp:65
options::ForeignOption::ForeignOption
ForeignOption(ForeignApplicationOptions *aForeignApplication, char aShortName, std::string aLongName, std::string aExplanation, short aNargs, const char *aCanonicalForm)
Definition: OptionsWithForeignParser.cpp:51
options::ForeignOption
special type of option that is not really parsed but used to feed an additional option parser
Definition: OptionsWithForeignParser.h:34
options::ForeignApplicationOptions::lOptions
std::vector< const ForeignOption * > lOptions
Definition: OptionsWithForeignParser.h:12
options::ForeignApplicationOptions::lArgv
std::vector< char * > lArgv
Definition: OptionsWithForeignParser.h:14
options::ForeignApplicationOptions::lName
std::string lName
Definition: OptionsWithForeignParser.h:13