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));
A static registry used to register and build values of different types for the WebServerControl.
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.
Defines classes for registering values that can be parsed, communicated, and stored in the WebServerC...
char registerVectorType(const std::string &type_name)
Register a vector type to be controlled by the WebServerControl.
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 registerScalarType(const std::string &type_name)
Register a scalar type to be controlled by the WebServerControl.