Commit 863e069b authored by Chao Liu's avatar Chao Liu
Browse files

refactor print array

parent 0ab47e06
...@@ -12,40 +12,41 @@ __host__ __device__ void print_array(const char* s, T a) ...@@ -12,40 +12,41 @@ __host__ __device__ void print_array(const char* s, T a)
using data_type = typename decltype(a)::data_type; using data_type = typename decltype(a)::data_type;
constexpr index_t nsize = a.Size(); constexpr index_t nsize = a.Size();
static_assert(nsize > 0 && nsize <= 10, "wrong!"); static_assert(nsize >= 0 && nsize <= 10, "wrong!");
if if constexpr(is_same<data_type, uint32_t>{})
constexpr(is_same<data_type, uint32_t>{}) {
if constexpr(nsize == 0)
{
printf("%s size %u\n", s, nsize);
}
else if constexpr(nsize == 1)
{
printf("%s size %u, {%u}\n", s, nsize, a[0]);
}
else if constexpr(nsize == 2)
{
printf("%s size %u, {%u %u}\n", s, nsize, a[0], a[1]);
}
else if constexpr(nsize == 3)
{
printf("%s size %u, {%u %u %u}\n", s, nsize, a[0], a[1], a[2]);
}
else if constexpr(nsize == 4)
{ {
static_if<nsize == 1>{}([&](auto) { printf("%s size %u, {%u}\n", s, nsize, a[0]); });
static_if<nsize == 2>{}(
[&](auto) { printf("%s size %u, {%u %u}\n", s, nsize, a[0], a[1]); });
static_if<nsize == 3>{}(
[&](auto) { printf("%s size %u, {%u %u %u}\n", s, nsize, a[0], a[1], a[2]); });
static_if<nsize == 4>{}([&](auto) {
printf("%s size %u, {%u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3]); printf("%s size %u, {%u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3]);
}); }
else if constexpr(nsize == 5)
static_if<nsize == 5>{}([&](auto) { {
printf("%s size %u, {%u %u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3], a[4]); printf("%s size %u, {%u %u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3], a[4]);
}); }
else if constexpr(nsize == 6)
static_if<nsize == 6>{}([&](auto) { {
printf("%s size %u, {%u %u %u %u %u %u}\n", printf(
s, "%s size %u, {%u %u %u %u %u %u}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5]);
nsize, }
a[0], else if constexpr(nsize == 7)
a[1], {
a[2],
a[3],
a[4],
a[5]);
});
static_if<nsize == 7>{}([&](auto) {
printf("%s size %u, {%u %u %u %u %u %u %u}\n", printf("%s size %u, {%u %u %u %u %u %u %u}\n",
s, s,
nsize, nsize,
...@@ -56,9 +57,9 @@ __host__ __device__ void print_array(const char* s, T a) ...@@ -56,9 +57,9 @@ __host__ __device__ void print_array(const char* s, T a)
a[4], a[4],
a[5], a[5],
a[6]); a[6]);
}); }
else if constexpr(nsize == 8)
static_if<nsize == 8>{}([&](auto) { {
printf("%s size %u, {%u %u %u %u %u %u %u %u}\n", printf("%s size %u, {%u %u %u %u %u %u %u %u}\n",
s, s,
nsize, nsize,
...@@ -70,9 +71,9 @@ __host__ __device__ void print_array(const char* s, T a) ...@@ -70,9 +71,9 @@ __host__ __device__ void print_array(const char* s, T a)
a[5], a[5],
a[6], a[6],
a[7]); a[7]);
}); }
else if constexpr(nsize == 9)
static_if<nsize == 9>{}([&](auto) { {
printf("%s size %u, {%u %u %u %u %u %u %u %u %u}\n", printf("%s size %u, {%u %u %u %u %u %u %u %u %u}\n",
s, s,
nsize, nsize,
...@@ -85,9 +86,9 @@ __host__ __device__ void print_array(const char* s, T a) ...@@ -85,9 +86,9 @@ __host__ __device__ void print_array(const char* s, T a)
a[6], a[6],
a[7], a[7],
a[8]); a[8]);
}); }
else if constexpr(nsize == 10)
static_if<nsize == 10>{}([&](auto) { {
printf("%s size %u, {%u %u %u %u %u %u %u %u %u %u}\n", printf("%s size %u, {%u %u %u %u %u %u %u %u %u %u}\n",
s, s,
nsize, nsize,
...@@ -101,40 +102,41 @@ __host__ __device__ void print_array(const char* s, T a) ...@@ -101,40 +102,41 @@ __host__ __device__ void print_array(const char* s, T a)
a[7], a[7],
a[8], a[8],
a[9]); a[9]);
});
} }
else if }
constexpr(is_same<data_type, int32_t>{}) else if constexpr(is_same<data_type, int32_t>{})
{
if constexpr(nsize == 0)
{
printf("%s size %d\n", s, nsize);
}
else if constexpr(nsize == 1)
{
printf("%s size %d, {%d}\n", s, nsize, a[0]);
}
else if constexpr(nsize == 2)
{
printf("%s size %d, {%d %d}\n", s, nsize, a[0], a[1]);
}
else if constexpr(nsize == 3)
{
printf("%s size %d, {%d %d %d}\n", s, nsize, a[0], a[1], a[2]);
}
else if constexpr(nsize == 4)
{ {
static_if<nsize == 1>{}([&](auto) { printf("%s size %d, {%d}\n", s, nsize, a[0]); });
static_if<nsize == 2>{}(
[&](auto) { printf("%s size %d, {%d %d}\n", s, nsize, a[0], a[1]); });
static_if<nsize == 3>{}(
[&](auto) { printf("%s size %d, {%d %d %d}\n", s, nsize, a[0], a[1], a[2]); });
static_if<nsize == 4>{}([&](auto) {
printf("%s size %d, {%d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3]); printf("%s size %d, {%d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3]);
}); }
else if constexpr(nsize == 5)
static_if<nsize == 5>{}([&](auto) { {
printf("%s size %d, {%d %d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3], a[4]); printf("%s size %d, {%d %d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3], a[4]);
}); }
else if constexpr(nsize == 6)
static_if<nsize == 6>{}([&](auto) { {
printf("%s size %d, {%d %d %d %d %d %d}\n", printf(
s, "%s size %d, {%d %d %d %d %d %d}\n", s, nsize, a[0], a[1], a[2], a[3], a[4], a[5]);
nsize, }
a[0], else if constexpr(nsize == 7)
a[1], {
a[2],
a[3],
a[4],
a[5]);
});
static_if<nsize == 7>{}([&](auto) {
printf("%s size %d, {%d %d %d %d %d %d %d}\n", printf("%s size %d, {%d %d %d %d %d %d %d}\n",
s, s,
nsize, nsize,
...@@ -145,9 +147,9 @@ __host__ __device__ void print_array(const char* s, T a) ...@@ -145,9 +147,9 @@ __host__ __device__ void print_array(const char* s, T a)
a[4], a[4],
a[5], a[5],
a[6]); a[6]);
}); }
else if constexpr(nsize == 8)
static_if<nsize == 8>{}([&](auto) { {
printf("%s size %d, {%d %d %d %d %d %d %d %d}\n", printf("%s size %d, {%d %d %d %d %d %d %d %d}\n",
s, s,
nsize, nsize,
...@@ -159,9 +161,9 @@ __host__ __device__ void print_array(const char* s, T a) ...@@ -159,9 +161,9 @@ __host__ __device__ void print_array(const char* s, T a)
a[5], a[5],
a[6], a[6],
a[7]); a[7]);
}); }
else if constexpr(nsize == 9)
static_if<nsize == 9>{}([&](auto) { {
printf("%s size %d, {%d %d %d %d %d %d %d %d %d}\n", printf("%s size %d, {%d %d %d %d %d %d %d %d %d}\n",
s, s,
nsize, nsize,
...@@ -174,9 +176,9 @@ __host__ __device__ void print_array(const char* s, T a) ...@@ -174,9 +176,9 @@ __host__ __device__ void print_array(const char* s, T a)
a[6], a[6],
a[7], a[7],
a[8]); a[8]);
}); }
else if constexpr(nsize == 10)
static_if<nsize == 10>{}([&](auto) { {
printf("%s size %d, {%d %d %d %d %d %d %d %d %d %d}\n", printf("%s size %d, {%d %d %d %d %d %d %d %d %d %d}\n",
s, s,
nsize, nsize,
...@@ -190,7 +192,7 @@ __host__ __device__ void print_array(const char* s, T a) ...@@ -190,7 +192,7 @@ __host__ __device__ void print_array(const char* s, T a)
a[7], a[7],
a[8], a[8],
a[9]); a[9]);
}); }
} }
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment