int qk_add(struct qk *qk, char *key, ...) { va_list ap; va_start(ap,key); UT_string *k = (UT_string*)utvector_extend(&qk->keys); utstring_printf_va(k,key,ap); va_end(ap); }
int main() { int i; UT_string *t; UT_vector v; utvector_init(&v, utstring_mm); UT_string s; utstring_init(&s); for(i=0; i<16; i++) { utstring_printf(&s, "."); utvector_push(&v, &s); } dump(&v); t = (UT_string*)utvector_head(&v); printf("head: %s %s\n", t?"non-null":"null", t?utstring_body(t):"-"); t = (UT_string*)utvector_tail(&v); printf("tail: %s %s\n", t?"non-null":"null", t?utstring_body(t):"-"); for(i=0; i<16; i++) { printf("shift\n"); utvector_shift(&v); t = (UT_string*)utvector_head(&v); printf("len: %d, head: %s %s\n", utvector_len(&v), t?"non-null":"null", t?utstring_body(t):"-"); } printf("extend\n"); t= (UT_string*)utvector_extend(&v); utstring_printf(t,"extended"); t = (UT_string*)utvector_head(&v); printf("len: %d, head: %s %s\n", utvector_len(&v), t?"non-null":"null", t?utstring_body(t):"-"); utvector_fini(&v); utstring_done(&s); return 0; }
int main() { int i; UT_string *t; UT_vector v; utvector_init(&v, utvector_utstring); UT_string s; utstring_init(&s); for(i=0; i<16; i++) { utstring_printf(&s, "."); utvector_push(&v, &s); } dump(&v); t = (UT_string*)utvector_head(&v); printf("head: %s %s\n", t?"non-null":"null", t?utstring_body(t):"-"); t = (UT_string*)utvector_tail(&v); printf("tail: %s %s\n", t?"non-null":"null", t?utstring_body(t):"-"); printf("extend\n"); t = (UT_string*)utvector_extend(&v); utstring_bincpy(t, "hello", 5); dump(&v); t = (UT_string*)utvector_head(&v); printf("head: %s %s\n", t?"non-null":"null", t?utstring_body(t):"-"); t = (UT_string*)utvector_tail(&v); printf("tail: %s %s\n", t?"non-null":"null", t?utstring_body(t):"-"); utvector_fini(&v); utstring_done(&s); return 0; }
void nbt_record_tag(struct nbt_tag *tag, off_t pos, uint32_t count, UT_vector /* of nbt_stack_frame */ *nbt_stack, UT_vector /* of struct nbt_record */ *records) { /* do not record each item of a list; we record the list itself */ nbt_stack_frame *top; top = (nbt_stack_frame*)utvector_tail(nbt_stack); if (top && (top->tag.type == TAG_List)) return; /* record the tag. prepend stack tags to "fully-qualify" the name */ struct nbt_record *r = (struct nbt_record*)utvector_extend(records); r->tag = *tag; r->pos = pos; r->count = count; nbt_stack_frame *f = NULL; while ( (f = (nbt_stack_frame*)utvector_next(nbt_stack,f))) { utstring_printf(&r->fqname, "%.*s.", (int)f->tag.len, f->tag.name); } utstring_printf(&r->fqname, "%.*s", (int)tag->len, tag->name); }
int main() { int i; UT_string *t; UT_vector v; utvector_init(&v, utvector_utstring); UT_string s; utstring_init(&s); for(i=0; i<16; i++) { utstring_printf(&s, "."); utvector_push(&v, &s); } dump(&v); printf("extend\n"); t = (UT_string*)utvector_extend(&v); utstring_bincpy(t, "hello", 5); dump(&v); utvector_fini(&v); utstring_done(&s); return 0; }
void utvector_push(UT_vector *v, void *e) { void *b = utvector_extend(v); if (v->mm.copy) v->mm.copy(b, e, 1); else memcpy(b, e, v->mm.sz); }