@@ -25,31 +25,52 @@ inline auto mergeYaml(YAML::Node n1, YAML::Node n2) {
2525}
2626
2727// declaring toYaml
28- inline auto toYaml (bool v) {
29- return YAML::Node{v};
30- }
31- inline auto toYaml (float v) {
32- return YAML::Node{v};
33- }
34- inline auto toYaml (double v) {
35- return YAML::Node{v};
36- }
37- inline auto toYaml (int32_t v) {
38- return YAML::Node{v};
39- }
40- inline auto toYaml (int64_t v) {
41- return YAML::Node{v};
42- }
43- inline auto toYaml (std::any const &) {
44- return YAML::Node{};
45- }
28+ inline auto toYaml (bool v) { return YAML::Node{v}; }
29+ inline auto toYaml (float v) { return YAML::Node{v}; }
30+ inline auto toYaml (double v) { return YAML::Node{v}; }
31+ inline auto toYaml (char v) { return YAML::Node{v}; }
32+ inline auto toYaml (int8_t v) { return YAML::Node{v}; }
33+ inline auto toYaml (uint8_t v) { return YAML::Node{v}; }
34+ inline auto toYaml (int16_t v) { return YAML::Node{v}; }
35+ inline auto toYaml (uint16_t v) { return YAML::Node{v}; }
36+ inline auto toYaml (int32_t v) { return YAML::Node{v}; }
37+ inline auto toYaml (uint32_t v) { return YAML::Node{v}; }
38+ inline auto toYaml (int64_t v) { return YAML::Node{v}; }
39+ inline auto toYaml (uint64_t v) { return YAML::Node{v}; }
4640inline auto toYaml (std::monostate const &) {
4741 return YAML::Node (YAML::NodeType::Undefined);
4842}
4943inline auto toYaml (std::string const & v) {
5044 return YAML::Node{v};
5145}
5246
47+ template <typename T, typename ...Args>
48+ auto anyToYaml_impl (std::any const & a) {
49+ if (auto v = std::any_cast<T const >(&a)) {
50+ return toYaml (*v);
51+ }
52+ if constexpr (sizeof ...(Args) > 0 ) {
53+ return anyToYaml_impl<Args...>(a);
54+ }
55+ return toYaml (std::monostate{});
56+ }
57+
58+ inline auto toYaml (std::any const & a) {
59+ return anyToYaml_impl<bool ,
60+ float ,
61+ double ,
62+ char ,
63+ int8_t ,
64+ uint8_t ,
65+ int16_t ,
66+ uint16_t ,
67+ int32_t ,
68+ uint32_t ,
69+ int64_t ,
70+ uint64_t ,
71+ std::string>(a);
72+ }
73+
5374// declaring fromYaml
5475inline void fromYaml (YAML::Node const & n, bool & v) {
5576 v = n.as <bool >();
0 commit comments