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}