#ifndef CK_ARRAY_HELPER_HPP #define CK_ARRAY_HELPER_HPP #include "array.hpp" namespace ck { template __host__ __device__ void print_array(const char* s, Array a) { constexpr index_t nsize = a.GetSize(); static_assert(nsize > 0 && nsize <= 10, "wrong!"); static_if{}([&](auto) { printf("%s size %u, {%u}\n", s, nsize, a[0]); }); static_if{}([&](auto) { printf("%s size %u, {%u %u}\n", s, nsize, a[0], a[1]); }); static_if{}( [&](auto) { printf("%s size %u, {%u %u %u}\n", s, nsize, a[0], a[1], a[2]); }); static_if{}( [&](auto) { printf("%s size %u, {%u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3]); }); static_if{}([&](auto) { printf("%s size %u, {%u %u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3], a[4]); }); static_if{}([&](auto) { printf("%s size %u, {%u %u %u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5]); }); static_if{}([&](auto) { printf("%s size %u, {%u %u %u %u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5], a[6]); }); static_if{}([&](auto) { printf("%s size %u, {%u %u %u %u %u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7]); }); static_if{}([&](auto) { printf("%s size %u, {%u %u %u %u %u %u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]); }); static_if{}([&](auto) { printf("%s size %u, {%u %u %u %u %u %u %u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]); }); } template __host__ __device__ void print_array(const char* s, Array a) { constexpr index_t nsize = a.GetSize(); static_assert(nsize > 0 && nsize <= 10, "wrong!"); static_if{}([&](auto) { printf("%s size %d, {%d}\n", s, nsize, a[0]); }); static_if{}([&](auto) { printf("%s size %d, {%d %d}\n", s, nsize, a[0], a[1]); }); static_if{}( [&](auto) { printf("%s size %d, {%d %d %d}\n", s, nsize, a[0], a[1], a[2]); }); static_if{}( [&](auto) { printf("%s size %d, {%d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3]); }); static_if{}([&](auto) { printf("%s size %d, {%d %d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3], a[4]); }); static_if{}([&](auto) { printf("%s size %d, {%d %d %d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5]); }); static_if{}([&](auto) { printf("%s size %d, {%d %d %d %d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5], a[6]); }); static_if{}([&](auto) { printf("%s size %d, {%d %d %d %d %d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7]); }); static_if{}([&](auto) { printf("%s size %d, {%d %d %d %d %d %d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]); }); static_if{}([&](auto) { printf("%s size %d, {%d %d %d %d %d %d %d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]); }); } } // namespace ck #endif