1#ifndef ISL_SPACE_PRIVATE 2#define ISL_SPACE_PRIVATE 3 4#include <isl/space.h> 5#include <isl/hash.h> 6#include <isl/id.h> 7 8struct isl_name; 9struct isl_space { 10 int ref; 11 12 struct isl_ctx *ctx; 13 14 unsigned nparam; 15 unsigned n_in; /* zero for sets */ 16 unsigned n_out; /* dim for sets */ 17 18 isl_id *tuple_id[2]; 19 isl_space *nested[2]; 20 21 unsigned n_id; 22 isl_id **ids; 23}; 24 25__isl_give isl_space *isl_space_cow(__isl_take isl_space *dim); 26 27__isl_give isl_space *isl_space_underlying(__isl_take isl_space *dim, 28 unsigned n_div); 29 30uint32_t isl_space_get_hash(__isl_keep isl_space *dim); 31 32int isl_space_is_domain_internal(__isl_keep isl_space *space1, 33 __isl_keep isl_space *space2); 34int isl_space_is_range_internal(__isl_keep isl_space *space1, 35 __isl_keep isl_space *space2); 36 37__isl_give isl_space *isl_space_as_set_space(__isl_take isl_space *dim); 38 39unsigned isl_space_offset(__isl_keep isl_space *dim, enum isl_dim_type type); 40 41int isl_space_may_be_set(__isl_keep isl_space *dim); 42int isl_space_is_named_or_nested(__isl_keep isl_space *dim, enum isl_dim_type type); 43int isl_space_has_named_params(__isl_keep isl_space *dim); 44__isl_give isl_space *isl_space_reset(__isl_take isl_space *dim, 45 enum isl_dim_type type); 46__isl_give isl_space *isl_space_flatten(__isl_take isl_space *dim); 47__isl_give isl_space *isl_space_flatten_domain(__isl_take isl_space *dim); 48__isl_give isl_space *isl_space_flatten_range(__isl_take isl_space *dim); 49 50__isl_give isl_space *isl_space_replace(__isl_take isl_space *dst, 51 enum isl_dim_type type, __isl_keep isl_space *src); 52 53__isl_give isl_space *isl_space_lift(__isl_take isl_space *dim, unsigned n_local); 54 55__isl_give isl_space *isl_space_extend_domain_with_range( 56 __isl_take isl_space *domain, __isl_take isl_space *model); 57 58#endif 59