%!PS-Adobe-2.0 EPSF-1.2
%%BoundingBox: -5 75 392 315
%%Creator: Gisle Aas (Copyright 1998), Reini Urban (Copyright 2009, 2010, 2012)
%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
% arrow from sv_u.pvx
/Helvetica-Bold 9 SF
5 262 M (ARRAY) show
42 265 47 265 47 310 135 310 135 300 ptrn
/Courier 8 SF
40 302 M (hv) rshow
105 302 M (xpvhv) rshow
% gsave 0.8 setgray 55 285 105 300 rect F grestore
55 300 3 4 newbox
55 300 4 box
/Helvetica 11 SF
60 303 15 sub M
[(STASH) (MAGIC) (KEYS) (MAX)] {
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
% HE*[] box
gsave
0.8 setgray
130 285 140 300 rect F
150 285 240 300 rect F
grestore
gsave
yellow
240 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
240 302 M (HE*[]) rshow
242 302 M (MAX+1) show
183 300 break
% HvAUX at HE* max+1
% (RITER)(EITER)(PMROOT)(NAME)
% xpvhv_aux box
275 300 1 6 newbox
275 300 6 box
325 302 M (xpvhv_aux) rshow
/Helvetica 11 SF
280 303 15 sub M
[(NAME)(BACKREFS)(EITER)(RITER)(name_count)(MROMETA)] {
gsave
currentpoint 40 mws pop
grestore
0 -15 RM
} forall
% Pointer from HE max+1 to aux
245 292.5 275 292.5 ptrn
gsave 0.3 setgray [4 3] 2 setdash
325 262.5 340 262.5 340 77
115 77 115 230 130 230 ptrn % EITER
grestore
325 292.5 332 292.5 332 195 277 195 277 185 ptrn % NAME
% NAME string
gsave
275 185 translate 0.8 dup scale
8 2 M
/Courier 7 SF
(HvENAME_HEK) show
0 -2 (Foo::Bar) hek
grestore
% Pointer to first HE column
145 292.5 145 235 ptrn
gsave
130 235 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 261 230 264 rect fill %FILL
130 246 240 249 rect fill %MAX
red
0.5 setlinewidth
% FILL stuff
%140 260 M 140 265 L
%140 262.5 M 150 262.5 L
%150 265 M 150 265 L
% MAX length
130 250 M 130 245 L
130 247.5 M 240 247.5 L
240 250 M 240 245 L
stroke
240 247.5 M 236 249 L 236 246 L closepath fill
%130 262.5 M 134 264 L 134 261 L closepath fill
grestore