#include #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; }