diff options
author | Sven Verdoolaege <skimo@kotnet.org> | 2010-09-29 17:38:43 +0200 |
---|---|---|
committer | Sven Verdoolaege <skimo@kotnet.org> | 2010-10-09 18:32:41 +0200 |
commit | 15b05d776e7a765e9bc1e91155ef39a1a79e7aa5 (patch) | |
tree | 6252de20119904e5ebeca2816f3864f59dcd81e8 /isl_union_map.c | |
parent | 1deddb5cfa34a1ae0f1cd23b0c3da822f3650872 (diff) | |
download | isl-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.c | 27 |
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) { |