| 123456789101112131415161718192021222324252627282930313233343536373839 |
- #ifndef DEPTHGUIDE_YAML_UTILITY_HPP
- #define DEPTHGUIDE_YAML_UTILITY_HPP
- #include <yaml-cpp/yaml.h>
- template<typename T>
- inline auto yaml_load_number(const YAML::Node &conf, const char *name) {
- static_assert(std::is_arithmetic_v<T>);
- assert(conf[name].IsScalar());
- return conf[name].as<T>();
- }
- inline auto yaml_load_str(const YAML::Node &conf, const char *name) {
- assert(conf[name].IsScalar());
- return conf[name].as<std::string>();
- }
- inline auto yaml_load_sub(const YAML::Node &conf, const char *name) {
- assert(conf[name].IsMap());
- return conf[name];
- }
- #define LOAD_NUMBER(type, name) \
- yaml_load_number<type>(conf, name)
- #define LOAD_STR(name) \
- yaml_load_str(conf, name)
- #define LOAD_SUB(name) \
- yaml_load_sub(conf, name)
- #define FROM_YAML_IMPL(type) \
- static auto from_yaml(const YAML::Node &conf) { \
- auto ret = type(); \
- ret.fill_from_yaml(conf); \
- return ret; \
- }
- #endif //DEPTHGUIDE_YAML_UTILITY_HPP
|