\codebegin{0}{window\_obj = {\bf cluster} is create, display\_line, display, clear, redraw}\codeend
\comment{}{4}{Overview:}{ An {\em window\_obj} represents a portion of a screen on 
which messages can be printed. It is a mutable object.
}
\codebegin{4}{create = {\bf proc} (screen: ss, r, c, w, h: int) {\bf returns} (window\_obj)}\codeend
\codebegin{13}{{\bf signals} (bad\_param(string))}\codeend
\comment{}{8}{effects:}{ Creates a new window object. Signals bad\_param, and gives
which parameter is bad, if the row or column is not
valid for the screen given, or if the width or height
extend outside the bounds of the screen given the
starting point (row, col). 
}
\codebegin{4}{display\_line = {\bf proc} (wo: window\_obj, n: int, s: string) {\bf signals}(too\_long,no\_line)}\codeend
\comment{}{8}{modifies:}{ wo
}
\comment{}{8}{effects:}{ Prints a string s onto line n of the window area specified
by wo. Signals too\_long if the length of s is greater
than the width of the window area. Signals no\_line if n
is greater than the height of the window area.
}
\codebegin{4}{display = {\bf proc} (wo: window\_obj, s: string) {\bf signals}(too\_long)}\codeend
\comment{}{8}{modifies:}{ wo
}
\comment{}{8}{effects:}{ Prints an arbitrary length string s onto the window area
specified by wo, breaking it into lines at blank spaces
if necessary. If the string is too long to fit into the
area, or there is no good way to break the string up, 
signals too\_long.
}
\codebegin{4}{clear = {\bf proc} (wo: window\_obj)}\codeend
\comment{}{8}{modifies:}{ wo
}
\comment{}{8}{effects:}{ Clears the window area specified by wo.
}
\codebegin{4}{redraw = {\bf proc} (wo: window\_obj)}\codeend
\comment{}{8}{modifies:}{ wo
}
\comment{}{8}{effects:}{ Redraws the window area specified by wo.
}
\codebegin{0}{}\codeend
