singe/thirdparty/uthash/tests/test43.c
2023-10-23 19:38:18 -05:00

130 lines
4 KiB
C

#include <stdio.h>
#include "utarray.h"
typedef struct {
int a;
int b;
} intpair_t;
int main()
{
UT_array *pairs, *pairs_cpy;
intpair_t it, *ip;
UT_icd pairicd = { sizeof(intpair_t),NULL,NULL,NULL};
size_t zero=0;
utarray_new(pairs, &pairicd);
printf("length is %u\n", utarray_len(pairs));
it.a = 1;
it.b=2;
utarray_push_back(pairs, &it);
printf("push\n");
printf("length is %u\n", utarray_len(pairs));
ip = (intpair_t*)utarray_back(pairs);
printf("back is %d %d\n", ip->a, ip->b);
utarray_pop_back(pairs);
printf("pop\n");
printf("length is %u\n", utarray_len(pairs));
it.a = 1;
it.b=2;
utarray_push_back(pairs, &it);
printf("push\n");
it.a = 3;
it.b=4;
utarray_push_back(pairs, &it);
printf("push\n");
printf("length is %u\n", utarray_len(pairs));
ip=NULL;
while( (ip=(intpair_t*)utarray_next(pairs,ip)) != NULL ) {
printf("%d %d\n", ip->a, ip->b);
}
utarray_erase(pairs,0,1);
printf("erase [0]\n");
printf("length is %u\n", utarray_len(pairs));
while( (ip=(intpair_t*)utarray_next(pairs,ip)) != NULL ) {
printf("%d %d\n", ip->a, ip->b);
}
it.a = 1;
it.b=2;
utarray_push_back(pairs, &it);
printf("push\n");
while( (ip=(intpair_t*)utarray_next(pairs,ip)) != NULL ) {
printf("%d %d\n", ip->a, ip->b);
}
utarray_clear(pairs);
printf("clear\n");
printf("length is %u\n", utarray_len(pairs));
utarray_extend_back(pairs);
printf("extend\n");
ip = (intpair_t*)utarray_back(pairs);
printf("length is %u\n", utarray_len(pairs));
printf("ip points to [0] ? %s\n", (ip==(intpair_t*)utarray_front(pairs)) ? "yes" : "no");
it.a = 1;
it.b=2;
utarray_push_back(pairs, &it);
printf("push\n");
ip=NULL;
while( (ip=(intpair_t*)utarray_next(pairs,ip)) != NULL ) {
printf("%d %d\n", ip->a, ip->b);
}
utarray_erase(pairs,1,1);
printf("erase [1]\n");
printf("length is %u\n", utarray_len(pairs));
while( (ip=(intpair_t*)utarray_next(pairs,ip)) != NULL ) {
printf("%d %d\n", ip->a, ip->b);
}
it.a = 3;
it.b=4;
utarray_push_back(pairs, &it);
printf("push\n");
for(ip=(intpair_t*)utarray_front(pairs); ip!=NULL; ip=(intpair_t*)utarray_next(pairs,ip)) {
printf("%d %d\n", ip->a,ip->b);
}
ip = (intpair_t*)utarray_back(pairs);
printf("back is %d %d\n", ip->a, ip->b);
utarray_new(pairs_cpy, &pairicd);
utarray_concat(pairs_cpy, pairs);
printf("copy\n");
printf("cpy length is %u\n", utarray_len(pairs_cpy));
ip=NULL;
while( (ip=(intpair_t*)utarray_next(pairs_cpy,ip)) != NULL ) {
printf("cpy %d %d\n", ip->a, ip->b);
}
it.a=5;
it.b=6;
utarray_insert(pairs_cpy, &it, 0);
printf("insert cpy[0]\n");
printf("cpy length is %u\n", utarray_len(pairs_cpy));
while( (ip=(intpair_t*)utarray_next(pairs_cpy,ip)) != NULL ) {
printf("cpy %d %d\n", ip->a, ip->b);
}
utarray_erase(pairs_cpy,0,2);
printf("erase cpy [0] [1]\n");
printf("cpy length is %u\n", utarray_len(pairs_cpy));
while( (ip=(intpair_t*)utarray_next(pairs_cpy,ip)) != NULL ) {
printf("cpy %d %d\n", ip->a, ip->b);
}
utarray_inserta(pairs_cpy, pairs, 1);
printf("inserta at cpy[1]\n");
printf("cpy length is %u\n", utarray_len(pairs_cpy));
while( (ip=(intpair_t*)utarray_next(pairs_cpy,ip)) != NULL ) {
printf("cpy %d %d\n", ip->a, ip->b);
}
utarray_free(pairs_cpy);
printf("free cpy\n");
printf("length is %u\n", utarray_len(pairs));
utarray_resize(pairs, 30);
printf("resize to 30\n");
printf("length is %u\n", utarray_len(pairs));
while( (ip=(intpair_t*)utarray_next(pairs,ip)) != NULL ) {
printf("%d %d\n", ip->a, ip->b);
}
utarray_resize(pairs, 1);
printf("resize to 1\n");
printf("length is %u\n", utarray_len(pairs));
utarray_resize(pairs, zero);
printf("resize to 0\n");
printf("length is %u\n", utarray_len(pairs));
utarray_free(pairs);
printf("free\n");
return 0;
}