explicitly differentiate between spaces of maps, sets and parameter sets
commit9043b59e4de5587c954c865b183fe5339064a19f
authorSven Verdoolaege <skimo@kotnet.org>
Thu, 25 Aug 2011 17:21:05 +0000 (25 19:21 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Sat, 3 Sep 2011 19:43:08 +0000 (3 21:43 +0200)
treea2e8be819c4dd5769b3840b71f1dd34ef43de104
parent47ef24bfa2be8a377c8317843da1388eaa7279ca
explicitly differentiate between spaces of maps, sets and parameter sets

Before, no distinction was made internally between spaces of maps,
sets and parameter spaces.  In particular, an isl_space with zero
input and output dimensions could have been any of those.
When printing isl_sets and isl_maps, we could keep track of whether
the original object as a set or a map, but parametric domains and
zero-dimensional domains were still printed identically.

Now we explicitly keep track of whether a space is supposed to be
that of a map, set or parametric set.  This means for example that
"[N] -> { [] : N >= 0 }" and "[N] -> { : N >= 0 }" are no longer considered
to be identical.
This may break some code that was using one space in place of another,
especially since until recently there was no official way of creating
a parameter space.

The main advantage is that we can now recognize parameter spaces
and treat them appropriately.  In particular, the domains of affine
expressions can now be correctly identified as being either (possibly
zero-dimensional) sets or parameter domains.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/set.h
include/isl/space.h
isl_aff.c
isl_id.c
isl_id_private.h
isl_input.c
isl_map.c
isl_output.c
isl_space.c