% | |
% Unbind the operators in an executable array or packedarray. Leaves the | |
% unbound array or the original object on the stack. | |
% | |
/unbind { | |
0 index xcheck | |
1 index type /arraytype eq | |
2 index type /packedarraytype eq or and { | |
dup length array copy cvx | |
dup 0 exch { | |
dup type /operatortype eq { | |
( ) cvs cvn cvx | |
} if | |
0 index xcheck | |
1 index type /arraytype eq | |
2 index type /packedarraytype eq or and { | |
unbind | |
} if | |
3 copy put pop | |
1 add | |
} forall | |
pop | |
} if | |
} def | |