A ``zoidlist'' is a list of trapezoids, which represents a set of spatial regions. Like handles, zoidlists are created by certain functions, for use in other functions.

As in layer expressions, the logical operators can be applied to zoidlists, with the result being a new zoidlist representing the geometric result of the operation. Available operations include intersection (and), union (or), inversion, and clipping. See the section on math operators (15.6) for a discussion of the operations available on zoidlists.

There is a current ``reference'' zoidlist which represents the
``background''. If not explicitly set (with the `SetZref`
function), this is taken as the boundary of the current cell. The
reference is used in operations such as inversion and exclusive-or
where the size of the background must be assumed. Note that this
background can be an arbitrary shape.

In binary operators with zoidlists, if one of the operands is an integer, 0 represents an empty list, and nonzero represents the reference list.

If a zoidlist is given to one of the `Print` family of functions,
the coordinates are printed, one trapezoid per line, in order
x-lower-left, x-lower-right, y-lower, x-upper-left, x-upper-right,
y-upper.

Zoidlists can be assigned from other zoidlists, in which case a copy is made internally. If the assigned-to zoidlist already contained a list, that list is freed from memory.