add isl_vec_read_from_file
authorSven Verdoolaege <skimo@kotnet.org>
Fri, 7 Aug 2009 19:31:27 +0000 (21:31 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Fri, 28 Aug 2009 17:42:19 +0000 (19:42 +0200)
isl_input.c
isl_vec.h

index 2ee8b1e..e56c427 100644 (file)
@@ -155,3 +155,45 @@ struct isl_set *isl_set_read_from_file(struct isl_ctx *ctx,
        else
                isl_assert(ctx, 0, return NULL);
 }
+
+static struct isl_vec *isl_vec_read_from_file_polylib(struct isl_ctx *ctx,
+               FILE *input)
+{
+       struct isl_vec *vec = NULL;
+       char line[1024];
+       char val[1024];
+       char *p;
+       unsigned size;
+       int j;
+       int n;
+       int offset;
+
+       isl_assert(ctx, next_line(input, line, sizeof(line)), return NULL);
+       isl_assert(ctx, sscanf(line, "%u", &size) == 1, return NULL);
+
+       vec = isl_vec_alloc(ctx, size);
+
+       p = next_line(input, line, sizeof(line));
+       isl_assert(ctx, p, goto error);
+
+       for (j = 0; j < size; ++j) {
+               n = sscanf(p, "%s%n", val, &offset);
+               isl_assert(ctx, n != 0, goto error);
+               isl_int_read(vec->el[j], val);
+               p += offset;
+       }
+
+       return vec;
+error:
+       isl_vec_free(vec);
+       return NULL;
+}
+
+struct isl_vec *isl_vec_read_from_file(struct isl_ctx *ctx,
+               FILE *input, unsigned input_format)
+{
+       if (input_format == ISL_FORMAT_POLYLIB)
+               return isl_vec_read_from_file_polylib(ctx, input);
+       else
+               isl_assert(ctx, 0, return NULL);
+}
index e5c7405..07b3418 100644 (file)
--- a/isl_vec.h
+++ b/isl_vec.h
@@ -31,6 +31,9 @@ void isl_vec_dump(struct isl_vec *vec, FILE *out, int indent);
 
 void isl_vec_lcm(struct isl_vec *vec, isl_int *lcm);
 
+struct isl_vec *isl_vec_read_from_file(struct isl_ctx *ctx,
+               FILE *input, unsigned input_format);
+
 #if defined(__cplusplus)
 }
 #endif