head 1.2; access; symbols perseant-exfatfs-base-20250801:1.2 perseant-exfatfs-base-20240630:1.2 perseant-exfatfs:1.2.0.36 perseant-exfatfs-base:1.2 cjep_sun2x:1.2.0.34 cjep_sun2x-base:1.2 cjep_staticlib_x-base1:1.2 cjep_staticlib_x:1.2.0.32 cjep_staticlib_x-base:1.2 phil-wifi-20200421:1.2 phil-wifi-20200411:1.2 phil-wifi-20200406:1.2 pgoyette-compat-merge-20190127:1.2 pgoyette-compat-20190127:1.2 pgoyette-compat-20190118:1.2 pgoyette-compat-1226:1.2 pgoyette-compat-1126:1.2 pgoyette-compat-1020:1.2 pgoyette-compat-0930:1.2 pgoyette-compat-0906:1.2 pgoyette-compat-0728:1.2 pgoyette-compat-0625:1.2 pgoyette-compat-0521:1.2 pgoyette-compat-0502:1.2 pgoyette-compat-0422:1.2 pgoyette-compat-0415:1.2 pgoyette-compat-0407:1.2 pgoyette-compat-0330:1.2 pgoyette-compat-0322:1.2 pgoyette-compat-0315:1.2 pgoyette-compat:1.2.0.30 pgoyette-compat-base:1.2 perseant-stdc-iso10646:1.2.0.28 perseant-stdc-iso10646-base:1.2 prg-localcount2-base3:1.2 prg-localcount2-base2:1.2 prg-localcount2-base1:1.2 prg-localcount2:1.2.0.26 prg-localcount2-base:1.2 pgoyette-localcount-20170426:1.2 bouyer-socketcan-base1:1.2 pgoyette-localcount-20170320:1.2 bouyer-socketcan:1.2.0.24 bouyer-socketcan-base:1.2 pgoyette-localcount-20170107:1.2 pgoyette-localcount-20161104:1.2 localcount-20160914:1.2 pgoyette-localcount-20160806:1.2 pgoyette-localcount-20160726:1.2 pgoyette-localcount:1.2.0.22 pgoyette-localcount-base:1.2 netbsd-5-2-3-RELEASE:1.2 netbsd-5-1-5-RELEASE:1.2 yamt-pagecache-base9:1.2 yamt-pagecache-tag8:1.2 tls-earlyentropy:1.2.0.18 tls-earlyentropy-base:1.2 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.2 riastradh-drm2-base3:1.2 netbsd-5-2-2-RELEASE:1.2 netbsd-5-1-4-RELEASE:1.2 netbsd-5-2-1-RELEASE:1.2 netbsd-5-1-3-RELEASE:1.2 agc-symver:1.2.0.20 agc-symver-base:1.2 tls-maxphys-base:1.2 yamt-pagecache-base8:1.2 netbsd-5-2:1.2.0.16 yamt-pagecache-base7:1.2 netbsd-5-2-RELEASE:1.2 netbsd-5-2-RC1:1.2 yamt-pagecache-base6:1.2 yamt-pagecache-base5:1.2 yamt-pagecache-base4:1.2 netbsd-5-1-2-RELEASE:1.2 netbsd-5-1-1-RELEASE:1.2 yamt-pagecache-base3:1.2 yamt-pagecache-base2:1.2 yamt-pagecache:1.2.0.14 yamt-pagecache-base:1.2 bouyer-quota2-nbase:1.2 bouyer-quota2:1.2.0.12 bouyer-quota2-base:1.2 matt-nb5-pq3:1.2.0.10 matt-nb5-pq3-base:1.2 netbsd-5-1:1.2.0.8 netbsd-5-1-RELEASE:1.2 netbsd-5-1-RC4:1.2 netbsd-5-1-RC3:1.2 netbsd-5-1-RC2:1.2 netbsd-5-1-RC1:1.2 netbsd-5-0-2-RELEASE:1.2 netbsd-5-0-1-RELEASE:1.2 jym-xensuspend-nbase:1.2 netbsd-5-0:1.2.0.6 netbsd-5-0-RELEASE:1.2 netbsd-5-0-RC4:1.2 netbsd-5-0-RC3:1.2 netbsd-5-0-RC2:1.2 jym-xensuspend:1.2.0.4 jym-xensuspend-base:1.2 netbsd-5-0-RC1:1.2 netbsd-5:1.2.0.2 netbsd-5-base:1.2 matt-mips64-base2:1.1.1.2 matt-mips64:1.1.1.2.0.54 mjf-devfs2:1.1.1.2.0.52 mjf-devfs2-base:1.1.1.2 netbsd-4-0-1-RELEASE:1.1.1.2 wrstuden-revivesa-base-3:1.1.1.2 wrstuden-revivesa-base-2:1.1.1.2 wrstuden-fixsa-newbase:1.1.1.2 wrstuden-revivesa-base-1:1.1.1.2 yamt-pf42-base4:1.1.1.2 yamt-pf42-base3:1.1.1.2 hpcarm-cleanup-nbase:1.1.1.2 yamt-pf42-baseX:1.1.1.2 yamt-pf42-base2:1.1.1.2 wrstuden-revivesa:1.1.1.2.0.50 wrstuden-revivesa-base:1.1.1.2 yamt-pf42:1.1.1.2.0.48 yamt-pf42-base:1.1.1.2 keiichi-mipv6-nbase:1.1.1.2 keiichi-mipv6:1.1.1.2.0.46 keiichi-mipv6-base:1.1.1.2 matt-armv6-nbase:1.1.1.2 matt-armv6-prevmlocking:1.1.1.2 wrstuden-fixsa-base-1:1.1.1.2 netbsd-4-0:1.1.1.2.0.44 netbsd-4-0-RELEASE:1.1.1.2 cube-autoconf:1.1.1.2.0.42 cube-autoconf-base:1.1.1.2 netbsd-4-0-RC5:1.1.1.2 netbsd-4-0-RC4:1.1.1.2 netbsd-4-0-RC3:1.1.1.2 netbsd-4-0-RC2:1.1.1.2 netbsd-4-0-RC1:1.1.1.2 matt-armv6:1.1.1.2.0.40 matt-armv6-base:1.1.1.2 matt-mips64-base:1.1.1.2 hpcarm-cleanup:1.1.1.2.0.38 hpcarm-cleanup-base:1.1.1.2 netbsd-3-1-1-RELEASE:1.1.1.2 netbsd-3-0-3-RELEASE:1.1.1.2 wrstuden-fixsa:1.1.1.2.0.36 wrstuden-fixsa-base:1.1.1.2 abandoned-netbsd-4-base:1.1.1.2 abandoned-netbsd-4:1.1.1.2.0.30 netbsd-3-1:1.1.1.2.0.32 netbsd-3-1-RELEASE:1.1.1.2 netbsd-3-0-2-RELEASE:1.1.1.2 netbsd-3-1-RC4:1.1.1.2 netbsd-3-1-RC3:1.1.1.2 netbsd-3-1-RC2:1.1.1.2 netbsd-3-1-RC1:1.1.1.2 netbsd-4:1.1.1.2.0.34 netbsd-4-base:1.1.1.2 chap-midi-nbase:1.1.1.2 netbsd-3-0-1-RELEASE:1.1.1.2 chap-midi:1.1.1.2.0.28 chap-midi-base:1.1.1.2 netbsd-3-0:1.1.1.2.0.26 netbsd-3-0-RELEASE:1.1.1.2 netbsd-3-0-RC6:1.1.1.2 netbsd-3-0-RC5:1.1.1.2 netbsd-3-0-RC4:1.1.1.2 netbsd-3-0-RC3:1.1.1.2 netbsd-3-0-RC2:1.1.1.2 netbsd-3-0-RC1:1.1.1.2 netbsd-2-0-3-RELEASE:1.1.1.2 netbsd-2-1:1.1.1.2.0.24 netbsd-2-1-RELEASE:1.1.1.2 netbsd-2-1-RC6:1.1.1.2 netbsd-2-1-RC5:1.1.1.2 netbsd-2-1-RC4:1.1.1.2 netbsd-2-1-RC3:1.1.1.2 netbsd-2-1-RC2:1.1.1.2 netbsd-2-1-RC1:1.1.1.2 netbsd-2-0-2-RELEASE:1.1.1.2 netbsd-3:1.1.1.2.0.22 netbsd-3-base:1.1.1.2 netbsd-2-0-1-RELEASE:1.1.1.2 netbsd-2:1.1.1.2.0.20 netbsd-2-base:1.1.1.2 netbsd-2-0-RELEASE:1.1.1.2 netbsd-2-0-RC5:1.1.1.2 netbsd-2-0-RC4:1.1.1.2 netbsd-2-0-RC3:1.1.1.2 netbsd-2-0-RC2:1.1.1.2 netbsd-2-0-RC1:1.1.1.2 netbsd-2-0:1.1.1.2.0.18 netbsd-2-0-base:1.1.1.2 netbsd-1-6-PATCH002-RELEASE:1.1.1.2 netbsd-1-6-PATCH002:1.1.1.2 netbsd-1-6-PATCH002-RC4:1.1.1.2 netbsd-1-6-PATCH002-RC3:1.1.1.2 netbsd-1-6-PATCH002-RC2:1.1.1.2 netbsd-1-6-PATCH002-RC1:1.1.1.2 netbsd-1-6-PATCH001:1.1.1.2 netbsd-1-6-PATCH001-RELEASE:1.1.1.2 netbsd-1-6-PATCH001-RC3:1.1.1.2 netbsd-1-6-PATCH001-RC2:1.1.1.2 netbsd-1-6-PATCH001-RC1:1.1.1.2 fvdl_fs64_base:1.1.1.2 netbsd-1-6-RELEASE:1.1.1.2 netbsd-1-6-RC3:1.1.1.2 netbsd-1-6-RC2:1.1.1.2 netbsd-1-6-RC1:1.1.1.2 netbsd-1-6:1.1.1.2.0.16 netbsd-1-6-base:1.1.1.2 netbsd-1-5-PATCH003:1.1.1.2 netbsd-1-5-PATCH002:1.1.1.2 netbsd-1-5-PATCH001:1.1.1.2 nvi_1_79:1.1.1.2 netbsd-1-5-RELEASE:1.1.1.2 netbsd-1-5-BETA2:1.1.1.2 netbsd-1-5-BETA:1.1.1.2 netbsd-1-4-PATCH003:1.1.1.2 netbsd-1-5-ALPHA2:1.1.1.2 netbsd-1-5:1.1.1.2.0.14 netbsd-1-5-base:1.1.1.2 minoura-xpg4dl-base:1.1.1.2 minoura-xpg4dl:1.1.1.2.0.12 netbsd-1-4-PATCH002:1.1.1.2 wrstuden-devbsize-19991221:1.1.1.2 wrstuden-devbsize:1.1.1.2.0.10 wrstuden-devbsize-base:1.1.1.2 comdex-fall-1999:1.1.1.2.0.8 comdex-fall-1999-base:1.1.1.2 netbsd-1-4-PATCH001:1.1.1.2 netbsd-1-4-RELEASE:1.1.1.2 netbsd-1-4:1.1.1.2.0.6 netbsd-1-4-base:1.1.1.2 netbsd-1-3-PATCH003:1.1.1.2 netbsd-1-3-PATCH003-CANDIDATE2:1.1.1.2 netbsd-1-3-PATCH003-CANDIDATE1:1.1.1.2 netbsd-1-3-PATCH003-CANDIDATE0:1.1.1.2 netbsd-1-3-PATCH002:1.1.1.2 netbsd-1-3-PATCH001:1.1.1.2 netbsd-1-3-RELEASE:1.1.1.2 netbsd-1-3-BETA:1.1.1.2 netbsd-1-3:1.1.1.2.0.2 netbsd-1-3-base:1.1.1.2 netbsd-1-2-PATCH001:1.1.1.2 netbsd-1-2-RELEASE:1.1.1.2 netbsd-1-2-BETA:1.1.1.2 netbsd-1-2:1.1.1.2.0.4 netbsd-1-2-base:1.1.1.2 nvi_1_66:1.1.1.2 BOSTIC:1.1.1 netbsd-1-1-PATCH001:1.1.1.1 netbsd-1-1-RELEASE:1.1.1.1 netbsd-1-1:1.1.1.1.0.4 netbsd-1-1-base:1.1.1.1 netbsd-1-0-PATCH06:1.1.1.1 netbsd-1-0-PATCH05:1.1.1.1 netbsd-1-0-PATCH04:1.1.1.1 netbsd-1-0-PATCH03:1.1.1.1 netbsd-1-0-PATCH02:1.1.1.1 netbsd-1-0-PATCH1:1.1.1.1 netbsd-1-0-PATCH0:1.1.1.1 netbsd-1-0-RELEASE:1.1.1.1 netbsd-1-0:1.1.1.1.0.2 nvi-1-34b:1.1.1.1 nvi-1-33b:1.1.1.1 netbsd-1-0-base:1.1.1.1 nvi-1-11b:1.1.1.1 bostic-nvi:1.1.1; locks; strict; comment @# @; 1.2 date 2008.10.29.16.49.36; author christos; state dead; branches; next 1.1; 1.1 date 94.03.28.03.01.30; author cgd; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 94.03.28.03.01.31; author cgd; state Exp; branches; next 1.1.1.2; 1.1.1.2 date 96.05.20.02.02.52; author mrg; state Exp; branches; next ; desc @@ 1.2 log @bye old vi! @ text @# @@(#)structures 5.2 (Berkeley) 11/1/93 There are three major data structures in this package. The first is a single global structure (named GS) which contains information common to all files and screens. It's really pretty tiny, and functions more as a single place to hang things than anything else. The second and third structures are the file structures (named EXF) and the screen structures (named SCR). They contain information theoretically unique to a screen or file, respectively. Each SCR structure has a set of functions which update the screen and/or return information about the screen from the underlying screen package. The GS structure contains linked lists SCR structures. The structures can also be classed by persistence. The GS structure never goes away and the SCR structure persists over instances of files. File names have different properties than files themselves, so the name information for a file is held in an FREF structure which is chained from the SCR structure. In general, functions are always passed an SCR structure and often an EXF structure as well. The SCR structure is necessary for any routine that wishes to talk to the screen, the EXF structure is necessary for any routine that wants to modify the file. The relationship between an SCR structure and its underlying EXF structure is not fixed, and although you can translate from an SCR to the underlying EXF, it is discouraged. If this becomes too onerous, I suspect I'll just stop passing around the EXF in the future. The naming of the structures is consistent across the program. (Macros even depend on it, so don't try and change it!) The global structure is "gp", the screen structure is "sp", and the file structure is "ep". A few other data structures: TEXT In nvi/cut.h. This structure describes a portion of a line, and is used by the input routines and as the "line" part of a cut buffer. CB In nvi/cut.h. A cut buffer. A cut buffer is a place to hang a list of TEXT structures. MARK In nvi/mark.h. A cursor position, consisting of a line number and a column number. MSG In nvi/msg.h. A chain of messages for the user. SEQ In nvi/seq.h. An abbreviation or a map entry. EXCMDARG In nvi/ex/excmd.h.stub. The structure that gets passed around to the functions that implement the ex commands. (The main ex command loop (see nvi/ex/ex.c) builds this up and then passes it to the ex functions.) VICMDARG In nvi/vi/vcmd.h. The structure that gets passed around to the functions that implement the vi commands. (The main vi command loop (see nvi/vi/vi.c) builds this up and then passes it to the vi functions.) @ 1.1 log @Initial revision @ text @@ 1.1.1.1 log @nvi/nex 1.11beta from bostic. @ text @@ 1.1.1.2 log @import of nvi 1.66 @ text @d1 1 a1 1 # @@(#)structures 5.4 (Berkeley) 10/4/95 d3 14 a16 18 There are three major data structures in this package, plus a single data structure per screen type. The first is a single global structure (GS) which contains information common to all files and screens. It hold global things like the input key queues, and functions as a single place to hang things. For example, interrupt routines have to be able to find screen structures, and they can only do this if they have a starting point. The number of globals in nvi is dependent on the screen type, but every screen type will have at least one global, __global_list, which references the GS structure. The GS structure contains linked lists of screen (SCR) structures. Each SCR structure normally references a file (EXF) structure. The GS structure has a set of functions which update the screen and/or return information about the screen from the underlying screen package. The GS structure never goes away. The SCR structure persists over instances of screens, and the EXF structure persists over references to files. d22 8 a29 7 In general, functions are always passed an SCR structure, which usually references an underlying EXF structure. The SCR structure is necessary for any routine that wishes to talk to the screen, the EXF structure is necessary for any routine that wants to modify the file. The relationship between an SCR structure and its underlying EXF structure is not fixed, and various ex commands will substitute a new EXF in place of the current one, and there's no way to detect this. a43 3 CL The curses screen private data structure. Everything to do standalone curses screens. d51 5 a55 7 TK The Tcl/Tk screen private data structure. Everything to do standalone Tcl/Tk screens. EXCMD In nvi/ex/ex.h. The structure that gets passed around to the functions that implement the ex commands. (The main ex command loop (see nvi/ex/ex.c) builds this up and then passes it to the ex functions.) d57 2 a58 1 VICMD In nvi/vi/vi.h. The structure that gets passed around to the @