add isl_printer_print_vec
authorSven Verdoolaege <skimo@kotnet.org>
Sat, 15 Jan 2011 15:48:36 +0000 (16:48 +0100)
committerSven Verdoolaege <skimo@kotnet.org>
Sun, 16 Jan 2011 14:04:54 +0000 (15:04 +0100)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
include/isl/vec.h
isl_vec.c
polyhedron_minimize.c
polyhedron_sample.c

index a50a6fa..63d7ab6 100644 (file)
@@ -15,6 +15,7 @@
 #include <isl/int.h>
 #include <isl/ctx.h>
 #include <isl/blk.h>
+#include <isl/printer.h>
 
 #if defined(__cplusplus)
 extern "C" {
@@ -38,6 +39,8 @@ struct isl_vec *isl_vec_cow(struct isl_vec *vec);
 void isl_vec_free(struct isl_vec *vec);
 
 void isl_vec_dump(struct isl_vec *vec, FILE *out, int indent);
+__isl_give isl_printer *isl_printer_print_vec(__isl_take isl_printer *printer,
+       __isl_keep isl_vec *vec);
 
 void isl_vec_lcm(struct isl_vec *vec, isl_int *lcm);
 struct isl_vec *isl_vec_ceil(struct isl_vec *vec);
index 00b0332..bc68244 100644 (file)
--- a/isl_vec.c
+++ b/isl_vec.c
@@ -128,22 +128,41 @@ void isl_vec_free(struct isl_vec *vec)
        free(vec);
 }
 
-void isl_vec_dump(struct isl_vec *vec, FILE *out, int indent)
+__isl_give isl_printer *isl_printer_print_vec(__isl_take isl_printer *printer,
+       __isl_keep isl_vec *vec)
 {
        int i;
 
-       if (!vec) {
-               fprintf(out, "%*snull vec\n", indent, "");
-               return;
-       }
+       if (!printer || !vec)
+               goto error;
 
-       fprintf(out, "%*s[", indent, "");
+       printer = isl_printer_print_str(printer, "[");
        for (i = 0; i < vec->size; ++i) {
                if (i)
-                   fprintf(out, ",");
-               isl_int_print(out, vec->el[i], 0);
+                       printer = isl_printer_print_str(printer, ",");
+               printer = isl_printer_print_isl_int(printer, vec->el[i]);
        }
-       fprintf(out, "]\n");
+       printer = isl_printer_print_str(printer, "]");
+
+       return printer;
+error:
+       isl_printer_free(printer);
+       return NULL;
+}
+
+void isl_vec_dump(struct isl_vec *vec, FILE *out, int indent)
+{
+       isl_printer *printer;
+
+       if (!vec)
+               return;
+
+       printer = isl_printer_to_file(vec->ctx, out);
+       printer = isl_printer_set_indent(printer, indent);
+       printer = isl_printer_print_vec(printer, vec);
+       printer = isl_printer_end_line(printer);
+
+       isl_printer_free(printer);
 }
 
 __isl_give isl_vec *isl_vec_clr(__isl_take isl_vec *vec)
index d27d290..94fe7f5 100644 (file)
@@ -62,6 +62,7 @@ int main(int argc, char **argv)
        isl_int opt;
        unsigned dim;
        enum isl_lp_result res;
+       isl_printer *p;
 
        isl_int_init(opt);
        bset = isl_basic_set_read_from_file(ctx, stdin, 0);
@@ -86,9 +87,12 @@ int main(int argc, char **argv)
                fprintf(stdout, "unbounded\n");
                break;
        case isl_lp_ok:
-               isl_vec_dump(sol, stdout, 0);
-               isl_int_print(stdout, opt, 0);
-               fprintf(stdout, "\n");
+               p = isl_printer_to_file(ctx, stdout);
+               p = isl_printer_print_vec(p, sol);
+               p = isl_printer_end_line(p);
+               p = isl_printer_print_isl_int(p, opt);
+               p = isl_printer_end_line(p);
+               isl_printer_free(p);
        }
        isl_basic_set_free(bset);
        isl_vec_free(obj);
index 7d4fe18..8716513 100644 (file)
@@ -17,10 +17,14 @@ int main(int argc, char **argv)
        struct isl_ctx *ctx = isl_ctx_alloc();
        struct isl_basic_set *bset;
        struct isl_vec *sample;
+       isl_printer *p;
 
        bset = isl_basic_set_read_from_file(ctx, stdin, 0);
        sample = isl_basic_set_sample_vec(isl_basic_set_copy(bset));
-       isl_vec_dump(sample, stdout, 0);
+       p = isl_printer_to_file(ctx, stdout);
+       p = isl_printer_print_vec(p, sample);
+       p = isl_printer_end_line(p);
+       isl_printer_free(p);
        assert(sample);
        if (sample->size > 0)
                assert(isl_basic_set_contains(bset, sample));