add isl_union_map_copy_map
authorSven Verdoolaege <skimo@kotnet.org>
Fri, 8 Apr 2011 07:47:04 +0000 (09:47 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Thu, 21 Apr 2011 11:13:11 +0000 (13:13 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
include/isl/union_map.h
include/isl/union_set.h
isl_union_map.c

index 5dcf358..fd59231 100644 (file)
@@ -99,6 +99,7 @@ __isl_give int isl_union_map_contains(__isl_keep isl_union_map *umap,
        __isl_keep isl_dim *dim);
 __isl_give isl_map *isl_union_map_extract_map(__isl_keep isl_union_map *umap,
        __isl_take isl_dim *dim);
+__isl_give isl_map *isl_union_map_copy_map(__isl_keep isl_union_map *umap);
 
 __isl_give isl_basic_map *isl_union_map_sample(__isl_take isl_union_map *umap);
 
index 1e647ec..bccc682 100644 (file)
@@ -63,6 +63,7 @@ __isl_give int isl_union_set_contains(__isl_keep isl_union_set *uset,
        __isl_keep isl_dim *dim);
 __isl_give isl_set *isl_union_set_extract_set(__isl_keep isl_union_set *uset,
        __isl_take isl_dim *dim);
+__isl_give isl_set *isl_union_set_copy_set(__isl_keep isl_union_set *uset);
 int isl_union_set_foreach_point(__isl_keep isl_union_set *uset,
        int (*fn)(__isl_take isl_point *pnt, void *user), void *user);
 
index 428a87c..b7323c0 100644 (file)
@@ -359,6 +359,33 @@ int isl_union_map_foreach_map(__isl_keep isl_union_map *umap,
                                      &call_on_copy, &data);
 }
 
+static int copy_map(void **entry, void *user)
+{
+       isl_map *map = *entry;
+       isl_map **map_p = user;
+
+       *map_p = isl_map_copy(map);
+
+       return -1;
+}
+
+__isl_give isl_map *isl_union_map_copy_map(__isl_keep isl_union_map *umap)
+{
+       isl_map *map = NULL;
+
+       if (!umap || umap->table.n == 0)
+               return NULL;
+
+       isl_hash_table_foreach(umap->dim->ctx, &umap->table, &copy_map, &map);
+
+       return map;
+}
+
+__isl_give isl_set *isl_union_set_copy_set(__isl_keep isl_union_set *uset)
+{
+       return isl_union_map_copy_map(uset);
+}
+
 __isl_give isl_map *isl_union_map_extract_map(__isl_keep isl_union_map *umap,
        __isl_take isl_dim *dim)
 {