main
1#define NOTLIBC_NOMAIN
2#include "notlibc.c"
3
4s8 _usize_cmp( const void *n1, const void *n2 ) {
5 const usize *a = n1;
6 const usize *b = n2;
7 if( *a == *b ) return 0;
8 if( *a > *b ) return 1; else return -1;
9}
10
11
12SortFunc *sortfuncs[] = { algo_insertionsort, algo_sort_generic };
13FallbackingSortFunc *fallbacking_sortfuncs[] = { algo_quicksort };
14
15void PRESERVE_WITH_LTO entry(void) {
16 usize arr[] = { 41, 4, 2, 76, 30, 75, 49, 85, 67, 21, 11, 100, 29, 31, 72, 65, 35, 37, 1, 7, 87, 10, 8, 68, 5, 58, 61, 24, 23, 62, 52, 19 }; /* some random numbers from random.org */
17
18 usize data[sizeof(arr)/sizeof(arr[0])] = {0};
19
20 for( usize i = 0; i < sizeof(sortfuncs)/sizeof(sortfuncs[0]); ++i ) {
21 Status s = S_SUCCESS;
22 mem_copy( arr, data, sizeof(arr) );
23 sortfuncs[i]( &s, data, sizeof(arr)/sizeof(arr[0]), sizeof(arr[0]), _usize_cmp );
24 assert( S_OK( s ) );
25
26 for( usize j = 1; j < sizeof(arr)/sizeof(arr[0]); ++j ) {
27 assert( data[j-1] <= data[j] );
28 }
29 }
30
31 for( usize i = 0; i < sizeof(fallbacking_sortfuncs)/sizeof(fallbacking_sortfuncs[0]); ++i ) {
32 Status s = S_SUCCESS;
33 mem_copy( arr, data, sizeof(arr) );
34 fallbacking_sortfuncs[i]( &s, data, sizeof(arr)/sizeof(arr[0]), sizeof(arr[0]), _usize_cmp, 4, algo_insertionsort );
35 assert( S_OK( s ) );
36
37 for( usize j = 1; j < sizeof(arr)/sizeof(arr[0]); ++j ) {
38 assert( data[j-1] <= data[j] );
39 }
40 }
41
42 terminate(0);
43}