2 * Copyright 2010 INRIA Saclay
4 * Use of this software is governed by the MIT license
6 * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
7 * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
11 __isl_give PW
*FN(PW
,insert_dims
)(__isl_take PW
*pw
, enum isl_dim_type type
,
12 unsigned first
, unsigned n
)
16 enum isl_dim_type set_type
;
19 n_piece
= FN(PW
,n_piece
)(pw
);
21 return FN(PW
,free
)(pw
);
22 if (n
== 0 && !isl_space_is_named_or_nested(pw
->dim
, type
))
25 set_type
= type
== isl_dim_in
? isl_dim_set
: type
;
27 space
= FN(PW
,take_space
)(pw
);
28 space
= isl_space_insert_dims(space
, type
, first
, n
);
29 pw
= FN(PW
,restore_space
)(pw
, space
);
31 for (i
= 0; i
< n_piece
; ++i
) {
35 domain
= FN(PW
,take_domain_at
)(pw
, i
);
36 domain
= isl_set_insert_dims(domain
, set_type
, first
, n
);
37 pw
= FN(PW
,restore_domain_at
)(pw
, i
, domain
);
38 el
= FN(PW
,take_base_at
)(pw
, i
);
39 el
= FN(EL
,insert_dims
)(el
, type
, first
, n
);
40 pw
= FN(PW
,restore_base_at
)(pw
, i
, el
);
46 __isl_give PW
*FN(PW
,add_dims
)(__isl_take PW
*pw
, enum isl_dim_type type
,
51 pos
= FN(PW
,dim
)(pw
, type
);
53 return FN(PW
,free
)(pw
);
55 return FN(PW
,insert_dims
)(pw
, type
, pos
, n
);