Skip to content

Commit 1522bfc

Browse files
committed
cpp codegen: update test targets
1 parent 86b620e commit 1522bfc

File tree

6 files changed

+200
-90
lines changed

6 files changed

+200
-90
lines changed

Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,11 @@ flake8: FORCE
228228
schema_salad/metaschema.py: schema_salad/codegen_base.py schema_salad/python_codegen_support.py schema_salad/python_codegen.py schema_salad/metaschema/*.yml
229229
schema-salad-tool --codegen python schema_salad/metaschema/metaschema.yml > $@
230230

231+
vpath %.yml schema_salad/tests/cpp_tests
232+
233+
schema_salad/tests/cpp_tests/%.h: %.yml
234+
schema-salad-tool --codegen cpp --codegen-target $@ $<
235+
231236
FORCE:
232237

233238
# Use this to print the value of a Makefile variable

schema_salad/tests/cpp_tests/01_single_record.h

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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}; }
4640
inline auto toYaml(std::monostate const&) {
4741
return YAML::Node(YAML::NodeType::Undefined);
4842
}
4943
inline 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
5475
inline void fromYaml(YAML::Node const& n, bool& v) {
5576
v = n.as<bool>();

schema_salad/tests/cpp_tests/02_two_records.h

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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}; }
4640
inline auto toYaml(std::monostate const&) {
4741
return YAML::Node(YAML::NodeType::Undefined);
4842
}
4943
inline 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
5475
inline void fromYaml(YAML::Node const& n, bool& v) {
5576
v = n.as<bool>();

schema_salad/tests/cpp_tests/03_simple_inheritance.h

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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}; }
4640
inline auto toYaml(std::monostate const&) {
4741
return YAML::Node(YAML::NodeType::Undefined);
4842
}
4943
inline 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
5475
inline void fromYaml(YAML::Node const& n, bool& v) {
5576
v = n.as<bool>();

schema_salad/tests/cpp_tests/04_abstract_inheritance.h

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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}; }
4640
inline auto toYaml(std::monostate const&) {
4741
return YAML::Node(YAML::NodeType::Undefined);
4842
}
4943
inline 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
5475
inline void fromYaml(YAML::Node const& n, bool& v) {
5576
v = n.as<bool>();

schema_salad/tests/cpp_tests/05_specialization.h

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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}; }
4640
inline auto toYaml(std::monostate const&) {
4741
return YAML::Node(YAML::NodeType::Undefined);
4842
}
4943
inline 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
5475
inline void fromYaml(YAML::Node const& n, bool& v) {
5576
v = n.as<bool>();

0 commit comments

Comments
 (0)