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 unsigned len = v->len;
23 vector *copy = obstack_alloc(&pbqp->obstack, sizeof(*copy) + sizeof(*copy->entries) * len);
28 memcpy(copy->entries, v->entries, sizeof(*copy->entries) * len);
33 void vector_add(vector *sum, vector *summand)
40 assert(sum->len == summand->len);
44 for (i = 0; i < len; ++i) {
45 sum->entries[i].data += summand->entries[i].data;
49 void vector_set(vector *vec, unsigned index, num value)
51 assert(index < vec->len);
52 vec->entries[index].data = value;
56 void vector_set_description(vector *vec, unsigned index, char *name)
58 assert(index < vec->len);
59 vec->entries[index].name = name;