5 static void dtor(void *ptr
)
7 a_u32
*u
= a_u32_(*, ptr
);
8 printf("%" PRIu32
" ", *u
);
11 static void test(void)
13 a_que
*ctx
= a_que_new(sizeof(a_u64
));
14 for (a_u64 i
= 0; i
!= 10; ++i
)
16 a_u64
*obj
= A_QUE_PUSH_BACK(a_u64
, ctx
);
17 if (obj
) { *obj
= i
; }
20 a_u64
*fore
= A_QUE_FORE_(a_u64
, ctx
);
21 a_u64
*back
= A_QUE_BACK_(a_u64
, ctx
);
22 printf("%" PRIu64
" %" PRIu64
" ", *fore
, *back
);
25 a_u64
*fore
= A_QUE_FORE(a_u64
, ctx
);
26 a_u64
*back
= A_QUE_BACK(a_u64
, ctx
);
29 printf("%" PRIu64
" %" PRIu64
" ", *fore
, *back
);
33 a_u64
*fore
= A_QUE_AT(a_u64
, ctx
, 0);
34 a_u64
*back
= A_QUE_AT(a_u64
, ctx
, ~0);
37 printf("%" PRIu64
" %" PRIu64
"\n", *fore
, *back
);
40 for (a_u64 i
= 0; i
!= 5; ++i
)
44 a_que_edit(ctx
, sizeof(a_u32
) + 8, A_NULL
);
45 for (a_u32 i
= 5; i
--;)
47 a_u32
*obj
= A_QUE_PUSH_FORE(a_u32
, ctx
);
48 if (obj
) { *obj
= i
; }
50 for (a_u32 i
= 5; i
!= 10; ++i
)
52 a_u32
*obj
= A_QUE_PUSH_BACK(a_u32
, ctx
);
53 if (obj
) { *obj
= i
; }
56 a_u32
*obj
= A_QUE_INSERT(a_u32
, ctx
, 0);
57 if (obj
) { *obj
= A_U32_MAX
; }
60 a_u32
*obj
= A_QUE_INSERT(a_u32
, ctx
, A_SIZE_MAX
);
61 if (obj
) { *obj
= A_U32_MAX
; }
64 a_que_remove(ctx
, A_SIZE_MAX
);
65 a_que_swap(ctx
, 0, A_SIZE_MAX
);
67 a_u32
*lhs
= A_QUE_FORE_(a_u32
, ctx
);
68 a_u32
*rhs
= A_QUE_BACK_(a_u32
, ctx
);
69 a_que_swap_(lhs
, rhs
);
71 a_que_foreach(a_u32
, *, it
, ctx
)
73 TEST_BUG(a_que_siz(ctx
) >= sizeof(*it
));
74 printf("%" PRIu32
" ", *it
);
77 a_que_foreach_reverse(a_u32
, *, it
, ctx
)
79 TEST_BUG(a_que_siz(ctx
) >= sizeof(*it
));
80 printf("%" PRIu32
" ", *it
);
83 for (a_u32 i
= 0; i
!= 5; ++i
)
87 for (a_u32 i
= 0; i
!= 5; ++i
)
97 static int small(void const *lhs
, void const *rhs
)
99 int a
= *a_int_(const *, lhs
);
100 int b
= *a_int_(const *, rhs
);
101 return (a
> b
) - (a
< b
);
104 static int large(void const *lhs
, void const *rhs
)
106 int a
= *a_int_(const *, lhs
);
107 int b
= *a_int_(const *, rhs
);
108 return (a
< b
) - (a
> b
);
111 static int rand10(void)
113 return a_cast_s(int, rand() / a_cast_s(double, RAND_MAX
) * 10); // NOLINT
116 static void test_sort(void)
118 unsigned int t
= a_cast_s(unsigned int, time(A_NULL
));
119 a_que
*ctx
= a_que_new(sizeof(int));
124 a_que_drop(ctx
, A_NULL
);
125 for (int i
= 0; i
!= 10; ++i
)
127 int *obj
= A_QUE_PUSH_FORE(int, ctx
);
132 a_que_sort_fore(ctx
, small
);
136 a_que_foreach(int, *, it
, ctx
)
138 if (x
>= 0) { TEST_BUG(x
<= *it
); }
146 a_que_drop(ctx
, dtor
);
148 for (int i
= 0; i
!= 10; ++i
)
150 int *obj
= A_QUE_PUSH_BACK(int, ctx
);
155 a_que_sort_back(ctx
, large
);
159 a_que_foreach(int, *, it
, ctx
)
161 if (x
>= 0) { TEST_BUG(x
>= *it
); }
169 a_que_drop(ctx
, dtor
);
171 for (int i
= 0; i
!= 10; ++i
)
174 int *obj
= A_QUE_PUSH_SORT(int, ctx
, &key
, small
);
182 a_que_foreach(int, *, it
, ctx
)
184 if (x
>= 0) { TEST_BUG(x
<= *it
); }
190 a_que_die(ctx
, dtor
);
194 int main(int argc
, char *argv
[]) // NOLINT(misc-definitions-in-headers)
198 printf("%s\n", A_FUNC
);