8 vector *vector_alloc(pbqp *pbqp, unsigned length)
11 vector *vec = obstack_alloc(&pbqp->obstack, sizeof(*vec) + sizeof(*vec->entries) * length);
15 memset(vec->entries, 0, sizeof(*vec->entries) * length);
20 vector *vector_copy(pbqp *pbqp, vector *v)
22 vector *copy = obstack_alloc(&pbqp->obstack, sizeof(*copy) + sizeof(*copy->entries) * length);
26 unsigned len = v->len;
29 memcpy(copy->entries, v->entries, sizeof(*copy->entries) * len);
34 void vector_add(vector *sum, vector *summand)
41 assert(sum->len == summand->len);
45 for (i = 0; i < len; ++i) {
46 sum->entries[i].data += summand->entries[i].data;
50 void vector_set(vector *vec, unsigned index, num value)
52 assert(index < vec->len);
53 vec->entries[index].data = value;
57 void vector_set_description(vector *vec, unsigned index, char *name)
59 assert(index < vec->len);
60 vec->entries[index].name = name;