28 ss <<
"empty table\n";
32 for (
const var_t &v : fields) {
33 v.visit([&](
auto &field) {
34 using f_t =
typename std::remove_reference<
decltype(field)>::type;
35 using base_t =
typename f_t::field_T;
37 ss << index <<
" : " << field.name <<
" : nvar=" << field.nvar <<
" type : ";
39 if (std::is_same<base_t, f32>::value) {
41 }
else if (std::is_same<base_t, f32_2>::value) {
43 }
else if (std::is_same<base_t, f32_3>::value) {
45 }
else if (std::is_same<base_t, f32_4>::value) {
47 }
else if (std::is_same<base_t, f32_8>::value) {
49 }
else if (std::is_same<base_t, f32_16>::value) {
51 }
else if (std::is_same<base_t, f64>::value) {
53 }
else if (std::is_same<base_t, f64_2>::value) {
55 }
else if (std::is_same<base_t, f64_3>::value) {
57 }
else if (std::is_same<base_t, f64_4>::value) {
59 }
else if (std::is_same<base_t, f64_8>::value) {
61 }
else if (std::is_same<base_t, f64_16>::value) {
63 }
else if (std::is_same<base_t, u32>::value) {
65 }
else if (std::is_same<base_t, u64>::value) {
67 }
else if (std::is_same<base_t, u32_3>::value) {
69 }
else if (std::is_same<base_t, u64_3>::value) {
71 }
else if (std::is_same<base_t, i64_3>::value) {
165 using json = nlohmann::json;
167 std::vector<json> entries;
169 p.for_each_field_any([&](
auto &field) {
170 using f_t =
typename std::remove_reference<
decltype(field)>::type;
171 using base_t =
typename f_t::field_T;
173 auto get_tname = []() {
174 if (std::is_same<base_t, f32>::value) {
176 }
else if (std::is_same<base_t, f32_2>::value) {
178 }
else if (std::is_same<base_t, f32_3>::value) {
180 }
else if (std::is_same<base_t, f32_4>::value) {
182 }
else if (std::is_same<base_t, f32_8>::value) {
184 }
else if (std::is_same<base_t, f32_16>::value) {
186 }
else if (std::is_same<base_t, f64>::value) {
188 }
else if (std::is_same<base_t, f64_2>::value) {
190 }
else if (std::is_same<base_t, f64_3>::value) {
192 }
else if (std::is_same<base_t, f64_4>::value) {
194 }
else if (std::is_same<base_t, f64_8>::value) {
196 }
else if (std::is_same<base_t, f64_16>::value) {
198 }
else if (std::is_same<base_t, u32>::value) {
200 }
else if (std::is_same<base_t, u64>::value) {
202 }
else if (std::is_same<base_t, u32_3>::value) {
204 }
else if (std::is_same<base_t, u64_3>::value) {
206 }
else if (std::is_same<base_t, i64_3>::value) {
216 {
"type", get_tname()},
217 {
"nvar", field.nvar},
218 {
"field_name", field.name},
234 ret = ret && (lhs.fields.size() == rhs.fields.size());
236 for (
u32 i = 0; i < lhs.fields.size(); i++) {
237 const PatchDataLayerLayout::var_t &var_lhs = lhs.fields[i];
238 const PatchDataLayerLayout::var_t &var_rhs = rhs.fields[i];
241 [&](
auto &flhs,
auto &frhs) {
242 using t1 =
typename std::remove_reference<
decltype(flhs)>::type;
243 using t2 =
typename std::remove_reference<
decltype(frhs)>::type;
245 ret = ret && std::is_same_v<t1, t2>;
246 ret = ret && (flhs.nvar == frhs.nvar);
247 ret = ret && (flhs.name == frhs.name);