* 91893 Orsay, France
*/
+#include <isl_map_private.h>
#include <isl/ctx.h>
#include <isl/hash.h>
#include <isl/map.h>
#include <isl/set.h>
#include <isl_dim_private.h>
-#include <isl_map_private.h>
#include <isl_union_map_private.h>
#include <isl/union_set.h>
return isl_union_map_product(uset1, uset2);
}
+static int range_product_entry(void **entry, void *user)
+{
+ struct isl_union_map_bin_data *data = user;
+ isl_map *map2 = *entry;
+
+ map2 = isl_map_range_product(isl_map_copy(data->map),
+ isl_map_copy(map2));
+
+ data->res = isl_union_map_add_map(data->res, map2);
+
+ return 0;
+}
+
+__isl_give isl_union_map *isl_union_map_range_product(
+ __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
+{
+ return bin_op(umap1, umap2, &range_product_entry);
+}
+
__isl_give isl_union_map *isl_union_map_from_range(
__isl_take isl_union_set *uset)
{
static int inplace_entry(void **entry, void *user)
{
- __isl_give isl_map *(*fn)(__isl_take isl_map *) = user;
+ __isl_give isl_map *(*fn)(__isl_take isl_map *);
isl_map **map = (isl_map **)entry;
isl_map *copy;
+ fn = *(__isl_give isl_map *(**)(__isl_take isl_map *)) user;
copy = fn(isl_map_copy(*map));
if (!copy)
return -1;
return NULL;
if (isl_hash_table_foreach(umap->dim->ctx, &umap->table,
- &inplace_entry, fn) < 0)
+ &inplace_entry, &fn) < 0)
goto error;
return umap;
!sample)
goto error;
+ if (!sample)
+ sample = isl_basic_map_empty(isl_union_map_get_dim(umap));
+
isl_union_map_free(umap);
return sample;