git: 9front

ref: b9d96c7baee1327e46d8e69e7d2caf119ae95bb4
dir: /sys/lib/postscript/prologues/unbind.ps/

View raw version
%
% 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