From d89ca0bcfda81c42d3461e01bc2c760771c6547a Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Fri, 7 Aug 2009 21:31:27 +0200 Subject: [PATCH] add isl_vec_read_from_file --- isl_input.c | 42 ++++++++++++++++++++++++++++++++++++++++++ isl_vec.h | 3 +++ 2 files changed, 45 insertions(+) diff --git a/isl_input.c b/isl_input.c index 2ee8b1e..e56c427 100644 --- a/isl_input.c +++ b/isl_input.c @@ -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); +} diff --git a/isl_vec.h b/isl_vec.h index e5c7405..07b3418 100644 --- 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 -- 2.7.4