%!PS-Adobe-2.0 EPSF-1.2
%%BoundingBox: -5 97 307 310
%%Creator: Gisle Aas (Copyright 1998)
%require "common.ps"
%require "sv.ps"
%require "box.ps"
%require "rect.ps"
%require "mws.ps"
%require "ptr.ps"
%require "he.ps"
%require "chararray.ps"
%require "break.ps"
0 300 sv
/Courier 8 SF
40 302 M (hv) rshow
105 302 M (xpvhv) rshow
gsave
0.8 setgray
55 225 105 240 rect F
grestore
55 300 8 11 newbox
55 300 11 box
/Helvetica 11 SF
60 303 15 sub M
[(ARRAY)(FILL)(MAX)(KEYS)(NVX)(MAGIC)(STASH)(RITER)(EITER)(PMROOT)(NAME)] {
gsave
currentpoint 30 mws pop
grestore
0 -15 RM
} forall
% Some pointer arrows
97.5 292.5 130 ptr1 % ARRAY
%97.5 217.5 130 ptr1 % MAGIC
%97.5 202.5 130 ptr1 % STASH
gsave 0.3 setgray [4 3] 2 setdash
97.5 172.5 115 172.5 115 245 130 245 ptrn % EITER
grestore
97.5 142.5 115 142.5 115 110 ptrn % NAME
% NAME string
gsave
113 110 translate 0.8 dup scale
0 0 [(F)(o)(o)(:)(:)(B)(a)(r)(\\0)] chararray
grestore
% HE*[] box
gsave
0.8 setgray
130 285 140 300 rect F
150 285 220 300 rect F
230 285 250 300 rect F
grestore
0.5 setlinewidth
140 10 240 {
dup dup 285 M 300 L S
5 sub 292.5 ptrn % NULL pointer marks
} for
245 292.5 ptrn % last NULL pointer
1 LW
130 285 250 300 rect S
/Courier 8 SF
250 302 M (HE*[]) rshow
183 300 break
% Pointer to first HE column
145 292.5 145 250 ptrn
gsave
130 250 translate
0.7 dup scale
0 0 (abc) true he
0 -70 (foobar) true he
0 -140 (baz) false he
grestore
% Pointer to second HE column
225 292.5 255 250 ptrn
gsave
245 250 translate
0.4 dup scale
0 0 (foo) true he
0 -70 (bar) false he
grestore
% Illustrate FILL/MAX
gsave
% white background for the red arrow
1 setgray
130 276 230 279 rect fill %FILL
130 261 240 264 rect fill %MAX
red
0.5 setlinewidth
% FILL stuff
140 275 M 140 280 L
140 277.5 M 150 277.5 L
150 275 M 150 280 L
220 275 M 220 280 L
220 277.5 M 230 277.5 L
230 275 M 230 280 L
% MAX length
130 265 M 130 260 L
130 262.5 M 240 262.5 L
240 265 M 240 260 L
stroke
240 262.5 M 236 264 L 236 261 L closepath fill
%130 262.5 M 134 264 L 134 261 L closepath fill
grestore