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++) 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); print_func(vec.elem_storage + elems_printed * vec.elem_size);
printf("%c ", sep); printf("%c ", sep);
elems_printed++; 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_ELLIPSIS)
{ {
if (flags & CVEC_PRINT_FLAG_MULTILINE)
printf("\n");
printf("... %lu elements in between ... ", print_center); printf("... %lu elements in between ... ", print_center);
if (flags & CVEC_PRINT_FLAG_MULTILINE) if (flags & CVEC_PRINT_FLAG_MULTILINE)
printf("\n"); printf("\n\n");
elems_printed += print_center; 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++) 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); print_func(vec.elem_storage + elems_printed * vec.elem_size);
if (elems_printed != vec.elem_count - 1) 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++) 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); print_func(vec.elem_storage + elems_printed * vec.elem_size);
if (elems_printed != vec.elem_count - 1) if (elems_printed != vec.elem_count - 1)
@ -235,6 +247,13 @@ int main()
return ret; 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(vec, cvec_int_print_func,
CVEC_PRINT_FLAG_ELLIPSIS | CVEC_PRINT_FLAG_MULTILINE); CVEC_PRINT_FLAG_ELLIPSIS | CVEC_PRINT_FLAG_MULTILINE);
cvec_pop(&vec); cvec_pop(&vec);