200 lines
5 KiB
Brainfuck
200 lines
5 KiB
Brainfuck
|
.\" $NetBSD: appen.B,v 1.5 2003/08/07 16:44:26 agc Exp $
|
||
|
.\"
|
||
|
.\" Copyright (c) 1980, 1993
|
||
|
.\" The Regents of the University of California. All rights reserved.
|
||
|
.\"
|
||
|
.\" Redistribution and use in source and binary forms, with or without
|
||
|
.\" modification, are permitted provided that the following conditions
|
||
|
.\" are met:
|
||
|
.\" 1. Redistributions of source code must retain the above copyright
|
||
|
.\" notice, this list of conditions and the following disclaimer.
|
||
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||
|
.\" notice, this list of conditions and the following disclaimer in the
|
||
|
.\" documentation and/or other materials provided with the distribution.
|
||
|
.\" 3. Neither the name of the University nor the names of its contributors
|
||
|
.\" may be used to endorse or promote products derived from this software
|
||
|
.\" without specific prior written permission.
|
||
|
.\"
|
||
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
|
.\" SUCH DAMAGE.
|
||
|
.\"
|
||
|
.\" @(#)appen.B 8.1 (Berkeley) 6/8/93
|
||
|
.\"
|
||
|
.ie t .oh '\*(Ln Appendix B''PS1:19-%'
|
||
|
.eh 'PS1:19-%''\*(Ln Appendix B'
|
||
|
.el .he ''\fIAppendix B\fR''
|
||
|
.bp
|
||
|
.(x
|
||
|
.ti 0
|
||
|
.b "Appendix B"
|
||
|
.)x
|
||
|
.nr $1 0
|
||
|
.sh 1 "The WINDOW structure"
|
||
|
.pp
|
||
|
The WINDOW structure is defined as follows:
|
||
|
.(l I
|
||
|
.so win_st.gr
|
||
|
.)l
|
||
|
.pp
|
||
|
.Vn \*_cury \\*
|
||
|
.(f
|
||
|
\**
|
||
|
All variables not normally accessed directly by the user
|
||
|
are named with an initial
|
||
|
.Bq \*_
|
||
|
to avoid conflicts with the user's variables.
|
||
|
.)f
|
||
|
and
|
||
|
.Vn \*_curx
|
||
|
are the current \*y for the window.
|
||
|
New characters added to the screen
|
||
|
are added at this point.
|
||
|
.Vn \*_maxy
|
||
|
and
|
||
|
.Vn \*_maxx
|
||
|
are the maximum values allowed for
|
||
|
.Vn \*_cury\*,\*_curx ). (
|
||
|
.Vn \*_begy
|
||
|
and
|
||
|
.Vn \*_begx
|
||
|
are the starting \*y on the terminal for the window,
|
||
|
.i i.e. ,
|
||
|
the window's home.
|
||
|
.Vn \*_cury ,
|
||
|
.Vn \*_curx ,
|
||
|
.Vn \*_maxy ,
|
||
|
and
|
||
|
.Vn \*_maxx
|
||
|
are measured relative to
|
||
|
.Vn \*_begy\*,\*_begx ), (
|
||
|
not the terminal's home.
|
||
|
.pp
|
||
|
.Vn \*_clear
|
||
|
tells if a clear-screen sequence is to be generated
|
||
|
on the next
|
||
|
.Fn refresh
|
||
|
call.
|
||
|
This is only meaningful for screens.
|
||
|
The initial clear-screen for the first
|
||
|
.Fn refresh
|
||
|
call is generated by initially setting clear to be TRUE for
|
||
|
.Vn curscr ,
|
||
|
which always generates a clear-screen if set,
|
||
|
irrelevant of the dimensions of the window involved.
|
||
|
.Vn \*_leave
|
||
|
is TRUE if the current \*y and the cursor
|
||
|
are to be left after the last character changed on the terminal,
|
||
|
or not moved if there is no change.
|
||
|
.Vn \*_scroll
|
||
|
is TRUE
|
||
|
if scrolling is allowed.
|
||
|
.pp
|
||
|
.Vn \*_y
|
||
|
is a pointer to an array of lines which describe the terminal.
|
||
|
Thus:
|
||
|
.(l
|
||
|
\*_y[i]
|
||
|
.)l
|
||
|
.lp
|
||
|
is a pointer to the
|
||
|
.Vn i th
|
||
|
line, and
|
||
|
.(l
|
||
|
\*_y[i][j]
|
||
|
.)l
|
||
|
.lp
|
||
|
is the
|
||
|
.Vn j th
|
||
|
character on the
|
||
|
.Vn i th
|
||
|
line.
|
||
|
.Vn \*_flags
|
||
|
can have one or more values
|
||
|
or'd into it.
|
||
|
.pp
|
||
|
For windows that are not subwindows,
|
||
|
.Vn \*_orig
|
||
|
is
|
||
|
NULL .
|
||
|
For subwindows,
|
||
|
it points to the main window
|
||
|
to which the window is subsidiary.
|
||
|
.Vn \*_nextp
|
||
|
is a pointer in a circularly linked list
|
||
|
of all the windows which are subwindows of the same main window,
|
||
|
plus the main window itself.
|
||
|
.pp
|
||
|
.Vn \*_firstch
|
||
|
and
|
||
|
.Vn \*_lastch
|
||
|
are
|
||
|
.Fn malloc ed
|
||
|
arrays which contain the index of the
|
||
|
first and last changed characters
|
||
|
on the line.
|
||
|
.Vn \*_ch\*_off
|
||
|
is the x offset for the window
|
||
|
in the
|
||
|
.Vn \*_firstch
|
||
|
and
|
||
|
.Vn \*_lastch
|
||
|
arrays for this window.
|
||
|
For main windows,
|
||
|
this is always 0;
|
||
|
for subwindows
|
||
|
it is the difference between the starting point of the main window
|
||
|
and that of the subindow,
|
||
|
so that change markers can be set relative to the main window.
|
||
|
This makes these markers global in scope.
|
||
|
.pp
|
||
|
All subwindows share the appropriate portions of
|
||
|
.Vn _y ,
|
||
|
.Vn _firstch ,
|
||
|
.Vn _lastch ,
|
||
|
and
|
||
|
.Vn _insdel
|
||
|
with their main window.
|
||
|
.pp
|
||
|
.b \*_ENDLINE
|
||
|
says that the end of the line for this window
|
||
|
is also the end of a screen.
|
||
|
.b \*_FULLWIN
|
||
|
says that this window is a screen.
|
||
|
.b \*_SCROLLWIN
|
||
|
indicates that the last character of this screen
|
||
|
is at the lower right-hand corner of the terminal;
|
||
|
.i i.e. ,
|
||
|
if a character was put there,
|
||
|
the terminal would scroll.
|
||
|
.b \*_FULLLINE
|
||
|
says that the width of a line is the same as the width of the terminal.
|
||
|
If
|
||
|
.b \*_FLUSH
|
||
|
is set,
|
||
|
it says that
|
||
|
.Fn fflush "" "" stdout
|
||
|
should be called at the end of each
|
||
|
.Fn refresh
|
||
|
.b \*_STANDOUT
|
||
|
says that all characters added to the screen
|
||
|
are in standout mode.
|
||
|
.b \*_INSDEL
|
||
|
is reserved for future use,
|
||
|
and is set by
|
||
|
.Fn idlok .
|
||
|
.Vn \*_firstch
|
||
|
is set to
|
||
|
.b \*_NOCHANGE
|
||
|
for lines on which there has been no change
|
||
|
since the last
|
||
|
.Fn refresh .
|