Started implementing a new PBQP solver, which should solve PBQPs and the problems...
[libfirm] / kaps.c
1 #include "kaps.h"
2
3 static pbqp_node *get_node(pbqp *pbqp, int index)
4 {
5         return pbqp->nodes[index];
6 }
7
8 pbqp *alloc_pbqp(int number_nodes)
9 {
10         pbqp* pbqp = xmalloc(sizeof(*pbqp));
11
12         obstack_init(&pbqp->obstack);
13
14         pbqp->solution = 0;
15         pbqp->num_nodes = number_nodes;
16         pbqp->nodes = obstack_alloc(&pbqp->obstack, number_nodes
17                         * sizeof(*pbqp->nodes));
18 }
19
20 void free_pbqp(pbqp *pbqp)
21 {
22         obstack_free(&pbqp->obstack, NULL);
23         xfree(pbqp);
24 }
25
26 void add_node_costs(pbqp *pbqp, int node_index, vector *costs)
27 {
28         pbqp_node *node = get_node(pbqp, node_index);
29
30         if (node == NULL) {
31                 node = alloc_node(pbqp, costs);
32         } else {
33                 vector_add(node->costs, costs);
34         }
35 }