main
1#define NOTLIBC_NOMAIN
2#include "notlibc.c"
3
4void PRESERVE_WITH_LTO entry(void) {
5 Status s = S_SUCCESS;
6
7 Heap h = Heap_create( &s, KiB(8) );
8 assert(S_OK( s ));
9
10 usizes *a = usizes_create( &s, &h, 16 );
11 assert(S_OK( s ));
12
13 for( usize i = 0; i < 8; ++i ) {
14 a = usizes_push( &s, a, &i, &h );
15 assert(S_OK( s ));
16 }
17
18 /* Resize allocation to minimum needed size aka 16 elements + metadata */
19 a = usizes_deflate( &s, a, &h );
20 assert(S_OK( s ));
21
22 assert( a->len == 8 );
23
24 /* Truncate by cutting 8 elements off the end - this preserves allocation size, only changes logical length */
25 usizes_truncate( &s, a, 8 );
26 assert(S_OK( s ));
27 assert( a->len == 0 );
28
29
30 for( usize i = 0; i < 24; ++i ) {
31 a = usizes_push( &s, a, &i, &h );
32 assert(S_OK( s ));
33 a->data[i] = i;
34 }
35
36 for( usize i = 0; i < a->len; ++i ) {
37 assert( a->data[i] == i );
38 }
39
40 usize el = 12;
41 usizes_push( &s, a, &el, &h );
42 assert(S_OK( s ));
43
44 assert( a->len == 25 );
45
46 el = 0;
47 usizes_pop( &s, a, &el );
48 assert(S_OK( s ));
49 assert( el == 12 );
50
51 usizes_destroy( &s, &a, &h );
52 assert(S_OK( s ));
53
54 Heap_destroy( &s, &h );
55 assert(S_OK( s ));
56
57 terminate(0);
58}