15 #include "nlohmann/json.h" 20 #define registerWebServerControlCombine1(X, Y) X##Y 21 #define registerWebServerControlCombine(X, Y) registerWebServerControlCombine1(X, Y) 23 #define registerWebServerControlType(T, parse_function) \ 24 static char registerWebServerControlCombine(wsc_type, __COUNTER__) = \ 25 Moose::WebServerControlTypeRegistration::registerType<T>(#T, parse_function) 27 #define registerWebServerControlScalar(T) \ 28 static char registerWebServerControlCombine(wsc_scalar, __COUNTER__) = \ 29 Moose::WebServerControlTypeRegistration::registerScalarType<T>(#T) 31 #define registerWebServerControlVector(T) \ 32 static char registerWebServerControlCombine(wsc_vector, __COUNTER__) = \ 33 Moose::WebServerControlTypeRegistration::registerVectorType<T>(#T) 54 std::function<T(
const nlohmann::json &)> && parse_function)
57 type_name, std::move(parse_function));
74 const auto parse_function = [](
const nlohmann::json & json_value) -> T
75 {
return json_value.get<T>(); };
76 return registerType<T>(type_name, std::move(parse_function));
93 using vector_T = std::vector<T>;
94 const auto parse_function = [](
const nlohmann::json & json_value) -> vector_T
95 {
return json_value.get<vector_T>(); };
96 return registerType<vector_T>(
"std::vector<" + type_name +
">", std::move(parse_function));
char registerType(const std::string type_name, std::function< T(const nlohmann::json &)> &&parse_function)
Register a generic type to be controlled by the WebServerControl.
char registerVectorType(const std::string &type_name)
Register a vector type to be controlled by the WebServerControl.
char registerScalarType(const std::string &type_name)
Register a scalar type to be controlled by the WebServerControl.
A static registry used to register and build values of different types for the WebServerControl.
Defines classes for registering values that can be parsed, communicated, and stored in the WebServerC...
static char add(const std::string &type_name, std::function< ValueType(const nlohmann::json &)> &&parse_function)
Register a type in the registry.
Class containing a value to be controlled.