24 ss <<
"empty table\n";
28 for (
const var_t &v : fields) {
29 v.visit([&](
auto &field) {
30 using f_t =
typename std::remove_reference<
decltype(field)>::type;
31 using base_t =
typename f_t::field_T;
33 ss << index <<
" : " << field.name <<
" : nvar=" << field.nvar <<
" type : ";
35 if (std::is_same<base_t, f32>::value) {
37 }
else if (std::is_same<base_t, f32_2>::value) {
39 }
else if (std::is_same<base_t, f32_3>::value) {
41 }
else if (std::is_same<base_t, f32_4>::value) {
43 }
else if (std::is_same<base_t, f32_8>::value) {
45 }
else if (std::is_same<base_t, f32_16>::value) {
47 }
else if (std::is_same<base_t, f64>::value) {
49 }
else if (std::is_same<base_t, f64_2>::value) {
51 }
else if (std::is_same<base_t, f64_3>::value) {
53 }
else if (std::is_same<base_t, f64_4>::value) {
55 }
else if (std::is_same<base_t, f64_8>::value) {
57 }
else if (std::is_same<base_t, f64_16>::value) {
59 }
else if (std::is_same<base_t, u32>::value) {
61 }
else if (std::is_same<base_t, u64>::value) {
63 }
else if (std::is_same<base_t, u32_3>::value) {
65 }
else if (std::is_same<base_t, u64_3>::value) {
67 }
else if (std::is_same<base_t, i64_3>::value) {
97 using json = nlohmann::json;
99 std::vector<json> entries;
101 p.for_each_field_any([&](
auto &field) {
102 using f_t =
typename std::remove_reference<
decltype(field)>::type;
103 using base_t =
typename f_t::field_T;
105 auto get_tname = []() {
106 if (std::is_same<base_t, f32>::value) {
108 }
else if (std::is_same<base_t, f32_2>::value) {
110 }
else if (std::is_same<base_t, f32_3>::value) {
112 }
else if (std::is_same<base_t, f32_4>::value) {
114 }
else if (std::is_same<base_t, f32_8>::value) {
116 }
else if (std::is_same<base_t, f32_16>::value) {
118 }
else if (std::is_same<base_t, f64>::value) {
120 }
else if (std::is_same<base_t, f64_2>::value) {
122 }
else if (std::is_same<base_t, f64_3>::value) {
124 }
else if (std::is_same<base_t, f64_4>::value) {
126 }
else if (std::is_same<base_t, f64_8>::value) {
128 }
else if (std::is_same<base_t, f64_16>::value) {
130 }
else if (std::is_same<base_t, u32>::value) {
132 }
else if (std::is_same<base_t, u64>::value) {
134 }
else if (std::is_same<base_t, u32_3>::value) {
136 }
else if (std::is_same<base_t, u64_3>::value) {
138 }
else if (std::is_same<base_t, i64_3>::value) {
148 {
"type", get_tname()},
149 {
"nvar", field.nvar},
150 {
"field_name", field.name},
166 ret = ret && (lhs.fields.size() == rhs.fields.size());
168 for (
u32 i = 0; i < lhs.fields.size(); i++) {
173 [&](
auto &flhs,
auto &frhs) {
174 using t1 =
typename std::remove_reference<
decltype(flhs)>::type;
175 using t2 =
typename std::remove_reference<
decltype(frhs)>::type;
177 ret = ret && std::is_same_v<t1, t2>;
178 ret = ret && (flhs.nvar == frhs.nvar);
179 ret = ret && (flhs.name == frhs.name);