Improve vector printing

This commit is contained in:
Maciej Krzyżanowski 2025-02-17 22:14:10 +01:00
parent 1b845b271b
commit 5ef5beb3b5

21
main.c
View File

@ -133,6 +133,9 @@ void cvec_print(cvec vec, cvec_print_func print_func, cvec_print_flag flags)
for (size_t i = 0; i < print_left; i++)
{
if (flags & CVEC_PRINT_FLAG_MULTILINE)
printf("\t");
print_func(vec.elem_storage + elems_printed * vec.elem_size);
printf("%c ", sep);
elems_printed++;
@ -140,10 +143,13 @@ void cvec_print(cvec vec, cvec_print_func print_func, cvec_print_flag flags)
if (flags & CVEC_PRINT_FLAG_ELLIPSIS)
{
if (flags & CVEC_PRINT_FLAG_MULTILINE)
printf("\n");
printf("... %lu elements in between ... ", print_center);
if (flags & CVEC_PRINT_FLAG_MULTILINE)
printf("\n");
printf("\n\n");
elems_printed += print_center;
}
@ -151,6 +157,9 @@ void cvec_print(cvec vec, cvec_print_func print_func, cvec_print_flag flags)
{
for (size_t i = 0; i < print_center; i++)
{
if (flags & CVEC_PRINT_FLAG_MULTILINE)
printf("\t");
print_func(vec.elem_storage + elems_printed * vec.elem_size);
if (elems_printed != vec.elem_count - 1)
@ -162,6 +171,9 @@ void cvec_print(cvec vec, cvec_print_func print_func, cvec_print_flag flags)
for (size_t i = 0; i < print_right; i++)
{
if (flags & CVEC_PRINT_FLAG_MULTILINE)
printf("\t");
print_func(vec.elem_storage + elems_printed * vec.elem_size);
if (elems_printed != vec.elem_count - 1)
@ -235,6 +247,13 @@ int main()
return ret;
}
int elem = 0;
ret = cvec_get(&elem, vec, 10);
if (ret < 0)
return ret;
printf("Got 10th element: %d\n", elem);
cvec_print(vec, cvec_int_print_func,
CVEC_PRINT_FLAG_ELLIPSIS | CVEC_PRINT_FLAG_MULTILINE);
cvec_pop(&vec);