summaryrefslogtreecommitdiff
path: root/isl_union_map.c
diff options
context:
space:
mode:
authorSven Verdoolaege <skimo@kotnet.org>2010-09-29 17:38:43 +0200
committerSven Verdoolaege <skimo@kotnet.org>2010-10-09 18:32:41 +0200
commit15b05d776e7a765e9bc1e91155ef39a1a79e7aa5 (patch)
tree6252de20119904e5ebeca2816f3864f59dcd81e8 /isl_union_map.c
parent1deddb5cfa34a1ae0f1cd23b0c3da822f3650872 (diff)
downloadisl-15b05d776e7a765e9bc1e91155ef39a1a79e7aa5.tar.gz
isl-15b05d776e7a765e9bc1e91155ef39a1a79e7aa5.tar.bz2
isl-15b05d776e7a765e9bc1e91155ef39a1a79e7aa5.zip
add isl_union_set_extract_set
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
Diffstat (limited to 'isl_union_map.c')
-rw-r--r--isl_union_map.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/isl_union_map.c b/isl_union_map.c
index eef544da..ef334208 100644
--- a/isl_union_map.c
+++ b/isl_union_map.c
@@ -359,6 +359,33 @@ int isl_union_map_foreach_map(__isl_keep isl_union_map *umap,
&call_on_copy, &data);
}
+__isl_give isl_map *isl_union_map_extract_map(__isl_keep isl_union_map *umap,
+ __isl_take isl_dim *dim)
+{
+ uint32_t hash;
+ struct isl_hash_table_entry *entry;
+
+ if (!umap || !dim)
+ goto error;
+
+ hash = isl_dim_get_hash(dim);
+ entry = isl_hash_table_find(umap->dim->ctx, &umap->table, hash,
+ &has_dim, dim, 0);
+ if (!entry)
+ return isl_map_empty(dim);
+ isl_dim_free(dim);
+ return isl_map_copy(entry->data);
+error:
+ isl_dim_free(dim);
+ return NULL;
+}
+
+__isl_give isl_set *isl_union_set_extract_set(__isl_keep isl_union_set *uset,
+ __isl_take isl_dim *dim)
+{
+ return (isl_set *)isl_union_map_extract_map(uset, dim);
+}
+
int isl_union_set_foreach_set(__isl_keep isl_union_set *uset,
int (*fn)(__isl_take isl_set *set, void *user), void *user)
{