From: Sven Verdoolaege Date: Fri, 24 Jul 2009 10:22:14 +0000 (+0200) Subject: add isl_{set,map}_grow X-Git-Tag: isl-0.01~117 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=af0c9d07256d8a788eb80bdd7a63dd0a3a196628;p=platform%2Fupstream%2Fisl.git add isl_{set,map}_grow --- diff --git a/isl_map.c b/isl_map.c index b38030c..87e46a1 100644 --- a/isl_map.c +++ b/isl_map.c @@ -1434,6 +1434,42 @@ struct isl_set *isl_set_alloc(struct isl_ctx *ctx, return set; } +/* Make sure "map" has room for at least "n" more basic maps. + */ +struct isl_map *isl_map_grow(struct isl_map *map, int n) +{ + int i; + struct isl_map *grown = NULL; + + if (!map) + return NULL; + isl_assert(map->ctx, n >= 0, goto error); + if (map->n + n <= map->size) + return map; + grown = isl_map_alloc_dim(isl_map_get_dim(map), map->n + n, map->flags); + if (!grown) + goto error; + for (i = 0; i < map->n; ++i) { + grown->p[i] = isl_basic_map_copy(map->p[i]); + if (!grown->p[i]) + goto error; + grown->n++; + } + isl_map_free(map); + return grown; +error: + isl_map_free(grown); + isl_map_free(map); + return NULL; +} + +/* Make sure "set" has room for at least "n" more basic sets. + */ +struct isl_set *isl_set_grow(struct isl_set *set, int n) +{ + return (struct isl_set *)isl_map_grow((struct isl_map *)set, n); +} + struct isl_set *isl_set_dup(struct isl_set *set) { int i; diff --git a/isl_map_private.h b/isl_map_private.h index 8ce7533..0594d1e 100644 --- a/isl_map_private.h +++ b/isl_map_private.h @@ -20,6 +20,9 @@ struct isl_basic_set *isl_basic_set_extend_dim(struct isl_basic_set *base, struct isl_basic_set *isl_basic_set_add_constraints(struct isl_basic_set *bset1, struct isl_basic_set *bset2, unsigned pos); +struct isl_map *isl_map_grow(struct isl_map *map, int n); +struct isl_set *isl_set_grow(struct isl_set *set, int n); + int isl_basic_set_contains(struct isl_basic_set *bset, struct isl_vec *vec); struct isl_basic_set *isl_basic_set_alloc_dim(struct isl_dim *dim,