Add a new dumper
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Fri, 21 Apr 2006 11:31:02 +0000 (11:31 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Fri, 21 Apr 2006 11:31:02 +0000 (11:31 +0000)
made allocation simplier

[r7649]

ir/adt/bipartite.c
ir/adt/bipartite.h

index 9a169c9..9a1bb81 100644 (file)
@@ -8,18 +8,20 @@
 
 struct _bipartite_t {
        int n_left, n_right;
-       bitset_t **adj;
+       bitset_t *adj[1];
 };
 
 bipartite_t *bipartite_new(int n_left, int n_right)
 {
-       int i;
-       bipartite_t *gr = xmalloc(sizeof(*gr) + n_left * sizeof(void *));
+       int i, size;
+       bipartite_t *gr;
+
+       size = n_left > 0 ? n_left - 1 : 0;
+       gr = xmalloc(sizeof(*gr) + size * sizeof(void *));
        memset(gr, 0, sizeof(*gr));
 
        gr->n_left = n_left;
        gr->n_right = n_right;
-       gr->adj = (bitset_t**)(gr + 1);
 
        for(i = 0; i < n_left; ++i)
                gr->adj[i] = bitset_malloc(n_right);
@@ -129,7 +131,7 @@ void bipartite_matching(const bipartite_t *gr, int *matching)
        while(apply_alternating_path(gr, matching, matched_left, matched_right));
 }
 
-void bipartite_dump(FILE *f, const bipartite_t *gr)
+void bipartite_dump_f(FILE *f, const bipartite_t *gr)
 {
        int i;
 
@@ -138,3 +140,12 @@ void bipartite_dump(FILE *f, const bipartite_t *gr)
                fprintf(f, "\n");
        }
 }
+
+void bipartite_dump(const char *name, const bipartite_t *gr) {
+       FILE *f = fopen(name, "w");
+
+       if (f) {
+               bipartite_dump_f(f, gr);
+               fclose(f);
+       }
+}
index c24c99b..71b6ece 100644 (file)
@@ -21,6 +21,15 @@ void bipartite_add(bipartite_t *gr, int i, int j);
 void bipartite_remv(bipartite_t *gr, int i, int j);
 int bipartite_adj(const bipartite_t *gr, int i, int j);
 void bipartite_matching(const bipartite_t *gr, int *matching);
-void bipartite_dump(FILE *f, const bipartite_t *gr);
+
+/**
+ * Dumps a bipartite graph to a file stream.
+ */
+void bipartite_dump_f(FILE *f, const bipartite_t *gr);
+
+/**
+ * Dumps a bipartite graph to file name.
+ */
+void bipartite_dump(const char *name, const bipartite_t *gr);
 
 #endif /* _BIPARTITE_H */