1/*
2 * Copyright 2011 Sven Verdoolaege
3 *
4 * Use of this software is governed by the MIT license
5 *
6 * Written by Sven Verdoolaege.
7 */
8
9#define xCAT(A,B) A ## B
10#define CAT(A,B) xCAT(A,B)
11#undef TYPE
12#define TYPE CAT(isl_,TYPE_BASE)
13
14/* Read an object of type "TYPE" from "s".
15 *
16 * In particular, first read the parameters and the opening brace.
17 * Then read the body that is specific to the object type.
18 * Finally, read the closing brace.
19 */
20__isl_give TYPE *FN(isl_stream_read,TYPE_BASE)(__isl_keep isl_stream *s)
21{
22 struct vars *v;
23 isl_set *dom;
24 TYPE *obj = NULL;
25
26 v = vars_new(ctx: s->ctx);
27 if (!v)
28 return NULL;
29
30 dom = isl_set_universe(space: isl_space_params_alloc(ctx: s->ctx, nparam: 0));
31 if (next_is_tuple(s)) {
32 dom = read_map_tuple(s, map: dom, type: isl_dim_param, v, rational: 1, comma: 0);
33 if (isl_stream_eat(s, type: ISL_TOKEN_TO))
34 goto error;
35 }
36 if (isl_stream_eat(s, type: '{'))
37 goto error;
38
39 obj = FN(isl_stream_read_with_params,TYPE_BASE)(s, dom, v);
40
41 if (isl_stream_eat(s, type: '}'))
42 goto error;
43
44 vars_free(v);
45 isl_set_free(set: dom);
46 return obj;
47error:
48 vars_free(v);
49 isl_set_free(set: dom);
50 FN(TYPE,free)(pwaff: obj);
51 return NULL;
52}
53

source code of polly/lib/External/isl/isl_stream_read_with_params_templ.c