19* This class is the parameters parser for class " <<
m_classname <<
".\n";
29* These are the used parameters:\n\
32 s <<
"*" << md_banner <<
"";
52 std::string hguard =
m_classname +
"_ParamsParser_H";
53 std::transform(hguard.begin(), hguard.end(), hguard.begin(), ::toupper);
55 s <<
"#ifndef " << hguard <<
"\n";
56 s <<
"#define " << hguard <<
"\n";
59#include <yarp/os/Searchable.h>\n\
60#include <yarp/dev/IDeviceDriverParams.h>\n\
69class " <<
m_classname <<
"_ParamsParser : public yarp::dev::IDeviceDriverParams\n\
73 ~" <<
m_classname <<
"_ParamsParser() override = default;\n\
77 s <<
S_TAB1 <<
"const std::string m_device_classname = {\"" <<
m_classname <<
"\"};\n";
79 s <<
S_TAB1 <<
"bool m_parser_is_strict = false;\n";
80 s <<
S_TAB1 <<
"struct parser_version_type\n";
85 s <<
S_TAB1 <<
"const parser_version_type m_parser_version = {};\n";
87 s <<
S_TAB1 <<
"std::string m_provided_configuration;\n";
92 s <<
S_TAB1 <<
"const std::string m_" << param.getFullParamVariable() <<
"_defaultValue = {\"" <<
escapeQuotes(param.defaultValue) <<
"\"};\n";
100 if (param.type ==
"bool") { s <<
"bool "; rmv =
"false";}
101 else if (param.type ==
"string") { s <<
"std::string "; rmv =
"";}
102 else if (param.type ==
"double") { s <<
"double "; rmv =
"std::nan(\"1\")";}
103 else if (param.type ==
"int") { s <<
"int "; rmv =
"0";}
104 else if (param.type ==
"size_t") { s <<
"size_t "; rmv =
"0";}
105 else if (param.type ==
"float") { s <<
"float "; rmv =
"std::nanf(\"1\")";}
106 else if (param.type ==
"char") { s <<
"char "; rmv =
"0"; }
107 else if (param.type ==
"vector<int>") { s <<
"std::vector<int> "; rmv =
""; }
108 else if (param.type ==
"vector<string>") { s <<
"std::vector<std::string> "; rmv =
""; }
109 else if (param.type ==
"vector<double>") { s <<
"std::vector<double> "; rmv =
""; }
111 s <<
"ERROR! Generation failed because of unknown data type.\n";
114 s <<
"m_" << param.getFullParamVariable();
117 if (param.defaultValue !=
"")
119 if (param.type ==
"vector<int>" ||
120 param.type ==
"vector<string>" ||
121 param.type ==
"vector<double>")
123 s <<
" = { }; //Default values for lists are managed in the class constructor. It is highly recommended to provide a suggested value also for optional string parameters.\n";
125 else if (param.type ==
"string")
127 s <<
" = {\"" << param.defaultValue <<
"\"};\n";
131 s <<
" = {" << param.defaultValue <<
"};\n";
138 if (param.required ==
false)
140 if (param.type ==
"string")
142 s <<
" = {" << rmv <<
"}; //This default value of this string is an empty string. It is highly recommended to provide a suggested value also for optional string parameters.\n";
144 else if (param.type ==
"vector<int>" ||
145 param.type ==
"vector<string>" ||
146 param.type ==
"vector<double>")
148 s <<
" = {" << rmv <<
"}; //The default value of this list is an empty list. It is highly recommended to provide a suggested value also for optional string parameters.\n";
152 s <<
" = ERROR! Generation failed because this optional param MUST have a default value!\n";
158 s <<
" = {" << rmv <<
"}; //This default value is autogenerated. It is highly recommended to provide a suggested value also for mandatory parameters.\n";
164 bool parseParams(const yarp::os::Searchable & config) override;\n\
165 std::string getDeviceClassName() const override { return m_device_classname; }\n\
166 std::string getDeviceName() const override { return m_device_name; }\n\
167 std::string getDocumentationOfDeviceParams() const override;\n\
168 std::vector<std::string> getListOfParams() const override;\n\
169 bool getParamValue(const std::string& paramName, std::string& paramValue) const override;\n\
170 std::string getConfiguration() const override;\n\
std::string generateDoxygenForHeaderClass()
std::string m_extra_comments
std::string generateHeader()
std::string generateMdParams()
std::string generateYarpdevDoxyString()
std::deque< Parameter > m_params
std::string doxygenize_string(std::string s)
std::string current_time()
std::string escapeQuotes(const std::string &str)
#define MACRO_PARSER_VERSION_MINOR
const std::string license_banner
#define MACRO_PARSER_VERSION_MAJOR
const std::string version_banner