#include #include #include #include "generators.h" static void generate_random(int *buffer, size_t size) { srandom(1); for (size_t i = 0; i < size; i++) buffer[i] = random(); /* compress the values to nice small numbers to make debugging nicer */ #if 0 int maxcompressed = -1; for (size_t compressed = 0; compressed < size; compressed++) { size_t minidx = -1; for (size_t i = 0; i < size; i++) { if (maxcompressed < buffer[i] && (minidx >= size || buffer[i] < buffer[minidx])) minidx = i; } buffer[minidx] = ++maxcompressed; } #endif } static void generate_sorted(int *buffer, size_t size) { for (size_t i = 0; i < size; i++) buffer[i] = i; } static void generate_reverse(int *buffer, size_t size) { for (size_t i = 0; i < size; i++) buffer[i] = size - i - 1; } static void generate_constant(int *buffer, size_t size) { for (size_t i = 0; i < size; i++) buffer[i] = 42; } const struct generator generators[] = { { .name = "random", .func = generate_random }, { .name = "sorted", .func = generate_sorted }, { .name = "reverse", .func = generate_reverse }, { .name = "constant", .func = generate_constant }, { 0 } };