36 S(
PW,un_op_control) *control)
42 n =
FN(
PW,n_piece)(pw);
44 return FN(
PW,free)(pw);
46 for (i =
n - 1; i >= 0; --i) {
50 el =
FN(
PW,take_base_at)(pw, i);
51 el = control->fn_base(el);
52 pw =
FN(
PW,restore_base_at)(pw, i, el);
54 if (!control->fn_domain)
61 pw =
FN(
PW,exploit_equalities_and_remove_if_empty)(pw, i);
64 if (!control->fn_space)
67 space =
FN(
PW,take_space)(pw);
68 space = control->fn_space(space);
69 pw =
FN(
PW,restore_space)(pw, space);