summaryrefslogtreecommitdiff
path: root/polly/lib/External/isl/isl_stream_read_with_params_templ.c
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/External/isl/isl_stream_read_with_params_templ.c')
-rw-r--r--polly/lib/External/isl/isl_stream_read_with_params_templ.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/polly/lib/External/isl/isl_stream_read_with_params_templ.c b/polly/lib/External/isl/isl_stream_read_with_params_templ.c
new file mode 100644
index 000000000000..59111c6a08c8
--- /dev/null
+++ b/polly/lib/External/isl/isl_stream_read_with_params_templ.c
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2011 Sven Verdoolaege
+ *
+ * Use of this software is governed by the MIT license
+ *
+ * Written by Sven Verdoolaege.
+ */
+
+#define xCAT(A,B) A ## B
+#define CAT(A,B) xCAT(A,B)
+#undef TYPE
+#define TYPE CAT(isl_,TYPE_BASE)
+
+/* Read an object of type "TYPE" from "s".
+ *
+ * In particular, first read the parameters and the opening brace.
+ * Then read the body that is specific to the object type.
+ * Finally, read the closing brace.
+ */
+__isl_give TYPE *FN(isl_stream_read,TYPE_BASE)(__isl_keep isl_stream *s)
+{
+ struct vars *v;
+ isl_set *dom;
+ TYPE *obj = NULL;
+
+ v = vars_new(s->ctx);
+ if (!v)
+ return NULL;
+
+ dom = isl_set_universe(isl_space_params_alloc(s->ctx, 0));
+ if (next_is_tuple(s)) {
+ dom = read_map_tuple(s, dom, isl_dim_param, v, 1, 0);
+ if (isl_stream_eat(s, ISL_TOKEN_TO))
+ goto error;
+ }
+ if (isl_stream_eat(s, '{'))
+ goto error;
+
+ obj = FN(isl_stream_read_with_params,TYPE_BASE)(s, dom, v);
+
+ if (isl_stream_eat(s, '}'))
+ goto error;
+
+ vars_free(v);
+ isl_set_free(dom);
+ return obj;
+error:
+ vars_free(v);
+ isl_set_free(dom);
+ FN(TYPE,free)(obj);
+ return NULL;
+}