/* This software is licensed by the MIT License, see LICENSE file */ /* Copyright © 2022 Gregory Lirent */ #include #include "../../../include/extra/vtype.h" #include "../../../include/extra/array.h" #include "../../include/random.h" #include "../../include/test.h" #include "../../include/time.h" extern void array_print(arr_t* x, const char* prefix, unsigned int hpos); extern void array_info(arr_t* x, unsigned int hpos); extern void visual_push(arr_t* x, size_t n); extern void visual_sort(arr_t* x); extern void visual_remove(arr_t* x); extern void visual_push2(arr_t* x0, size_t n0, arr_t* x1, size_t n1); extern void visual_remove2(arr_t* x0, arr_t* x1); extern void visual_sort2(arr_t* x0, arr_t* x1); extern void visual_slice(arr_t* x, arr_t* s); extern void array_push_random (arr_t* x, _Bool silent, unsigned int hpos); extern void array_remove_random(arr_t* x, _Bool silent, unsigned int hpos); /* static void array_push_random(vtype_array* x) { switch (random_uint8()%13) { default: case 0: array_push(x, random_boolean()); break; case 1: array_push(x, random_uint8()); break; case 2: array_push(x, random_uint16()); break; case 3: array_push(x, random_uint32()); break; case 4: array_push(x, random_uint64()); break; case 5: array_push(x, random_int8()); break; case 6: array_push(x, random_int16()); break; case 7: array_push(x, random_int32()); break; case 8: array_push(x, random_int64()); break; case 9: array_push(x, (void*)((sizeof(void*) == 8) ? random_uint64() : random_uint32())); break; case 10: array_push(x, random_float()); break; case 11: array_push(x, random_double()); break; case 12: array_push(x, random_ldouble()); break; } } static void array_init_random(vtype_array* x) { switch (random_uint8()%13) { default: case 0: array_init(x, VTYPE_BOOLEAN); break; case 1: array_init(x, VTYPE_UINT8); break; case 2: array_init(x, VTYPE_UINT16); break; case 3: array_init(x, VTYPE_UINT32); break; case 4: array_init(x, VTYPE_UINT64); break; case 5: array_init(x, VTYPE_INT8); break; case 6: array_init(x, VTYPE_INT16); break; case 7: array_init(x, VTYPE_INT32); break; case 8: array_init(x, VTYPE_INT64); break; case 9: array_init(x, VTYPE_POINTER); break; case 10: array_init(x, VTYPE_FLOAT); break; case 11: array_init(x, VTYPE_DOUBLE); break; case 12: array_init(x, VTYPE_LDOUBLE); break; } } static vtype_array array_random(unsigned int n) { vtype_array x; array_init_random(&x); for (int i = 0; i < n; ++i) { array_push_random(&x); } return x; } static int array_value_print(void* v, ssize_t i, vtype t, void* _) { print_container_value(&i, v, t, false); return 0; } static void array_print(vtype_array* x, const char* prefix) { print_container_values_prefix("Array", prefix); array_foreach(x, 0, array_value_print); put_separator(); } static void array_info(const vtype_array* x) { print_container_info("Array", 0, &x->type, array_size(x), array_nmemb(x)); put_separator(); } */