13 #define printf rtl_printf
17 #include "ul_utmalloc.h"
20 /*===========================================================*/
21 /* custom array definition */
23 #include "ul_gsacust.h"
25 typedef struct cust2_item {
27 /*gavl_node_t my_node;*/
31 typedef struct cust2_root {
32 gsa_array_field_t my_root;
38 typedef int cust2_key_t;
40 /* Custom array declarations */
42 GSA_CUST_DEC(cust2, cust2_root_t, cust2_item_t, cust2_key_t,
43 my_root, my_val, cust2_cmp_fnc)
46 cust2_cmp_fnc(const cust2_key_t *a, const cust2_key_t *b)
53 GSA_CUST_IMP(cust2, cust2_root_t, cust2_item_t, cust2_key_t,
54 my_root, my_val, cust2_cmp_fnc, 0)
56 cust2_root_t cust2_root;
61 void test_cust_array(void)
65 cust2_item_t *item, *item2;
67 item=malloc(sizeof(cust2_item_t));
69 if(cust2_insert(&cust2_root,item)<0)
70 printf("cust2_insert error\n");
72 printf("Custom array cust2 for_each:\n");
73 gsa_cust_for_each(cust2, &cust2_root, item)
74 printf("%d ",item->my_val);
78 printf("Custom array cust2 for_each_from %ld:\n", (long)k);
79 gsa_cust_for_each_from(cust2, &cust2_root, &k, item){
80 printf("After %d : ",item->my_val);
81 gsa_cust_for_each_after(cust2, &cust2_root, &item->my_val, item2)
82 printf(" %d",item2->my_val);
86 printf("Custom array cust2 delete 1-90:\n");
87 for(i=1;i<=100-10;i++){
88 item=cust2_find(&cust2_root,&i);
89 if(cust2_delete(&cust2_root,item)<0)
90 printf("cust2_delete error\n");
94 printf("Custom array cust2 for_each_rev:\n");
95 gsa_cust_for_each_rev(cust2,&cust2_root,item)
96 printf("%d ",item->my_val);
99 printf("Custom array cust2 for_each_cut:\n");
100 gsa_cust_for_each_cut(cust2,&cust2_root,item){
101 printf("%d ",item->my_val);
109 void test_cust_array_it(void)
117 item=malloc(sizeof(cust2_item_t));
119 if(cust2_insert(&cust2_root,item)<0)
120 printf("cust2_insert error\n");
122 printf("Custom array cust2 for each with iterator:\n");
123 for(cust2_first_it(&cust2_root, &it1);
124 (item=cust2_it2item(&it1));cust2_next_it(&it1))
125 printf("%d ",item->my_val);
129 printf("Custom array cust2 for_each_from %ld:\n", (long)k);
130 for(cust2_find_first_it(&cust2_root, &k, &it1);
131 (item=cust2_it2item(&it1));cust2_next_it(&it1)){
132 printf("After %d : ",item->my_val);
133 for(cust2_find_after_it(&cust2_root, &item->my_val, &it2);
134 (item=cust2_it2item(&it2));cust2_next_it(&it2))
135 printf(" %d",item->my_val);
139 printf("Custom array cust2 delete 1-90:\n");
140 for(i=1;i<=100-10;i++){
141 item=cust2_find(&cust2_root,&i);
142 if(cust2_delete(&cust2_root,item)<0)
143 printf("cust2_delete error\n");
147 printf("Custom array cust2 for_each_rev:\n");
148 for(cust2_last_it(&cust2_root, &it1);
149 (item=cust2_it2item(&it1));cust2_prev_it(&it1))
150 printf("%d ",item->my_val);
153 printf("Custom array cust2 for_each_cut:\n");
154 gsa_cust_for_each_cut(cust2,&cust2_root,item){
155 printf("%d ",item->my_val);
161 void test_cust_array_macro_it(void)
169 item=malloc(sizeof(cust2_item_t));
171 if(cust2_insert(&cust2_root,item)<0)
172 printf("cust2_insert error\n");
174 printf("Custom array cust2 for each with iterator:\n");
175 ul_for_each_it(cust2, &cust2_root, it1){
176 item=cust2_it2item(&it1);
177 printf("%d ",item->my_val);
182 printf("Custom array cust2 for_each_from %ld:\n", (long)k);
183 ul_for_each_from_it(cust2, &cust2_root, &k, it1){
184 item=cust2_it2item(&it1);
185 printf("After %d : ",item->my_val);
186 ul_for_each_after_it(cust2, &cust2_root, &item->my_val, it2){
187 item=cust2_it2item(&it2);
188 printf(" %d",item->my_val);
193 printf("Custom array cust2 delete 1-90:\n");
194 for(i=1;i<=100-10;i++){
195 item=cust2_find(&cust2_root,&i);
196 if(cust2_delete(&cust2_root,item)<0)
197 printf("cust2_delete error\n");
201 printf("Custom array cust2 for_each_rev:\n");
202 ul_for_each_rev_it(cust2, &cust2_root, it1){
203 item=cust2_it2item(&it1);
204 printf("%d ",item->my_val);
208 printf("Custom array cust2 for_each_cut:\n");
209 gsa_cust_for_each_cut(cust2,&cust2_root,item){
210 printf("%d ",item->my_val);
216 /*===========================================================*/
218 int main(int argc, char *argv[])
221 printf("\nCheck of for_each for C99 compliant compiler\n");
224 printf("\nCheck of iterators\n");
225 test_cust_array_it();
226 printf("\nCheck of for_each iterators\n");
227 test_cust_array_macro_it();
231 /*===========================================================*/
236 void * t1_routine(void *arg)
248 int init_module(void) {
249 return pthread_create (&t1, NULL, t1_routine, 0);
253 void cleanup_module(void) {
254 pthread_delete_np (t1);