8 #include "Arp/System/Core/Enum.hxx"     9 #include "Arp/System/Commons/Exceptions/Exceptions.h"    10 #include "boost/program_options.hpp"    12 namespace Arp { 
namespace System { 
namespace Commons { 
namespace Configuration
    42     void    AddOption(
const String& name, 
const T& defaultValue, 
const String& help);
    44     void    AddOptionEnum(
const String& name, 
const String& help);
    47     void    ParseArgs(
int argc, 
const char* 
const argv[]);
    48     void    PrintDescription(std::ostream& os = std::cout);
    49     bool    ExistsOption(
const String& optionName) 
const;
    52     T       GetOptionValue(
const String& optionName) 
const;
    54     bool    TryGetOptionValue(
const String& optionName, T& result) 
const;
    56     Enum<T> GetOptionValueEnum(
const char* optionName);
    58     bool TryGetOptionValueEnum(
const char* optionName, 
Enum<T>& value);
    67     options_description desc;
    68     variables_map       optionMap;
    71     static const String helpOptionName;
    74     static const String helpOptionDescription;
    80     : desc(
"Allowed options")
    83     (helpOptionName, helpOptionDescription);
    86 inline void CommandLineOptions::AddOption(
const String& name, 
const String& help)
    93 inline void CommandLineOptions::AddOption(
const String& name, 
const String& help)
    96     (name, value<T>(), help);
   100 inline void CommandLineOptions::AddOption(
const String& name, 
const T& defaultValue, 
const String& help)
   103     (name, value<T>()->default_value(defaultValue), help);
   107 inline void CommandLineOptions::AddOptionEnum(
const String& name, 
const String& help)
   110     (name, value<String>(), help);
   114 inline void CommandLineOptions::AddOptionEnum(
const String& name, 
const Enum<T>& defaultValue, 
const String& help)
   117     (name, value<String>()->default_value(defaultValue.
ToString()), help);
   120 inline void CommandLineOptions::ParseArgs(
int argc, 
const char* 
const argv[])
   122     store(parse_command_line(argc, argv, this->desc), optionMap);
   126 inline void CommandLineOptions::PrintDescription(std::ostream& os)
   128     os << desc << std::endl;
   131 inline bool CommandLineOptions::ExistsOption(
const String& optionName)
 const   134     if (optionMap.count(optionName))
   142 inline T CommandLineOptions::GetOptionValue(
const String& optionName)
 const   145     if(!this->TryGetOptionValue(optionName, result))
   153 inline bool CommandLineOptions::TryGetOptionValue(
const String& optionName, T& result)
 const   156     if(optionMap.count(optionName) > 0)
   158         result = optionMap[optionName].as<T>();
   165 Enum<T> CommandLineOptions::GetOptionValueEnum(
const char* optionName)
   169     if (TryGetOptionValueEnum(optionName, returnValue))
   175         throw Exception(
"GetOptionValueEnum failed for mandatory option: {0}", optionName);
   181 bool CommandLineOptions::TryGetOptionValueEnum(
const char* optionName, 
Enum<T>& value)
   184     if (!this->TryGetOptionValue<String>(optionName, returnValue))
 Definition: CommandLineOptions.hpp:17
 
static KeyNotFoundException Create(const T &keyValue)
Creates an KeyNotFoundException instance using a default message text.
Definition: KeyNotFoundException.hpp:79
 
static Enum Parse(const char *input)
Parses the given input string.
Definition: Enum.hxx:190
 
CommandLineOptions(void)
Constructs an CommandLineOptions instance.
Definition: CommandLineOptions.hpp:79
 
Adapter class for enums to make them loggable and parsable from e.g. XML files.
Definition: Enum.hxx:23
 
Root namespace for the PLCnext API
 
String ToString(void) const
Converts this instance to its string representation.
Definition: Enum.hxx:154
 
System components used by the System, Device, Plc or Io domains.
 
This is the base class of all Arp exception classes.
Definition: Exception.hpp:15