blob: f5778f1100e5a8f45a855744eb651a52876cfa34 [file] [log] [blame]
%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: libg++.dvi
%%Pages: 126 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 1 44 360 300 dfs[<0030000078000078000078
000078000078000078000078000078007FFFF0FFFFF8FFFFF87FFFF00078000078000078000078
00007800007800007800007800003000>21 22 126 153 31 43 D E /Fb
1 59 df<70F8F8F87005057D840C>58 D E /Fc 46 122 df<0001F8000FFE001E0E00781F00F0
1F00F03E01E01E01E00001E00001E00001E00003C0003FFFFC3FFFFC03C07C03C03C03C03C0780
780780780780780780780780780780780F00F00F00F00F00F00F00F00F00F00F00F01F01F0FFC7
FEFF87FE18207F9F19>12 D<0000FC0FC00007FE7FF0001F07F070007C0FC0F800F01F80F800F0
1F81F001E00F00F001E00F000001E00F000001E00F000001E00F000003C01E00003FFFFFFFE03F
FFFFFFE003C01E03E003C01E01E003C01E01E007803C03C007803C03C007803C03C007803C03C0
07803C03C007803C03C00F007807800F007807800F007807800F007807800F007807800F007807
801F00F80F80FFC7FE7FF0FFC7FE7FF025207F9F26>14 D<1C07003E0F807E1F807E1F807F1FC0
3E0F800601800601800C03000C0300180600380E00701C00E03800401000120F7A9F17>34
D<387C7EFE7E3E06060C0C183060C080070F7D850D>44 D<387C7EFC7C3807067D850D>46
D<000C003C01F81FF81E7800780078007800F000F000F000F000F000F001E001E001E001E001E0
01E003C003C003C003C003C003C007C0FFFEFFFE0F1D7C9C17>49 D<007E0001FF800383E00783
E00F81F00F83F00F83F00F03E00003E00007C0000780001F0000FE0000F800000E00000F800007
800007C00007C00007C0380FC07C0FC0FC0FC0FC0F80F81F80F01F00707E003FF8000FE000141D
7D9C17>51 D<001F80007FC000F0E003C1E00783E00F03E00F03C01E00003E00003C00003C0000
7CFC007FFE007E0700FC0780FC0780F807C0F807C0F807C0F807C0F00F80F00F80F00F80F00F00
701E00781E003838001FF00007C000131D7C9C17>54 D<00003800000038000000780000007800
0000F8000000FC000001FC000001FC0000037C0000037C0000067E0000063E00000C3E00000C3E
0000183E0000183E0000303F0000301F0000601F0000601F0000FFFF0000FFFF0001801F800180
0F8003000F8003000F8006000F8006000F801F000FC0FFC0FFFCFFC0FFFC1E1F7E9E22>65
D<0003F808000FFE18003F077800F801F801F000F003E000F007C000700F8000701F8000701F00
00703F0000603E0000607E0000007E0000007E0000007E000000FC000000FC000000FC000000FC
0000007C0000C07C0000C07C0001807E0001803E0003001E0007001F0006000F801C0003E07000
01FFE000003F80001D1F7B9E21>67 D<07FFFFFC07FFFFFC003E007C003E003C007C001C007C00
1C007C001C007C001C007C001C007C061800F80C1800F80C0000F80C0000F83C0000FFFC0000FF
FC0001F0380001F0180001F0180001F0180C01F0181801F0001803E0001803E0003003E0003003
E0007003E000E003E001E007E007E07FFFFFC0FFFFFFC01E1F7F9E1F>69
D<0001FC04000FFF0C003F03BC00FC00FC01F0007803E0007807C000380F8000380F8000381F00
00383F0000303E0000307E0000007E0000007E0000007E000000FC000000FC000000FC00FFFCFC
00FFFC7C0003E07C0003E07C0007C03E0007C03E0007C01F0007C00F0007C007C00FC003F03B80
01FFF180003F80801E1F7B9E24>71 D<07FFE3FFF007FFE3FFF0003E003E00003E003E00007C00
7C00007C007C00007C007C00007C007C00007C007C00007C007C0000F800F80000F800F80000F8
00F80000F800F80000FFFFF80000FFFFF80001F001F00001F001F00001F001F00001F001F00001
F001F00001F001F00003E003E00003E003E00003E003E00003E003E00003E003E00003E003E000
07E007E0007FFE7FFE00FFFC7FFE00241F7F9E22>I<07FFF007FFF0003E00003E00007C00007C
00007C00007C00007C00007C0000F80000F80000F80000F80000F80000F80001F00001F00001F0
0001F00001F00001F00003E00003E00003E00003E00003E00003E00007E000FFFE00FFFE00141F
809E10>I<07FFF80007FFF800003E0000003E0000007C0000007C0000007C0000007C0000007C
0000007C000000F8000000F8000000F8000000F8000000F8000000F8000001F0000001F0000001
F0000001F000C001F000C001F0018003E0018003E0018003E0038003E0030003E0070003E00F00
07E03F007FFFFE00FFFFFE001A1F7F9E1C>76 D<07FE00007FF007FE0000FFF0003F0000FE0000
3F0001BE00006F0001FC00006F00037C00006F00037C00006780067C00006780067C000067800C
7C0000C7800CF80000C78018F80000C3C018F80000C3C030F80000C3C030F80000C3C060F80001
83C061F0000183C0C1F0000181E0C1F0000181E181F0000181E301F0000181E301F0000301E603
E0000300F603E0000300FC03E0000300FC03E0000300F803E0000700F803E0000F807007E0007F
F0707FFE00FFF060FFFE002C1F7F9E2A>I<07FE00FFF007FF00FFF0003F001F00003F800E0000
6F800C00006FC00C000067C00C000067E00C000063E00C000063F00C0000C1F0180000C1F81800
00C0F8180000C0F8180000C07C180000C07C180001803E300001803E300001803F300001801F30
0001801FB00001800FB00003000FE000030007E000030007E000030003E000030003E000070001
E0000F8001C0007FF000C000FFF000C000241F7F9E22>I<0003F800001FFE00007C1F0000F007
8001E003C003C003E007C001E00F8001F01F0001F01F0001F03F0001F83E0001F87E0001F87E00
01F87E0001F87E0001F8FC0003F0FC0003F0FC0003F0FC0003E0FC0007E07C0007E07C0007C07E
000F803E001F803E001F001F003E000F80780007C1F00003FFC000007F00001D1F7B9E23>I<07
FFFF8007FFFFE0003E03F0003E00F8007C00F8007C00FC007C00FC007C00FC007C00FC007C00FC
00F801F800F801F800F801F000F803E000F80FC000FFFF0001FFFC0001F0000001F0000001F000
0001F0000001F0000003E0000003E0000003E0000003E0000003E0000003E0000007E000007FFE
0000FFFE00001E1F7F9E1F>I<07FFFE0007FFFF80003E07E0003E01F0007C01F0007C01F8007C
01F8007C01F8007C01F8007C01F000F803F000F803E000F807C000F80F8000FFFE0000FFF80001
F03C0001F01E0001F01E0001F01E0001F01F0001F01F0003E03F0003E03F0003E03F0003E03F00
03E03F0303E03F0607E01F867FFE0FFCFFFE03F8201F7F9E21>82 D<003F0400FFDC01E0FC03C0
7C0780380700380F00180F00180F00180F00000F80000FC0000FFC000FFF0007FFC003FFC001FF
E0001FE00003F00001F00001F00001F06001E06001E06001E07001C07003C0780380FE0F00EFFE
0081F800161F7D9E19>I<FFFE1FFEFFFE1FFE07C003E007C001C00F8001800F8001800F800180
0F8001800F8001800F8001801F0003001F0003001F0003001F0003001F0003001F0003003E0006
003E0006003E0006003E0006003E0006003E0006003C000C003C000C003C0018003E0018001E00
30000E0060000781C00003FF000000FC00001F1F7A9E22>85 D<FFF807FEFFF807FE0F8001F00F
8000C00F8000C00FC0018007C0038007C0030007C0070007C0060007E00C0003E00C0003E01800
03E0180003E0300003F0300001F0600001F0600001F0C00001F0C00001F9800000FB800000FB00
0000FF000000FE000000FC0000007C0000007800000078000000700000007000001F1F7A9E22>
I<0601800E03801C0700380E00300C00601800601800C03000C03000F83E00FC3F00FC3F00FC3F
00FC3F00781E00110F799F17>92 D<01FC0007FF000F87800F83C00F03C00603C00003C00003C0
01FFC00FFFC01F83C03E07807C0780F80798F80798F80F98F80F987C3FB03FF7E01F83C015147E
9317>97 D<0780003F80007F80000F80000780000F00000F00000F00000F00000F00000F00001E
00001E3F001EFF801FC3C01F01E01E01E03C01F03C01F03C01F03C01F03C01F03C01F07803E078
03E07803E07803C07807807C0F00FE1E00E7FC00C1F00014207C9F19>I<01FC07FE0F1F1E1F3C
1E7C0C7800F800F800F800F800F000F000F000F800F806780C3C181FF00FC010147C9314>I<00
00780003F80007F80000F80000780000F00000F00000F00000F00000F00000F00001E001F1E007
FDE00F07E01E03E03C01E07C03C07803C0F803C0F803C0F803C0F803C0F00780F00780F00780F0
0780F00F80781F80783F803FEFF00F8FF015207C9F19>I<00F80007FE000F0F001E0F003C0780
7C0780780780F80780FFFF80FFFF80F80000F00000F00000F00000F00000F803007806003E0C00
1FF80007E00011147D9314>I<0003E0000FF0003CF80078F800F0F000F0F001E00001E00001E0
0001E00001E00003C0003FFC003FFC0003C00003C00003C0000780000780000780000780000780
000780000F00000F00000F00000F00000F00000F00001F0000FFF000FFF00015207F9F0E>I<00
3F0E00FFFF01E1FF03C1F607C0F00781F00F81F00F81F00F81E00783E00783C007FF000EFC000C
00001C00001E00001FFF000FFFC00FFFE01FFFF03C00F0700078700078E00070E000707000F070
01E03C07C01FFF0003F800181E809317>I<00F00007F0000FF00001F00000F00001E00001E000
01E00001E00001E00001E00003C00003C7E003DFF003F87803E07803C07807C078078078078078
0780780780780780780F00F00F00F00F00F00F00F00F00F00F00F01F01F0FFE7FEFFE7FE17207F
9F19>I<00E001F003F003F003E001C00000000000000000000001C01FC01FC007C003C0078007
8007800780078007800F000F000F000F000F000F001F00FFC0FFC00C1F7F9E0D>I<00F00007F0
000FF00001F00000F00001E00001E00001E00001E00001E00001E00003C00003C3FE03C3FE03C1
F003C1C003C380078600078C00079C0007BC0007FE0007FE000F1E000F1F000F0F000F0F800F07
800F07C01F07E0FFCFF8FFCFF817207F9F18>107 D<00F007F00FF001F000F001E001E001E001
E001E001E003C003C003C003C003C003C00780078007800780078007800F000F000F000F000F00
0F001F00FFE0FFE00C207F9F0D>I<03C3F01F801FCFF87FC03FF83DC1E007E03F01E003E03F01
E007C03E01E007803C01E007803C01E007803C01E007803C01E007803C01E00F007803C00F0078
03C00F007803C00F007803C00F007803C00F007803C01F00F807C0FFE7FF3FF8FFE7FF3FF82514
7F9327>I<03C7E01FDFF03FF87807E07803C07807C0780780780780780780780780780780780F
00F00F00F00F00F00F00F00F00F00F00F01F01F0FFE7FEFFE7FE17147F9319>I<00FC0003FF00
0F87801E03C03C01E03C01E07801F0F801F0F801F0F801F0F801F0F003E0F003E0F003C0F003C0
F00780780F003C1E001FFC0007E00014147D9317>I<00F1F80007F7FC000FFE1E0000F81F0000
F00F0001E00F8001E00F8001E00F8001E00F8001E00F8001E00F8003C01F0003C01F0003C01F00
03C03E0003C03C0003E0780007F0F00007BFE000078F80000780000007800000078000000F0000
000F0000000F0000000F000000FFE00000FFE00000191D819319>I<03CF001FFF803FF7C007E7
C003C78007C3000780000780000780000780000780000F00000F00000F00000F00000F00000F00
001F0000FFF000FFF00012147F9312>114 D<01F207FE0E0E1C0E1C0E3C0C3C003FC01FF00FF8
07FC01FC003C601C601C601C7038F870FFE0CFC00F147E9312>I<018003000300030007000700
0F003E00FFF8FFF81E001E001E003C003C003C003C003C003C007800786078607860786078C078
C03F801E000D1C7C9B12>I<0F00F07F07F0FF0FF01F01F00F00F01E01E01E01E01E01E01E01E0
1E01E01E01E03C03C03C03C03C03C03C03C03C07C03C0FC03C1FC01FF7F80FC7F815147D9319>
I<FFC7F8FFC7F81E03E01E01801F01800F03000F03000F06000F0E000F8C00079C0007980007B0
0007B00007E00003E00003C00003C00003800003800015147C9318>I<FF9FF3FCFF9FF3FC1E07
80F01E0380E01E07C0C01E07C1C01F0FC1800F0FC3800F1BC3000F19C7000F31C6000F31EE000F
E1EC0007E1FC0007C1F80007C0F8000780F0000780F0000700E0000300E0001E147C9321>I<0F
FC7F800FFC7F8001E03E0001E0180001F0180000F0300000F0300000F0600000F0E00000F8C000
0079C00000798000007B0000007B0000007E0000003E0000003C0000003C000000380000003800
0000300000003000000060000078600000F8C00000C1800000E38000007F0000003C000000191D
809318>121 D E /Fd 1 44 432 300 dfs[<0030000078000078000078000078000078000078
000078000078007FFFF0FFFFF8FFFFF87FFFF00078000078000078000078000078000078000078
00007800003000>21 22 126 153 37 43 D E /Fe 65 123 360 300 dfs[<0007F800003FFC
0000FFFE0003F83F0007F07F0007E07F000FC07F000FC07F000FC03E000FC008000FC000000FC0
00000FC00000FFFFFF00FFFFFF00FFFFFF000FC03F000FC03F000FC03F000FC03F000FC03F000F
C03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F00
0FC03F007FF0FFE07FF0FFE07FF0FFE0>27 35 127 162 37 12 D[<001C0038007000E001E003
C0078007800F001F001E003E003E003E007C007C007C007C00FC00F800F800F800F800F800F800
F800F800F800F800F800FC007C007C007C007C003E003E003E001E001F000F000780078003C001
E000E000700038001C>14 49 124 164 26 40 D[<E000700038001C001E000F000780078003C0
03E001E001F001F001F000F800F800F800F800FC007C007C007C007C007C007C007C007C007C00
7C007C00FC00F800F800F800F801F001F001F001E003E003C0078007800F001E001C0038007000
E000>14 49 125 164 26 I[<3C007E00FF00FF00FF80FF807F803F8003800380070007000F00
0E001E003C0038001000>9 18 124 135 19 44 D[<FFFCFFFCFFFCFFFCFFFC>14
5 127 141 23 I[<3C7EFFFFFFFF7E3C>8 8 124 135 19 I[<00001800003800007800007000
00700000F00000E00001E00001C00001C00003C0000380000380000780000700000F00000E0000
0E00001E00001C00003C0000380000380000780000700000F00000E00000E00001E00001C00003
C0000380000380000780000700000F00000E00000E00001E00001C00001C00003C000038000078
0000700000700000F00000E00000E00000>21 49 125 164 34 I[<00FE0007FFC00FFFE01F83
F03F01F83F01F87E00FC7E00FC7E00FCFE00FCFE00FEFE00FEFE00FEFE00FEFE00FEFE00FEFE00
FEFE00FEFE00FEFE00FEFE00FEFE00FEFE00FE7E00FC7E00FC7E00FC3F01F83F01F81FC7F00FFF
E007FFC000FE00>23 32 126 159 34 I[<00180000780003F800FFF800FFF800FFF80003F800
03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
03F80003F80003F80003F80003F80003F80003F80003F80003F8007FFFE07FFFE07FFFE0>19
32 124 159 34 I[<03FC001FFF003FFF807C3FE0FE0FE0FF07F0FF07F0FF07F8FF03F87E03F8
1803F80007F80007F00007F0000FE0000FC0001F80003F00003E0000780000F03801E03803C038
0780380F00781FFFF81FFFF03FFFF07FFFF0FFFFF0FFFFF0FFFFF0>21 32
125 159 34 I[<00FE0003FF800FFFE01F07F01F87F03FC3F83FC3F83FC3F83FC3F81F87F80F07
F0000FE0001FC001FF8001FE0001FFC00007F00003F80001FC0001FC3E01FE7F01FEFF81FEFF81
FEFF81FEFF81FCFF01FC7F03F83E07F01FFFE00FFFC001FE00>23 32 126
159 34 I[<0001E00003E00007E00007E0000FE0001FE0003FE0003FE0007FE000FFE001EFE003
CFE0038FE0078FE00F0FE01E0FE01C0FE03C0FE0780FE0F00FE0FFFFFEFFFFFEFFFFFE000FE000
0FE0000FE0000FE0000FE0000FE001FFFE01FFFE01FFFE>23 32 126 159
34 I[<3000603C01E03FFFE03FFFC03FFF803FFF003FFE003FF800390000380000380000380000
39FC003BFF003FFFC03E0FE03C07E03807F00007F00007F80007F83C07F87E07F8FE07F8FF07F8
FF07F0FE07F07C0FE07C1FC03FFF801FFF0007F800>21 32 125 159 34
I[<001F8000FFE003FFF007F0700FC1F81F83F83F03F83F03F87E03F87E01F07E0000FE1F80FE
7FE0FEFFF0FFC1F8FF80F8FF00FCFF00FCFE00FEFE00FEFE00FEFE00FE7E00FE7E00FE7E00FE3E
00FC3E00FC1F00F80F83F007FFE003FFC000FF00>23 32 126 159 34 I[<7000007C00007FFF
FE7FFFFE7FFFFE7FFFFC7FFFF87FFFF0FFFFF0F000E0E001C0E00380E00700E00E00000E00001C
00003C00003C00007C00007C0000F80000F80001F80001F80001F80001F80003F80003F80003F8
0003F80003F80003F80001F00000E000>23 34 125 161 34 I[<00FE0003FFC007FFE00F83F0
1E01F01E00F83E00F83E00F83F80F83FC0F83FF1F03FFFF01FFFE01FFF800FFFE007FFF00FFFF8
1FFFFC3E3FFC7C0FFE7C03FEF801FEF8007EF8003EF8003EF8003C7C003C7E00783F01F01FFFE0
0FFFC001FE00>23 32 126 159 34 I[<00FE0007FF800FFFE01F83F03F01F07E00F87E00F8FE
00FCFE00FCFE00FCFE00FEFE00FEFE00FEFE00FE7E01FE7E01FE3E03FE3F07FE1FFEFE0FFCFE03
F0FE0000FC1F00FC3F80FC3F81F83F81F83F81F03F03E01E0FC00FFF8007FE0003F800>23
32 126 159 34 I[<00007000000000F800000000F800000000F800000001FC00000001FC0000
0003FE00000003FE00000003FE00000007FF00000007FF0000000FFF8000000E7F8000000E7F80
00001E7FC000001C3FC000001C3FC00000381FE00000381FE00000781FF00000700FF00000700F
F00000E00FF80000FFFFF80001FFFFFC0001FFFFFC0001C003FC0003C003FE00038001FE000380
01FE00070000FF00FFF01FFFF8FFF01FFFF8FFF01FFFF8>37 34 126 161
50 65 D[<FFFFFF8000FFFFFFF000FFFFFFF80007F803FC0007F801FE0007F800FE0007F800FF
0007F800FF0007F800FF0007F800FF0007F800FF0007F800FE0007F801FE0007F801FC0007F807
F80007FFFFF00007FFFFF00007FFFFFC0007F800FE0007F8007F0007F8007F8007F8003F8007F8
003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8007F8007F800FF8007
F801FF00FFFFFFFE00FFFFFFF800FFFFFFE000>34 34 126 161 48 I[<0003FE0180001FFF83
8000FFFFE78001FF00FF8003F8003F8007F0001F800FE0000F801FC0000F803F800007803F8000
07807F800003807F000003807F00000380FF00000000FF00000000FF00000000FF00000000FF00
000000FF00000000FF00000000FF000000007F000000007F000003807F800003803F800003803F
800007801FC00007000FE0000F0007F0001E0003F8003C0001FF00F80000FFFFF000001FFFC000
0003FE0000>33 34 125 161 48 I[<FFFFFF8000FFFFFFF000FFFFFFFC0007F803FE0007F800
7F0007F8003F8007F8001FC007F8000FE007F8000FE007F8000FF007F80007F007F80007F007F8
0007F007F80007F807F80007F807F80007F807F80007F807F80007F807F80007F807F80007F807
F80007F807F80007F807F80007F007F80007F007F80007F007F8000FE007F8000FE007F8001FC0
07F8003F8007F8007F0007F803FE00FFFFFFFC00FFFFFFF000FFFFFF8000>37
34 126 161 52 I[<FFFFFFFCFFFFFFFCFFFFFFFC07F801FC07F8007C07F8003C07F8001C07F8
001E07F8001E07F81C0E07F81C0E07F81C0E07F81C0E07F83C0007F87C0007FFFC0007FFFC0007
FFFC0007F87C0007F83C0007F81C0707F81C0707F81C0707F81C0E07F8000E07F8000E07F8001E
07F8001E07F8003E07F8007E07F801FCFFFFFFFCFFFFFFFCFFFFFFFC>32
34 126 161 44 I[<FFFFFFF8FFFFFFF8FFFFFFF807F803F807F800F807F8007807F8003807F8
003C07F8003C07F8381C07F8381C07F8381C07F8381C07F8780007F8F80007FFF80007FFF80007
FFF80007F8F80007F8780007F8380007F8380007F8380007F8380007F8000007F8000007F80000
07F8000007F8000007F8000007F80000FFFFF000FFFFF000FFFFF000>30
34 126 161 42 I[<0003FE00C0001FFFC1C0007FFFF3C001FF80FFC003FC003FC007F0000FC0
0FE00007C01FC00007C03FC00003C03F800003C07F800001C07F000001C07F000001C0FF000000
00FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF001FFFFC7F001F
FFFC7F001FFFFC7F80003FC03F80003FC03FC0003FC01FC0003FC00FE0003FC007F0003FC003FC
003FC001FF80FFC0007FFFEFC0001FFFC3C00003FF00C0>38 34 125 161
53 I[<FFFFC7FFFEFFFFC7FFFEFFFFC7FFFE07F8003FC007F8003FC007F8003FC007F8003FC007
F8003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8003FC0
07FFFFFFC007FFFFFFC007FFFFFFC007F8003FC007F8003FC007F8003FC007F8003FC007F8003F
C007F8003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8003FC007F800
3FC0FFFFC7FFFEFFFFC7FFFEFFFFC7FFFE>39 34 126 161 53 I[<FFFFF0FFFFF0FFFFF003FC
0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC
0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC
0003FC00FFFFF0FFFFF0FFFFF0>20 34 128 161 25 I[<FFFFF000FFFFF000FFFFF00007F800
0007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8
000007F8000007F8000007F8000007F8000007F8000007F8000007F8003807F8003807F8003807
F8003807F8007807F8007807F8007807F800F007F801F007F803F007F80FF0FFFFFFF0FFFFFFF0
FFFFFFF0>29 34 126 161 41 76 D[<FFFC00003FFFFFFC00003FFFFFFE00007FFF07FE00007F
E007FE00007FE0077F0000EFE0077F0000EFE0073F8001CFE0073F8001CFE0073F8001CFE0071F
C0038FE0071FC0038FE0070FE0070FE0070FE0070FE0070FE0070FE00707F00E0FE00707F00E0F
E00703F81C0FE00703F81C0FE00701FC380FE00701FC380FE00701FC380FE00700FE700FE00700
FE700FE007007FE00FE007007FE00FE007007FE00FE007003FC00FE007003FC00FE007001F800F
E007001F800FE0FFF81F81FFFFFFF80F01FFFFFFF80F01FFFF>48 34 126
161 64 I[<FFFC003FFEFFFE003FFEFFFF003FFE07FF0001C007FF8001C0077FC001C0073FE001
C0071FF001C0071FF001C0070FF801C00707FC01C00703FE01C00703FE01C00701FF01C00700FF
81C007007FC1C007003FE1C007003FE1C007001FF1C007000FF9C0070007FDC0070003FFC00700
03FFC0070001FFC0070000FFC00700007FC00700007FC00700003FC00700001FC00700000FC007
000007C0FFF80007C0FFF80003C0FFF80001C0>39 34 126 161 53 I[<0007FC0000003FFF80
0000FFFFE00003FC07F80007F001FC000FE000FE001FC0007F001FC0007F003F80003F803F8000
3F807F80003FC07F00001FC07F00001FC0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00
001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE07F00001FC07F80003FC07F80003FC03F
80003F803FC0007F801FC0007F000FE000FE0007F803FC0003FE0FF80000FFFFE000003FFF8000
0007FC0000>35 34 125 161 50 I[<FFFFFF00FFFFFFE0FFFFFFF007F807F807F801FC07F800
FE07F800FE07F800FF07F800FF07F800FF07F800FF07F800FF07F800FF07F800FE07F800FE07F8
01FC07F807F807FFFFF007FFFFE007FFFF0007F8000007F8000007F8000007F8000007F8000007
F8000007F8000007F8000007F8000007F8000007F80000FFFFC000FFFFC000FFFFC000>32
34 126 161 46 I[<0007FC0000003FFF800000FFFFE00003FC07F80007F001FC000FE000FE00
1FC0007F001FC0007F003F80003F803F80003F807F80003FC07F00001FC07F00001FC0FF00001F
E0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF0000
1FE07F00001FC07F80003FC07F80003FC03F80003F803FC1F07F801FC7F87F000FEFFCFE0007FE
0FFC0003FE07F80000FFFFE000003FFF80000007FF8020000003C020000001E060000001FFE000
0001FFE0000001FFC0000000FFC0000000FFC00000007F800000007F000000001E00>35
44 125 161 50 I[<FFFFFE0000FFFFFFC000FFFFFFF00007F807F80007F801FC0007F800FE00
07F800FF0007F800FF0007F800FF0007F800FF0007F800FF0007F800FF0007F800FE0007F801FC
0007F807F80007FFFFF00007FFFFC00007FFFFE00007F80FF00007F807F80007F807F80007F803
FC0007F803FC0007F803FC0007F803FC0007F803FC0007F803FC0007F803FC0007F803FC0007F8
03FC0E07F801FE0EFFFFC1FFFCFFFFC07FF8FFFFC01FF0>39 34 126 161
50 I[<01FC0C07FF9C1FFFFC3F03FC3E00FC7C007C7C003CFC001CFC001CFE001CFE0000FF8000
FFFC007FFFC07FFFE03FFFF01FFFF80FFFFC07FFFE01FFFE000FFF0000FF00007F00007FE0003F
E0003FE0003FF0003EF0003EFC007CFF00FCFFFFF8E7FFE0C0FF80>24 34
125 161 37 I[<7FFFFFFF807FFFFFFF807FFFFFFF807E07F81F807807F807807807F807807007
F80380F007F803C0F007F803C0E007F801C0E007F801C0E007F801C0E007F801C00007F8000000
07F800000007F800000007F800000007F800000007F800000007F800000007F800000007F80000
0007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F800
000007F8000007FFFFF80007FFFFF80007FFFFF800>34 34 126 161 47
I[<FFFFC07FFCFFFFC07FFCFFFFC07FFC07F800038007F800038007F800038007F800038007F8
00038007F800038007F800038007F800038007F800038007F800038007F800038007F800038007
F800038007F800038007F800038007F800038007F800038007F800038007F800038007F8000380
07F800038007F800038007F800038003F800070003F800070001FC000E0000FE001E00007F807C
00003FFFF800000FFFE0000001FF0000>38 34 126 161 52 I[<FFFFC01FFEFFFFC01FFEFFFF
C01FFE07FC0001C003FC00038003FC00038003FE00078001FE00070001FF000F0000FF000E0000
FF800E00007F801C00007F801C00007FC03C00003FC03800003FE03800001FE07000001FE07000
001FF0F000000FF0E000000FF9E0000007F9C0000007FDC0000003FF80000003FF80000003FF80
000001FF00000001FF00000000FE00000000FE00000000FE000000007C000000007C0000000038
0000>39 34 127 161 50 I[<FFFF8FFFF83FFEFFFF8FFFF83FFEFFFF8FFFF83FFE07F8007F80
01C007F8007F8001C003FC007FC0038003FC003FC0038003FE003FC0038001FE007FE0070001FE
007FE0070001FF007FE00F0000FF00EFF00E0000FF00EFF00E0000FF80EFF81E00007F81C7F81C
00007F81C7F81C00003FC3C7FC3800003FC383FC3800003FE383FC3800001FE783FE7000001FE7
01FE7000001FF701FFF000000FFE00FFE000000FFE00FFE000000FFE00FFE0000007FC007FC000
0007FC007FC0000003FC007F80000003F8003F80000003F8003F80000001F0001F00000001F000
1F00000001F0001F00000000E0000E0000>55 34 127 161 70 I[<7FFFE3FFF07FFFE3FFF07F
FFE3FFF001FF00380001FF00780000FF80F000007FC0E000007FC1E000003FE3C000001FF38000
001FF78000000FFF00000007FE00000007FE00000003FE00000003FE00000001FF00000000FF80
000001FF80000001FFC0000003FFE0000007BFE00000071FF000000F0FF800001E0FF800001C07
FC00003C07FC00007803FE00007001FF0000F001FF0001E000FF80FFFE07FFFEFFFE07FFFEFFFE
07FFFE>39 34 127 161 50 I[<FFFFC01FFEFFFFC01FFEFFFFC01FFE07FE0003C003FE000380
01FF00078001FF000F0000FF800E0000FFC01E00007FC01C00003FE03C00003FF03800001FF070
00000FF8F000000FF8E0000007FDE0000003FFC0000003FF80000001FF80000001FF00000000FF
00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000
FF00000000FF00000000FF0000001FFFF800001FFFF800001FFFF800>39
34 127 161 50 I[<07FC001FFF803FFFC07F0FE07F07E07F03F03E03F01C03F00003F001FFF0
0FFFF03FE3F07F83F07F03F0FE03F0FE03F0FE03F0FE07F07F0FF03FFDFF1FF8FF0FC07F>24
22 126 149 32 97 D[<FF800000FF800000FF8000001F8000001F8000001F8000001F8000001F
8000001F8000001F8000001F8000001F8000001F8000001F87F0001FBFFC001FFFFE001FF07F00
1FC03F001F801F801F801F801F801FC01F801FC01F801FC01F801FC01F801FC01F801FC01F801F
C01F801FC01F801F801F803F801FC03F001FE07E001F7FFC001E3FF8001C0FE000>26
35 126 162 37 I[<00FF0007FFC00FFFE01F87F03F07F07F07F07E03E07E01C0FE0000FE0000
FE0000FE0000FE0000FE00007E00007F00007F00703F80701FC1E00FFFC007FF8000FE00>20
22 126 149 30 I[<0003FE000003FE000003FE0000007E0000007E0000007E0000007E000000
7E0000007E0000007E0000007E0000007E0000007E0001FC7E0007FF7E001FFFFE003F81FE003F
007E007E007E007E007E00FE007E00FE007E00FE007E00FE007E00FE007E00FE007E00FE007E00
FE007E007E007E007E007E003F00FE003F83FE001FFFFFC007FF7FC001F87FC0>26
35 126 162 37 I[<00FE0007FF800FFFC01F87E03F03F07E01F07E01F8FE01F8FFFFF8FFFFF8
FFFFF8FE0000FE0000FE00007E00007E00007F00383F00781FC0F00FFFE003FFC000FE00>21
22 126 149 31 I[<001FC0007FE001FFF003F0F007E7F007C7F00FC7F00FC3E00FC0000FC000
0FC0000FC0000FC000FFFC00FFFC00FFFC000FC0000FC0000FC0000FC0000FC0000FC0000FC000
0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0007FFC007FFC007FFC00>20
35 127 162 20 I[<01FC1E0007FF7F001FFFFF803F07EF803E03E7007E03F2007E03F0007E03
F0007E03F0007E03F0003E03E0003F07E0001FFFC0001FFF000039FC000038000000380000003C
0000003FFFE0003FFFF8001FFFFE001FFFFF003FFFFF007C003F80F8000F80F8000F80F8000F80
F8000F807C001F003F007E001FFFFC000FFFF80001FFC000>25 33 127
149 34 I[<FF800000FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F80
00001F8000001F8000001F8000001F8000001F87E0001F9FF8001FBFFC001FF0FC001FE07E001F
C07E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E00
1F807E001F807E001F807E001F807E00FFF1FFC0FFF1FFC0FFF1FFC0>26
35 126 162 37 I[<0E003F003F807F807F803F803F000E00000000000000000000000000FF80
FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FF
F0FFF0>12 36 127 163 18 I[<001E00003F00007F80007F80007F80007F80003F00001E0000
000000000000000000000000000000000001FF8001FF8001FF80001F80001F80001F80001F8000
1F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8000
1F80001F80001F80001F807C1F807C1F80FE1F80FE3F00FE7F007FFC003FF8001FC000>17
46 132 163 20 I[<FF800000FF800000FF8000001F8000001F8000001F8000001F8000001F80
00001F8000001F8000001F8000001F8000001F8000001F83FF801F83FF801F83FF801F80F0001F
83E0001F8780001F8F00001F9E00001FBE00001FFE00001FFF00001FFF80001FCFC0001F8FC000
1F87E0001F83F0001F83F0001F81F8001F80FC00FFF1FFC0FFF1FFC0FFF1FFC0>26
35 126 162 36 I[<FF80FF80FF801F801F801F801F801F801F801F801F801F801F801F801F80
1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF0FF
F0>12 35 127 162 18 I[<FF87F00FE000FF9FFC3FF800FFBFFE7FFC001FF07EE0FC001FE03F
C07E001FC03F807E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E00
1F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F
007E001F803F007E00FFF1FFE3FFC0FFF1FFE3FFC0FFF1FFE3FFC0>42 22
126 149 56 I[<FF87E000FF9FF800FFBFFC001FF0FC001FE07E001FC07E001F807E001F807E00
1F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E
001F807E00FFF1FFC0FFF1FFC0FFF1FFC0>26 22 126 149 37 I[<00FE0007FFC00FFFE01F83
F03F01F87E00FC7E00FC7E00FCFE00FEFE00FEFE00FEFE00FEFE00FEFE00FEFE00FE7E00FC7E00
FC3F01F81F83F00FFFE007FFC000FE00>23 22 126 149 34 I[<FF87F000FFBFFC00FFFFFE00
1FF0FF001FC07F001F803F801F803F801F801FC01F801FC01F801FC01F801FC01F801FC01F801F
C01F801FC01F801FC01F803F801F803F801FC07F001FE0FE001FFFFC001FBFF8001F8FE0001F80
00001F8000001F8000001F8000001F8000001F8000001F800000FFF00000FFF00000FFF00000>
26 32 126 149 37 I[<FF3E00FF7F80FFFFC01FEFE01FCFE01FCFE01F87C01F83801F80001F80
001F80001F80001F80001F80001F80001F80001F80001F80001F8000FFF800FFF800FFF800>19
22 126 149 28 114 D[<07F3001FFF007FFF00780F00F00700F00700F00000FE0000FFF0007F
FC003FFE001FFF0007FF00007F80000F80E00780E00780F00780FC0F00FFFE00FFFC00C7F000>
17 22 126 149 26 I[<01C00001C00001C00001C00003C00003C00007C00007C0000FC0003FC0
00FFFF00FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
000FC3800FC3800FC3800FC3800FC3800FE70007FF0003FE0001F800>17
32 127 159 26 I[<FF83FE00FF83FE00FF83FE001F807E001F807E001F807E001F807E001F80
7E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F80FE001F
80FE001F83FE000FFF7FC007FE7FC003F87FC0>26 22 126 149 37 I[<FFF03FE0FFF03FE0FF
F03FE00FC00E000FE01E0007E01C0007E01C0003F0380003F0380003F8780001F8700001FCF000
00FCE00000FCE000007FC000007FC000007FC000003F8000003F8000001F0000001F0000000E00
00>27 22 127 149 36 I[<FFE3FF8FF8FFE3FF8FF8FFE3FF8FF81FC07C03C00FC07E03800FC0
FE038007E0FE070007E1FF070007E1DF070003F1DF0E0003F3DF8E0003FB8F9E0001FB8FDC0001
FF07DC0001FF07FC0000FF07F80000FE03F800007E03F000007E03F000007C01F000003C01E000
003C01E000>37 22 127 149 48 I[<FFF0FFE0FFF0FFE0FFF0FFE007E0780007F0F00003F8E0
0001F9E00000FFC000007F8000007F0000003F0000001F8000003FC000007FE00000F7F00001E3
F00001C1F80003C1FC000780FE00FFC1FFE0FFC1FFE0FFC1FFE0>27 22
127 149 36 I[<FFF03FE0FFF03FE0FFF03FE00FC00E000FE01E0007E01C0007E01C0003F03800
03F0380003F8780001F8700001FCF00000FCE00000FCE000007FC000007FC000007FC000003F80
00003F8000001F0000001F0000000E0000000E0000001C00007C1C0000FE3C0000FE380000E078
0000F1F000007FE000007FC000001F000000>27 32 127 149 36 I[<7FFFF07FFFF07FFFF07C
0FE0781FC0F01F80F03F80E07F00E0FE00E0FE0001FC0003F87007F07007F0700FE0701FC0F01F
80E03F81E07F07E0FFFFE0FFFFE0FFFFE0>20 22 126 149 30 I E /Ff
63 123 df<00003FF800000003FFFE0000000FF80F8000003FC001C000007F0007E00000FE000F
E00001FE001FF00001FC001FF00003FC001FF00003FC001FF00003FC000FE00003FC0007C00003
FC0001000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000000FFFFFFFF
F000FFFFFFFFF000FFFFFFFFF00003FC001FF00003FC000FF00003FC000FF00003FC000FF00003
FC000FF00003FC000FF00003FC000FF00003FC000FF00003FC000FF00003FC000FF00003FC000F
F00003FC000FF00003FC000FF00003FC000FF00003FC000FF00003FC000FF00003FC000FF00003
FC000FF00003FC000FF00003FC000FF00003FC000FF00003FC000FF00003FC000FF00003FC000F
F00003FC000FF00003FC000FF0007FFFE1FFFF807FFFE1FFFF807FFFE1FFFF8029327FB12D>12
D<0000600000E00001C0000380000700000E00001C00003C0000780000F80000F00001F00003E0
0003E00007C00007C0000FC0000F80001F80001F80001F00003F00003F00003F00007F00007E00
007E00007E00007E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
00FE0000FE0000FE0000FE00007E00007E00007E00007E00007F00003F00003F00003F00001F00
001F80001F80000F80000FC00007C00007C00003E00003E00001F00000F00000F800007800003C
00001C00000E000007000003800001C00000E0000060134879B51F>40 D<800000C00000E00000
7000003800001C00000E00000F000007800007C00003C00003E00001F00001F00000F80000F800
00FC00007C00007E00007E00003E00003F00003F00003F00003F80001F80001F80001F80001F80
001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0
001FC0001F80001F80001F80001F80003F80003F00003F00003F00003E00007E00007E00007C00
00FC0000F80000F80001F00001F00003E00003C00007C0000780000F00000E00001C0000380000
700000E00000C0000080000012487BB51F>I<1E003F007F80FFC0FFC0FFE0FFE07FE03F601E60
00600060006000C000C000C001800180030006000C001800300020000B187A8916>44
D<FFFFF8FFFFF8FFFFF8FFFFF8FFFFF8FFFFF8FFFFF815077F921B>I<1E003F007F80FFC0FFC0
FFC0FFC07F803F001E000A0A7A8916>I<0000000C0000001E0000001E0000003E0000003C0000
007C0000007800000078000000F8000000F0000001F0000001E0000001E0000003E0000003C000
0007C0000007800000078000000F8000000F0000001F0000001E0000001E0000003E0000003C00
00007C0000007800000078000000F8000000F0000001F0000001E0000001E0000003E0000003C0
000007C0000007800000078000000F8000000F0000000F0000001F0000001E0000003E0000003C
0000003C0000007C00000078000000F8000000F0000000F0000001F0000001E0000003E0000003
C0000003C0000007C00000078000000F8000000F0000000F0000001F0000001E0000003E000000
3C0000003C0000007C00000078000000F8000000F0000000F0000000600000001F487CB528>I<
000FF80000007FFF000001FC1FC00003F007E00007E003F0000FE003F8001FC001FC001FC001FC
003FC001FE003F8000FE003F8000FE007F8000FF007F8000FF007F8000FF007F8000FF00FF8000
FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF80
00FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF807F
8000FF007F8000FF007F8000FF007F8000FF007F8000FF003F8000FE003FC001FE001FC001FC00
1FC001FC000FE003F80007E003F00003F007E00001FC1FC000007FFF0000000FF80000212E7DAD
28>I<0001C0000003C000000FC000007FC0001FFFC000FFFFC000FFBFC000E03FC000003FC000
003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
3FC000003FC000003FC000003FC000003FC0007FFFFFE07FFFFFE07FFFFFE01B2E7AAD28>I<00
3FE00001FFFE0007FFFF800F80FFC01E003FE038001FF07C000FF87E0007FCFF0007FCFF8007FE
FF8007FEFF8003FEFF8003FE7F0003FE3E0007FE000007FE000007FC000007FC00000FF800000F
F800000FF000001FE000001FC000003F8000007F0000007E000000F8000001F0000003E0000007
C000000F0000001E000E003C000E0038000E0070001E00E0001C01C0001C0300003C07FFFFFC0F
FFFFFC1FFFFFFC3FFFFFFC7FFFFFF8FFFFFFF8FFFFFFF8FFFFFFF81F2E7CAD28>I<001FF80000
007FFF000001FFFFC00003E03FE00007800FF0000FC00FF8001FE007F8001FE007FC001FE007FC
001FE007FC001FE007FC000FC007FC00078007FC0000000FF80000000FF80000000FF00000001F
E00000001FC00000003F80000000FE0000003FF80000003FFF800000001FE000000007F0000000
07F800000003FC00000003FE00000001FF00000001FF00000001FF80000001FF80000001FF801C
0001FF803E0001FF807F0001FF80FF8001FF80FF8001FF00FF8001FF00FF8003FE007F0003FE00
7E0007FC003C0007F8001FC01FF0000FFFFFC00003FFFF0000003FF80000212E7DAD28>I<0000
007000000000F000000001F000000003F000000007F00000000FF00000000FF00000001FF00000
003FF000000077F0000000F7F0000000E7F0000001C7F000000387F000000707F000000F07F000
000E07F000001C07F000003807F000007007F00000F007F00000E007F00001C007F000038007F0
00070007F0000F0007F0000E0007F0001C0007F000380007F000700007F000E00007F000FFFFFF
FFE0FFFFFFFFE0FFFFFFFFE000000FF00000000FF00000000FF00000000FF00000000FF0000000
0FF00000000FF00000000FF00000000FF000000FFFFFE0000FFFFFE0000FFFFFE0232E7EAD28>
I<0C0000300FC003F00FFFFFE00FFFFFC00FFFFF800FFFFF000FFFFE000FFFF8000FFFF0000FFF
80000E0000000E0000000E0000000E0000000E0000000E0000000E0000000E0000000E1FF0000E
7FFE000FE03F800F800FC00E0007E00C0007F0000007F8000003FC000003FC000003FC000003FE
000003FE180003FE3E0003FE7F0003FEFF0003FEFF0003FEFF0003FCFF0003FCFE0003FC780007
F8780007F03C000FE01E001FC00FC07F8007FFFF0001FFFC00003FE0001F2E7CAD28>I<0000FF
80000007FFE000001FFFF000007F80F80000FE003C0001F8007C0003F000FE0007F001FE000FE0
01FE000FE001FE001FC001FE003FC000FC003FC00078003FC00000007F800000007F800000007F
80000000FF83FC0000FF8FFF8000FF9C0FC000FFB003F000FFB001F800FFE001FC00FFC001FE00
FFC000FE00FFC000FF00FFC000FF00FF8000FF80FF8000FF80FF8000FF80FF8000FF807F8000FF
807F8000FF807F8000FF807F8000FF803F8000FF003FC000FF001FC000FF001FC000FE000FC001
FC0007E001FC0003F003F80001FC0FE00000FFFFC000003FFF0000000FFC0000212E7DAD28>I<
38000000003E000000003FFFFFFFC03FFFFFFFC03FFFFFFFC03FFFFFFF807FFFFFFF007FFFFFFE
007FFFFFFC007FFFFFF80078000038007000007000700000E000F00001C000E000038000E00007
0000E00007000000000E000000001C00000000380000000038000000007800000000F000000000
F000000001F000000001E000000003E000000003E000000007E000000007E00000000FC0000000
0FC00000000FC00000001FC00000001FC00000001FC00000001FC00000001FC00000003FC00000
003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000001F8000
00000F00000022307CAF28>I<000FF80000003FFF000000FFFFC00001F80FE00003E003F00007
C001F8000F8001F8000F8000FC000F8000FC001F8000FC001F8000FC001FC000FC001FC000FC00
1FF000F8001FFC01F8000FFE01F0000FFF83E00007FFE7C00007FFFF800003FFFE000001FFFF00
0000FFFFC000003FFFE00001FFFFF00003E3FFF80007C1FFFC001F807FFE003F001FFF003E0007
FF007E0003FF807E0000FF80FC00007F80FC00003F80FC00001F80FC00001F80FC00001F80FC00
001F007E00001F007E00001F007F00003E003F00007C001FC000F8000FF007F00003FFFFE00000
FFFF8000001FF80000212E7DAD28>I<000FF80000007FFF000001FFFF800003F80FC00007E007
E0000FC003F0001FC001F8003FC001FC007F8001FC007F8001FE007F8000FE00FF8000FF00FF80
00FF00FF8000FF00FF8000FF00FF8000FF80FF8000FF80FF8000FF80FF8000FF807F8001FF807F
8001FF803F8001FF803FC001FF801FC003FF800FC006FF8007E006FF8001F81CFF8000FFF8FF80
001FE0FF80000000FF00000000FF00000000FF00000000FF000F0001FE001F8001FE003FC001FC
003FC001FC003FC003F8003FC003F0003F8007E0001F000FC0001E001F80000F80FF000007FFFE
000001FFF80000007FC00000212E7DAD28>I<0000007800000000000078000000000000FC0000
00000000FC000000000000FC000000000001FE000000000001FE000000000003FF000000000003
FF000000000007FF800000000007FF800000000007FF80000000000FFFC0000000000E7FC00000
00001E7FE0000000001C3FE0000000001C3FE000000000383FF000000000381FF000000000781F
F800000000700FF800000000700FF800000000E00FFC00000000E007FC00000001E007FE000000
01C003FE00000001C003FE000000038003FF000000038001FF000000078001FF800000070000FF
800000070000FF8000000FFFFFFFC000000FFFFFFFC000001FFFFFFFE000001C00003FE000003C
00003FF000003800001FF000003800001FF000007000001FF800007000000FF80000F000000FFC
0000E0000007FC0000E0000007FC0001C0000007FE0003E0000003FE00FFFF8001FFFFFCFFFF80
01FFFFFCFFFF8001FFFFFC36317DB03D>65 D<FFFFFFFFE00000FFFFFFFFFE0000FFFFFFFFFF80
0000FF0000FFC00000FF00003FF00000FF00001FF80000FF00000FF80000FF000007FC0000FF00
0007FC0000FF000007FE0000FF000003FE0000FF000003FE0000FF000003FE0000FF000003FE00
00FF000007FE0000FF000007FE0000FF000007FC0000FF000007FC0000FF00000FF80000FF0000
1FF00000FF00003FE00000FF0000FF800000FF000FFF000000FFFFFFFE000000FFFFFFFFC00000
FF00001FF00000FF000007F80000FF000003FE0000FF000003FE0000FF000001FF0000FF000001
FF8000FF000000FF8000FF000000FFC000FF000000FFC000FF000000FFC000FF000000FFC000FF
000000FFC000FF000000FFC000FF000000FFC000FF000000FF8000FF000001FF8000FF000001FF
0000FF000003FF0000FF000007FE0000FF00000FFC0000FF00007FF800FFFFFFFFFFE000FFFFFF
FFFF8000FFFFFFFFFC000032317EB039>I<000003FF80018000003FFFF003800001FFFFFC0780
0007FF003F0F80001FF800079F80003FC00001FF8000FF800000FF8001FE0000007F8003FC0000
003F8007FC0000001F8007F80000000F800FF00000000F801FF000000007801FF000000007803F
E000000007803FE000000003807FE000000003807FE000000003807FC000000000007FC0000000
0000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0
0000000000FFC00000000000FFC00000000000FFC000000000007FC000000000007FC000000000
007FE000000000007FE000000003803FE000000003803FE000000003801FF000000003801FF000
000007800FF0000000070007F8000000070007FC0000000E0003FC0000001E0001FE0000001C00
00FF8000007800003FC00000F000001FF80003E0000007FF003F80000001FFFFFE000000003FFF
F80000000003FF80000031317CB03A>I<FFFFFFFFF00000FFFFFFFFFF0000FFFFFFFFFFC00000
FF8000FFF00000FF80000FF80000FF800003FE0000FF800001FF0000FF800000FF8000FF800000
7FC000FF8000003FC000FF8000001FE000FF8000001FF000FF8000000FF000FF8000000FF800FF
8000000FF800FF80000007FC00FF80000007FC00FF80000007FC00FF80000007FC00FF80000007
FE00FF80000007FE00FF80000007FE00FF80000007FE00FF80000007FE00FF80000007FE00FF80
000007FE00FF80000007FE00FF80000007FE00FF80000007FE00FF80000007FE00FF80000007FC
00FF80000007FC00FF80000007FC00FF80000007FC00FF8000000FF800FF8000000FF800FF8000
000FF000FF8000001FF000FF8000001FE000FF8000003FE000FF8000007FC000FF8000007F8000
FF800001FF0000FF800003FE0000FF80000FFC0000FF80007FF000FFFFFFFFFFC000FFFFFFFFFF
0000FFFFFFFFF0000037317EB03E>I<FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF000FF80003F
F000FF800007F800FF800003F800FF800000F800FF800000F800FF8000007800FF8000007800FF
8000003800FF8000003800FF8000003800FF8000001C00FF8007001C00FF8007001C00FF800700
1C00FF8007000000FF8007000000FF800F000000FF801F000000FF803F000000FFFFFF000000FF
FFFF000000FFFFFF000000FF803F000000FF801F000000FF800F000000FF8007000000FF800700
0000FF8007000700FF8007000700FF8007000700FF8000000E00FF8000000E00FF8000000E00FF
8000000E00FF8000001E00FF8000001E00FF8000003C00FF8000003C00FF8000007C00FF800000
FC00FF800001FC00FF800007FC00FF80003FFCFFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF83031
7EB035>I<FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE000FF80007FE000FF80000FF000FF8000
03F000FF800001F000FF800001F000FF800000F000FF800000F000FF8000007000FF8000007000
FF8000007000FF8000003800FF8000003800FF8007003800FF8007003800FF8007000000FF8007
000000FF8007000000FF800F000000FF801F000000FF803F000000FFFFFF000000FFFFFF000000
FFFFFF000000FF803F000000FF801F000000FF800F000000FF8007000000FF8007000000FF8007
000000FF8007000000FF8007000000FF8000000000FF8000000000FF8000000000FF8000000000
FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000
000000FF80000000FFFFFFE00000FFFFFFE00000FFFFFFE000002D317EB033>I<000003FF0003
0000007FFFF007000001FFFFFC0F000007FF007E1F00001FF0000FBF00007FC00003FF0000FF80
0001FF0001FE0000007F0003FC0000007F0007FC0000003F000FF80000001F000FF00000001F00
1FF00000000F001FF00000000F003FE000000007003FE000000007007FE000000007007FE00000
0007007FC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FF
C00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000000
0000FFC00007FFFFFC7FC00007FFFFFC7FE00007FFFFFC7FE0000001FF003FE0000001FF003FE0
000001FF001FF0000001FF001FF0000001FF000FF0000001FF000FF8000001FF0007FC000001FF
0003FC000001FF0001FE000001FF0000FF800001FF00007FC00003FF00001FF800077F000007FF
003E3F000001FFFFFC1F0000007FFFF00F00000003FF80030036317CB03F>I<FFFFFF807FFFFF
C0FFFFFF807FFFFFC0FFFFFF807FFFFFC000FF8000007FC00000FF8000007FC00000FF8000007F
C00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF800000
7FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000
007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF80
00007FC00000FF8000007FC00000FFFFFFFFFFC00000FFFFFFFFFFC00000FFFFFFFFFFC00000FF
8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000
FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC000
00FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC0
0000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007F
C00000FF8000007FC000FFFFFF807FFFFFC0FFFFFF807FFFFFC0FFFFFF807FFFFFC03A317EB03F
>I<FFFFFF80FFFFFF80FFFFFF8000FF800000FF800000FF800000FF800000FF800000FF800000
FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000
00FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF80
0000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF
800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000FFFFFF80FFFFFF80FF
FFFF8019317EB01E>I<FFFFFFE00000FFFFFFE00000FFFFFFE0000000FF8000000000FF800000
0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800001
C000FF800001C000FF800001C000FF800001C000FF800003C000FF8000038000FF8000038000FF
8000078000FF8000078000FF8000078000FF80000F8000FF80001F8000FF80003F8000FF80007F
8000FF8000FF0000FF8007FF00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF002A317EB030>76
D<FFFFC000000003FFFFFFFFC000000003FFFFFFFFE000000007FFFF00FFE000000007FF0000EF
F00000000EFF0000EFF00000000EFF0000EFF00000000EFF0000E7F80000001CFF0000E7F80000
001CFF0000E3FC00000038FF0000E3FC00000038FF0000E1FE00000070FF0000E1FE00000070FF
0000E0FF000000E0FF0000E0FF000000E0FF0000E07F800001C0FF0000E07F800001C0FF0000E0
3FC0000380FF0000E03FC0000380FF0000E03FC0000380FF0000E01FE0000700FF0000E01FE000
0700FF0000E00FF0000E00FF0000E00FF0000E00FF0000E007F8001C00FF0000E007F8001C00FF
0000E003FC003800FF0000E003FC003800FF0000E001FE007000FF0000E001FE007000FF0000E0
00FF00E000FF0000E000FF00E000FF0000E000FF00E000FF0000E0007F81C000FF0000E0007F81
C000FF0000E0003FC38000FF0000E0003FC38000FF0000E0001FE70000FF0000E0001FE70000FF
0000E0000FFE0000FF0000E0000FFE0000FF0000E00007FC0000FF0000E00007FC0000FF0000E0
0007FC0000FF0000E00003F80000FF0001F00003F80000FF00FFFFE001F000FFFFFFFFFFE001F0
00FFFFFFFFFFE000E000FFFFFF48317EB04D>I<FFFF800001FFFFC0FFFFC00001FFFFC0FFFFE0
0001FFFFC000FFF0000003E00000FFF8000001C00000EFFC000001C00000E7FC000001C00000E7
FE000001C00000E3FF000001C00000E1FF800001C00000E0FFC00001C00000E07FE00001C00000
E03FE00001C00000E03FF00001C00000E01FF80001C00000E00FFC0001C00000E007FE0001C000
00E003FE0001C00000E001FF0001C00000E001FF8001C00000E000FFC001C00000E0007FE001C0
0000E0003FF001C00000E0001FF001C00000E0001FF801C00000E0000FFC01C00000E00007FE01
C00000E00003FF01C00000E00001FF81C00000E00000FF81C00000E00000FFC1C00000E000007F
E1C00000E000003FF1C00000E000001FF9C00000E000000FFDC00000E0000007FDC00000E00000
07FFC00000E0000003FFC00000E0000001FFC00000E0000000FFC00000E00000007FC00000E000
00003FC00000E00000003FC00000E00000001FC00000E00000000FC00001F000000007C000FFFF
E0000003C000FFFFE0000001C000FFFFE0000001C0003A317EB03F>I<00000FFF0000000000FF
FFF000000007FC03FE0000001FE0007F8000003F80001FC000007F00000FE00001FE000007F800
03FC000003FC0007F8000001FE0007F8000001FE000FF0000000FF001FF0000000FF801FE00000
007F803FE00000007FC03FE00000007FC03FE00000007FC07FC00000003FE07FC00000003FE07F
C00000003FE0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC0000000
3FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC0
0000003FF07FC00000003FE07FE00000007FE07FE00000007FE07FE00000007FE03FE00000007F
C03FE00000007FC01FF0000000FF801FF0000000FF800FF8000001FF0007F8000001FE0007FC00
0003FE0003FC000003FC0001FE000007F80000FF00000FF000003FC0003FC000001FE0007F8000
0007FC03FE00000000FFFFF0000000000FFF00000034317CB03D>I<FFFFFFFFE000FFFFFFFFFE
00FFFFFFFFFF8000FF8000FFE000FF80003FF000FF80000FF800FF800007FC00FF800007FC00FF
800003FE00FF800003FE00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF800003
FF00FF800003FF00FF800003FF00FF800003FE00FF800003FE00FF800007FC00FF800007F800FF
80000FF800FF80003FE000FF8000FFC000FFFFFFFF0000FFFFFFF80000FF8000000000FF800000
0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
0000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000FFFFFF800000FFFF
FF800000FFFFFF80000030317EB037>I<00000FFF0000000000FFFFF000000007FC03FE000000
1FE0007F8000003FC0003FC000007F00000FE00001FE000007F80003FC000003FC0007FC000003
FE0007F8000001FE000FF8000001FF001FF0000000FF801FF0000000FF803FE00000007FC03FE0
0000007FC03FE00000007FC07FE00000007FE07FC00000003FE07FC00000003FE0FFC00000003F
F0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC000
00003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF07FC00000003FE0
7FC00000003FE07FE00000007FE07FE00000007FE03FE00000007FC03FE00000007FC01FF00000
00FF801FF0000000FF800FF001F800FF0007F807FC01FE0007FC0E0603FE0003FC0C0303FC0001
FE180187F80000FF1801CFF000003FD800FFC000001FEC00FF80000007FE03FE00000000FFFFF0
000000000FFF78003000000000780030000000007C0030000000003E0070000000003F81F00000
00003FFFF0000000003FFFE0000000001FFFE0000000001FFFE0000000001FFFC0000000000FFF
C0000000000FFF800000000007FF000000000003FE000000000000F800343F7CB03D>I<FFFFFF
FF80000000FFFFFFFFF8000000FFFFFFFFFE00000000FF8003FF80000000FF80007FE0000000FF
80001FF0000000FF80000FF8000000FF80000FF8000000FF80000FFC000000FF800007FC000000
FF800007FE000000FF800007FE000000FF800007FE000000FF800007FE000000FF800007FE0000
00FF800007FE000000FF800007FC000000FF80000FFC000000FF80000FF8000000FF80001FF000
0000FF80003FE0000000FF80007FC0000000FF8003FF00000000FFFFFFF800000000FFFFFFE000
000000FF8007F800000000FF8001FC00000000FF8000FE00000000FF80007F00000000FF80007F
80000000FF80003FC0000000FF80003FC0000000FF80003FE0000000FF80003FE0000000FF8000
3FE0000000FF80003FE0000000FF80003FE0000000FF80003FF0000000FF80003FF0000000FF80
003FF0000000FF80003FF0000000FF80003FF0038000FF80003FF8038000FF80001FF8038000FF
80001FF8030000FF80000FFC0700FFFFFF8003FE0E00FFFFFF8001FFFC00FFFFFF80001FF00039
317EB03C>I<001FF8018000FFFF038003FFFFC78007F007EF800F8000FF801F00007F803E0000
1F803E00000F807C00000F807C00000780FC00000780FC00000780FC00000380FE00000380FE00
000380FF00000000FFC00000007FF00000007FFF8000003FFFF800003FFFFF80001FFFFFF0000F
FFFFF80007FFFFFE0003FFFFFF0000FFFFFF80003FFFFF800001FFFFC000001FFFE0000000FFE0
0000003FE00000001FF00000000FF000000007F060000007F0E0000003F0E0000003F0E0000003
F0E0000003E0F0000003E0F0000003E0F8000007C0FC000007C0FF00000F80FFC0001F00FBFC00
FE00F1FFFFF800E03FFFF000C003FF800024317CB02D>I<7FFFFFFFFFFF007FFFFFFFFFFF007F
FFFFFFFFFF007FC00FF801FF007E000FF8003F007C000FF8001F0078000FF8000F0078000FF800
0F0070000FF8000700F0000FF8000780F0000FF8000780F0000FF8000780E0000FF8000380E000
0FF8000380E0000FF8000380E0000FF8000380E0000FF800038000000FF800000000000FF80000
0000000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000F
F800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000
00000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF8
00000000000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000
000FF800000000000FF800000000000FF800000000000FF8000000007FFFFFFF0000007FFFFFFF
0000007FFFFFFF000031307DAF38>I<FFFFFF8003FFFF80FFFFFF8003FFFF80FFFFFF8003FFFF
8000FF80000007C00000FF80000003800000FF80000003800000FF80000003800000FF80000003
800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF800000
03800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF8000
0003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80
000003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF
80000003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000
FF80000003800000FF80000003800000FF80000003800000FF800000038000007F800000038000
007F800000070000007FC00000070000003FC000000E0000003FC000000E0000001FE000001C00
00000FF000003800000007F800007000000003FC0001E000000000FF801FC0000000003FFFFF80
000000000FFFFE000000000000FFE000000039317EB03E>I<FFFFFC0000FFFFFFFFFC0000FFFF
FFFFFC0000FFFF03FF00000003C001FF000000038001FF800000078000FF800000070000FFC000
000700007FC000000E00007FC000000E00007FE000001E00003FE000001C00003FF000003C0000
1FF000003800001FF800003800000FF800007000000FFC000070000007FC0000E0000007FC0000
E0000007FE0001E0000003FE0001C0000003FF0003C0000001FF000380000001FF800380000000
FF800700000000FFC00700000000FFC00F000000007FC00E000000007FE01E000000003FE01C00
0000003FF03C000000001FF038000000001FF838000000000FF870000000000FF870000000000F
FCF00000000007FCE00000000007FFE00000000003FFC00000000003FFC00000000001FF800000
000001FF800000000000FF000000000000FF000000000000FF0000000000007E0000000000007E
0000000000003C0000000000003C00000038317EB03D>I<7FFFFF007FFFF87FFFFF007FFFF87F
FFFF007FFFF800FFE00001F000007FE00001E000003FF00001C000001FF80003C000001FFC0007
8000000FFC000F00000007FE000E00000007FF001E00000003FF003C00000001FF807800000000
FFC07000000000FFE0F0000000007FE1E0000000003FF3C0000000003FFB80000000001FFF8000
0000000FFF000000000007FE000000000007FF000000000003FF000000000001FF800000000001
FFC00000000000FFC00000000001FFE00000000003FFF00000000007BFF800000000071FF80000
00000F0FFC000000001E0FFE000000003C07FE000000003803FF000000007801FF80000000F001
FFC0000000E000FFC0000001C0007FE0000003C0007FF000000780003FF000000700001FF80000
0F00000FFC00001E00000FFE00003C000007FE000038000003FF0000FC000003FF80FFFFE0007F
FFFFFFFFE0007FFFFFFFFFE0007FFFFF38317EB03D>88 D<00FFF0000003FFFE00000F803F8000
0FC00FE0001FE007F0001FE007F0001FE003F8000FC003FC00078003FC00000003FC00000003FC
00000003FC00000003FC000000FFFC00001FFFFC0000FFE3FC0003FC03FC000FF003FC001FC003
FC003FC003FC007F8003FC007F8003FC00FF0003FC00FF0003FC00FF0003FC00FF0007FC00FF00
07FC007F800DFC003FC019FE001FE070FFF007FFE07FF000FF803FF024207E9F27>97
D<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F800000007F800
000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
00000007F800000007F800000007F83FE00007F8FFFC0007FBE07F0007FF001F8007FE000FC007
FC000FE007F80007F007F80007F807F80007F807F80003FC07F80003FC07F80003FC07F80003FE
07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003
FC07F80003FC07F80003FC07F80007F807F80007F807F80007F007FC000FE007FE000FC007E700
3F8007C3C0FE000780FFF80007003FC00027327EB12D>I<000FFF00007FFFC001FC01F003F003
F007E007F80FE007F81FC007F83FC003F03FC001E07F8000007F8000007F800000FF800000FF80
0000FF800000FF800000FF800000FF800000FF800000FF8000007F8000007F8000007F8000003F
C0001C3FC0001C1FC000380FE0003807E0007003F001E001FC07C0007FFF00000FF8001E207D9F
24>I<0000000FC0000007FFC0000007FFC0000007FFC00000007FC00000003FC00000003FC000
00003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0
0000003FC00000003FC00000003FC00007F83FC0003FFF3FC000FE07BFC003F801FFC007E0007F
C00FE0007FC01FC0003FC03FC0003FC03FC0003FC07F80003FC07F80003FC07F80003FC0FF8000
3FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC07F80
003FC07F80003FC07F80003FC03FC0003FC03FC0003FC01FC0003FC00FE0007FC007E000FFC003
F003FFE001FC0F3FFE007FFE3FFE000FF03FFE27327DB12D>I<000FFC00007FFF8001FC0FC003
F003E007E001F00FE001F81FC000FC3FC000FE3FC000FE7F80007E7F80007F7F80007FFF80007F
FF80007FFFFFFFFFFFFFFFFFFF800000FF800000FF800000FF8000007F8000007F8000007F8000
003FC000071FC000071FC0000E0FE0000E07F0001C03F8007800FE03E0003FFFC00007FE002020
7E9F25>I<0001FE00000FFF80001FC3C0007F07E000FE0FF001FE0FF001FC0FF003FC0FF003FC
07E003FC018003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000FF
FFFC00FFFFFC00FFFFFC0003FC000003FC000003FC000003FC000003FC000003FC000003FC0000
03FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00
0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00007FFF
F0007FFFF0007FFFF0001C327EB119>I<001FF007C000FFFE3FE001F83F79F007E00FC3F00FE0
0FE1F00FC007E0E01FC007F0001FC007F0003FC007F8003FC007F8003FC007F8003FC007F8003F
C007F8001FC007F0001FC007F0000FC007E0000FE00FE00007E00FC00003F83F000006FFFE0000
0E1FF000000E000000001E000000001E000000001F000000001F800000001FFFFF80000FFFFFF0
000FFFFFFC0007FFFFFE0003FFFFFF0003FFFFFF800FFFFFFFC01F00007FC07E00001FE07C0000
0FE0FC000007E0FC000007E0FC000007E0FC000007E07E00000FC03E00000F803F00001F800FC0
007E0007F803FC0001FFFFF000001FFF0000242F7E9F28>I<01F8000000FFF8000000FFF80000
00FFF80000000FF800000007F800000007F800000007F800000007F800000007F800000007F800
000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
07F80007F83FFE0007F8783F0007F8C03F8007F9801FC007FB001FC007FE001FE007FC001FE007
FC001FE007FC001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
07F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001F
E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3
FFFF28327DB12D>I<03C00007E0000FF0001FF8001FF8001FF8001FF8000FF00007E00003C000
00000000000000000000000000000000000000000000000000000001F800FFF800FFF800FFF800
0FF80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFF80
FFFF80FFFF8011337DB217>I<0001E00003F00007F8000FFC000FFC000FFC000FFC0007F80003
F00001E00000000000000000000000000000000000000000000000000000000001FC007FFC007F
FC007FFC0007FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003
FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003
FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC1803FC3C03FC7E03F8FF03F8FF07F0FF07
F07E07E03C0F801FFF0007F800164184B219>I<01F8000000FFF8000000FFF8000000FFF80000
000FF800000007F800000007F800000007F800000007F800000007F800000007F800000007F800
000007F800000007F800000007F800000007F800000007F800000007F800000007F801FFF807F8
01FFF807F801FFF807F8003F0007F8003C0007F800780007F800F00007F803C00007F807800007
F80F000007F81E000007F878000007F8FC000007F9FE000007FBFE000007FFFF000007FE7F8000
07FC7FC00007F83FC00007F01FE00007F00FF00007F00FF80007F007FC0007F003FC0007F001FE
0007F000FF0007F000FF8007F0007F8007F0007FC0FFFF81FFFEFFFF81FFFEFFFF81FFFE27327E
B12B>I<01F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F8
0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
0007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC01232
7DB117>I<03F007F8001FE000FFF03FFE00FFF800FFF0783F01E0FC00FFF0C03F8300FE000FF1
801FC6007F0007F3001FCC007F0007F6001FF8007F8007FC001FF0007F8007FC001FF0007F8007
FC001FF0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F80
07F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F
8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE000
7F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0
007F80FFFFC3FFFF0FFFFCFFFFC3FFFF0FFFFCFFFFC3FFFF0FFFFC3E207D9F43>I<03F007F800
FFF03FFE00FFF0783F00FFF0C03F800FF1801FC007F3001FC007F6001FE007FC001FE007FC001F
E007FC001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800
1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8
001FE007F8001FE007F8001FE007F8001FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28
207D9F2D>I<0007FC0000007FFFC00001FC07F00003F001F80007E000FC000FC0007E001FC000
7F003FC0007F803F80003F807F80003FC07F80003FC07F80003FC0FF80003FE0FF80003FE0FF80
003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE07F80003FC07F80003FC07F
80003FC03FC0007F803FC0007F801FC0007F000FE000FE0007E000FC0003F803F80001FE0FF000
007FFFC0000007FC000023207E9F28>I<01F83FE000FFF8FFFC00FFFBE07F00FFFF003F8007FE
001FC007FC000FE007F8000FF007F80007F807F80007F807F80007FC07F80003FC07F80003FC07
F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE
07F80003FC07F80007FC07F80007FC07F80007F807F80007F807F8000FF007FC000FE007FE001F
C007FF003F8007FBC0FE0007F8FFF80007F83FC00007F800000007F800000007F800000007F800
000007F800000007F800000007F800000007F800000007F800000007F800000007F8000000FFFF
C00000FFFFC00000FFFFC00000272E7E9F2D>I<03F03F00FFF07FC0FFF1C3E0FFF187E00FF30F
F007F60FF007F60FF007FC07E007FC03C007FC000007FC000007F8000007F8000007F8000007F8
000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007
F8000007F8000007F8000007F8000007F80000FFFFE000FFFFE000FFFFE0001C207E9F21>114
D<01FF860007FFFE001F00FE003C003E0078001E0078000E00F8000E00F8000E00F8000E00FC00
0000FF800000FFFC00007FFFC0007FFFF0003FFFF8001FFFFC0007FFFE0001FFFF00003FFF0000
00FF8000003F8060001F80E0000F80E0000F80F0000F80F0000F00F8000F00FC001E00FE001C00
FF807800F3FFF000C07F800019207D9F20>I<001C0000001C0000001C0000001C0000001C0000
003C0000003C0000003C0000007C0000007C000000FC000001FC000003FC000007FC00001FFFFE
00FFFFFE00FFFFFE0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC
000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC038003
FC038003FC038003FC038003FC038003FC038003FC038001FC038001FC070000FE0700007F0E00
003FFC000007F000192E7FAD1F>I<01F80007E0FFF803FFE0FFF803FFE0FFF803FFE00FF8003F
E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800
1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8
001FE007F8001FE007F8001FE007F8001FE007F8003FE007F8003FE003F8007FE003F8007FE001
FC00DFF000FE039FFF007FFF1FFF000FFC1FFF28207D9F2D>I<FFFF801FFCFFFF801FFCFFFF80
1FFC0FF80003C007F800038007FC00078003FC00070003FE000F0001FE000E0001FF000E0000FF
001C0000FF001C00007F803800007F803800007FC07800003FC07000003FE0F000001FE0E00000
1FF1E000000FF1C000000FF9C0000007FB80000007FB80000003FF00000003FF00000003FF0000
0001FE00000001FE00000000FC00000000FC00000000780000000078000026207E9F2B>I<FFFF
1FFFE07FF8FFFF1FFFE07FF8FFFF1FFFE07FF80FF000FE0007800FF800FE00078007F800FE0007
0007F8007F00070003FC007F000E0003FC00FF800E0003FE00FF801E0001FE00FF801C0001FE01
DFC01C0001FF01DFC03C0000FF03DFE0380000FF838FE07800007F838FE07000007F8707F07000
007FC707F0F000003FCF07F8E000003FCE03F8E000001FEE03F9C000001FFC01FDC000001FFC01
FFC000000FFC01FF8000000FF800FF80000007F800FF00000007F0007F00000007F0007F000000
03F0007E00000003E0003E00000001E0003C00000001C0001C000035207E9F3A>I<7FFF807FFC
7FFF807FFC7FFF807FFC03FE000F0001FE001E0000FF003C0000FF807800007FC07800003FE0F0
00001FE1E000000FF3C000000FFF80000007FF00000003FE00000001FE00000000FF00000000FF
80000000FFC0000001FFC0000003DFE00000078FF00000078FF800000F07FC00001E03FC00003C
01FE00007800FF0000F000FF8000E0007FC001E0003FC0FFFC01FFFFFFFC01FFFFFFFC01FFFF28
207F9F2B>I<FFFF801FFCFFFF801FFCFFFF801FFC0FF80003C007F800038007FC00078003FC00
070003FE000F0001FE000E0001FF000E0000FF001C0000FF001C00007F803800007F803800007F
C07800003FC07000003FE0F000001FE0E000001FF1E000000FF1C000000FF9C0000007FB800000
07FB80000003FF00000003FF00000003FF00000001FE00000001FE00000000FC00000000FC0000
00007800000000780000000070000000007000000000F000000000E000000001E000007C01C000
00FE03C00000FE03800000FE07800000FE0F000000FC1E000000787C0000003FF00000000FC000
0000262E7E9F2B>I<3FFFFFF83FFFFFF83F800FF03E001FE03C003FE038003FC078007F807800
FF807001FF007001FE007003FE007007FC000007F800000FF800001FF000001FE000003FC00000
7FC00000FF801C00FF001C01FF001C03FE001C03FC001C07FC003C0FF8003C0FF000381FE00078
3FE000F83FC001F87F8007F8FFFFFFF8FFFFFFF81E207E9F24>I E /Fg
28 122 df<3C7EFFFFFFFF7E3C08087E870D>46 D<3C7EFFFFFFFF7E3C000000003C7EFFFFFFFF
7E3C08147E930D>58 D<001FC0C000FFF1C003FFFFC007F81FC00FE00FC01FC007C03F8003C03F
8003C07F8003C07F0001C07F0001C0FF0001C0FF000000FF000000FF000000FF000000FF000000
FF000000FF000000FF0000007F0001C07F0001C07F8001C03F8003C03F8003801FC007800FE007
0007F81E0003FFFC0000FFF800001FC0001A1F7D9E21>67 D<001FE06000FFF8E001FFFDE007FC
1FE00FE007E01FC003E01FC001E03F8001E07F8001E07F0000E07F0000E0FF0000E0FF000000FF
000000FF000000FF000000FF000000FF03FFFCFF03FFFCFF03FFFC7F000FE07F000FE07F800FE0
3F800FE01FC00FE01FC00FE00FE00FE007FC1FE001FFFFE000FFF9E0001FE0601E1F7D9E24>71
D<FFE00FFEFFF00FFEFFF80FFE0FF800E00FFC00E00FFE00E00FFE00E00EFF00E00E7F80E00E3F
80E00E3FC0E00E1FE0E00E0FE0E00E0FF0E00E07F8E00E03F8E00E03FCE00E01FEE00E00FFE00E
00FFE00E007FE00E003FE00E003FE00E001FE00E000FE00E0007E00E0007E00E0003E0FFE001E0
FFE001E0FFE000E01F1F7E9E24>78 D<7FFFFFC07FFFFFC07FFFFFC07C3F87C0783F83C0703F81
C0F03F81E0F03F81E0E03F80E0E03F80E0E03F80E0E03F80E0003F8000003F8000003F8000003F
8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000
3F8000003F80000FFFFE000FFFFE000FFFFE001B1E7E9D20>84 D<FFFE1FFCFFFE1FFCFFFE1FFC
0FE001C00FE001C00FE001C00FE001C00FE001C00FE001C00FE001C00FE001C00FE001C00FE001
C00FE001C00FE001C00FE001C00FE001C00FE001C00FE001C00FE001C00FE001C00FE001C00FE0
01C00FE001C007E003C007F0038003F0078001F81F0000FFFE00007FF800000FE0001E1F7E9E23
>I<FFFE07FEFFFE07FEFFFE07FE0FF001E007F001C007F803C003F8038003FC078001FC070001
FE0F0000FE0E0000FF1E00007F1C00007FB800003FB800003FF000001FF000001FE000000FE000
000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000FFFE
0000FFFE0000FFFE001F1F7F9E22>89 D<07F8000FFE001FFF003F9F803F8FC03F8FC01F0FC00E
0FC003FFC01FFFC03F8FC07E0FC0FC0FC0FC0FC0FC0FC0FC0FC07E3FC07FF7F03FE7F01F81F014
147F9316>97 D<FF8000FF8000FF80001F80001F80001F80001F80001F80001F80001F80001F80
001F80001F8FC01FFFE01FFFF01FE1F81F81F81F81F81F81FC1F81FC1F81FC1F81FC1F81FC1F81
FC1F81FC1F81FC1F81F81F81F81FE3F01FFFF01E7FE01C1F801620809F19>I<03F00FF81FFC3F
FE7EFE7EFEFE7CFE38FE00FE00FE00FE00FE00FE007E077F073F0E1FFC0FF803F010147E9314>
I<03F8000FFE001FFF003F1F807F0F807E0FC0FE0FC0FFFFC0FFFFC0FFFFC0FE0000FE0000FE00
00FE00007F01C07F03C03F83C01FFF8007FE0001F80012147F9315>101
D<003F8000FFC003FFE007E1E00FCFE01F8FE01F87C01F87C01F80001F80001F80001F8000FFF0
00FFF000FFF0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80
001F80001F80001F8000FFF800FFF800FFF80013207F9F0E>I<07F1E01FFFF03FFFF07C1FF07C
1FE0FC1F80FC1F80FC1F80FC1F807C1F007C1F003FFE003FFC0077F0007000007000007FFE007F
FF803FFFC03FFFE07FFFF0F803F0F801F0F801F0F801F0FC03F07E07E03FFFC01FFF8003FC0014
1E7F9317>I<FF8000FF8000FF80001F80001F80001F80001F80001F80001F80001F80001F8000
1F80001F8FC01F9FE01FFFF01FE1F81FC1F81FC1F81F81F81F81F81F81F81F81F81F81F81F81F8
1F81F81F81F81F81F81F81F81F81F8FFF3FFFFF3FFFFF3FF18207F9F19>I<0E003F803F807F80
7F803F803F800E0000000000000000000000FF80FF80FF801F801F801F801F801F801F801F801F
801F801F801F801F801F801F80FFF0FFF0FFF00C217FA00D>I<FF80FF80FF801F801F801F801F
801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
1F801F801F80FFF0FFF0FFF00C207F9F0D>108 D<FF07E03F00FF1FF0FF80FF3FF9FFC01F71FF
8FE01FC0FE07E01FC0FE07E01F80FC07E01F80FC07E01F80FC07E01F80FC07E01F80FC07E01F80
FC07E01F80FC07E01F80FC07E01F80FC07E01F80FC07E01F80FC07E0FFF3FF9FFCFFF3FF9FFCFF
F3FF9FFC26147F9327>I<FF0FC0FF1FE0FF7FF01F61F81FC1F81FC1F81F81F81F81F81F81F81F
81F81F81F81F81F81F81F81F81F81F81F81F81F81F81F8FFF3FFFFF3FFFFF3FF18147F9319>I<
01F8000FFF001FFF803F0FC07E07E07E07E07E07E0FE07F0FE07F0FE07F0FE07F0FE07F0FE07F0
FE07F07E07E07E07E03F0FC01FFF800FFF0003FC0014147F9317>I<FF8FC0FFFFE0FFFFF01FE3
F81F83F81F81F81F81FC1F81FC1F81FC1F81FC1F81FC1F81FC1F81FC1F81FC1F81F81F83F81FE3
F01FFFF01FFFE01F9F801F80001F80001F80001F80001F80001F8000FFF000FFF000FFF000161D
809319>I<FF7C00FFFE00FFFF001FFF801FBF801FBF801F9F001F8E001F80001F80001F80001F
80001F80001F80001F80001F80001F8000FFF800FFF800FFF8001114809313>114
D<1FB03FF07FF0F0F0F070F070F800FF807FE07FF03FF01FF801F8E078E078F078F870FFF0FFE0
CF800D147E9312>I<07000700070007000F000F000F001F003F00FFF8FFF8FFF83F003F003F00
3F003F003F003F003F003F003F383F383F383F383F381FF00FE007C00D1D7F9C12>I<FF8FF8FF
8FF8FF8FF81F81F81F81F81F81F81F81F81F81F81F81F81F81F81F81F81F81F81F81F81F81F81F
81F81F83F81F87F80FFFFF07FDFF03F1FF18147F9319>I<FFE7F8FFE7F8FFE7F81F81C00FC380
0FC3800FC38007E70007E70007E70003FE0003FE0003FE0001FC0001FC0001FC0000F80000F800
00F80000700015147F9318>I<FF8FF3FCFF8FF3FCFF8FF3FC1F87C0E01F87E0E00FC7E1C00FC7
E1C00FCFF1C007EFF38007EFF38007FFFB8003FCFF0003FCFF0003FCFF0001F87E0001F87E0001
F87E0000F03C0000F03C0000F03C001E147F9321>I<FFE7F8FFE7F8FFE7F81F81C00FC3800FC3
800FC38007E70007E70007E70003FE0003FE0003FE0001FC0001FC0001FC0000F80000F80000F8
000070000070007CF000FEE000FEE000E1C000E3C000FF80007F00003C0000151D7F9318>121
D E /Fh 2 16 df<0003FE0000001FFFC000007C01F00001E0003C000380000E0007000007000E
000003801C000001C018000000C038000000E03000000060700000007060000000306000000030
E000000038C000000018C000000018C000000018C000000018C000000018C000000018C0000000
18E000000038600000003060000000307000000070300000006038000000E018000000C01C0000
01C00E0000038007000007000380000E0001E0003C00007C01F000001FFFC0000003FE00002525
7E9C2A>13 D<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E010
107E9115>15 D E /Fi 88 124 df<001F83F000FFEFF801E0FE7C03C1F87C0781F87C0F01F038
0F00F0000F00F0000F00F0000F00F0000F00F0000F00F000FFFFFF80FFFFFF800F00F0000F00F0
000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00
F0000F00F0000F00F0000F00F0000F00F000FFC3FF00FFC3FF001E20809F1B>11
D<001F8000FFC001E0E003C0F00781F00F01F00F00E00F00000F00000F00000F00000F0000FFFF
F0FFFFF00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00
F00F00F00F00F00F00F00F00F0FFC3FFFFC3FF1820809F19>I<001FB000FFF001E1F003C1F007
81F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFFFF0FFFFF00F00F00F00F00F00F00F
00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FF
E7FFFFE7FF1820809F19>I<001FC0FC00007FE7FE0001F07F070003C0FE07800780FC0F800F00
F80F800F007807000F007800000F007800000F007800000F007800000F00780000FFFFFFFF80FF
FFFFFF800F007807800F007807800F007807800F007807800F007807800F007807800F00780780
0F007807800F007807800F007807800F007807800F007807800F007807800F007807800F007807
800F00780780FFE3FF3FF8FFE3FF3FF82520809F26>I<001FC0FD80007FE7FF8001F07F0F8003
C0FE0F800780FC0F800F00F807800F007807800F007807800F007807800F007807800F00780780
0F00780780FFFFFFFF80FFFFFFFF800F007807800F007807800F007807800F007807800F007807
800F007807800F007807800F007807800F007807800F007807800F007807800F007807800F0078
07800F007807800F007807800F00780780FFE3FF3FF8FFE3FF3FF82520809F26>I<78FCFCFCFC
FCFC7C78787878787878783830303030000000000078FCFCFCFC7806207D9F0D>33
D<781E00FC3F00FC3F00FE3F80FE3F807E1F800601800601800601800C03000C0300180600380E
00701C00200800110F7E9F17>I<0F0000301F80007038E00060787001E0707C07C0703FFF80F0
31FB80F0300700F0300600F0300E00F0301C00F030180070303800706070007860600038C0E000
1F81C0000F018000000380E0000303F000070718000E070C000C0E0C001C0E0C00381E0600301E
0600701E0600E01E0600C01E0601C01E0603801E0603000E0C07000E0C0E00070C0C0007181C00
03F0180000E01F257DA126>37 D<0078000000FC000001C6000003830000038300000783000007
830000078300000786000007860000078C00000798000007B81FFC03F01FFC03E003E003C00180
03E0030007E003000FF006001CF006003CF80C00787C0C00783C1800F83E3000F81F3000F80FE0
00F807C0007C03C0187C03E0383E0EF8701FFC3FE007E00FC01E207E9F23>I<78FCFCFEFE7E06
06060C0C18387020070F7D9F0D>I<006000C001800380070006000E001C001C003C0038003800
78007000700070007000F000F000F000F000F000F000F000F000F000F000F000F0007000700070
0070007800380038003C001C001C000E00060007000380018000C000600B2E7DA112>I<C00060
00300038001C000C000E000700070007800380038003C001C001C001C001C001E001E001E001E0
01E001E001E001E001E001E001E001E001C001C001C001C003C0038003800780070007000E000C
001C00380030006000C0000B2E7DA112>I<018001C001800180C183E187F99F7DBE1FF807E007
E01FF87DBEF99FE187C1830180018001C0018010147DA117>I<78FCFCFEFE7E0606060C0C1838
7020070F7D850D>44 D<FFC0FFC0FFC00A037F8B0F>I<78FCFCFCFC7806067D850D>I<00030003
000700060006000E000C000C001C0018001800380030003000700060006000E000C000C001C001
80018001800380030003000700060006000E000C000C001C001800180038003000300070006000
6000E000C000C000102D7DA117>I<03F0000FFC001E1E003C0F00380700780780780780780780
F807C0F807C0F807C0F807C0F807C0F807C0F807C0F807C0F807C0F807C0F807C0F807C0F807C0
7807807807807807803C0F003C0F001E1E000FFC0003F000121D7E9C17>I<00C001C00FC0FFC0
F3C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003
C003C003C003C07FFF7FFF101D7D9C17>I<07F0001FFC00383E00601F00F80F80FC0F80FC0FC0
FC07C07807C03007C0000FC0000F80000F80001F00001E00003C0000780000F00000E00001C000
0380000700C00E00C01C00C01801C03FFF807FFF80FFFF80FFFF80121D7E9C17>I<07F0001FFC
00383E00381F007C1F807C0F807C0F803C1F80001F00001F00001E00003C0003F80003F000003C
00001E00000F00000F80000FC0000FC0300FC0780FC0FC0FC0FC0F80FC0F80781F00383E001FFC
0007F000121D7E9C17>I<000E00000E00001E00003E00003E00007E0000FE0000DE00019E0003
9E00031E00061E000E1E000C1E00181E00381E00301E00601E00E01E00FFFFF0FFFFF0001E0000
1E00001E00001E00001E00001E0001FFE001FFE0141D7F9C17>I<3803003FFF003FFE003FFC00
3FF0003FC00030000030000030000030000030000031F00037FC003E1E00380F00300780000780
0007C00007C00007C07807C0F807C0F807C0F80780F00F80600F00383E001FF80007E000121D7E
9C17>I<007C0001FE000783000F07801E0F801C0F803C0700780000780000780000F80000F9FC
00FBFE00FE0F00FC0700FC0780F807C0F807C0F807C0F807C07807C07807C07807C03807803C07
801C0F000E1E0007FC0003F000121D7E9C17>I<6000007FFFC07FFFC07FFF807FFF80E00300C0
0600C00C00C00C0000180000300000300000600000E00000E00001E00001C00001C00003C00003
C00003C00003C00007C00007C00007C00007C00007C00007C00007C000038000121E7D9D17>I<
03F0000FFC001C1E003807003003807003807003807803807C03807E07003F8E001FFC001FF800
07FC000FFE001CFF00387F80701F807007C0E003C0E001C0E001C0E001C0E00180700380780300
3C0E000FFC0003F000121D7E9C17>I<03F0000FF8001E1E003C0E00780700780780F80780F807
80F80780F807C0F807C0F807C0F807C0780FC0380FC03C1FC01FF7C00FE7C00007C00007800007
80000780380F007C0F007C1E00781C003078001FF0000FC000121D7E9C17>I<78FCFCFCFC7800
0000000000000078FCFCFCFC7806147D930D>I<78FCFCFCFC78000000000000000070F8FCFCFC
7C0C0C0C181838306020061D7D930D>I<7FFFFFE0FFFFFFF00000000000000000000000000000
000000000000000000000000000000000000FFFFFFF07FFFFFE01C0C7D9023>61
D<0FC03FF070F86078F07CF87CF87C707C007800F801F001C00380038003000700060006000600
06000600000000000000000000000F001F801F801F801F800F000E207D9F15>63
D<0003800000038000000380000007C0000007C0000007C000000FE000000FE000000FE0000019
F0000019F0000019F0000030F8000030F8000030F80000607C0000607C0000607C0000C03E0000
C03E0000FFFE0001FFFF0001801F0001801F0003000F8003000F8003000F80070007C00F8007C0
FFE07FFEFFE07FFE1F1F7F9E22>65 D<FFFFF000FFFFFC0007C03F0007C01F0007C00F8007C00F
C007C00FC007C00FC007C00FC007C00FC007C00F8007C01F8007C01F0007C07E0007FFFC0007FF
FE0007C01F0007C00F8007C00FC007C007C007C007E007C007E007C007E007C007E007C007E007
C007C007C00FC007C00F8007C03F00FFFFFE00FFFFF8001B1F7F9E20>I<001FC040007FF0C001
F819C003E00FC0078007C00F0003C01F0001C03E0001C03E0001C07E0000C07C0000C07C0000C0
FC000000FC000000FC000000FC000000FC000000FC000000FC0000007C0000007C0000C07E0000
C03E0000C03E0000C01F0001800F0001800780030003E0060001F81C00007FF800001FC0001A1F
7D9E21>I<FFFFF000FFFFFE0007C03F0007C00F8007C007C007C003E007C001F007C001F007C0
00F807C000F807C000F807C000FC07C000FC07C000FC07C000FC07C000FC07C000FC07C000FC07
C000FC07C000FC07C000F807C000F807C000F807C001F007C001F007C003E007C003C007C00F80
07C03F00FFFFFE00FFFFF0001E1F7F9E23>I<FFFFFF80FFFFFF8007C00F8007C0038007C00180
07C0018007C001C007C000C007C000C007C060C007C060C007C0600007C0600007C0E00007FFE0
0007FFE00007C0E00007C0600007C0600007C0603007C0603007C0003007C0006007C0006007C0
006007C000E007C000E007C001E007C007C0FFFFFFC0FFFFFFC01C1F7F9E1F>I<FFFFFF80FFFF
FF8007C00F8007C0038007C0018007C0018007C001C007C000C007C000C007C060C007C060C007
C0600007C0600007C0E00007FFE00007FFE00007C0E00007C0600007C0600007C0600007C06000
07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000FFFF0000FFFF00
001A1F7F9E1E>I<000FE020007FF86001F81CE003E007E007C003E00F8001E01F0000E03E0000
E03E0000E07E0000607C0000607C000060FC000000FC000000FC000000FC000000FC000000FC00
0000FC00FFFC7C00FFFC7C0003E07E0003E03E0003E03E0003E01F0003E00F8003E007C003E003
E007E001F80FE0007FFCE0000FE0201E1F7D9E24>I<FFFC7FFEFFFC7FFE07C007C007C007C007
C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C0
07FFFFC007FFFFC007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007
C007C007C007C007C007C007C007C007C007C007C0FFFC7FFEFFFC7FFE1F1F7F9E22>I<FFFEFF
FE07C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C0
07C007C007C007C007C007C007C007C0FFFEFFFE0F1F809E10>I<0FFFE00FFFE0003E00003E00
003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00
003E00003E00003E00003E00003E00003E00783E00FC3E00FC3E00FC3E00F87C0070F8003FF000
0FC000131F7F9E17>I<FFFE0FFEFFFE0FFE07C003E007C0038007C0030007C0060007C00C0007
C0180007C0300007C0600007C0C00007C1800007C3800007C7C00007CFC00007DFE00007FBF000
07F1F00007E0F80007C0F80007C07C0007C07E0007C03E0007C01F0007C01F0007C00F8007C00F
C007C007C007C007E0FFFE3FFEFFFE3FFE1F1F7F9E23>I<FFFF00FFFF0007C00007C00007C000
07C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000
07C00007C00307C00307C00307C00307C00707C00707C00607C00E07C01E07C07EFFFFFEFFFFFE
181F7F9E1C>I<FFC0000FFEFFE0001FFE07E0001FC007E0001FC006F00037C006F00037C006F0
0037C006780067C006780067C006780067C0063C00C7C0063C00C7C0063C00C7C0061E0187C006
1E0187C0060F0307C0060F0307C0060F0307C006078607C006078607C006078607C00603CC07C0
0603CC07C00603CC07C00601F807C00601F807C00601F807C00600F007C00F00F007C0FFF0F0FF
FEFFF060FFFE271F7F9E2A>I<FFC01FFEFFE01FFE07F001E007F000C006F800C006F800C0067C
00C0067E00C0063E00C0061F00C0061F80C0060F80C00607C0C00607E0C00603E0C00603F0C006
01F0C00600F8C00600FCC006007CC006003EC006003FC006001FC006000FC006000FC0060007C0
060007C0060003C00F0001C0FFF001C0FFF000C01F1F7F9E22>I<003FC00000FFF00003F0FC00
07C03E000F801F001F000F801F000F803E0007C03E0007C07C0003E07C0003E0FC0003F0FC0003
F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F07C0003E07E0007E07E00
07E03E0007C01F000F801F000F800F801F0007C03E0003F0FC0000FFF000003FC0001C1F7D9E23
>I<FFFFF000FFFFFC0007C03E0007C01F0007C00F8007C00F8007C00FC007C00FC007C00FC007
C00FC007C00FC007C00F8007C00F8007C01F0007C03E0007FFFC0007FFF00007C0000007C00000
07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C000
00FFFE0000FFFE00001A1F7F9E1F>I<003FC00000FFF00003F0FC0007C03E000F801F001F000F
801F000F803E0007C03E0007C07E0007E07C0003E0FC0003F0FC0003F0FC0003F0FC0003F0FC00
03F0FC0003F0FC0003F0FC0003F0FC0003F07C0003E07E0007E07E0007E03E0007C01F0F0F801F
1F8F800FB0DF0007F07E0003F0FC0000FFF000003FF010000030100000381000003C3000003FF0
00003FF000001FE000001FE000000FC0000007801C287D9E23>I<FFFFC000FFFFF80007C07C00
07C03E0007C01F0007C01F0007C01F8007C01F8007C01F8007C01F8007C01F0007C01F0007C03E
0007C07C0007FFF80007FFC00007C0E00007C0F00007C0780007C0780007C07C0007C07C0007C0
7C0007C07E0007C07E0007C07E0007C07E0607C07F0607C03F8EFFFE1FFCFFFE03F01F1F7F9E21
>I<07E0800FF9803C1F80380780700380700380F00180F00180F00180F80000F80000FE00007F
E0007FFC003FFE001FFF0007FF8000FF80000F800007C00007C00003C0C003C0C003C0C003C0E0
0380E00780F00700FE0E00CFFC0083F800121F7D9E19>I<7FFFFFE07FFFFFE07C0F81E0700F80
E0600F8060600F8060E00F8070C00F8030C00F8030C00F8030C00F8030000F8000000F8000000F
8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000
0F8000000F8000000F8000000F8000000F8000000F800007FFFF0007FFFF001C1F7E9E21>I<FF
FE1FFEFFFE1FFE07C001E007C000C007C000C007C000C007C000C007C000C007C000C007C000C0
07C000C007C000C007C000C007C000C007C000C007C000C007C000C007C000C007C000C007C000
C007C000C007C000C007C000C007C000C003C0018003E0018001E0030000F00600007C1C00001F
F8000007E0001F1F7F9E22>I<FFF807FEFFF807FE0FC001F00FC000E007C000C007C000C003E0
018003E0018003E0018001F0030001F0030001F8030000F8060000F8060000FC0E00007C0C0000
7C0C00003E1800003E1800003E1800001F3000001F3000001FB000000FE000000FE000000FE000
0007C0000007C0000003800000038000000380001F1F7F9E22>I<FFF8FFF83FF0FFF8FFF83FF0
0F800F800F800F800F8003000F800FC0030007C007C0060007C007C0060007C00FE0060003E00F
E00C0003E00FE00C0003E00FF00C0001F019F0180001F019F0180001F019F0180000F830F83000
00F830F8300000F830F83000007C607C6000007C607C6000007C607C6000003EC03EC000003EC0
3EC000003EC03EC000003F801FC000001F801F8000001F801F8000001F000F8000000F000F0000
000F000F0000000E000700000006000600002C1F7F9E2F>I<7FFC7FF87FFC7FF807E01F8003E0
0E0003F00E0001F80C0000F8180000FC3800007C3000007E6000003FE000001FC000001FC00000
0F8000000FC0000007E0000007E000000FF000000DF0000019F8000038FC0000307C0000607E00
00E03E0000C03F0001C01F8001800F8003800FC00FC00FC0FFF07FFEFFF07FFE1F1F7F9E22>I<
FFFC03FF80FFFC03FF8007E000F80003E000600003F000600001F000C00001F801C00000F80180
0000FC038000007E030000007E060000003F060000001F0C0000001F9C0000000F980000000FF8
00000007F000000007E000000003E000000003E000000003E000000003E000000003E000000003
E000000003E000000003E000000003E000000003E000000003E00000007FFF0000007FFF000021
1F809E22>I<7FFFF87FFFF87E01F07801F07003E06007E0E007C0E00FC0C00F80C01F00C01F00
003E00003E00007C0000FC0000F80001F80001F00003E00C03E00C07C00C07C00C0F801C1F801C
1F00183F00183E00387C00787C01F8FFFFF8FFFFF8161F7D9E1C>I<FEFEC0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D
>I<0802001C0700380E00300C00601800601800C03000C03000C03000FC3F00FE3F80FE3F807E
1F807E1F803C0F00110F7D9F17>I<FEFE06060606060606060606060606060606060606060606
06060606060606060606060606060606060606FEFE072D7FA10D>I<081C38306060C0C0C0FCFE
FE7E7E3C070F7E9F0D>96 D<07F0001FFC003E1E003E0F003E07801C078000078000078003FF80
0FFF803F07807C07807C0780F80798F80798F80798F80F987C1FF83FF3F00FC1E015147F9317>
I<0F0000FF0000FF00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F1F
800F7FC00FE1E00F80F00F00780F00780F007C0F007C0F007C0F007C0F007C0F007C0F007C0F00
780F00780F00F80F80F00EC1E00E7FC00C1F001620809F19>I<03F00FFC1E3E3C3E3C3E781C78
00F800F800F800F800F800F80078007C003C033E031F0E0FFC03F010147E9314>I<0003C0003F
C0003FC00003C00003C00003C00003C00003C00003C00003C00003C00003C003E3C00FFBC01E0F
C03C07C07C03C07803C07803C0F803C0F803C0F803C0F803C0F803C0F803C07803C07803C07803
C03C07C01E1FC00FFBFC03E3FC16207E9F19>I<03F0000FFC001E1E003C0F003C0F00780F0078
0780F80780FFFF80FFFF80F80000F80000F800007800007C00003C01801E03800F070007FE0001
F80011147F9314>I<003E0000FF0003CF80078F80078F800F07000F00000F00000F00000F0000
0F00000F0000FFF000FFF0000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F00000F00000F00000F00000F00000F0000FFF000FFF0001120809F0E>I<03F1E00FFF
F01E1F703C0F607C0F807C0F807C0F807C0F807C0F803C0F001E1E001FFC0033F0003000003000
003800003FFE003FFF801FFFC03FFFE07801E07000F0E00070E00070E000707000E07801E03E07
C00FFF0003FC00141E7F9317>I<0F0000FF0000FF00000F00000F00000F00000F00000F00000F
00000F00000F00000F00000F1F800F7FC00FE1E00FC0F00F80F00F00F00F00F00F00F00F00F00F
00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFF3FFFFF3FF1820809F19>I<
0E001F003F003F001F000E00000000000000000000000F007F007F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F00FFE0FFE00B1F809E0D>I<00F001F801F801F801
F800F000000000000000000000007807F807F800F8007800780078007800780078007800780078
00780078007800780078007800780078007800787078F878F8F0F9E07FC03F000D28839E0E>I<
0F0000FF0000FF00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0FF8
0F0FF80F07C00F07000F06000F0C000F18000F38000F78000FFC000FBC000F1E000F1F000F0F00
0F0F800F07C00F03C00F03E0FFE7FCFFE7FC1620809F18>I<0F00FF00FF000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
000F000F000F00FFF0FFF00C20809F0D>I<0F0FC07E00FF3FE1FF00FFE0F707800FC07E03C00F
807C03C00F007803C00F007803C00F007803C00F007803C00F007803C00F007803C00F007803C0
0F007803C00F007803C00F007803C00F007803C00F007803C00F007803C0FFF3FF9FFCFFF3FF9F
FC2614809327>I<0F1F80FF7FC0FFE1E00FC0F00F80F00F00F00F00F00F00F00F00F00F00F00F
00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFF3FFFFF3FF1814809319>I<01F800
07FE001F0F803C03C03C03C07801E07801E0F801F0F801F0F801F0F801F0F801F0F801F07801E0
7801E03C03C03C03C01F0F8007FE0001F80014147F9317>I<0F1F80FF7FC0FFE1E00F81F00F00
F80F00F80F007C0F007C0F007C0F007C0F007C0F007C0F007C0F00780F00F80F00F80F81F00FC3
E00F7FC00F1F000F00000F00000F00000F00000F00000F00000F0000FFF000FFF000161D809319
>I<03E0C00FF9C01F1DC03E07C07C07C07C03C07803C0F803C0F803C0F803C0F803C0F803C0F8
03C07803C07C03C07C07C03E07C01E1FC00FFBC003E3C00003C00003C00003C00003C00003C000
03C00003C0003FFC003FFC161D7E9318>I<0F7CFFFEFFDF0F9F0F9F0F0E0F000F000F000F000F
000F000F000F000F000F000F000F00FFF0FFF01014809312>I<0FB03FF07070E030E030E030F0
00FF007FC03FE01FF003F80078C038C038E038E030F070FFE08F800D147E9312>I<0600060006
0006000E000E001E003E00FFF8FFF81E001E001E001E001E001E001E001E001E001E001E181E18
1E181E181E180F3007E003C00D1C7F9B12>I<0F00F0FF0FF0FF0FF00F00F00F00F00F00F00F00
F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F01F00F01F00707F003FEFF01F8
FF1814809319>I<FFC7F8FFC7F81F01E00F01C00F01800F018007830007830007830003C60003
C60003EE0001EC0001EC0001FC0000F80000F80000700000700000700015147F9318>I<FF9FF3
FCFF9FF3FC1E03C0F01E03C0E00F03C0C00F07C0C00F07E0C00787E180078CE180078CF18003CC
F30003D8730003D87B0003F87F0001F87E0001F03E0001F03E0000F03C0000E01C0000E01C001E
147F9321>I<7FE7FC7FE7FC0783E007838003C30001E60001EE0000FC00007800007800003C00
007E0000FE0001CF000187800387800703C00F03E0FFCFFEFFCFFE1714809318>I<FFC7F8FFC7
F81F01E00F01C00F01800F018007830007830007830003C60003C60003EE0001EC0001EC0001FC
0000F80000F80000700000700000700000600000600000600070C000F8C000C18000E380007F00
003C0000151D7F9318>I<3FFF3FFF381E303E703C607860F861F001E003E007C007830F831F03
1E073C067C06781EFFFEFFFE10147F9314>I<FFFFFCFFFFFC1602808C17>I
E /Fj 92 127 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8F870051C77
9B18>33 D<2008783CF83EF83EF83EF83EF83EF83EF83EF83EF83EF83E783C30180F0E7C9C18>
I<030600078F00078F00078F00078F00078F00078F007FFFC0FFFFE0FFFFE07FFFC00F1E000F1E
000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFFC01E3C001E3C001E3C001E3C001E3C
001E3C000C1800131C7E9B18>I<3803007C07807C0F80FE0F80FE0F00FE1F00FE1F00FE1E00FE
3E00FE3E007C3C007C7C00387C0000780000F80000F80000F00001F00001F00001E00003E00003
E00003C00007C00007C3800787C00F87C00F8FE00F0FE01F0FE01F0FE01E0FE03E0FE03E07C03C
07C018038013247E9F18>37 D<03E00007F0000FF8000FF8001F7C001E3C001E3C001E3C001E7F
F01E7FF01EFFF01FFFF00FEF000FCF000F8F003F9F007F9E007FDE00FBFE00F3FC00F1FC00F0F8
00F0F8F0F9FEF07FFFF07FFFF03FCFE01F07C0141C7F9B18>I<1C3E3F3F1F0F0F0F1F3E7EFCF8
70080E799B18>I<007800F801F803E007C00F801F001E003E003C007C0078007800F800F000F0
00F000F000F000F000F000F000F800780078007C003C003E001E001F000F8007C003E001F800F8
00780D247A9F18>I<7000F8007C003E001F000F8007C003C003E001E001F000F000F000F80078
007800780078007800780078007800F800F000F001F001E003E003C007C00F801F003E007C00F8
0070000D247C9F18>I<01C00001C00001E00001E000E1E380F9EF80FDFF80FFFF803FFE000FF8
000FF8003FFE00FFFF80FDFF80F9EF80E1E38001E00001E00001C00001C00011147D9718>I<00
600000F00000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000
F00000F00000F00000F00000F00000F00000600013147E9718>I<1E003F007F007F807F803F80
1F800F801F007F00FE00FC007000090D798618>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<
387CFEFEFE7C380707788618>I<000300000780000F80000F80000F00001F00001F00003E0000
3E00003C00007C00007C0000F80000F80000F00001F00001F00003E00003E00007C00007C00007
80000F80000F80001F00001F00001E00003E00003E00007C00007C0000780000F80000F80000F0
000060000011247D9F18>I<01F00007FC000FFE001FFF001F1F003E0F807C07C07803C07803C0
F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F803E07803C07803C07C07C0
3E0F801F1F001FFF000FFE0007FC0001F000131C7E9B18>I<01C001C003C007C00FC03FC0FFC0
FFC0FBC063C003C003C003C003C003C003C003C003C003C003C003C003C003C003C07FFEFFFFFF
FF7FFE101C7C9B18>I<07F8001FFE003FFF007FFF80FC1FC0F807C0F803E0F801E07001E00001
E00001E00003E00003C00007C0000F80001F00003E00007C0000F80001F00007E0000FC0001F81
E03E01E07FFFE0FFFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007FFF807C0FC07C
07C07C03C03803C00003C00007C0001F8003FF0003FE0003FE0003FF00000F800003C00003E000
01E00001E07001E0F803E0F803C0FC0FC07FFF807FFF001FFE0007F800131C7E9B18>I<003F00
007F0000FF0000EF0001EF0003CF0003CF00078F000F8F000F0F001F0F003E0F003C0F007C0F00
F80F00FFFFF8FFFFF8FFFFF8FFFFF8000F00000F00000F00000F00000F0000FFF001FFF801FFF8
00FFF0151C7F9B18>I<3FFF803FFF803FFF803FFF803C00003C00003C00003C00003C00003C00
003C00003FF8003FFE003FFF003FFF803E0FC03803E00003E00001E07001E0F801E0F803E0F807
C0FC1FC07FFF803FFF001FFE0007F800131C7E9B18>I<007E0001FF0007FF800FFFC01FC7C03F
07C03E03807C0000780000782000FBFE00FFFF00FFFF80FFFFC0FC07C0F803E0F803E0F001E0F8
01E0F801E07801E07C03E07C07C03F0FC01FFF800FFF0007FE0003F800131C7E9B18>I<F00000
FFFFE0FFFFE0FFFFE0FFFFE0F007C0F00F80001F00003E00003C00007C0000780000F80000F000
01F00001E00001E00003E00003C00003C00003C00007C000078000078000078000078000078000
078000030000131D7E9C18>I<03F8000FFE001FFF003FFF803E0F807C07C07803C07803C07803
C07C07C03E0F801FFF000FFE000FFE003FFF807E0FC07803C0F803E0F001E0F001E0F001E0F803
E07803C07E0FC03FFF801FFF000FFE0003F800131C7E9B18>I<03F8000FFC001FFE003FFF007E
0F807C07C0F803C0F003C0F003E0F003E0F003E0F803E07C07E07FFFE03FFFE01FFFE00FFDE000
83E00003C00003C00007C0380F807C1F807C3F007FFE003FFC001FF8000FE000131C7E9B18>I<
387CFEFEFE7C38000000000000387CFEFEFE7C380714789318>I<1C3E7F7F7F3E1C0000000000
001C3E7F7F7F3F1F1F1E7EFCF870081A799318>I<000300000F80001F80003F0000FE0001FC00
03F00007E0001FC0003F80007E0000FC0000FC00007E00003F80001FC00007E00003F00001FC00
00FE00003F00001F80000F8000030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE00000000000
00000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<600000F80000FC00007E00003F
80001FC00007E00003F00001FC0000FE00003F00001F80001F80003F0000FE0001FC0003F00007
E0001FC0003F80007E0000FC0000F8000060000011187D9918>I<0FF0003FFE007FFF00FFFF00
F81F80F80780F80F80703F80007F0000FE0001F80003F00003E00003C00003C00003C00003C000
03800000000000000000000000000000000003800007C00007C00007C000038000111C7D9B18>
I<00F80000F80000F80001FC0001DC0001DC0001DC0003DE0003DE0003DE0003DE00038E00078F
00078F00078F00078F00078F000F07800FFF800FFF800FFF800FFF801E03C01E03C07F8FF0FFDF
F8FFDFF87F8FF0151C7F9B18>65 D<FFFE00FFFF00FFFF80FFFFC01E03C01E03E01E01E01E01E0
1E01E01E03E01E03C01FFFC01FFF801FFF001FFFC01E07E01E01E01E01F01E00F01E00F01E00F0
1E00F01E01F01E03E0FFFFE0FFFFC0FFFF80FFFE00141C7F9B18>I<01F8E003FFE00FFFE00FFF
E01F87E03E03E07C03E07C01E07801E0F801E0F80000F00000F00000F00000F00000F00000F000
00F80000F801E07801E07C01E07C01E03E03E01F87C00FFF800FFF0003FE0001F800131C7E9B18
>I<7FF800FFFE00FFFF007FFF801E0FC01E07C01E03E01E01E01E01E01E01F01E00F01E00F01E
00F01E00F01E00F01E00F01E00F01E00F01E01F01E01E01E01E01E03E01E07C01E0FC07FFF80FF
FF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF0FFFFF01E00F01E00F01E00F01E00F0
1E1E001E1E001E1E001FFE001FFE001FFE001FFE001E1E001E1E001E1E001E00001E00781E0078
1E00781E00781E0078FFFFF8FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFFF0FFFFF0FFFFF0FFFF
F01E00F01E00F01E00F01E00F01E00001E0F001E0F001E0F001FFF001FFF001FFF001FFF001E0F
001E0F001E0F001E00001E00001E00001E00001E0000FFE000FFE000FFE000FFE000141C7F9B18
>I<01F9C007FFC00FFFC01FFFC01F8FC03E07C07C07C07C03C07803C0F803C0F00000F00000F0
0000F00000F00000F01FF0F03FF0F03FF0F81FF07803C07C07C07C07C03E07C01F8FC01FFFC00F
FFC007FFC001FBC0141C7E9B18>I<7F8FF0FFDFF8FFDFF87F8FF01E03C01E03C01E03C01E03C0
1E03C01E03C01E03C01FFFC01FFFC01FFFC01FFFC01E03C01E03C01E03C01E03C01E03C01E03C0
1E03C01E03C01E03C07F8FF0FFDFF8FFDFF87F8FF0151C7F9B18>I<7FFF80FFFFC0FFFFC07FFF
8001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0
0001E00001E00001E00001E00001E00001E00001E0007FFF80FFFFC0FFFFC07FFF80121C7D9B18
>I<01FFE003FFE003FFE001FFE0000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F00000F00000F00000F00000F00000F00000F00000F00700F00F80F00F83F00FFFE007F
FC003FF8001FF000131C7E9B18>I<7F8FF0FFDFF8FFDFF87F8FF01E0F801E0F801E1F001E3E00
1E3C001E7C001EF8001EF0001FF8001FF8001FFC001FFC001FBC001F3E001F1E001E1F001E0F00
1E0F801E07801E07C07F87F0FFCFF8FFCFF87F87F0151C7F9B18>I<7FF000FFF000FFF0007FF0
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00F00F00F00F00F00F00F00F00F07FFFF0FFFFF0FFFFF07FFFF0141C7F9B18
>I<FF07F8FF07F8FF8FF8FF8FF83D8DE03D8DE03D8DE03D8DE03DDDE03DDDE03DDDE03DDDE03D
DDE03DDDE03CD9E03CF9E03CF9E03CF9E03C71E03C01E03C01E03C01E03C01E03C01E0FF07F8FF
07F8FF07F8FF07F8151C7F9B18>I<7F8FF0FF9FF8FFDFF87FCFF01EC3C01EC3C01EE3C01EE3C0
1EE3C01EE3C01EE3C01E73C01E73C01E73C01E73C01E73C01E73C01E3BC01E3BC01E3BC01E3BC0
1E3BC01E1BC01E1BC07F9FC0FFDFC0FFCFC07F8FC0151C7F9B18>I<0FF8003FFE007FFF007FFF
007C1F00F80F80F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780F007
80F00780F00780F00780F00780F00780F80F807C1F007FFF007FFF003FFE000FF800111C7D9B18
>I<FFFE00FFFF00FFFFC0FFFFC01E07E01E01E01E01F01E00F01E00F01E00F01E00F01E01F01E
01E01E07E01FFFC01FFFC01FFF001FFE001E00001E00001E00001E00001E00001E0000FFC000FF
C000FFC000FFC000141C7F9B18>I<0FF8003FFE007FFF007FFF007C1F00F80F80F00780F00780
F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780F1E780
F1F780F9FF807CFF007FFF007FFF003FFE000FFC00003E00003E00001E00001F00000F00000F00
11227D9B18>I<7FF800FFFC00FFFF007FFF801E1F801E07C01E03C01E03C01E03C01E03C01E07
C01E1F801FFF801FFF001FFE001FFF001E1F801E0F801E07801E07801E07801E07801E07BC1E07
BC7F87FCFFC3FCFFC1F87F80F0161C7F9B18>I<07F3801FFF803FFF807FFF807C1F80F80780F0
0780F00780F00000F800007C00007FC0003FFC001FFF0007FF80007FC00007C00003E00001E000
01E07001E0F001E0F003E0FC07C0FFFFC0FFFF80FFFF00E7FC00131C7E9B18>I<7FFFF8FFFFF8
FFFFF8FFFFF8F07878F07878F07878F07878007800007800007800007800007800007800007800
00780000780000780000780000780000780000780000780000780007FF8007FF8007FF8007FF80
151C7F9B18>I<FFC7FEFFC7FEFFC7FEFFC7FE1E00F01E00F01E00F01E00F01E00F01E00F01E00
F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01F01F00F01E00FC7
E007FFC003FF8001FF00007C00171C809B18>I<FF8FF8FF8FF8FF8FF8FF8FF81E03C01E03C01E
03C01E03C00F07800F07800F07800F0780070700078F00078F00078F00078F00038E0003DE0003
DE0003DE0001DC0001DC0001DC0001FC0001FC0000F80000F800151C7F9B18>I<FF07F8FF07F8
FF07F8FF07F87800F07800F03C01E03C01E03C01E03C01E03C01E03CF9E03CF9E03DFDE03DFDE0
1DDDC01DDDC01DDDC01DDDC01DDDC01DDDC01DDDC01DDDC00D8D800F8F800F8F800F8F800F0780
151C7F9B18>I<7F8FE07F9FE07F9FE07F8FE00F8F00079F0007DE0003FE0003FC0001FC0001F8
0000F80000F00000F00000F80001F80001FC0003FC0003DE00079E00078F00078F000F0F800F07
807F8FF0FFDFF8FFDFF87F8FF0151C7F9B18>I<FF8FF8FF8FF8FF8FF8FF8FF81F03C00F07800F
8780078F80078F0003CF0003CF0001DE0001DE0001FC0000FC0000FC0000780000780000780000
780000780000780000780000780001FE0003FF0003FF0001FE00151C7F9B18>I<3FFFE07FFFE0
7FFFE07FFFE07807C0780780780F80781F00001F00003E00007C00007C0000F80001F00001F000
03E00007C00007C0000F80001F01E01F01E03E01E03C01E07C01E0FFFFE0FFFFE0FFFFE0FFFFE0
131C7E9B18>I<FFF8FFF8FFF8FFF8F000F000F000F000F000F000F000F000F000F000F000F000
F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000FFF8FFF8FFF8FF
F80D24779F18>I<600000F00000F80000F800007800007C00007C00003E00003E00001E00001F
00001F00000F80000F800007800007C00007C00003E00003E00001F00001F00000F00000F80000
F800007C00007C00003C00003E00003E00001F00001F00000F00000F80000F8000078000030011
247D9F18>I<FFF8FFF8FFF8FFF800780078007800780078007800780078007800780078007800
78007800780078007800780078007800780078007800780078007800780078FFF8FFF8FFF8FFF8
0D247F9F18>I<03800FE03FF8FFFEFEFEF83E600C0F077C9B18>I<7FFF00FFFF80FFFF807FFF00
11047D7F18>I<0E1F3F7E7CF8F0F0F0F8FCFC7C38080E789E18>I<1FF0003FFC007FFE007FFF00
7C1F8038078000078007FF801FFF803FFF807FFF80FC0780F00780F00780F80F80FC3F807FFFF8
3FFFF81FFBF80FE1F815147E9318>I<7F0000FF0000FF00007F00000F00000F00000F00000F00
000F3F000FFFC00FFFE00FFFF00FE1F80F80F80F807C0F007C0F003C0F003C0F003C0F003C0F80
7C0F807C0FC0F80FE3F80FFFF00FFFE00FFFC0073F00161C809B18>I<01FE0007FF001FFF803F
FF803F0F807C0700780000F80000F00000F00000F00000F00000F803C07803C07C07C03F07803F
FF801FFF0007FE0001F80012147D9318>I<001FC0003FC0003FC0001FC00003C00003C00003C0
0003C003F3C00FFFC01FFFC03FFFC07F0FC07C07C0F807C0F803C0F003C0F003C0F003C0F003C0
F807C0F807C07C0FC07E1FC03FFFF81FFFFC0FFBFC03F3F8161C7F9B18>I<01F80007FE000FFF
001FFF803F0FC07C03C07803E0F801E0FFFFE0FFFFE0FFFFE0FFFFE0F801E07801E07E03E03F87
C01FFFC00FFF8007FF0001FC0013147E9318>I<000F80003FC0007FE000FFE001F3E001E1C001
E00001E0007FFFC0FFFFC0FFFFC0FFFFC001E00001E00001E00001E00001E00001E00001E00001
E00001E00001E00001E00001E0007FFF807FFF807FFF807FFF80131C7F9B18>I<01F1F007FFF8
0FFFF81FFFF81F1F703E0F803C07803C07803C07803E0F801F1F001FFF003FFE003FFC003DF000
3C00003C00003FFF001FFFC03FFFE07FFFF0FC01F8F800F8F00078F00078F800F87E03F07FFFF0
3FFFE00FFF8003FE00151F7F9318>I<7F0000FF0000FF00007F00000F00000F00000F00000F00
000F3F000FFF800FFFC00FFFE00FE3E00F81E00F81E00F01E00F01E00F01E00F01E00F01E00F01
E00F01E00F01E00F01E07FE1FCFFF3FEFFF3FE7FE1FC171C809B18>I<01C00003E00003E00003
E00001C0000000000000000000000000007FE000FFE000FFE0007FE00001E00001E00001E00001
E00001E00001E00001E00001E00001E00001E00001E00001E000FFFF80FFFFC0FFFFC0FFFF8012
1D7D9C18>I<001C003E003E003E001C00000000000000000FFE1FFE1FFE0FFE001E001E001E00
1E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E703EF87CFFF8
FFF07FE03FC00F277E9C18>I<FF0000FF0000FF0000FF00000F00000F00000F00000F00000F7F
F80F7FF80F7FF80F7FF80F1F800F3F000F7E000F7C000FF8000FFC000FFE000FDE000F9F000F0F
800F07C00F07C0FFC3FCFFE7FCFFE7FCFFC3FC161C809B18>I<7FF000FFF000FFF0007FF00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F0007FFFE0FFFFF0FFFFF07FFFE0141C7E9B18>I<
7EF8F800FFFDFC00FFFFFE007FFFFE001F9F9E001F1F1E001E1E1E001E1E1E001E1E1E001E1E1E
001E1E1E001E1E1E001E1E1E001E1E1E001E1E1E001E1E1E007F9F9F80FFDFDFC0FFDFDFC07F8F
8F801A14819318>I<7F3F00FFFF80FFFFC07FFFE00FE3E00F81E00F81E00F01E00F01E00F01E0
0F01E00F01E00F01E00F01E00F01E00F01E07FE1FCFFF3FEFFF3FE7FE1FC1714809318>I<01F0
000FFE001FFF003FFF803E0F807C07C07803C0F001E0F001E0F001E0F001E0F001E0F803E07803
C07C07C03E0F803FFF801FFF000FFE0001F00013147E9318>I<7F3F00FFFFC0FFFFE07FFFF00F
E1F80F80F80F807C0F007C0F003C0F003C0F003C0F003C0F807C0F807C0FC0F80FE3F80FFFF00F
FFE00FFFC00F3F000F00000F00000F00000F00000F00000F00007FE000FFF000FFF0007FE00016
1E809318>I<03F3C00FFFC01FFFC03FFFC07E1FC07C0FC0F807C0F807C0F003C0F003C0F003C0
F003C0F807C0F807C07C0FC07E1FC03FFFC01FFFC00FFBC007E3C00003C00003C00003C00003C0
0003C00003C0003FFC003FFC003FFC003FFC161E7E9318>I<7FC7E0FFDFF0FFFFF87FFFF803FC
F803F07003F00003E00003E00003C00003C00003C00003C00003C00003C00003C0007FFF00FFFF
80FFFF807FFF0015147F9318>I<0FFF003FFF007FFF00FFFF00F80F00F00F00F00000FE00007F
F0003FFC000FFE00007F00700F80F00780F80780FC1F80FFFF00FFFF00FFFE00E7F80011147D93
18>I<01C00003C00003C00003C00003C0007FFFC0FFFFC0FFFFC0FFFFC003C00003C00003C000
03C00003C00003C00003C0C003C1E003C1E003C1E003C3E003E3C001FFC001FF8000FF00007E00
13197F9818>I<7F0FE0FF1FE0FF1FE07F0FE00F01E00F01E00F01E00F01E00F01E00F01E00F01
E00F01E00F01E00F01E00F01E00F07E00FFFFC0FFFFE07FFFE03FDFC1714809318>I<7F8FF0FF
8FF8FF8FF87F8FF00F07800F07800F07800F8F80078F00078F00078F00038E0003DE0003DE0003
DE0001DC0001FC0001FC0001FC0000F80015147F9318>I<FFDFF8FFDFF8FFDFF8FFDFF83C01E0
3C01E03C01E01C01C01CF9C01DFDC01DFDC01DFDC01DDDC01DDDC01DDDC00DDD800FDF800FDF80
0F8F800F8F8015147F9318>I<7F8FF0FF9FF0FF9FF07F8FF007DF0003DE0003FC0001FC0000F8
0000F00000F80001FC0001FC0003DE00079F00078F007F8FF0FF8FF8FF8FF87F8FF015147F9318
>I<7F8FF0FF8FF8FF8FF87F8FF00F07800F07800F8780078780078F00078F0003CF0003CE0003
CE0001CE0001DE0001DC0000FC0000FC0000FC0000780000780000780000F00000F0007DF0007F
E0007FE0007FC0003F80001E0000151E7F9318>I<3FFFF07FFFF07FFFF07FFFF07807E0780FC0
781F80003E00007C0000F80001F00003E00007C0F01F80F03F00F07E00F0FFFFF0FFFFF0FFFFF0
FFFFF014147F9318>I<000FE0003FE0007FE000FFE000F80000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00003F000FFE000FFC000FFC000FFE00003F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F80000FFE0007FE0003FE0000F
E013247E9F18>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0600424769F18>I<7F0000FFC000FFE000FFF00001F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000FC00007FE0003FE0003FE0007FE000FC0000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00001F000FFF000FFE000FFC000
7F000013247E9F18>I<070C0F9E1FBE3FFC7FF8FBF0F3E061C00F087C9B18>I
E /Fk 17 122 518 432 dfs[<1E003F007F80FFC0FFC0FFE0FFE07FE03F601E60006000600060
00C000C000C001800180030006000C00180030002000>11 24 122 177
26 39 D[<000003FF80018000003FFFF003800001FFFFFC07800007FF003F0F80001FF800079F
80003FC00001FF8000FF800000FF8001FE0000007F8003FC0000003F8007FC0000001F8007F800
00000F800FF00000000F801FF000000007801FF000000007803FE000000007803FE00000000380
7FE000000003807FE000000003807FC000000000007FC00000000000FFC00000000000FFC00000
000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FF
C00000000000FFC000000000007FC000000000007FC000000000007FE000000000007FE0000000
03803FE000000003803FE000000003801FF000000003801FF000000007800FF0000000070007F8
000000070007FC0000000E0003FC0000001E0001FE0000001C0000FF8000007800003FC00000F0
00001FF80003E0000007FF003F80000001FFFFFE000000003FFFF80000000003FF800000>49
49 124 176 70 67 D[<000003FF00030000007FFFF007000001FFFFFC0F000007FF007E1F0000
1FF0000FBF00007FC00003FF0000FF800001FF0001FE0000007F0003FC0000007F0007FC000000
3F000FF80000001F000FF00000001F001FF00000000F001FF00000000F003FE000000007003FE0
00000007007FE000000007007FE000000007007FC00000000000FFC00000000000FFC000000000
00FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC000
00000000FFC00000000000FFC00000000000FFC00007FFFFFC7FC00007FFFFFC7FE00007FFFFFC
7FE0000001FF003FE0000001FF003FE0000001FF001FF0000001FF001FF0000001FF000FF00000
01FF000FF8000001FF0007FC000001FF0003FC000001FF0001FE000001FF0000FF800001FF0000
7FC00003FF00001FF800077F000007FF003E3F000001FFFFFC1F0000007FFFF00F00000003FF80
0300>54 49 124 176 76 71 D[<FFFFFFE00000FFFFFFE00000FFFFFFE0000000FF8000000000
FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000
000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000
FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000
000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000
FF800001C000FF800001C000FF800001C000FF800001C000FF800003C000FF8000038000FF8000
038000FF8000078000FF8000078000FF8000078000FF80000F8000FF80001F8000FF80003F8000
FF80007F8000FF8000FF0000FF8007FF00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF00>42
49 126 176 58 76 D[<FFFF800001FFFFC0FFFFC00001FFFFC0FFFFE00001FFFFC000FFF00000
03E00000FFF8000001C00000EFFC000001C00000E7FC000001C00000E7FE000001C00000E3FF00
0001C00000E1FF800001C00000E0FFC00001C00000E07FE00001C00000E03FE00001C00000E03F
F00001C00000E01FF80001C00000E00FFC0001C00000E007FE0001C00000E003FE0001C00000E0
01FF0001C00000E001FF8001C00000E000FFC001C00000E0007FE001C00000E0003FF001C00000
E0001FF001C00000E0001FF801C00000E0000FFC01C00000E00007FE01C00000E00003FF01C000
00E00001FF81C00000E00000FF81C00000E00000FFC1C00000E000007FE1C00000E000003FF1C0
0000E000001FF9C00000E000000FFDC00000E0000007FDC00000E0000007FFC00000E0000003FF
C00000E0000001FFC00000E0000000FFC00000E00000007FC00000E00000003FC00000E0000000
3FC00000E00000001FC00000E00000000FC00001F000000007C000FFFFE0000003C000FFFFE000
0001C000FFFFE0000001C000>58 49 126 176 76 78 D[<FFFFFF8003FFFF80FFFFFF8003FFFF
80FFFFFF8003FFFF8000FF80000007C00000FF80000003800000FF80000003800000FF80000003
800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF800000
03800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF8000
0003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80
000003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF
80000003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000
FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF800000038000
007F800000038000007F800000070000007FC00000070000003FC000000E0000003FC000000E00
00001FE000001C0000000FF000003800000007F800007000000003FC0001E000000000FF801FC0
000000003FFFFF80000000000FFFFE000000000000FFE0000000>57 49
126 176 74 85 D[<00FFF0000003FFFE00000F803F80000FC00FE0001FE007F0001FE007F000
1FE003F8000FC003FC00078003FC00000003FC00000003FC00000003FC00000003FC000000FFFC
00001FFFFC0000FFE3FC0003FC03FC000FF003FC001FC003FC003FC003FC007F8003FC007F8003
FC00FF0003FC00FF0003FC00FF0003FC00FF0007FC00FF0007FC007F800DFC003FC019FE001FE0
70FFF007FFE07FF000FF803FF0>36 32 126 159 47 97 D[<01F8000000FFF8000000FFF80000
00FFF80000000FF800000007F800000007F800000007F800000007F800000007F800000007F800
000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
3FE00007F8FFFC0007FBE07F0007FF001F8007FE000FC007FC000FE007F80007F007F80007F807
F80007F807F80003FC07F80003FC07F80003FC07F80003FE07F80003FE07F80003FE07F80003FE
07F80003FE07F80003FE07F80003FE07F80003FE07F80003FC07F80003FC07F80003FC07F80007
F807F80007F807F80007F007FC000FE007FE000FC007E7003F8007C3C0FE000780FFF80007003F
C000>39 50 126 177 54 I[<0000000FC0000007FFC0000007FFC0000007FFC00000007FC000
00003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0
0000003FC00000003FC00000003FC00000003FC00000003FC00007F83FC0003FFF3FC000FE07BF
C003F801FFC007E0007FC00FE0007FC01FC0003FC03FC0003FC03FC0003FC07F80003FC07F8000
3FC07F80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80
003FC0FF80003FC07F80003FC07F80003FC07F80003FC03FC0003FC03FC0003FC01FC0003FC00F
E0007FC007E000FFC003F003FFE001FC0F3FFE007FFE3FFE000FF03FFE>39
50 125 177 54 100 D[<000FFC00007FFF8001FC0FC003F003E007E001F00FE001F81FC000FC
3FC000FE3FC000FE7F80007E7F80007F7F80007FFF80007FFF80007FFFFFFFFFFFFFFFFFFF8000
00FF800000FF800000FF8000007F8000007F8000007F8000003FC000071FC000071FC0000E0FE0
000E07F0001C03F8007800FE03E0003FFFC00007FE00>32 32 126 159
44 I[<03C00007E0000FF0001FF8001FF8001FF8001FF8000FF00007E00003C000000000000000
00000000000000000000000000000000000000000001F800FFF800FFF800FFF8000FF80007F800
07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
07F80007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF80
>17 51 125 178 28 105 D[<0007FC0000007FFFC00001FC07F00003F001F80007E000FC000F
C0007E001FC0007F003FC0007F803F80003F807F80003FC07F80003FC07F80003FC0FF80003FE0
FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE07F80003F
C07F80003FC07F80003FC03FC0007F803FC0007F801FC0007F000FE000FE0007E000FC0003F803
F80001FE0FF000007FFFC0000007FC0000>35 32 126 159 48 111 D[<03F03F00FFF07FC0FF
F1C3E0FFF187E00FF30FF007F60FF007F60FF007FC07E007FC03C007FC000007FC000007F80000
07F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F800
0007F8000007F8000007F8000007F8000007F8000007F8000007F80000FFFFE000FFFFE000FFFF
E000>28 32 126 159 40 114 D[<01FF860007FFFE001F00FE003C003E0078001E0078000E00
F8000E00F8000E00F8000E00FC000000FF800000FFFC00007FFFC0007FFFF0003FFFF8001FFFFC
0007FFFE0001FFFF00003FFF000000FF8000003F8060001F80E0000F80E0000F80F0000F80F000
0F00F8000F00FC001E00FE001C00FF807800F3FFF000C07F8000>25 32
125 159 38 I[<001C0000001C0000001C0000001C0000001C0000003C0000003C0000003C0000
007C0000007C000000FC000001FC000003FC000007FC00001FFFFE00FFFFFE00FFFFFE0003FC00
0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC
000003FC000003FC000003FC000003FC000003FC000003FC038003FC038003FC038003FC038003
FC038003FC038003FC038001FC038001FC070000FE0700007F0E00003FFC000007F000>25
46 127 173 37 I[<01F80007E0FFF803FFE0FFF803FFE0FFF803FFE00FF8003FE007F8001FE0
07F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001F
E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800
1FE007F8001FE007F8001FE007F8003FE007F8003FE003F8007FE003F8007FE001FC00DFF000FE
039FFF007FFF1FFF000FFC1FFF>40 32 125 159 54 I[<FFFF801FFCFFFF801FFCFFFF801FFC
0FF80003C007F800038007FC00078003FC00070003FE000F0001FE000E0001FF000E0000FF001C
0000FF001C00007F803800007F803800007FC07800003FC07000003FE0F000001FE0E000001FF1
E000000FF1C000000FF9C0000007FB80000007FB80000003FF00000003FF00000003FF00000001
FE00000001FE00000000FC00000000FC0000000078000000007800000000700000000070000000
00F000000000E000000001E000007C01C00000FE03C00000FE03800000FE07800000FE0F000000
FC1E000000787C0000003FF00000000FC0000000>38 46 126 159 52 121
D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 1 1
bop 701 693 a Fk(User's)33 b(Guide)932 880 y(to)613 1067 y(GNU)f(C)p
Fj(++)g Fk(Library)879 1378 y Fi(Doug)15 b(Lea)810 1440 y(\(dl)p
Fj(\\)p Fi(.osw)o(ego.edu\))666 1689 y(last)f(up)q(dated)i(19)e(F)l(ebruary)l
(,)h(1991)805 1814 y(for)f(v)o(ersion)h(1.39.0)p eop
%%Page: 2 2
bop 0 1615 a Fi(Cop)o(yrigh)o(t)224 1614 y(c)214 1615 y Fh(\015)14
b Fi(1988)g(F)l(ree)h(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)0
1752 y(P)o(ermission)c(is)i(gran)o(ted)g(to)f(mak)o(e)g(and)i(distribute)f(v)
o(erbatim)e(copies)i(of)g(this)g(man)o(ual)f(pro)o(vided)h(the)g(cop)o(yrigh)
o(t)0 1814 y(notice)j(and)g(this)g(p)q(ermission)f(notice)g(are)h(preserv)o
(ed)h(on)f(all)f(copies.)0 1951 y(P)o(ermission)e(is)h(gran)o(ted)g(to)h(cop)
o(y)g(and)g(distribute)f(mo)q(di\014ed)h(v)o(ersions)f(of)g(this)h(man)o(ual)
e(under)j(the)f(conditions)0 2014 y(for)g(v)o(erbatim)e(cop)o(ying,)i(pro)o
(vided)g(also)f(that)h(the)h(section)f(en)o(titled)f(\\GNU)h(CC)g(General)g
(Public)h(License")f(is)0 2076 y(included)e(exactly)f(as)g(in)h(the)g
(original,)e(and)h(pro)o(vided)h(that)f(the)g(en)o(tire)g(resulting)g(deriv)o
(ed)h(w)o(ork)e(is)h(distributed)0 2138 y(under)16 b(the)f(terms)f(of)h(a)f
(p)q(ermission)g(notice)h(iden)o(tical)f(to)h(this)f(one.)0
2275 y(P)o(ermission)j(is)i(gran)o(ted)g(to)g(cop)o(y)h(and)f(distribute)g
(translations)f(of)h(this)g(man)o(ual)e(in)o(to)i(another)g(language,)0
2337 y(under)12 b(the)f(ab)q(o)o(v)o(e)g(conditions)f(for)g(mo)q(di\014ed)h
(v)o(ersions,)f(except)i(that)e(the)h(section)g(en)o(titled)f(\\GNU)h(CC)g
(General)0 2400 y(Public)j(License")h(ma)o(y)e(b)q(e)i(included)h(in)e(a)g
(translation)f(appro)o(v)o(ed)h(b)o(y)g(the)h(author)f(instead)g(of)g(in)g
(the)h(original)0 2462 y(English.)0 2599 y Fg(Note:)23 b(The)17
b(GNU)g(C)p Fj(++)g Fg(library)g(is)g(still)f(in)h(test)g(release.)26
b(Y)l(ou)18 b(will)e(b)q(e)i(p)q(erforming)f(a)g(v)m(aluable)h(service)f(if)0
2661 y(y)o(ou)e(rep)q(ort)h(an)o(y)f(bugs)h(y)o(ou)e(encoun)o(ter.)p
eop
%%Page: 1 3
bop 0 -58 a Fi(GNU)15 b(CC)g(GENERAL)h(PUBLIC)g(LICENSE)1096
b(1)0 183 y Ff(GNU)27 b(CC)h(GENERAL)g(PUBLIC)g(LICENSE)746
297 y Fi(\(Clari\014ed)14 b(11)h(F)l(eb)g(1988\))62 434 y(The)h(license)g
(agreemen)o(ts)e(of)h(most)e(soft)o(w)o(are)h(companies)h(k)o(eep)h(y)o(ou)f
(at)g(the)g(mercy)g(of)g(those)h(companies.)0 497 y(By)e(con)o(trast,)e(our)i
(general)f(public)h(license)g(is)g(in)o(tended)g(to)f(giv)o(e)g(ev)o(ery)o
(one)h(the)g(righ)o(t)f(to)g(share)g(GNU)h(CC.)f(T)l(o)0 559
y(mak)o(e)i(sure)j(that)e(y)o(ou)h(get)f(the)h(righ)o(ts)f(w)o(e)h(w)o(an)o
(t)f(y)o(ou)g(to)h(ha)o(v)o(e,)f(w)o(e)h(need)h(to)e(mak)o(e)g(restrictions)f
(that)h(forbid)0 621 y(an)o(y)o(one)c(to)g(den)o(y)i(y)o(ou)e(these)h(righ)o
(ts)e(or)i(to)f(ask)g(y)o(ou)g(to)h(surrender)g(the)g(righ)o(ts.)k(Hence)d
(this)e(license)h(agreemen)o(t.)62 759 y(Sp)q(eci\014cally)l(,)h(w)o(e)f(w)o
(an)o(t)g(to)g(mak)o(e)f(sure)i(that)f(y)o(ou)g(ha)o(v)o(e)g(the)h(righ)o(t)e
(to)h(giv)o(e)g(a)o(w)o(a)o(y)f(copies)h(of)g(GNU)h(CC,)f(that)0
821 y(y)o(ou)g(receiv)o(e)g(source)g(co)q(de)h(or)f(else)g(can)h(get)e(it)h
(if)g(y)o(ou)g(w)o(an)o(t)f(it,)g(that)h(y)o(ou)g(can)g(c)o(hange)g(GNU)g(CC)
g(or)g(use)h(pieces)0 883 y(of)h(it)f(in)h(new)h(free)f(programs,)e(and)i
(that)f(y)o(ou)h(kno)o(w)g(y)o(ou)g(can)g(do)g(these)h(things.)62
1021 y(T)l(o)j(mak)o(e)e(sure)i(that)f(ev)o(ery)o(one)g(has)h(suc)o(h)g(righ)
o(ts,)f(w)o(e)g(ha)o(v)o(e)g(to)g(forbid)g(y)o(ou)h(to)f(depriv)o(e)h(an)o(y)
o(one)f(else)g(of)0 1083 y(these)c(righ)o(ts.)19 b(F)l(or)13
b(example,)g(if)g(y)o(ou)h(distribute)f(copies)h(of)g(GNU)g(CC,)f(y)o(ou)h(m)
o(ust)f(giv)o(e)g(the)h(recipien)o(ts)g(all)f(the)0 1145 y(righ)o(ts)h(that)h
(y)o(ou)g(ha)o(v)o(e.)20 b(Y)l(ou)15 b(m)o(ust)f(mak)o(e)g(sure)i(that)e
(they)l(,)i(to)q(o,)e(receiv)o(e)h(or)g(can)h(get)f(the)g(source)g(co)q(de.)
21 b(And)0 1207 y(y)o(ou)15 b(m)o(ust)e(tell)i(them)f(their)h(righ)o(ts.)62
1345 y(Also,)k(for)g(our)g(o)o(wn)f(protection,)h(w)o(e)g(m)o(ust)e(mak)o(e)h
(certain)g(that)h(ev)o(ery)o(one)g(\014nds)g(out)g(that)f(there)h(is)g(no)0
1407 y(w)o(arran)o(t)o(y)9 b(for)i(GNU)g(CC.)f(If)i(GNU)f(CC)g(is)f(mo)q
(di\014ed)h(b)o(y)g(someone)f(else)h(and)h(passed)f(on,)h(w)o(e)f(w)o(an)o(t)
f(its)g(recipien)o(ts)0 1469 y(to)i(kno)o(w)g(that)g(what)g(they)h(ha)o(v)o
(e)f(is)g(not)h(what)f(w)o(e)g(distributed,)g(so)g(that)g(an)o(y)h(problems)e
(in)o(tro)q(duced)i(b)o(y)f(others)0 1532 y(will)i(not)h(re\015ect)g(on)g
(our)g(reputation.)62 1669 y(Therefore)j(w)o(e)g(\(Ric)o(hard)g(Stallman)e
(and)j(the)f(F)l(ree)g(Soft)o(w)o(are)f(F)l(oundation,)h(Inc.\))29
b(mak)o(e)17 b(the)h(follo)o(wing)0 1731 y(terms)c(whic)o(h)h(sa)o(y)f(what)h
(y)o(ou)g(m)o(ust)e(do)i(to)g(b)q(e)h(allo)o(w)o(ed)e(to)g(distribute)h(or)f
(c)o(hange)h(GNU)g(CC.)0 1959 y Fe(COPYING)24 b(POLICIES)25
2097 y Fi(1.)29 b(Y)l(ou)19 b(ma)o(y)e(cop)o(y)i(and)g(distribute)f(v)o
(erbatim)e(copies)j(of)f(GNU)h(CC)f(source)h(co)q(de)g(as)g(y)o(ou)f(receiv)o
(e)h(it,)f(in)90 2159 y(an)o(y)c(medium,)f(pro)o(vided)i(that)f(y)o(ou)g
(conspicuously)h(and)g(appropriately)e(publish)i(on)g(eac)o(h)g(cop)o(y)g(a)f
(v)m(alid)90 2221 y(cop)o(yrigh)o(t)h(notice)h(\\Cop)o(yrigh)o(t)675
2220 y(c)664 2221 y Fh(\015)g Fi(1988)f(F)l(ree)i(Soft)o(w)o(are)d(F)l
(oundation,)i(Inc.")24 b(\(or)15 b(with)h(whatev)o(er)g(y)o(ear)90
2284 y(is)e(appropriate\);)f(k)o(eep)i(in)o(tact)f(the)g(notices)h(on)f(all)g
(\014les)g(that)g(refer)h(to)f(this)g(License)h(Agreemen)o(t)f(and)h(to)90
2346 y(the)j(absence)g(of)g(an)o(y)f(w)o(arran)o(t)o(y;)f(and)i(giv)o(e)f(an)
o(y)h(other)f(recipien)o(ts)g(of)g(the)h(GNU)g(CC)f(program)f(a)h(cop)o(y)90
2408 y(of)e(this)g(License)h(Agreemen)o(t)e(along)h(with)g(the)g(program.)k
(Y)l(ou)c(ma)o(y)f(c)o(harge)h(a)g(distribution)f(fee)i(for)f(the)90
2470 y(ph)o(ysical)f(act)h(of)g(transferring)f(a)h(cop)o(y)l(.)25
2545 y(2.)29 b(Y)l(ou)14 b(ma)o(y)e(mo)q(dify)h(y)o(our)g(cop)o(y)h(or)f
(copies)h(of)g(GNU)f(CC)h(or)f(an)o(y)h(p)q(ortion)f(of)h(it,)f(and)h(cop)o
(y)g(and)g(distribute)90 2608 y(suc)o(h)23 b(mo)q(di\014cations)d(under)j
(the)g(terms)e(of)h(P)o(aragraph)f(1)h(ab)q(o)o(v)o(e,)h(pro)o(vided)f(that)g
(y)o(ou)g(also)g(do)g(the)90 2670 y(follo)o(wing:)p eop
%%Page: 2 4
bop 0 -58 a Fi(2)1041 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)129 183 y Fh(\017)30 b Fi(cause)15
b(the)g(mo)q(di\014ed)f(\014les)h(to)g(carry)f(prominen)o(t)f(notices)i
(stating)e(that)h(y)o(ou)h(c)o(hanged)g(the)g(\014les)g(and)180
246 y(the)g(date)g(of)g(an)o(y)g(c)o(hange;)g(and)129 326 y
Fh(\017)30 b Fi(cause)22 b(the)f(whole)g(of)g(an)o(y)g(w)o(ork)g(that)f(y)o
(ou)h(distribute)g(or)g(publish,)i(that)d(in)h(whole)g(or)g(in)h(part)180
388 y(con)o(tains)14 b(or)h(is)f(a)h(deriv)m(ativ)o(e)f(of)h(GNU)g(CC)g(or)f
(an)o(y)h(part)f(thereof,)h(to)f(b)q(e)i(licensed)f(at)g(no)g(c)o(harge)g(to)
180 451 y(all)g(third)h(parties)f(on)i(terms)d(iden)o(tical)h(to)h(those)g
(con)o(tained)g(in)g(this)g(License)h(Agreemen)o(t)e(\(except)180
513 y(that)k(y)o(ou)g(ma)o(y)f(c)o(ho)q(ose)i(to)e(gran)o(t)h(more)f
(extensiv)o(e)h(w)o(arran)o(t)o(y)f(protection)h(to)g(some)f(or)h(all)f
(third)180 575 y(parties,)c(at)h(y)o(our)f(option\).)129 656
y Fh(\017)30 b Fi(Y)l(ou)14 b(ma)o(y)e(c)o(harge)h(a)g(distribution)f(fee)i
(for)f(the)g(ph)o(ysical)g(act)g(of)g(transferring)f(a)h(cop)o(y)l(,)h(and)g
(y)o(ou)f(ma)o(y)180 718 y(at)i(y)o(our)f(option)h(o\013er)f(w)o(arran)o(t)o
(y)f(protection)i(in)g(exc)o(hange)g(for)g(a)f(fee.)90 799
y(Mere)21 b(aggregation)e(of)h(another)g(unrelated)h(program)e(with)h(this)h
(program)d(\(or)j(its)f(deriv)m(ativ)o(e\))f(on)i(a)90 861
y(v)o(olume)12 b(of)i(a)g(storage)f(or)g(distribution)g(medium)f(do)q(es)i
(not)g(bring)g(the)g(other)g(program)d(under)k(the)f(scop)q(e)90
923 y(of)h(these)g(terms.)25 1004 y(3.)29 b(Y)l(ou)16 b(ma)o(y)f(cop)o(y)h
(and)g(distribute)f(GNU)h(CC)g(\(or)f(an)o(y)h(p)q(ortion)f(of)h(it)f(in)h
(under)h(P)o(aragraph)d(2\))i(in)g(ob)s(ject)90 1066 y(co)q(de)g(or)f
(executable)h(form)d(under)j(the)g(terms)e(of)g(P)o(aragraphs)g(1)i(and)f(2)g
(ab)q(o)o(v)o(e)g(pro)o(vided)g(that)g(y)o(ou)g(also)90 1128
y(do)g(one)g(of)g(the)h(follo)o(wing:)129 1209 y Fh(\017)30
b Fi(accompan)o(y)12 b(it)g(with)h(the)g(complete)f(corresp)q(onding)h(mac)o
(hine-readable)f(source)h(co)q(de,)h(whic)o(h)f(m)o(ust)180
1271 y(b)q(e)j(distributed)f(under)g(the)h(terms)d(of)i(P)o(aragraphs)f(1)h
(and)g(2)g(ab)q(o)o(v)o(e;)g(or,)129 1352 y Fh(\017)30 b Fi(accompan)o(y)16
b(it)g(with)h(a)g(written)f(o\013er,)g(v)m(alid)h(for)g(at)f(least)g(three)i
(y)o(ears,)e(to)h(giv)o(e)f(an)o(y)h(third)g(part)o(y)180 1414
y(free)23 b(\(except)f(for)g(a)g(nominal)f(shipping)h(c)o(harge\))g(a)g
(complete)f(mac)o(hine-readable)g(cop)o(y)i(of)f(the)180 1476
y(corresp)q(onding)g(source)h(co)q(de,)i(to)c(b)q(e)j(distributed)e(under)h
(the)f(terms)f(of)h(P)o(aragraphs)f(1)i(and)f(2)180 1538 y(ab)q(o)o(v)o(e;)14
b(or,)129 1619 y Fh(\017)30 b Fi(accompan)o(y)11 b(it)g(with)g(the)i
(informatio)o(n)d(y)o(ou)h(receiv)o(ed)i(as)e(to)h(where)g(the)g(corresp)q
(onding)g(source)g(co)q(de)180 1681 y(ma)o(y)17 b(b)q(e)i(obtained.)30
b(\(This)18 b(alternativ)o(e)f(is)h(allo)o(w)o(ed)f(only)i(for)f
(noncommercial)d(distribution)j(and)180 1743 y(only)d(if)f(y)o(ou)h(receiv)o
(ed)h(the)f(program)e(in)i(ob)s(ject)g(co)q(de)g(or)g(executable)h(form)d
(alone.\))90 1824 y(F)l(or)21 b(an)h(executable)h(\014le,)g(complete)e
(source)h(co)q(de)g(means)f(all)g(the)i(source)f(co)q(de)g(for)g(all)f(mo)q
(dules)g(it)90 1886 y(con)o(tains;)d(but,)g(as)g(a)g(sp)q(ecial)f(exception,)
i(it)e(need)i(not)e(include)i(source)f(co)q(de)g(for)f(mo)q(dules)g(whic)o(h)
h(are)90 1948 y(standard)d(libraries)f(that)g(accompan)o(y)g(the)h(op)q
(erating)g(system)e(on)i(whic)o(h)g(the)h(executable)f(\014le)g(runs.)25
2029 y(4.)29 b(Y)l(ou)19 b(ma)o(y)e(not)i(cop)o(y)l(,)g(sublicense,)h
(distribute)f(or)f(transfer)g(GNU)h(CC)f(except)i(as)e(expressly)h(pro)o
(vided)90 2091 y(under)11 b(this)f(License)i(Agreemen)o(t.)17
b(An)o(y)10 b(attempt)f(otherwise)g(to)h(cop)o(y)l(,)h(sublicense,)h
(distribute)e(or)g(transfer)90 2154 y(GNU)18 b(CC)g(is)g(v)o(oid)g(and)h(y)o
(our)f(righ)o(ts)f(to)h(use)h(the)f(program)e(under)k(this)e(License)h
(agreemen)o(t)e(shall)g(b)q(e)90 2216 y(automaticall)o(y)f(terminated.)28
b(Ho)o(w)o(ev)o(er,)18 b(parties)g(who)g(ha)o(v)o(e)g(receiv)o(ed)h(computer)
e(soft)o(w)o(are)g(programs)90 2278 y(from)d(y)o(ou)i(with)f(this)h(License)h
(Agreemen)o(t)d(will)h(not)h(ha)o(v)o(e)f(their)h(licenses)g(terminated)e(so)
i(long)f(as)h(suc)o(h)90 2340 y(parties)e(remain)g(in)h(full)g(compliance.)25
2421 y(5.)29 b(If)22 b(y)o(ou)g(wish)f(to)h(incorp)q(orate)f(parts)g(of)h
(GNU)g(CC)f(in)o(to)g(other)h(free)g(programs)d(whose)j(distribution)90
2483 y(conditions)15 b(are)h(di\013eren)o(t,)f(write)g(to)h(the)g(F)l(ree)g
(Soft)o(w)o(are)e(F)l(oundation)i(at)f(675)g(Mass)g(Av)o(e,)h(Cam)o(bridge,)
90 2545 y(MA)c(02139.)18 b(W)l(e)12 b(ha)o(v)o(e)g(not)g(y)o(et)g(w)o(ork)o
(ed)g(out)g(a)g(simple)e(rule)j(that)e(can)i(b)q(e)g(stated)f(here,)h(but)f
(w)o(e)g(will)f(often)90 2608 y(p)q(ermit)j(this.)19 b(W)l(e)c(will)e(b)q(e)j
(guided)f(b)o(y)g(the)g(t)o(w)o(o)f(goals)f(of)i(preserving)f(the)h(free)g
(status)f(of)h(all)f(deriv)m(ativ)o(es)90 2670 y(of)h(our)g(free)g(soft)o(w)o
(are)e(and)j(of)f(promoting)d(the)k(sharing)e(and)h(reuse)h(of)f(soft)o(w)o
(are.)p eop
%%Page: 3 5
bop 0 -58 a Fi(GNU)15 b(CC)g(GENERAL)h(PUBLIC)g(LICENSE)1096
b(3)62 183 y(Y)l(our)22 b(commen)o(ts)d(and)j(suggestions)f(ab)q(out)g(our)h
(licensing)f(p)q(olicies)g(and)h(our)g(soft)o(w)o(are)e(are)h(w)o(elcome!)0
246 y(Please)c(con)o(tact)f(the)h(F)l(ree)g(Soft)o(w)o(are)e(F)l(oundation,)i
(Inc.,)g(675)g(Mass)f(Av)o(e,)h(Cam)o(bridge,)e(MA)i(02139,)e(or)i(call)0
308 y(\(617\))d(876-3296.)0 532 y Fe(NO)23 b(W)-7 b(ARRANTY)62
669 y Fi(BECA)o(USE)22 b(GNU)g(CC)f(IS)i(LICENSED)f(FREE)g(OF)g(CHAR)o(GE,)f
(WE)h(PR)o(O)o(VIDE)g(ABSOLUTEL)l(Y)0 731 y(NO)i(W)-5 b(ARRANTY,)23
b(TO)h(THE)f(EXTENT)g(PERMITTED)g(BY)h(APPLICABLE)g(ST)l(A)l(TE)g(LA)-5
b(W.)23 b(EX-)0 793 y(CEPT)13 b(WHEN)h(OTHER)-5 b(WISE)14 b(ST)l(A)l(TED)g
(IN)g(WRITING,)g(FREE)g(SOFTW)-5 b(ARE)13 b(F)o(OUND)o(A)l(TION,)h(INC,)0
856 y(RICHARD)k(M.)e(ST)l(ALLMAN)i(AND/OR)g(OTHER)g(P)l(AR)l(TIES)g(PR)o(O)o
(VIDE)f(GNU)g(CC)g Fj(")p Fi(AS)g(IS)p Fj(")h Fi(WITH-)0 918
y(OUT)e(W)-5 b(ARRANTY)16 b(OF)g(ANY)f(KIND,)h(EITHER)g(EXPRESSED)g(OR)g
(IMPLIED,)g(INCLUDING,)g(BUT)0 980 y(NOT)e(LIMITED)h(TO,)f(THE)f(IMPLIED)i(W)
-5 b(ARRANTIES)15 b(OF)f(MER)o(CHANT)l(ABILITY)i(AND)e(FITNESS)0
1043 y(F)o(OR)20 b(A)g(P)l(AR)l(TICULAR)j(PURPOSE.)d(THE)g(ENTIRE)h(RISK)h
(AS)e(TO)g(THE)g(QUALITY)i(AND)e(PER-)0 1105 y(F)o(ORMANCE)g(OF)g(GNU)h(CC)f
(IS)h(WITH)f(YOU.)g(SHOULD)i(GNU)e(CC)g(PR)o(O)o(VE)g(DEFECTIVE,)f(YOU)0
1167 y(ASSUME)c(THE)g(COST)h(OF)f(ALL)h(NECESSAR)l(Y)g(SER)-5
b(VICING,)16 b(REP)l(AIR)h(OR)f(CORRECTION.)62 1304 y(IN)f(NO)f(EVENT)g
(UNLESS)h(REQUIRED)h(BY)e(APPLICABLE)h(LA)-5 b(W)14 b(WILL)h(RICHARD)g(M.)f
(ST)l(ALL-)0 1366 y(MAN,)i(THE)h(FREE)g(SOFTW)-5 b(ARE)17 b(F)o(OUND)o(A)l
(TION,)g(INC.,)f(AND/OR)i(ANY)f(OTHER)g(P)l(AR)l(TY)h(WHO)0
1429 y(MA)l(Y)g(MODIFY)h(AND)f(REDISTRIBUTE)i(GNU)e(CC)g(AS)h(PERMITTED)f
(ABO)o(VE,)g(BE)h(LIABLE)h(TO)0 1491 y(YOU)13 b(F)o(OR)g(D)o(AMA)o(GES,)f
(INCLUDING)h(ANY)g(LOST)h(PR)o(OFITS,)f(LOST)h(MONIES,)f(OR)g(OTHER)h(SPE-)0
1553 y(CIAL,)f(INCIDENT)l(AL)h(OR)g(CONSEQUENTIAL)g(D)o(AMA)o(GES)e(ARISING)j
(OUT)e(OF)g(THE)f(USE)i(OR)f(IN-)0 1615 y(ABILITY)j(TO)f(USE)g(\(INCLUDING)g
(BUT)g(NOT)g(LIMITED)g(TO)g(LOSS)g(OF)g(D)o(A)l(T)l(A)g(OR)g(D)o(A)l(T)l(A)g
(BEING)0 1678 y(RENDERED)h(INA)o(CCURA)l(TE)g(OR)g(LOSSES)h(SUST)l(AINED)f
(BY)g(THIRD)g(P)l(AR)l(TIES)g(OR)g(A)g(F)-5 b(AILURE)0 1740
y(OF)17 b(THE)g(PR)o(OGRAM)h(TO)g(OPERA)l(TE)g(WITH)f(ANY)g(OTHER)h(PR)o
(OGRAMS\))g(GNU)f(CC,)g(EVEN)g(IF)0 1802 y(YOU)i(HA)-5 b(VE)18
b(BEEN)h(AD)o(VISED)f(OF)g(THE)g(POSSIBILITY)j(OF)d(SUCH)h(D)o(AMA)o(GES,)d
(OR)j(F)o(OR)g(ANY)0 1864 y(CLAIM)d(BY)f(ANY)g(OTHER)h(P)l(AR)l(TY.)p
eop
%%Page: 4 6
bop 0 -58 a Fi(4)1041 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 5 7
bop 0 -58 a Fi(Con)o(tributors)13 b(to)i(GNU)g(C)p Fj(++)g
Fi(library)1253 b(5)0 183 y Ff(Con)n(tributors)27 b(to)h(GNU)f(C)p
Fd(++)g Ff(library)62 370 y Fi(Aside)11 b(from)d(Mic)o(hael)h(Tiemann,)h(who)
g(w)o(ork)o(ed)f(out)h(the)h(fron)o(t)e(end)i(for)e(GNU)i(C)p
Fj(++)p Fi(,)f(and)g(Ric)o(hard)h(Stallman,)0 432 y(who)21
b(w)o(ork)o(ed)f(out)h(the)h(bac)o(k)f(end,)i(the)e(follo)o(wing)e(p)q(eople)
j(\(not)e(including)h(those)g(who)g(ha)o(v)o(e)g(made)f(their)0
495 y(con)o(tributions)14 b(to)g(GNU)h(CC\))g(should)g(not)g(go)g(unmen)o
(tioned.)39 632 y Fh(\017)30 b Fi(Doug)15 b(Lea)g(con)o(tributed)g(most)e
(otherwise)i(unattributed)f(classes.)39 706 y Fh(\017)30 b
Fi(Dirk)14 b(Grun)o(w)o(ald)g(con)o(tributed)h(the)g(Random)g(n)o(um)o(b)q
(er)f(generation)h(classes,)f(and)h(P)o(airingHeaps.)39 781
y Fh(\017)30 b Fi(Kurt)15 b(Baudendistel)h(con)o(tributed)e(Fixed)h
(precision)g(reals.)39 856 y Fh(\017)30 b Fi(Doug)18 b(Sc)o(hmidt)g(con)o
(tributed)g(ordered)h(hash)g(tables,)g(GPERF,)f(a)g(p)q(erfect)i(hash)f
(function)f(generator,)90 918 y(and)d(sev)o(eral)g(other)g(utilities.)39
993 y Fh(\017)30 b Fi(Marc)15 b(Shapiro)f(con)o(tributed)h(the)g(ideas)g(and)
h(preliminary)d(co)q(de)i(for)g(Plexes.)39 1067 y Fh(\017)30
b Fi(Eric)15 b(Newton)g(con)o(tributed)f(the)i(curses)f(windo)o(w)g(classes.)
p eop
%%Page: 6 8
bop 0 -58 a Fi(6)1041 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 7 9
bop 0 -58 a Fi(Chapter)15 b(1:)k(Installing)14 b(GNU)h(C)p
Fj(++)g Fi(library)1145 b(7)0 183 y Ff(1)41 b(Installing)25
b(GNU)j(C)p Fd(++)f Ff(library)25 370 y Fi(1.)i(Read)13 b(through)e(the)h
(README)g(\014le)g(and)h(the)f(Mak)o(e\014le.)18 b(Mak)o(e)11
b(sure)h(that)g(all)f(paths,)h(system-dep)q(enden)o(t)90 432
y(compile)i(switc)o(hes,)g(and)h(program)e(names)h(are)h(correct.)25
507 y(2.)29 b(Chec)o(k)14 b(that)g(\014les)g(`)p Fj(values.h)p
Fi(',)e(`)p Fj(stdio.h)p Fi(',)h(and)h(`)p Fj(math.h)p Fi(')f(declare)h(and)h
(de\014ne)g(v)m(alues)f(appropriate)g(for)90 569 y(y)o(our)h(system.)25
644 y(3.)29 b(T)o(yp)q(e)14 b(`)p Fj(make)g(all)p Fi(')f(to)g(compile)f(the)i
(library)l(,)e(test,)h(and)h(install.)k(Curren)o(t)13 b(details)f(ab)q(out)i
(con)o(ten)o(ts)f(of)g(the)90 706 y(tests)i(and)g(utilities)e(are)i(in)g(the)
h(`)p Fj(README)p Fi(')d(\014le.)p eop
%%Page: 8 10
bop 0 -58 a Fi(8)1041 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 9 11
bop 0 -58 a Fi(Chapter)15 b(2:)k(T)l(rouble)d(in)f(Installation)1245
b(9)0 183 y Ff(2)41 b(T)-7 b(rouble)26 b(in)g(Installation)62
370 y Fi(Here)16 b(are)f(some)e(of)i(the)h(things)e(that)h(ha)o(v)o(e)f
(caused)i(trouble)f(for)f(p)q(eople)i(installing)d(GNU)i(C)p
Fj(++)g Fi(library)l(.)25 507 y(1.)29 b(Mak)o(e)10 b(sure)h(that)f(y)o(our)h
(GNU)f(C)p Fj(++)h Fi(v)o(ersion)f(n)o(um)o(b)q(er)g(is)h(at)f(least)g(as)g
(high)h(as)g(y)o(our)f(libg)p Fj(++)g Fi(v)o(ersion)g(n)o(um)o(b)q(er.)90
569 y(F)l(or)15 b(example,)e(libg)p Fj(++)h Fi(1.22.0)g(requires)h(g)p
Fj(++)f Fi(1.22.0)g(or)g(later)g(releases.)25 644 y(2.)29 b(Double-c)o(hec)o
(k)15 b(system)f(constan)o(ts)g(in)h(the)h(header)f(\014les)g(men)o(tioned)f
(ab)q(o)o(v)o(e.)p eop
%%Page: 10 12
bop 0 -58 a Fi(10)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 11 13
bop 0 -58 a Fi(Chapter)15 b(3:)k(GNU)c(C)p Fj(++)g Fi(library)f(aims,)f(ob)s
(jectiv)o(es,)h(and)h(limitatio)o(ns)664 b(11)0 183 y Ff(3)41
b(GNU)27 b(C)p Fd(++)g Ff(library)e(aims,)i(ob)t(jectiv)n(es,)g(and)f
(limitations)62 354 y Fi(The)15 b(GNU)f(C)p Fj(++)g Fi(library)l(,)f(libg)p
Fj(++)g Fi(is)h(an)g(attempt)f(to)h(pro)o(vide)f(a)h(v)m(ariet)o(y)g(of)g(C)p
Fj(++)g Fi(programmi)o(ng)e(to)q(ols)h(and)0 416 y(other)i(supp)q(ort)g(to)g
(GNU)g(C)p Fj(++)f Fi(programmers.)62 553 y(Di\013erences)19
b(in)f(distribution)g(p)q(olicy)h(are)f(only)h(part)f(of)g(the)h
(di\013erence)g(b)q(et)o(w)o(een)g(libg)p Fj(++)p Fi(.a)f(and)h(A)l(T&T)0
615 y(libC.a.)f(libg)p Fj(++)11 b Fi(is)h(not)g(in)o(tended)h(to)f(b)q(e)h
(an)f(exact)g(clone)h(of)f(libC.)f(F)l(or)h(one,)h(libg)p Fj(++)e
Fi(con)o(tains)h(bits)g(of)g(co)q(de)h(that)0 677 y(dep)q(end)19
b(on)e(sp)q(ecial)g(features)g(of)f(GNU)h(g)p Fj(++)g Fi(that)g(are)f(either)
h(di\013eren)o(t)g(or)f(lac)o(king)g(in)h(the)h(A)l(T&T)f(v)o(ersion,)0
740 y(including)d(sligh)o(tly)e(di\013eren)o(t)h(inlining)f(and)i(o)o(v)o
(erloading)e(strategies,)g(dynamic)h(lo)q(cal)g(arra)o(ys,)g(wrapp)q(ers,)g
(etc.)0 802 y(All)19 b(of)h(these)g(di\013erences)g(are)g(minor.)33
b(F)l(or)19 b(example,)h(while)f(the)h(A)l(T&T)h(and)f(GNU)g(stream)e
(classes)h(are)0 864 y(implemen)o(ted)f(in)h(v)o(ery)h(di\013eren)o(t)f(w)o
(a)o(ys,)h(the)g(v)m(ast)f(ma)s(jorit)o(y)e(of)i(C)p Fj(++)h
Fi(programs)e(compile)g(and)i(run)g(under)0 927 y(either)c(v)o(ersion)f(with)
g(no)h(visible)f(di\013erence.)23 b(Additionally)l(,)14 b(all)h(g)p
Fj(++)p Fi(-sp)q(eci\014c)h(constructs)g(are)g(conditionally)0
989 y(compiled;)e(The)h(library)f(is)h(designed)g(to)g(b)q(e)h(compatible)d
(with)i(an)o(y)f(2.0)h(C)p Fj(++)f Fi(compiler.)62 1126 y(libg)p
Fj(++)f Fi(has)g(also)f(con)o(tained)h(w)o(ork)m(arounds)g(for)g(some)f
(limitati)o(ons)f(in)i(g)p Fj(++)p Fi(:)18 b(b)q(oth)c(g)p
Fj(++)f Fi(and)g(libg)p Fj(++)f Fi(are)i(still)0 1188 y(undergoing)g(rapid)g
(dev)o(elopmen)o(t)f(and)h(testing)g({)g(a)g(task)f(that)h(is)g(help)q(ed)h
(tremendously)e(b)o(y)h(the)h(feedbac)o(k)f(of)0 1250 y(activ)o(e)g(users.)62
1387 y(libg)p Fj(++)i Fi(is)h(not)f(the)h(only)g(freely)f(a)o(v)m(ailable)g
(source)h(of)g(C)p Fj(++)f Fi(class)g(libraries.)24 b(The)17
b(most)e(notable)i(alterna-)0 1450 y(tiv)o(e)f(sources)h(are)f(In)o(terviews)
h(and)g(OOPS.)g(\(A)g(g)p Fj(++)p Fi(-compatible)d(v)o(ersion)i(of)h(OOPS)h
(is)e(curren)o(tly)g(a)o(v)m(ailable)0 1512 y(on)21 b(prep.ai.mit.edu.)35
b(In)o(terViews)21 b(has)g(b)q(een)h(a)o(v)m(ailable)e(on)h(the)g(X-windo)o
(ws)g(X11)f(tap)q(es)h(and)h(also)e(from)0 1574 y(in)o
(terviews.stanford.edu.\))62 1711 y(As)c(ev)o(ery)f(C)p Fj(++)g
Fi(programmer)e(kno)o(ws,)h(the)i(design)f(\(moreso)f(than)h(the)h(implemen)o
(tat)o(ion\))c(of)j(a)h(C)p Fj(++)f Fi(class)0 1773 y(library)g(is)h
(something)e(of)i(a)g(c)o(hallenge.)23 b(P)o(art)15 b(of)h(the)g(reason)g(is)
f(that)h(C)p Fj(++)g Fi(supp)q(orts)g(t)o(w)o(o,)f(partially)f(incom-)0
1836 y(patible,)j(st)o(yles)g(of)h(ob)s(ject-orien)o(ted)e(programming)e({)k
(The)g Fj(")p Fi(forest)p Fj(")f Fi(approac)o(h,)g(in)o(v)o(olving)f(a)i
(collection)e(of)0 1898 y(free-standing)e(classes)f(that)g(can)h(b)q(e)h
(mixed)d(and)i(matc)o(hed,)f(v)o(ersus)h(the)g(completely)e(hierarc)o(hical)h
(\(smallta)o(lk)0 1960 y(st)o(yle\))j(approac)o(h,)h(in)g(whic)o(h)g(all)f
(classes)h(are)f(deriv)o(ed)i(from)d(a)i(common)e(ancestor.)25
b(Of)17 b(course,)h(b)q(oth)f(st)o(yles)0 2022 y(ha)o(v)o(e)k(adv)m(an)o
(tages)g(and)h(disadv)m(an)o(tages.)39 b(So)21 b(far,)i(libg)p
Fj(++)d Fi(has)i(adopted)g(the)f Fj(")p Fi(forest)p Fj(")g
Fi(approac)o(h.)39 b(Keith)0 2085 y(Gorlen's)14 b(OOPS)i(library)e(adopts)h
(the)h(hierarc)o(hical)e(approac)o(h,)g(and)i(ma)o(y)d(b)q(e)j(an)g
(attractiv)o(e)d(alternativ)o(e)h(for)0 2147 y(C)p Fj(++)h
Fi(programmers)d(who)j(prefer)g(this)f(st)o(yle.)62 2284 y(Curren)o(tly)h
(\(and/or)f(in)h(the)g(near)g(future\))g(libg)p Fj(++)f Fi(pro)o(vides)h
(supp)q(ort)g(for)g(a)g(few)g(basic)g(kinds)g(of)g(classes:)62
2421 y(The)20 b(\014rst)e(kind)h(of)g(supp)q(ort)g(pro)o(vides)g(an)g(in)o
(terface)f(b)q(et)o(w)o(een)i(C)p Fj(++)e Fi(programs)f(and)i(C)g(libraries.)
30 b(This)0 2483 y(includes)15 b(basic)f(header)h(\014les)f(\(lik)o(e)g(`)p
Fj(stdio.h)p Fi('\))e(as)i(w)o(ell)g(as)g(things)g(lik)o(e)f(the)i(File)e
(and)i(stream)e(classes.)19 b(Other)0 2545 y(classes)c(that)f(in)o(terface)h
(to)g(other)g(asp)q(ects)g(of)g(C)g(libraries)f(\(lik)o(e)g(those)h(that)g
(main)o(tain)e(en)o(vironmen)o(tal)g(infor-)0 2608 y(mation\))g(are)i(in)g(v)
m(arious)f(stages)h(of)g(dev)o(elopmen)o(t;)e(all)h(will)g(undergo)i
(implemen)o(tat)o(ion)c(mo)q(di\014cations)h(when)0 2670 y(the)i(forthcoming)
e(GNU)i(lib)q(c)g(library)f(is)h(released.)p eop
%%Page: 12 14
bop 0 -58 a Fi(12)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)62 183 y(The)k(second)h(kind)f(of)f(supp)q(ort)h
(con)o(tains)f(general-purp)q(ose)i(basic)e(classes)h(that)f(transparen)o
(tly)f(manage)0 246 y(v)m(ariable-sized)21 b(ob)s(jects)f(on)h(the)g
(freestore.)37 b(This)20 b(includes)i(Obstac)o(ks,)f(m)o(ultiple-precision)e
(In)o(tegers)i(and)0 308 y(Rationals,)14 b(arbitrary)f(length)i(Strings,)f
(BitSets,)g(and)i(BitStrings.)62 445 y(Third,)f(sev)o(eral)f(classes)h(and)g
(utilities)f(of)g(common)f(in)o(terest)h(\(e.g.,)g(Complex)g(n)o(um)o(b)q
(ers\))g(are)h(pro)o(vided.)62 582 y(F)l(ourth,)23 b(a)f(set)g(of)g
(pseudo-generic)h(protot)o(yp)q(e)e(\014les)h(are)g(a)o(v)m(ailable)f(as)h(a)
f(mec)o(hanism)f(for)i(generating)0 644 y(common)c(con)o(tainer)h(classes.)35
b(These)20 b(are)g(describ)q(ed)h(in)f(more)f(detail)h(in)g(the)g(in)o(tro)q
(duction)f(to)h(con)o(tainer)0 706 y(protot)o(yp)q(es.)37 b(Curren)o(tly)l(,)
21 b(only)g(a)g(the)g(textual)f(substitution)g(mec)o(hanism)f(is)h(a)o(v)m
(ailable)g(for)h(generic)g(class)0 769 y(creation.)p eop
%%Page: 13 15
bop 0 -58 a Fi(Chapter)15 b(4:)k(GNU)c(C)p Fj(++)g Fi(library)f(st)o(ylistic)
f(con)o(v)o(en)o(tions)912 b(13)0 183 y Ff(4)41 b(GNU)27 b(C)p
Fd(++)g Ff(library)e(st)n(ylistic)g(con)n(v)n(en)n(tions)39
370 y Fh(\017)30 b Fi(C)p Fj(++)14 b Fi(source)h(\014les)g(ha)o(v)o(e)g
(\014le)g(extension)g(`)p Fj(.cc)p Fi('.)j(Both)d(C-compatibilit)o(y)d
(header)j(\014les)g(and)g(class)f(declara-)90 432 y(tion)g(\014les)i(ha)o(v)o
(e)e(extension)h(`)p Fj(.h)p Fi('.)39 507 y Fh(\017)30 b Fi(C)p
Fj(++)16 b Fi(class)g(names)f(b)q(egin)i(with)e(capital)h(letters,)f(except)i
(for)f Fj(istream)f Fi(and)i Fj(ostream)p Fi(,)e(for)h(A)l(T&T)g(C)p
Fj(++)90 569 y Fi(compatibilit)o(y)l(.)h(Multi-w)o(ord)c(class)i(names)f
(capitalize)g(eac)o(h)h(w)o(ord,)f(with)h(no)g(underscore)h(separation.)39
644 y Fh(\017)30 b Fi(Include)17 b(\014les)f(that)f(de\014ne)i(C)p
Fj(++)e Fi(classes)h(b)q(egin)g(with)f(capital)g(letters)f(\(as)i(do)f(the)h
(names)f(of)h(the)f(classes)90 706 y(themselv)o(es\).)j(`)p
Fj(stream.h)p Fi(')13 b(is)i(uncapitalized)g(for)f(A)l(T&T)i(C)p
Fj(++)f Fi(compatibilit)n(y)l(.)39 781 y Fh(\017)30 b Fi(Include)16
b(\014les)e(that)g(supply)h(function)g(protot)o(yp)q(es)e(for)h(other)h(C)f
(functions)g(\(system)f(calls)h(and)h(libraries\))90 843 y(are)g(all)f(lo)o
(w)o(er)g(case.)39 918 y Fh(\017)30 b Fi(All)21 b(include)g(\014les)h
(de\014ne)g(a)f(prepro)q(cessor)g(v)m(ariable)p 1060 918 14
2 v 37 w(X)p 1110 918 V 17 w(h,)i(where)e(X)g(is)g(the)h(name)e(of)h(the)g
(\014le,)i(and)90 980 y(conditionally)15 b(compile)g(only)h(if)g(this)g(has)h
(not)f(b)q(een)i(already)d(de\014ned.)26 b(The)17 b Fj(#pragma)d(once)i
Fi(facilit)o(y)e(is)90 1043 y(also)g(used)i(to)f(a)o(v)o(oid)e(re-inclusion.)
39 1117 y Fh(\017)30 b Fi(Structures)14 b(and)g(ob)s(jects)f(that)g(m)o(ust)g
(b)q(e)h(publicly)g(de\014ned,)h(but)f(are)g(not)f(in)o(tended)i(for)e
(public)h(use)g(ha)o(v)o(e)90 1180 y(names)i(b)q(eginning)i(with)f(an)g
(underscore.)28 b(\(for)16 b(example,)h(the)g Fj(_Srep)g Fi(struct,)g(whic)o
(h)h(is)f(used)h(only)f(b)o(y)90 1242 y(the)e(String)g(and)g(SubString)g
(classes.\))39 1316 y Fh(\017)30 b Fi(The)15 b(underscore)h(is)f(used)h(to)e
(separate)h(comp)q(onen)o(ts)f(of)h(long)f(function)h(names,)90
1379 y(e.g.,)f Fj(set_File_exception_handler)o(\(\))p Fi(.)39
1453 y Fh(\017)30 b Fi(When)19 b(a)g(function)g(could)g(b)q(e)g(usefully)g
(de\014ned)h(either)f(as)f(a)h(mem)o(b)q(er)e(or)i(a)f(friend,)i(it)e(is)g
(generally)g(a)90 1516 y(mem)o(b)q(er)10 b(if)h(it)g(mo)q(di\014es)g(and/or)g
(returns)h(itself,)f(else)g(it)g(is)g(a)h(friend.)19 b(There)12
b(are)f(cases)h(where)g(naturalness)90 1578 y(of)j(expression)g(wins)g(out)f
(o)o(v)o(er)h(this)f(rule.)39 1653 y Fh(\017)30 b Fi(Class)19
b(declaration)h(\014les)g(are)g(formatted)f(so)h(that)f(it)h(is)g(easy)g(to)g
(quic)o(kly)g(c)o(hec)o(k)h(them)e(to)h(determine)90 1715 y(function)g
(names,)g(parameters,)f(and)i(so)f(on.)35 b(Because)21 b(of)f(the)g
(di\013eren)o(t)f(kinds)i(of)e(things)h(that)g(ma)o(y)90 1777
y(app)q(ear)14 b(in)g(class)f(declarations,)g(there)h(is)f(no)h(p)q(erfect)h
(w)o(a)o(y)e(to)g(do)h(this.)19 b(An)o(y)14 b(suggestions)f(on)g(dev)o
(eloping)90 1840 y(a)i(common)e(class)h(declaration)g(formatting)e(st)o(yle)j
(are)g(w)o(elcome.)39 1914 y Fh(\017)30 b Fi(All)15 b(classes)h(use)g(the)g
(same)f(simple)f(error)i(\(exception\))f(handling)h(strategy)l(.)21
b(Almost)14 b(ev)o(ery)i(class)f(has)h(a)90 1977 y(mem)o(b)q(er)d(function)i
(named)f Fj(error\(char*)g(msg\))g Fi(that)h(in)o(v)o(ok)o(es)f(an)h(asso)q
(ciated)f(error)g(handler)h(function)90 2039 y(via)h(a)g(p)q(oin)o(ter)g(to)g
(that)g(function,)h(so)f(that)g(the)g(error)g(handling)g(function)h(ma)o(y)e
(b)q(e)i(reset)f(b)o(y)h(program-)90 2101 y(mers.)35 b(By)21
b(default)f(nearly)g(all)g(call)f Fj(*lib_error_handler)p Fi(,)h(whic)o(h)g
(prin)o(ts)g(the)h(message)e(and)i(then)90 2163 y(ab)q(orts)f(execution.)37
b(This)20 b(system)f(is)h(sub)s(ject)h(to)f(c)o(hange.)36 b(In)22
b(general,)f(errors)f(are)g(assumed)g(to)g(b)q(e)90 2226 y(non-reco)o(v)o
(erable:)27 b(Library)18 b(classes)h(do)g(not)f(include)h(co)q(de)h(that)e
(allo)o(ws)f(graceful)h(con)o(tin)o(uation)g(after)90 2288
y(exceptions.)p eop
%%Page: 14 16
bop 0 -58 a Fi(14)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 15 17
bop 0 -58 a Fi(Chapter)15 b(5:)k(Supp)q(ort)d(for)f(represen)o(tation)f(in)o
(v)m(arian)o(ts)935 b(15)0 183 y Ff(5)41 b(Supp)r(ort)27 b(for)g(represen)n
(tation)f(in)n(v)l(arian)n(ts)62 370 y Fi(Most)13 b(GNU)h(C)p
Fj(++)g Fi(library)f(classes)g(p)q(ossess)h(a)g(metho)q(d)g(named)f
Fj(OK\(\))p Fi(,)g(that)h(is)f(useful)h(in)g(helping)g(to)g(v)o(erify)0
432 y(correct)h(p)q(erformance)f(of)h(class)f(op)q(erations.)62
569 y(The)k Fj(OK\(\))f Fi(op)q(erations)g(c)o(hec)o(ks)h(the)g(\\represen)o
(tation)e(in)o(v)m(arian)o(t")g(of)h(a)h(class)f(ob)s(ject.)27
b(This)17 b(is)g(a)g(test)h(to)0 632 y(c)o(hec)o(k)d(whether)g(the)g(ob)s
(ject)f(is)g(in)g(a)h(v)m(alid)f(state.)19 b(In)c(e\013ect,)f(it)g(is)h(a)f
(\(sometimes)d(partial\))i(v)o(eri\014cation)h(of)g(the)0 694
y(library's)j(promise)g(that)h(\(1\))g(class)g(op)q(erations)f(alw)o(a)o(ys)g
(lea)o(v)o(e)h(ob)s(jects)g(in)h(v)m(alid)f(states,)g(and)h(\(2\))f(the)h
(class)0 756 y(protects)c(itself)f(so)h(that)f(clien)o(t)g(functions)h
(cannot)g(corrupt)g(this)g(state.)62 893 y(While)h(no)h(simple)e(v)m
(alidation)h(tec)o(hnique)h(can)g(assure)f(that)g(all)g(op)q(erations)g(p)q
(erform)g(correctly)l(,)g(calls)g(to)0 955 y Fj(OK\(\))h Fi(can)h(at)e(least)
h(v)o(erify)g(that)g(op)q(erations)f(do)i(not)f(corrupt)g(represen)o
(tations.)26 b(F)l(or)17 b(example)f(for)h Fj(String)0 1018
y(a,)e(b,)g(c;)g(...)f(a)h(=)g(b)g(+)g(c;)p Fi(,)j(a)f(call)g(to)g
Fj(a.OK\(\);)f Fi(will)g(guaran)o(tee)h(that)g Fj(a)g Fi(is)g(a)h(v)m(alid)f
Fj(String)p Fi(,)g(but)g(do)q(es)h(not)0 1080 y(guaran)o(tee)c(that)h(it)f
(con)o(tains)g(the)h(concatenation)f(of)h Fj(b)g(+)g(c)p Fi(.)20
b(Ho)o(w)o(ev)o(er,)13 b(giv)o(en)i(that)f Fj(a)h Fi(is)g(kno)o(wn)g(to)f(b)q
(e)i(v)m(alid,)0 1142 y(it)e(is)h(p)q(ossible)f(to)h(further)f(v)o(erify)g
(its)h(prop)q(erties,)f(for)g(example)g(via)g Fj(a.after\(b\))g(==)h(c)g(&&)g
(a.before\(c\))e(==)0 1204 y(b)p Fi(.)34 b(In)21 b(other)e(w)o(ords,)h
Fj(OK\(\))g Fi(generally)f(c)o(hec)o(ks)h(only)g(those)f(in)o(ternal)g
(represen)o(tation)g(prop)q(erties)h(that)f(are)0 1267 y(otherwise)h
(inaccessible)h(to)f(users)h(of)g(the)g(class.)37 b(Other)21
b(class)f(op)q(erations)g(are)h(often)g(useful)g(for)f(further)0
1329 y(v)m(alidation.)62 1466 y(F)l(ailed)12 b(calls)g(to)g
Fj(OK\(\))h Fi(call)f(a)g(class's)g Fj(error)g Fi(metho)q(d)g(if)g(one)h
(exists,)g(else)f(the)h(directly)g(call)f Fj(abort)p Fi(.)18
b(F)l(ailure)0 1528 y(indicates)d(an)g(implemen)o(tati)o(on)d(error)j(that)f
(should)h(b)q(e)h(rep)q(orted.)62 1665 y(With)e(only)g(rare)g(exceptions,)g
(the)h(in)o(ternal)e(supp)q(ort)i(functions)f(for)g(a)g(class)g(nev)o(er)h
(themselv)o(es)e(call)h Fj(OK\(\))0 1727 y Fi(\(although)g(man)o(y)g(of)h
(the)g(test)f(\014les)i(in)f(the)g(distribution)f(call)g Fj(OK\(\))h
Fi(extensiv)o(ely\).)62 1864 y(V)l(eri\014cation)10 b(of)h(represen)o
(tational)e(in)o(v)m(arian)o(ts)g(can)i(sometimes)d(b)q(e)j(v)o(ery)g(time)e
(consuming)g(for)i(complicated)0 1927 y(data)k(structures.)p
eop
%%Page: 16 18
bop 0 -58 a Fi(16)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 17 19
bop 0 -58 a Fi(Chapter)15 b(6:)k(In)o(tro)q(duction)c(to)g(con)o(tainer)f
(class)h(protot)o(yp)q(es)836 b(17)0 183 y Ff(6)41 b(In)n(tro)r(duction)27
b(to)g(con)n(tainer)g(class)f(protot)n(yp)r(es)62 409 y Fi(As)c(a)g(temp)q
(orary)f(mec)o(hanism)f(enabling)i(the)g(supp)q(ort)g(of)g(generic)g
(classes,)h(the)g(GNU)f(C)p Fj(++)f Fi(Library)0 472 y(distribution)9
b(con)o(tains)h(a)g(directory)g(\(`)p Fj(g++-include)p Fi('\))d(of)j(\014les)
h(designed)g(to)f(serv)o(e)g(as)g(the)h(basis)f(for)g(generating)0
534 y(con)o(tainer)17 b(classes)g(of)g(sp)q(eci\014ed)h(elemen)o(ts.)26
b(These)18 b(\014les)f(can)h(b)q(e)g(used)g(to)f(generate)g(`)p
Fj(.h)p Fi(')g(and)g(`)p Fj(.cc)p Fi(')g(\014les)g(in)0 596
y(the)e(curren)o(t)f(directory)g(via)g(a)g(supplied)h(shell)f(script)h
(program)d(that)i(p)q(erforms)f(simple)g(textual)h(substitution)0
658 y(to)h(create)g(sp)q(eci\014c)h(classes.)62 803 y(While)e(these)g
(classes)g(are)f(generated)h(indep)q(enden)o(tly)l(,)h(and)g(th)o(us)f(share)
g(no)g(co)q(de,)g(it)f(is)h(p)q(ossible)g(to)f(create)0 866
y(v)o(ersions)j(that)h(do)g(share)g(co)q(de)h(among)e(sub)q(classes.)26
b(F)l(or)16 b(example,)h(using)g Fj(typedef)d(void*)g(ent)p
Fi(,)j(and)h(then)0 928 y(generating)12 b(a)g Fj(entList)f
Fi(class,)h(other)h(deriv)o(ed)f(classes)g(could)h(b)q(e)g(created)g(using)f
(the)g Fj(void*)g Fi(co)q(ercion)h(metho)q(d)0 990 y(describ)q(ed)j(in)f
(Stroustrup,)g(pp204-210.)62 1135 y(This)k(v)o(ery)f(simple)f
(class-generation)h(facilit)o(y)f(is)h(useful)h(enough)g(to)f(serv)o(e)h
(curren)o(t)f(purp)q(oses,)i(but)f(will)0 1197 y(b)q(e)f(replaced)g(with)e(a)
h(more)f(coheren)o(t)i(mec)o(hanism)d(for)h(handling)h(C)p
Fj(++)g Fi(generics)h(in)f(a)g(w)o(a)o(y)f(that)h(minimal)o(ly)0
1259 y(disrupts)e(curren)o(t)g(usage.)20 b(Without)15 b(kno)o(wing)f(exactly)
h(when)g(or)g(ho)o(w)g(parametric)e(classes)i(migh)o(t)e(b)q(e)j(added)0
1322 y(to)g(the)g(C)p Fj(++)g Fi(language,)f(pro)o(vision)g(of)h(this)g
(simplest)e(p)q(ossible)i(mec)o(hanism,)e(textual)i(substitution,)f(app)q
(ears)0 1384 y(to)e(b)q(e)g(the)h(safest)e(strategy)l(,)g(although)g(it)h(do)
q(es)g(require)g(certain)g(redundancies)h(and)f(a)o(wkw)o(ard)f
(constructions.)62 1529 y(Sp)q(eci\014c)20 b(classes)d(ma)o(y)g(b)q(e)h
(generated)h(via)e(the)h(`)p Fj(genclass)p Fi(')e(shell)i(script)g(program.)
26 b(This)18 b(program)e(has)0 1591 y(argumen)o(ts)i(sp)q(ecifying)h(the)h
(kinds)g(of)f(base)h(t)o(yp)q(es\(s\))f(to)g(b)q(e)h(used.)34
b(Sp)q(ecifying)20 b(base)g(t)o(yp)q(es)g(requires)f(t)o(w)o(o)0
1653 y(argumen)o(ts.)30 b(The)20 b(\014rst)f(is)g(the)g(name)f(of)h(the)h
(base)f(t)o(yp)q(e,)h(whic)o(h)f(ma)o(y)f(b)q(e)i(an)o(y)f(named)f(t)o(yp)q
(e,)i(lik)o(e)f Fj(int)f Fi(or)0 1716 y Fj(String)p Fi(.)27
b(Only)18 b(named)f(t)o(yp)q(es)g(are)h(supp)q(orted;)h(things)e(lik)o(e)g
Fj(int*)g Fi(are)h(not)f(accepted.)28 b(Ho)o(w)o(ev)o(er,)18
b(p)q(oin)o(ters)0 1778 y(lik)o(e)i(this)f(ma)o(y)g(b)q(e)i(used)g(b)o(y)f
(supplying)h(the)f(appropriate)g(t)o(yp)q(edefs)g(\(e.g.,)h(editing)e(the)i
(resulting)e(\014les)i(to)0 1840 y(include)c Fj(typedef)e(int*)f(intp;)p
Fi(\).)24 b(The)18 b(t)o(yp)q(e)f(name)f(m)o(ust)f(b)q(e)j(follo)o(w)o(ed)d
(b)o(y)i(one)g(of)g(the)g(w)o(ords)f Fj(val)g Fi(or)h Fj(ref)p
Fi(,)0 1902 y(to)e(indicate)f(whether)i(the)f(base)g(elemen)o(ts)f(should)h
(b)q(e)h(passed)g(to)e(functions)h(b)o(y-v)m(alue)h(or)e(b)o(y-reference.)62
2047 y(Basic)j(con)o(tainer)e(classes)i(ma)o(y)e(b)q(e)i(sp)q(eci\014ed)h
(via)e Fj(genclass)e(base)h([val,ref])f(proto)p Fi(,)i(where)g
Fj(proto)g Fi(is)0 2110 y(the)c(name)f(of)h(the)g(class)f(b)q(eing)i
(generated.)19 b(Con)o(tainer)11 b(classes)g(lik)o(e)g(dictionaries)g(and)h
(maps)f(that)g(require)h(t)o(w)o(o)0 2172 y(t)o(yp)q(es)f(ma)o(y)f(b)q(e)i
(sp)q(eci\014ed)g(via)f Fj(genclass)j(-2)h(keytype)f([val,)g(ref],)h
(basetype)f([val,)g(ref])h(proto)p Fi(,)c(where)0 2234 y(the)i(k)o(ey)g(t)o
(yp)q(e)g(is)g(sp)q(eci\014ed)h(\014rst)f(and)g(the)g(con)o(ten)o(ts)g(t)o
(yp)q(e)g(second.)20 b(The)13 b(resulting)f(classnames)g(and)h(\014lenames)0
2296 y(are)i(generated)g(b)o(y)g(prep)q(ending)h(the)f(sp)q(eci\014ed)i(t)o
(yp)q(e)e(names)f(to)g(the)h(protot)o(yp)q(e)g(names,)f(and)h(separating)f
(the)0 2359 y(\014lename)j(parts)g(with)f(dots.)27 b(F)l(or)17
b(example,)f Fj(genclass)e(int)h(val)g(List)i Fi(generates)g(class)g
Fj(intList)g Fi(residing)0 2421 y(in)g(\014les)g(`)p Fj(int.List.h)p
Fi(')d(and)j(`)p Fj(int.List.cc)p Fi('.)23 b Fj(genclass)14
b(-2)h(String)f(ref)h(int)g(val)f(VHMap)j Fi(generates)f(\(the)0
2483 y(a)o(wkw)o(ard,)10 b(but)i(una)o(v)o(oidable\))e(class)h(name)g
Fj(StringintVHMap)p Fi(.)16 b(Of)c(course,)g(programmers)c(ma)o(y)i(use)i
Fj(typedef)0 2545 y Fi(or)j(simple)f(editing)i(to)f(create)g(more)f
(appropriate)h(names.)21 b(The)16 b(existence)g(of)f(dot)g(sep)q(erators)h
(in)f(\014le)h(names)0 2608 y(allo)o(ws)21 b(the)h(use)h(of)f(GNU)g(mak)o(e)f
(to)h(help)g(automate)e(con\014guration)i(and)h(recompilation.)38
b(An)23 b(example)0 2670 y(Mak)o(e\014le)15 b(exploiting)e(suc)o(h)j
(capabilities)e(ma)o(y)f(b)q(e)j(found)f(in)g(the)h(`)p Fj(libg++/proto-kit)p
Fi(')c(directory)l(.)p eop
%%Page: 18 20
bop 0 -58 a Fi(18)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)62 183 y(The)19 b Fj(genclass)e
Fi(utilit)o(y)g(op)q(erates)h(via)g(simple)f(text)h(substitution)g(using)g
Fj(sed)p Fi(.)29 b(All)18 b(o)q(ccurrences)i(of)e(the)0 246
y(pseudo-t)o(yp)q(es)d Fj(<T>)e Fi(and)h Fj(<C>)g Fi(\(if)f(there)h(are)g(t)o
(w)o(o)f(t)o(yp)q(es\))g(are)h(replaced)g(with)f(the)i(indicated)e(t)o(yp)q
(e,)h(and)g(o)q(ccur-)0 308 y(rences)g(of)f Fj(<T&>)g Fi(and)g
Fj(<C&>)g Fi(are)g(replaced)h(b)o(y)f(just)g(the)h(t)o(yp)q(es,)f(if)g
Fj(val)g Fi(is)g(sp)q(eci\014ed,)i(or)e(t)o(yp)q(es)g(follo)o(w)o(ed)f(b)o(y)
h(\\&")0 370 y(if)i Fj(ref)f Fi(is)h(sp)q(eci\014ed.)62 508
y(Programmers)h(will)h(frequen)o(tly)i(need)h(to)e(edit)h(the)g(`)p
Fj(.h)p Fi(')f(\014le)h(in)g(order)g(to)f(insert)h(additional)e
Fj(#include)0 570 y Fi(directiv)o(es)d(or)g(other)h(mo)q(di\014cations.)j(A)d
(simple)e(utilit)o(y)l(,)g(`)p Fj(prepend-header)p Fi(')f(to)i(prep)q(end)j
(other)d(`)p Fj(.h)p Fi(')g(\014les)h(to)0 633 y(generated)g(\014les)g(is)g
(pro)o(vided)g(in)g(the)g(distribution.)62 770 y(One)20 b(dubious)e(virtue)h
(of)f(the)g(protot)o(yping)f(mec)o(hanism)g(is)h(that,)g(b)q(ecause)i
(sources)e(\014les,)h(not)f(arc)o(hiv)o(ed)0 833 y(library)13
b(classes,)g(are)h(generated,)g(it)f(is)g(relativ)o(ely)f(simple)h(for)g
(programmers)e(to)i(mo)q(dify)g(con)o(tainer)g(classes)g(in)0
895 y(the)i(common)e(case)i(where)h(sligh)o(t)d(v)m(ariations)h(of)h
(standard)g(con)o(tainer)f(classes)h(are)g(required.)62 1033
y(It)d(is)g(often)f(a)h(go)q(o)q(d)g(idea)f(for)h(programmers)c(to)k(arc)o
(hiv)o(e)f(\(via)g Fj(ar)p Fi(\))g(generated)h(classes)f(in)o(to)g(`)p
Fj(.a)p Fi(')g(\014les)h(so)g(that)0 1095 y(only)h(those)f(class)h(functions)
f(actually)g(used)i(in)e(a)h(giv)o(en)g(application)e(will)h(b)q(e)i(loaded.)
k(The)c(test)e(sub)q(directory)0 1157 y(of)j(the)g(distribution)f(sho)o(ws)g
(an)i(example)e(of)g(this.)62 1295 y(Because)24 b(of)f Fj(#pragma)15
b(interface)22 b Fi(directiv)o(es,)i(the)g(`)p Fj(.cc)p Fi(')e(\014les)h
(should)h(b)q(e)g(compiled)e(with)h Fj(-O)g Fi(or)g Fj(-)0
1358 y(DUSE_LIBGXX_INLINES)13 b Fi(enabled.)62 1496 y(Man)o(y)i(con)o(tainer)
g(classes)h(require)f(sp)q(eci\014cations)h(o)o(v)o(er)f(and)h(ab)q(o)o(v)o
(e)f(the)h(base)g(class)f(t)o(yp)q(e.)22 b(F)l(or)15 b(example,)0
1558 y(classes)f(that)g(main)o(tain)e(some)h(kind)h(of)g(ordering)g(of)g
(elemen)o(ts)f(require)h(sp)q(eci\014cation)h(of)f(a)g(comparison)e(func-)0
1620 y(tion)18 b(up)q(on)i(whic)o(h)f(to)g(base)g(the)g(ordering.)31
b(This)19 b(is)g(accomplished)e(via)i(a)g(protot)o(yp)q(e)f(\014le)h(`)p
Fj(defs.hP)p Fi(')f(that)0 1682 y(con)o(tains)h(macros)e(for)i(these)h
(functions.)32 b(While)19 b(these)h(macros)d(default)i(to)g(p)q(erform)f
(reasonable)h(actions,)0 1745 y(they)d(can)g(and)g(should)f(b)q(e)i(c)o
(hanged)f(in)f(particular)g(cases.)21 b(Most)15 b(protot)o(yp)q(es)g(require)
g(only)g(one)h(or)f(a)h(few)f(of)0 1807 y(these.)23 b(No)16
b(harm)f(is)h(done)g(if)g(un)o(used)h(macros)d(are)i(de\014ned)i(to)d(p)q
(erform)g(nonsensical)h(actions.)22 b(The)17 b(macros)0 1869
y(are:)0 2007 y Fj(DEFAULT_INITIAL_CAPACITY)240 2069 y Fi(The)g(in)o(titial)e
(capacit)o(y)h(for)h(con)o(tainers)f(\(e.g.,)g(hash)i(tables\))e(that)g
(require)h(an)h(initial)d(capacit)o(y)240 2132 y(argumen)o(t)e(for)i
(constructors.)k(Default:)g(100)0 2207 y Fj(<T>EQ\(a,)14 b(b\))240
2270 y Fi(return)j(true)f(if)g(a)g(is)g(considered)h(equal)g(to)f(b)g(for)g
(the)h(purp)q(oses)g(of)f(lo)q(cating,)g(etc.,)g(an)g(elemen)o(t)240
2332 y(in)f(a)g(con)o(tainer.)k(Default:)g(\(a)14 b(==)i(b\))0
2408 y Fj(<T>LE\(a,)e(b\))240 2470 y Fi(return)h(true)g(if)g(a)g(is)f(less)h
(than)g(or)g(equal)g(to)g(b)g(Default:)k(\(a)14 b Fj(<)p Fi(=)i(b\))0
2545 y Fj(<T>CMP\(a,)e(b\))240 2608 y Fi(return)h(an)g(in)o(teger)f
Fj(<)g Fi(0)h(if)f(a)p Fj(<)p Fi(b,)g(0)h(if)f(a==b,)h(or)g
Fj(>)f Fi(0)h(if)f(a)p Fj(>)p Fi(b.)20 b(Default:)f(\(a)14
b Fj(<)p Fi(=)h(b\)?)20 b(\(a==b\)?)h(0)14 b(:)240 2670 y(-1)h(:)20
b(1)p eop
%%Page: 19 21
bop 0 -58 a Fi(Chapter)15 b(6:)k(In)o(tro)q(duction)c(to)g(con)o(tainer)f
(class)h(protot)o(yp)q(es)836 b(19)0 183 y Fj(<T>HASH\(a\))240
246 y Fi(return)14 b(an)h(unsigned)f(in)o(teger)g(represen)o(ting)g(the)g
(hash)h(of)f(a.)19 b(Default:)g(hash\(a\))13 b(;)h(where)h(extern)240
308 y(unsigned)f(in)o(t)e(hash\()p Fj(<)p Fi(T&)p Fj(>)p Fi(\).)19
b(\(note:)f(sev)o(eral)12 b(useful)h(hash)h(functions)f(are)f(declared)i(in)f
(builtin.h)240 370 y(and)i(de\014ned)i(in)e(hash.cc\))62 515
y(Nearly)j(all)g(protot)o(yp)q(es)f(con)o(tainer)h(classes)g(supp)q(ort)g
(con)o(tainer)g(tra)o(v)o(ersal)f(via)g Fj(Pix)h Fi(pseudo)h(indices,)g(as)0
577 y(describ)q(ed)d(elsewhere.)62 722 y(All)21 b(ob)s(ject)f(con)o(tainers)g
(m)o(ust)f(p)q(erform)h(either)h(a)f Fj(X::X\(X&\))g Fi(\(or)g
Fj(X::X\(\))g Fi(follo)o(w)o(ed)g(b)o(y)h Fj(X::operator)0
784 y(=\(X&\))p Fi(\))e(to)g(cop)o(y)h(ob)s(jects)f(in)o(to)g(con)o(tainers.)
33 b(\(The)20 b(latter)f(form)f(is)h(used)i(for)e(con)o(tainers)g(built)g
(from)f(C)p Fj(++)0 846 y Fi(arra)o(ys,)f(lik)o(e)g Fj(VHSets)p
Fi(\).)26 b(When)18 b(con)o(tainers)f(are)h(destro)o(y)o(ed,)f(they)h(in)o(v)
o(ok)o(e)f Fj(X::~X\(\))p Fi(.)27 b(An)o(y)18 b(ob)s(jects)f(used)h(in)0
908 y(con)o(tainers)d(m)o(ust)g(ha)o(v)o(e)h(w)o(ell)f(b)q(eha)o(v)o(ed)h
(constructors)g(and)g(destructors.)22 b(If)17 b(y)o(ou)e(w)o(an)o(t)g(to)h
(create)g(con)o(tainers)0 971 y(that)k(merely)f(reference)i(\(p)q(oin)o(t)e
(to\))h(ob)s(jects)g(that)f(reside)i(elsewhere,)g(and)g(are)f(not)g(copied)h
(or)e(destro)o(y)o(ed)0 1033 y(inside)c(the)g(con)o(tainer,)f(y)o(ou)h(m)o
(ust)f(use)h(con)o(tainers)g(of)f(p)q(oin)o(ters,)h(not)f(con)o(tainers)h(of)
f(ob)s(jects.)62 1178 y(All)g(protot)o(yp)q(es)f(are)h(designed)h(to)e
(generate)h Fc(HOMOGENOUS)k Fi(con)o(tainer)c(classes.)19 b(There)14
b(is)g(no)g(univ)o(er-)0 1240 y(sally)f(applicable)g(metho)q(d)f(in)i(C)p
Fj(++)f Fi(to)g(supp)q(ort)h(heterogenous)f(ob)s(ject)h(collections)e(with)h
(elemen)o(ts)f(of)h(v)m(arious)0 1302 y(sub)q(classes)f(of)g(some)f(sp)q
(eci\014ed)j(base)e(class.)18 b(The)13 b(only)f(w)o(a)o(y)f(to)g(get)h
(heterogenous)g(structures)g(is)g(to)g(use)g(collec-)0 1364
y(tions)g(of)g(p)q(oin)o(ters-to-ob)s(jects,)f(not)h(collections)g(of)g(ob)s
(jects)g(\(whic)o(h)g(also)f(requires)i(y)o(ou)f(to)g(tak)o(e)f(resp)q
(onsibilit)o(y)0 1427 y(for)k(managing)e(storage)h(for)g(the)h(ob)s(jects)g
(p)q(oin)o(ted)g(to)g(y)o(ourself)t(\).)62 1571 y(F)l(or)j(example,)g(the)h
(follo)o(wing)d(usage)i(illustrates)f(a)h(commonly)e(encoun)o(tered)j(danger)
g(in)f(trying)g(to)g(use)0 1634 y(con)o(tainer)c(classes)h(for)g
(heterogenous)g(structures:)120 1828 y Fj(class)23 b(Base)g({)h(int)g(x;)f
(...})120 1878 y(class)g(Derived)g(:)h(public)f(Base)g({)h(int)f(y;)h(...)f
(})120 1977 y(BaseVHSet)g(s;)g(//)h(class)f(BaseVHSet)g(generated)f(via)i
(something)e(like)430 2027 y(//)i(`genclass)e(Base)i(ref)f(VHSet')120
2127 y(void)g(f\(\))120 2177 y({)168 2226 y(Base)g(b;)168 2276
y(s.add\(b\);)f(//)i(OK)168 2376 y(Derived)f(d;)168 2426 y(s.add\(d\);)46
b(//)24 b(\(CHOP!\))120 2476 y(})62 2670 y Fi(A)o(t)16 b(line)h(\(CHOP!\),)f
(a)g Fj(Base::Base\(Base&\))p Fi(,)e(NOT)j Fj(Derived::Derived\(Derived&\))d
Fi(is)i(called)g(inside)p eop
%%Page: 20 22
bop 0 -58 a Fi(20)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(Set::add\(Base&\))i Fi(\(actually)l(,)g
(in)i Fj(VHSet)p Fi(,)f(a)h Fj(Base::operator)13 b(=\(Base&\))p
Fi(,)k(is)g(used)i(instead)e(to)g(place)h(the)0 246 y(elemen)o(t)d(in)h(an)f
(arra)o(y)g(slot,)g(but)h(with)f(the)h(same)f(e\013ect/problem\).)20
b(So)c(only)g(the)g(Base)g(part)f(is)g(copied)i(as)e(a)0 308
y Fj(VHSet)h Fi(elemen)o(t)f(\(a)h(so-called)g(c)o(hopp)q(ed-cop)o(y\),)i
(that,)e(in)g(this)g(case,)h(has)f(an)h Fj(x)f Fi(part,)g(but)h(no)g
Fj(y)f Fi(part;)g(and)h(a)0 370 y(Base,)e(not)g(Deriv)o(ed)f(vtable.)20
b(Ob)s(jects)15 b(formed)f(via)g(c)o(hopp)q(ed)j(copies)e(are)f(rarely)h
(sensible.)62 509 y(T)l(o)g(a)o(v)o(oid)f(this,)g(y)o(ou)h(m)o(ust)f(resort)g
(to)h(p)q(oin)o(ters:)120 697 y Fj(typedef)23 b(Base*)g(BasePtr;)120
796 y(BasePtrVHSet)f(s;)i(//)f(class)h(BaseVHSet)e(generated)h(via)g
(something)g(like)502 846 y(//)g(`genclass)g(BasePtr)g(val)g(VHSet')120
946 y(void)g(f\(\))120 996 y({)168 1046 y(Base*)g(bp)g(=)h(new)g(Base;)168
1095 y(s.add\(b\);)168 1195 y(Base*)f(dp)g(=)h(new)g(Derived;)168
1245 y(s.add\(d\);)46 b(//)24 b(works)f(fine.)168 1344 y(//)g(Don't)g(forget)
h(to)f(delete)g(bp)h(and)f(dp)h(sometime.)168 1394 y(//)f(The)h(VHSet)f
(won't)g(do)h(this)f(for)g(you.)120 1444 y(})0 1732 y Fe(6.1)33
b(Example)62 1870 y Fi(The)14 b(protot)o(yp)q(es)f(can)g(b)q(e)h(di\016cult)f
(to)g(use)h(on)g(\014rst)f(attempt.)k(Here)d(is)f(an)g(example)g(that)f(ma)o
(y)g(b)q(e)i(helpful.)0 1932 y(The)h(utilities)f(in)h(the)g(`)p
Fj(proto-kit)p Fi(')e(simplify)g(m)o(uc)o(h)h(of)h(the)h(actions)e(describ)q
(ed,)i(but)f(are)g(not)g(used)g(here.)62 2071 y(Supp)q(ose)21
b(y)o(ou)e(create)g(a)g(class)g Fj(Person)p Fi(,)g(and)h(w)o(an)o(t)e(to)h
(mak)o(e)f(an)h(Map)g(that)g(links)g(the)g(so)q(cial)g(securit)o(y)0
2133 y(n)o(um)o(b)q(ers)14 b(asso)q(ciated)h(with)f(eac)o(h)i(p)q(erson.)k(Y)
l(ou)15 b(start)f(o\013)h(with)f(a)h(\014le)g(`)p Fj(Person.h)p
Fi(')120 2321 y Fj(#include)23 b(<String.h>)120 2421 y(class)g(Person)120
2471 y({)168 2521 y(String)g(nm;)168 2570 y(String)g(addr;)168
2620 y(//...)120 2670 y(public:)p eop
%%Page: 21 23
bop 0 -58 a Fi(Chapter)15 b(6:)k(In)o(tro)q(duction)c(to)g(con)o(tainer)f
(class)h(protot)o(yp)q(es)836 b(21)168 183 y Fj(const)23 b(String&)g
(name\(\))g({)h(return)f(nm;)g(})168 233 y(const)g(String&)g(address\(\))f({)
i(return)f(addr;)g(})168 283 y(void)238 b(print\(\))23 b({)g(...)h(})168
333 y(//...)120 382 y(})62 579 y Fi(And)16 b(in)f(\014le)g(`)p
Fj(SSN.h)p Fi(',)120 727 y Fj(typedef)23 b(unsigned)g(int)g(SSN;)62
874 y Fi(Y)l(our)16 b(\014rst)f(decision)g(is)f(what)h(storage/usage)f
(strategy)g(to)h(use.)20 b(There)c(are)f(sev)o(eral)f(reasonable)h(alterna-)0
936 y(tiv)o(es)h(here:)23 b(Y)l(ou)17 b(migh)o(t)d(create)j(an)f(\\ob)s(ject)
g(collection")f(of)i(P)o(ersons,)f(a)g(\\p)q(oin)o(ter)g(collection")f(of)h
(p)q(oin)o(ters-)0 998 y(to-P)o(ersons,)d(or)g(ev)o(en)i(a)e(simple)g(String)
g(map,)g(housing)g(either)h(copies)g(of)g(p)q(oin)o(ters)f(to)g(the)h(names)f
(of)h(P)o(ersons,)0 1060 y(since)k(other)g(\014elds)g(are)g(un)o(used)h(for)f
(purp)q(oses)g(of)g(the)g(Map.)28 b(In)19 b(an)f(ob)s(ject)g(collection,)f
(instances)h(of)g(class)0 1123 y(P)o(erson)g(\\liv)o(e")f(inside)h(the)g
(Map,)g(while)g(in)g(a)g(p)q(oin)o(ter)g(collection,)f(the)i(instances)f(liv)
o(e)f(elswhere.)29 b(Also,)18 b(as)0 1185 y(ab)q(o)o(v)o(e,)f(if)f(instances)
h(of)g(sub)q(classes)g(of)g(P)o(erson)g(are)g(to)f(b)q(e)i(used)g(inside)f
(the)g(Map,)g(y)o(ou)g(m)o(ust)e(use)j(p)q(oin)o(ters.)0 1247
y(In)d(a)g(String)e(Map,)h(the)h(same)e(di\013erence)i(holds,)f(but)h(no)o(w)
f(only)g(for)g(the)h(name)f(\014elds.)19 b(An)o(y)c(of)f(these)h(c)o(hoices)0
1309 y(migh)o(t)e(mak)o(e)h(sense)h(in)g(particular)f(applications.)62
1457 y(The)20 b(second)g(c)o(hoice)f(is)g(the)h(Map)f(implemen)o(tati)o(on)e
(strategy)l(.)31 b(Either)19 b(a)g(tree)h(or)e(a)i(hash)f(table)g(migh)o(t)0
1519 y(mak)o(e)13 b(sense.)20 b(Supp)q(ose)c(y)o(ou)e(w)o(an)o(t)g(an)g(A)-5
b(VL)15 b(tree)g(Map.)k(There)c(are)f(t)o(w)o(o)g(things)g(to)g(no)o(w)g(c)o
(hec)o(k.)20 b(First,)13 b(as)h(an)0 1581 y(ob)s(ject)i(collection,)g(the)h
(A)-5 b(VLMap)17 b(requires)g(that)f(the)h(elsemen)o(t)e(class)h(con)o(tain)g
(an)h Fj(X\(X&\))f Fi(constructor.)24 b(In)0 1643 y(C)p Fj(++)p
Fi(,)15 b(if)g(y)o(ou)g(don't)g(sp)q(ecify)g(suc)o(h)h(a)f(constructor,)g
(one)g(is)g(constructed)h(for)f(y)o(ou,)f(but)i(it)f(is)g(a)g(v)o(ery)g(go)q
(o)q(d)g(idea)0 1706 y(to)g(alw)o(a)o(ys)e(do)i(this)g(y)o(ourself,)f(to)g(a)
o(v)o(oid)g(surprises.)20 b(In)c(this)e(example,)g(y)o(ou'd)h(use)g
(something)f(lik)o(e)120 1853 y Fj(class)23 b(Person)120 1903
y({)h(...;)215 1952 y(Person\(const)f(Person&)g(p\))g(:nm\(p.nm\),)g
(addr\(p.addr\))f({})120 2002 y(};)62 2149 y Fi(Also,)11 b(an)f(A)-5
b(VLMap)11 b(requires)f(a)g(comparison)f(function)h(for)g(elemen)o(ts)f(in)i
(order)f(to)g(main)o(tain)e(order.)18 b(Rather)0 2212 y(than)13
b(requiring)f(y)o(ou)h(to)f(write)g(a)h(particular)e(comparison)g(function,)i
(a)g(`)p Fj(defs)p Fi(')e(\014le)i(is)g(consulted)g(to)f(determine)0
2274 y(ho)o(w)j(to)f(compare)g(items.)k(Y)l(ou)e(m)o(ust)d(create)i(and)h
(edit)f(suc)o(h)g(a)g(\014le.)62 2421 y(Before)23 b(creating)e(`)p
Fj(Person.defs.h)p Fi(',)g(y)o(ou)h(m)o(ust)f(\014rst)h(mak)o(e)f(one)h
(additional)f(decision.)41 b(Should)23 b(the)0 2483 y(Map)c(mem)o(b)q(er)f
(functions)i(lik)o(e)e Fj(m.contains\(p\))g Fi(tak)o(e)h(argumen)o(ts)f(\()p
Fj(p)p Fi(\))h(b)o(y)h(reference)g(\(i.e.,)f(t)o(yp)q(ed)h(as)f
Fj(int)0 2545 y(Map::contains\(const)13 b(Person&)h(p\))j Fi(or)f(b)o(y)i(v)m
(alue)f(\(i.e.,)f(t)o(yp)q(ed)i(as)f Fj(int)d(Map::contains\(const)f(Person)0
2608 y(p\))p Fi(.)19 b(Generally)l(,)12 b(for)h(user-de\014ned)i(classes,)e
(y)o(ou)g(w)o(an)o(t)f(to)h(pass)g(b)o(y)g(reference,)h(and)f(for)g(builtins)
f(and)i(p)q(oin)o(ters,)0 2670 y(to)h(pass)g(b)o(y)g(v)m(alue.)20
b(SO)c(y)o(ou)e(should)i(pic)o(k)f(b)o(y-reference.)p eop
%%Page: 22 24
bop 0 -58 a Fi(22)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)62 183 y(Y)l(ou)21 b(can)f(no)o(w)f(create)h(`)p
Fj(Person.defs.h)p Fi(')d(via)j Fj(genclass)14 b(Person)g(ref)h(defs)p
Fi(.)34 b(This)19 b(creates)h(a)f(simple)0 246 y(sk)o(eleton)k(that)g(y)o(ou)
g(m)o(ust)f(edit.)44 b(First,)24 b(add)g Fj(#include)14 b("Person.h")22
b Fi(to)h(the)g(top.)45 b(Second,)26 b(edit)d(the)0 308 y Fj(<T>CMP\(a,b\))14
b Fi(macro)f(to)i(compare)f(on)h(name,)f(via)62 445 y Fj(#define)g
(<T>CMP\(a,)g(b\))h(\()g(compare\(a.name\(\),)e(b.name\(\)\))h(\))62
583 y Fi(whic)o(h)e(in)o(v)o(ok)o(es)f(the)h Fj(int)i(compare\(const)g
(String&,)g(const)g(String&\))d Fi(function)h(from)e(`)p Fj(String.h)p
Fi('.)17 b(Of)0 645 y(course,)e(y)o(ou)g(could)g(de\014ne)h(this)f(in)g(an)o
(y)g(other)g(w)o(a)o(y)f(as)h(w)o(ell.)j(In)e(fact,)e(the)i(default)e(v)o
(ersions)h(in)g(the)g(sk)o(elaton)0 708 y(turn)g(out)g(to)g(b)q(e)g(OK)h
(\(alb)q(eit)e(ine\016cien)o(t\))h(in)g(this)g(particular)e(example.)62
845 y(Y)l(ou)k(ma)o(y)f(also)f(w)o(an)o(t)h(to)h(create)f(\014le)h(`)p
Fj(SSN.defs.h)p Fi('.)23 b(Here,)17 b(c)o(ho)q(osing)f(call-b)o(y-v)m(alue)h
(mak)o(es)e(sense,)j(and)0 907 y(since)f(no)f(other)g(capabilities)g(\(lik)o
(e)f(comparison)g(functions\))h(of)g(the)g(SSNs)i(are)e(used)h(\(and)f(the)h
(defaults)f(are)0 970 y(OK)g(an)o(yw)o(a)o(y\),)d(y)o(ou'd)i(t)o(yp)q(e)62
1107 y Fj(genclass)f(SSN)h(val)g(defs)62 1245 y Fi(and)h(then)f(edit)g(to)g
(place)g Fj(#include)f("SSN.h")g Fi(at)h(the)g(top.)62 1382
y(Finally)l(,)f(y)o(ou)h(can)g(generate)g(the)g(classes.)20
b(First,)13 b(generate)i(the)g(base)h(class)e(for)h(Maps)f(via)62
1520 y Fj(genclass)g(-2)h(Person)g(ref)f(SSN)h(val)g(Map)62
1658 y Fi(This)f(generates)h(only)f(the)g(abstract)g(class,)f(not)h(the)h
(implemen)o(tati)o(on,)c(in)k(\014le)f(`)p Fj(Person.SSN.Map.h)p
Fi(')e(and)0 1720 y(`)p Fj(Person.SSN.Map.cc)p Fi('.)17 b(T)l(o)e(create)g
(the)g(A)-5 b(VL)16 b(implemen)o(tat)o(ion,)c(t)o(yp)q(e)62
1857 y Fj(genclass)i(-2)h(Person)g(ref)f(SSN)h(val)g(AVLMap)62
1995 y Fi(This)10 b(creates)g(class)f Fj(PersonSSNAVLMap)f
Fi(in)i(\014les)h(`)p Fj(Person.SSN.AVLMap.h)p Fi(')6 b(and)11
b(`)p Fj(Person.SSN.AVLMap.cc)o Fi('.)62 2133 y(T)l(o)j(use)h(these,)f
(compile)f(the)i(`)p Fj(.cc)p Fi(')e(\014les,)h(and)g Fj(#include)g
("Person.SSN.AVLMap.h")e Fi(in)i(the)g(application)0 2195 y(program.)k(All)c
(other)h(\014les)g(are)g(included)h(in)f(the)g(righ)o(t)f(w)o(a)o(ys)g
(automatically)l(.)62 2333 y(One)f(last)f(consideration,)f(p)q(eculiar)i(to)f
(Maps,)g(is)g(to)g(pic)o(k)g(a)g(reasonable)g(default)g(con)o(ten)o(ts)g
(when)h(declaring)0 2395 y(an)i(A)-5 b(VLMap.)20 b(Zero)15
b(migh)o(t)e(b)q(e)j(appropriate)e(here,)h(so)g(y)o(ou)g(migh)o(t)e(declare)i
(a)g(Map,)62 2532 y Fj(PersonSSNAVLMap)e(m\(\(SSN\)0\);)62
2670 y Fi(Supp)q(ose)g(y)o(ou)f(w)o(an)o(ted)f(a)h Fj(VHMap)f
Fi(instead)h(of)f(an)h Fj(AVLMap)f Fi(Besides)i(generating)e(di\013eren)o(t)g
(implemen)o(tati)o(ons,)p eop
%%Page: 23 25
bop 0 -58 a Fi(Chapter)15 b(6:)k(In)o(tro)q(duction)c(to)g(con)o(tainer)f
(class)h(protot)o(yp)q(es)836 b(23)0 183 y(there)16 b(are)g(t)o(w)o(o)f
(di\013erences)i(in)f(ho)o(w)g(y)o(ou)f(should)i(prepare)f(the)h(`)p
Fj(defs)p Fi(')d(\014le.)24 b(First,)14 b(b)q(ecause)k(a)e(VHMap)g(uses)0
246 y(a)e(C)p Fj(++)g Fi(arra)o(y)g(in)o(ternally)l(,)f(and)h(b)q(ecause)i(C)
p Fj(++)e Fi(arra)o(y)f(slots)h(are)g(initialized)f(di\013eren)o(tly)g(than)i
(single)f(elemen)o(ts,)0 308 y(y)o(ou)j(m)o(ust)e(ensure)j(that)f(class)f(P)o
(erson)h(con)o(tains)f(\(1\))h(a)f(no-argumen)o(t)g(constructor,)h(and)g
(\(2\))f(an)h(assigmen)o(t)0 370 y(op)q(erator.)i(Y)l(ou)c(could)h(arrange)e
(this)h(via)120 507 y Fj(class)23 b(Person)120 557 y({)h(...;)215
607 y(Person\(\))f({})168 656 y(void)g(operator)g(=)h(\(const)f(Person&)f
(p\))i({)g(nm)f(=)h(p.nm;)f(addr)h(=)f(p.addr;)g(})120 706
y(};)62 843 y Fi(\(The)16 b(lac)o(k)g(of)g(action)f(in)h(the)g(constructor)g
(is)f(OK)i(here)g(b)q(ecause)g Fj(Strings)e Fi(p)q(osess)h(usable)h
(no-argumen)o(t)0 906 y(constructors.\))62 1043 y(Y)l(ou)f(also)d(need)j(to)f
(edit)f(`)p Fj(Person.defs.h)p Fi(')f(to)h(indicate)h(a)f(usable)h(hash)g
(function)g(and)g(default)g(capacit)o(y)l(,)0 1105 y(via)f(something)g(lik)o
(e)120 1292 y Fj(#include)23 b(<builtin.h>)120 1341 y(#define)g(<T>HASH\(x\))
46 b(\(hashpjw\(x.name\(\).chars\(\)\)\))120 1391 y(#define)23
b(DEFAULT_INITIAL_CAPACITY)d(1000)62 1578 y Fi(Since)13 b(the)e
Fj(hashpjw)g Fi(function)h(from)e(`)p Fj(builtin.h)p Fi(')f(is)j(appropriate)
e(here.)20 b(Changing)11 b(the)h(default)f(capacit)o(y)0 1640
y(to)i(a)g(v)m(alue)h(exp)q(ected)h(to)e(exceed)h(the)g(actual)e(capacit)o(y)
h(helps)h(to)f(a)o(v)o(oid)f(\\hidden")i(ine\016ciencies)f(when)h(a)g(new)0
1703 y(VHMap)h(is)g(created)g(without)f(o)o(v)o(erriding)g(the)h(default,)f
(whic)o(h)h(is)g(all)f(to)q(o)h(easy)g(to)f(do.)62 1840 y(Otherwise,)h(ev)o
(erything)g(is)f(the)i(same)d(as)i(ab)q(o)o(v)o(e,)g(substituting)f
Fj(VHMap)g Fi(for)h Fj(AVLMap)p Fi(.)p eop
%%Page: 24 26
bop 0 -58 a Fi(24)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 25 27
bop 0 -58 a Fi(Chapter)15 b(7:)k(Ho)o(w)c(v)m(ariable-sized)g(ob)s(jects)f
(are)h(represen)o(ted.)817 b(25)0 183 y Ff(7)41 b(Ho)n(w)27
b(v)l(ariable-sized)d(ob)t(jects)j(are)g(represen)n(ted.)62
354 y Fi(One)15 b(of)e(the)h(\014rst)g(goals)e(of)h(the)h(GNU)g(C)p
Fj(++)f Fi(library)g(is)g(to)g(enric)o(h)h(the)g(kinds)g(of)f(basic)h
(classes)f(that)g(ma)o(y)f(b)q(e)0 416 y(considered)k(as)g(\(nearly\))e
(\\built)h(in)o(to")g(C)p Fj(++)p Fi(.)21 b(A)16 b(go)q(o)q(d)g(deal)f(of)h
(the)f(inspiration)g(for)g(these)h(e\013orts)f(is)g(deriv)o(ed)0
478 y(from)10 b(considering)i(features)f(of)h(other)f(t)o(yp)q(e-ric)o(h)h
(languages,)g(particularly)e(Common)f(Lisp)j(and)g(Sc)o(heme.)19
b(The)0 540 y(general)c(c)o(haracteristics)e(of)i(most)e(class)i(and)g
(friend)g(op)q(erators)f(and)h(functions)g(supp)q(orted)h(b)o(y)f(these)g
(classes)0 603 y(has)g(b)q(een)h(hea)o(vily)f(in\015uenced)h(b)o(y)f(suc)o(h)
h(languages.)62 740 y(F)l(our)21 b(of)f(these)h(t)o(yp)q(es,)h(Strings,)e(In)
o(tegers,)i(BitSets,)f(and)g(BitStrings)f(\(as)g(w)o(ell)f(as)i(asso)q
(ciated)f(and/or)0 802 y(deriv)o(ed)g(classes\))e(require)i(represen)o
(tations)e(suitable)h(for)g(managing)e(v)m(ariable-sized)j(ob)s(jects)f(on)g
(the)h(free-)0 864 y(store.)28 b(The)19 b(basic)f(tec)o(hnique)g(used)h(for)f
(all)f(of)h(these)h(is)e(the)i(same,)e(although)g(v)m(arious)h(details)g
(necessarily)0 927 y(di\013er)d(from)e(class)i(to)f(class.)62
1064 y(The)j(general)g(strategy)e(for)i(represen)o(ting)f(suc)o(h)i(ob)s
(jects)e(is)g(to)h(create)f(c)o(h)o(unks)i(of)e(memory)e(that)j(include)0
1126 y(b)q(oth)h(header)h(information)c(\(e.g.,)i(the)h(size)g(of)g(the)g(ob)
s(ject\),)f(as)h(w)o(ell)f(as)h(the)g(v)m(ariable-size)f(data)h(\(an)f(arra)o
(y)0 1188 y(of)j(some)f(sort\))g(at)g(the)h(end)h(of)f(the)g(c)o(h)o(unk.)36
b(Generally)19 b(the)h(maxim)o(um)c(size)k(of)g(an)g(ob)s(ject)g(is)g
(limited)e(to)0 1250 y(something)11 b(less)i(than)h(all)e(of)h(addressable)g
(memory)l(,)e(as)i(a)f(safeguard.)19 b(The)14 b(minim)o(um)9
b(size)k(is)g(also)f(limited)f(so)0 1313 y(as)j(not)g(to)f(w)o(aste)h(allo)q
(cations)e(expanding)j(v)o(ery)f(small)e(c)o(h)o(unks.)20 b(In)o(ternally)l
(,)13 b(c)o(h)o(unks)i(are)f(allo)q(cated)f(in)h(blo)q(c)o(ks)0
1375 y(w)o(ell-tuned)h(to)g(the)g(p)q(erformance)f(of)h(the)g
Fj(new)g Fi(op)q(erator.)62 1512 y(Class)h(elemen)o(ts)f(themselv)o(es)g(are)
h(merely)f(p)q(oin)o(ters)h(to)f(these)i(c)o(h)o(unks.)24 b(Most)15
b(class)h(op)q(erations)f(are)h(p)q(er-)0 1574 y(formed)c(via)h(inline)g
(\\translation")e(functions)i(that)f(p)q(erform)h(the)g(required)h(op)q
(eration)e(on)h(the)h(corresp)q(onding)0 1636 y(represen)o(tation.)21
b(Ho)o(w)o(ev)o(er,)15 b(constructors)g(and)h(assignmen)o(ts)d(op)q(erate)j
(b)o(y)g(cop)o(ying)f(en)o(tire)g(represen)o(tations,)0 1699
y(not)g(just)g(p)q(oin)o(ters.)62 1836 y(No)g(attempt)e(is)i(made)f(to)h(con)
o(trol)e(temp)q(orary)h(creation)g(in)h(expressions)g(and)g(functions)g(in)o
(v)o(olving)f(these)0 1898 y(classes.)19 b(Users)14 b(of)f(previous)g(v)o
(ersions)g(of)h(the)g(classes)f(will)f(note)i(the)g(disapp)q(earance)g(of)f
(b)q(oth)h(\\Tmp")e(classes)0 1960 y(and)i(reference)h(coun)o(ting.)k(These)c
(w)o(ere)f(dropp)q(ed)h(b)q(ecause,)g(while)e(they)i(did)f(impro)o(v)o(e)e(p)
q(erformance)h(in)h(some)0 2022 y(cases,)e(they)g(obscure)h(class)e(mec)o
(hanics,)g(lead)h(programmers)d(in)o(to)i(the)h(false)f(b)q(elief)h(that)g
(they)g(need)g(not)g(w)o(orry)0 2085 y(ab)q(out)j(suc)o(h)h(things,)e(and)h
(o)q(ccaisionally)f(ha)o(v)o(e)g(parado)o(xical)g(b)q(eha)o(vior.)62
2222 y(These)g(v)m(ariable-sized)f(ob)s(ject)f(classes)h(are)g(in)o(tegrated)
f(as)g(w)o(ell)g(as)h(p)q(ossible)g(in)o(to)f(C)p Fj(++)p Fi(.)19
b(Most)12 b(suc)o(h)h(classes)0 2284 y(p)q(ossess)i(con)o(v)o(erters)e(that)h
(allo)o(w)f(automatic)f(co)q(ercion)i(b)q(oth)h(from)d(and)j(to)f(builtin)g
(basic)g(t)o(yp)q(es.)19 b(\(e.g.,)14 b(c)o(har*)0 2346 y(to)21
b(and)g(from)e(String,)j(long)e(in)o(t)h(to)f(and)i(from)d(In)o(teger,)j
(etc.\).)37 b(There)22 b(are)f(pro's)f(and)h(con's)g(to)g(circular)0
2408 y(con)o(v)o(erters,)14 b(since)i(they)f(can)h(sometim)o(es)d(lead)i(to)g
(the)g(con)o(v)o(ersion)f(from)g(a)h(builtin)g(t)o(yp)q(e)g(through)g(to)g(a)
g(class)0 2471 y(function)h(and)g(bac)o(k)g(to)f(a)g(builtin)h(t)o(yp)q(e)g
(without)e(an)o(y)i(sp)q(ecial)g(atten)o(tion)e(on)i(the)g(part)f(of)h(the)g
(programm)o(er,)0 2533 y(b)q(oth)f(for)g(b)q(etter)g(and)h(w)o(orse.)62
2670 y(Most)g(of)g(these)h(classes)f(also)f(pro)o(vide)h(sp)q(ecial-case)h
(op)q(erators)f(and)g(functions)h(mixing)d(basic)j(with)f(class)p
eop
%%Page: 26 28
bop 0 -58 a Fi(26)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y(t)o(yp)q(es,)g(as)g(a)f(w)o(a)o(y)g(to)h
(a)o(v)o(oid)e(constructors)i(in)f(cases)h(where)h(the)f(op)q(erations)f(do)h
(not)f(rely)h(on)g(an)o(ything)f(sp)q(ecial)0 246 y(ab)q(out)h(the)h
(represen)o(tations.)j(F)l(or)c(example,)f(there)i(is)f(a)g(sp)q(ecial)g
(case)h(concatenation)e(op)q(erator)h(for)g(a)g(String)0 308
y(concatenated)20 b(with)f(a)h(c)o(har,)g(since)g(building)g(the)g(result)f
(do)q(es)i(not)e(rely)h(on)g(an)o(ything)f(ab)q(out)h(the)g(String)0
370 y(header.)f(Again,)10 b(there)h(are)g(argumen)o(ts)e(b)q(oth)i(for)f(and)
h(against)e(this)h(approac)o(h.)18 b(Supp)q(orting)11 b(these)g(cases)g(adds)
0 432 y(a)g(non-trivial)f(degree)i(of)g(\(mainly)d(inline\))i(function)g
(proliferation,)f(but)i(results)f(in)h(more)e(e\016cien)o(t)h(op)q(erations.)
0 495 y(E\016ciency)h(wins)f(out)g(o)o(v)o(er)f(parsimon)o(y)g(here,)i(as)f
(part)g(of)g(the)g(goal)f(to)h(pro)q(duce)i(classes)e(that)f(pro)o(vide)h
(su\016cien)o(t)0 557 y(functionalit)o(y)k(and)i(e\016ciency)g(so)g(that)f
(programmers)d(are)k(not)f(tempted)g(to)g(try)h(to)f(manipulate)f(or)h(b)o
(ypass)0 619 y(the)f(underlying)g(represen)o(tations.)p eop
%%Page: 27 29
bop 0 -58 a Fi(Chapter)15 b(8:)k(Some)c(guidelines)g(for)f(using)h
(expression-orien)o(ted)g(classes)628 b(27)0 183 y Ff(8)41
b(Some)27 b(guidelines)d(for)j(using)f(expression-orien)n(ted)f(classes)62
366 y Fi(The)c(fact)g(that)f(C)p Fj(++)g Fi(allo)o(ws)g(op)q(erators)g(to)g
(b)q(e)h(o)o(v)o(erloaded)f(for)h(user-de\014ned)h(classes)f(can)g(mak)o(e)e
(pro-)0 428 y(gramming)d(with)i(library)h(classes)f(lik)o(e)h
Fj(Integer)p Fi(,)g Fj(String)p Fi(,)g(and)g(so)g(on)g(v)o(ery)g(con)o(v)o
(enien)o(t.)32 b(Ho)o(w)o(ev)o(er,)19 b(it)f(is)0 491 y(w)o(orth)d(b)q
(ecoming)f(familiar)f(with)i(some)f(of)h(the)h(inheren)o(t)f(limitatio)o(ns)e
(and)j(problems)e(asso)q(ciated)h(with)g(suc)o(h)0 553 y(op)q(erators.)62
690 y(Man)o(y)21 b(op)q(erators)g(are)g Fc(constructiv)o(e)p
Fi(,)i(i.e.,)f(create)f(a)g(new)h(ob)s(ject)f(based)h(on)g(some)e(function)i
(of)f(some)0 752 y(argumen)o(ts.)29 b(Sometimes)16 b(the)j(creation)f(of)h
(suc)o(h)g(ob)s(jects)f(is)h(w)o(asteful.)29 b(Most)18 b(library)g(classes)g
(supp)q(orting)0 814 y(expressions)d(con)o(tain)f(facilities)g(that)g(help)i
(y)o(ou)e(a)o(v)o(oid)g(suc)o(h)i(w)o(aste.)62 951 y(F)l(or)11
b(example,)g(for)g Fj(Integer)k(a,)f(b,)h(c;)g(...;)g(c)g(=)g(a)g(+)g(b)g(+)g
(a;)p Fi(,)d(the)f(plus)h(op)q(erator)f(is)g(called)h(to)f(sum)f(a)i(and)0
1014 y(b,)18 b(creating)f(a)g(new)h(temp)q(orary)e(ob)s(ject)h(as)g(its)g
(result.)27 b(This)17 b(temp)q(orary)f(is)h(then)h(added)g(with)f(a,)h
(creating)0 1076 y(another)e(temp)q(orary)l(,)g(whic)o(h)g(is)g(\014nally)h
(copied)g(in)o(to)e(c,)i(and)g(the)g(temp)q(oraries)e(are)h(then)h(deleted.)
25 b(In)17 b(other)0 1138 y(w)o(ords,)d(this)g(co)q(de)h(migh)o(t)d(ha)o(v)o
(e)j(an)f(e\013ect)h(similar)d(to)i Fj(Integer)g(a,)h(b,)g(c;)f(...;)h
(Integer)f(t1\(a\);)h(t1)f(+=)h(b;)0 1201 y(Integer)f(t2\(t1\);)g(t2)h(+=)g
(a;)g(c)g(=)g(t2;)p Fi(.)62 1337 y(F)l(or)h(small)d(ob)s(jects,)j(simple)e
(op)q(erators,)h(and/or)g(non-time/space)g(critical)g(programs,)e(creation)j
(of)f(tem-)0 1400 y(p)q(oraries)g(is)f(not)h(a)g(big)g(problem.)k(Ho)o(w)o
(ev)o(er,)14 b(often,)h(when)g(\014ne-tuning)h(a)f(program,)e(it)h(ma)o(y)g
(b)q(e)i(a)f(go)q(o)q(d)g(idea)0 1462 y(to)g(rewrite)f(suc)o(h)h(co)q(de)h
(in)f(a)g(less)g(pleasan)o(t,)f(but)h(more)f(e\016cien)o(t)h(manner.)62
1599 y(F)l(or)g(builtin)f(t)o(yp)q(es)h(lik)o(e)f(in)o(ts,)g(and)i(\015oats,)
d(C)i(and)h(C)p Fj(++)e Fi(compilers)f(already)i(kno)o(w)f(ho)o(w)h(to)f
(optimize)g(suc)o(h)0 1661 y(expressions)f(to)g(reduce)h(the)g(need)g(for)f
(temp)q(oraries.)k(Unfortunately)l(,)c(this)g(is)g(not)g(true)g(for)g(C)p
Fj(++)g Fi(user)h(de\014ned)0 1724 y(t)o(yp)q(es,)h(for)h(the)f(simple)g
(\(but)g(v)o(ery)h(anno)o(ying,)e(in)i(this)f(con)o(text\))g(reason)g(that)g
(nothing)g(at)h(all)e(is)h(guaran)o(teed)0 1786 y(ab)q(out)k(the)g(seman)o
(tics)e(of)i(o)o(v)o(erloaded)f(op)q(erators)g(and)h(their)g(in)o
(terrelations.)29 b(F)l(or)18 b(example,)h(if)f(the)h(ab)q(o)o(v)o(e)0
1848 y(expression)d(just)g(in)o(v)o(olv)o(ed)f(in)o(ts,)g(not)h(In)o(tegers,)
g(a)g(compiler)e(migh)o(t)g(in)o(ternally)h(con)o(v)o(ert)h(the)g(statemen)o
(t)e(in)o(to)0 1910 y(something)i(lik)o(e)33 b Fj(c)15 b(+=)f(a;)h(c)g(+=)g
(b;)g(c+=)g(a;)g Fi(,)j(or)f(p)q(erhaps)i(something)d(ev)o(en)j(more)d(clev)o
(er.)28 b(But)18 b(since)g(C)p Fj(++)0 1973 y Fi(do)q(es)g(not)g(kno)o(w)f
(that)h(In)o(teger)g(op)q(erator)f Fj(+)p Fi(=)h(has)g(an)o(y)f(relation)g
(to)g(In)o(teger)h(op)q(erator)f Fj(+)p Fi(,)h(A)g(C)p Fj(++)g
Fi(compiler)0 2035 y(cannot)d(do)g(this)g(kind)g(of)g(expression)g
(optimization)d(itself.)62 2172 y(In)f(man)o(y)e(cases,)i(y)o(ou)f(can)g(a)o
(v)o(oid)f(construction)h(of)g(temp)q(oraries)e(simply)h(b)o(y)h(using)g(the)
h(assignmen)o(t)d(v)o(ersions)0 2234 y(of)14 b(op)q(erators)f(whenev)o(er)h
(p)q(ossible,)g(since)g(these)g(v)o(ersions)f(create)h(no)g(temp)q(oraries.)k
(Ho)o(w)o(ev)o(er,)13 b(for)g(maxim)o(um)0 2296 y(\015exibilit)o(y)l(,)g
(most)g(classes)h(pro)o(vide)g(a)g(set)g(of)g(\\em)o(b)q(edded)h(assem)o(bly)
d(co)q(de")j(pro)q(cedures)g(that)f(y)o(ou)g(can)h(use)g(to)0
2359 y(fully)h(con)o(trol)f(time,)g(space,)i(and)f(ev)m(aluation)g
(strategies.)22 b(Most)16 b(of)g(these)h(pro)q(cedures)g(are)f
(\\three-address")0 2421 y(pro)q(cedures)j(that)e(tak)o(e)h(t)o(w)o(o)e
Fj(const)i Fi(source)g(argumen)o(ts,)e(and)i(a)g(destination)f(argumen)o(t.)
27 b(The)18 b(pro)q(cedures)0 2483 y(p)q(erform)c(the)h(appropriate)f
(actions,)g(placing)h(the)g(results)g(in)g(the)g(destination)f(\(whic)o(h)h
(is)f(ma)o(y)g(in)o(v)o(olv)o(e)g(o)o(v)o(er-)0 2545 y(writing)g(old)g(con)o
(ten)o(ts\).)19 b(These)d(pro)q(cedures)g(are)f(designed)h(to)e(b)q(e)i(fast)
e(and)i(robust.)j(In)d(particular,)e(aliasing)0 2608 y(is)j(alw)o(a)o(ys)f
(handled)i(correctly)l(,)f(so)g(that,)g(for)g(example)f Fj(add\(x,)e(x,)h
(x\);)32 b Fi(is)17 b(p)q(erfectly)h(OK.)g(\(The)f(names)f(of)0
2670 y(these)f(pro)q(cedures)h(are)f(listed)g(along)f(with)h(the)g
(classes.\))p eop
%%Page: 28 30
bop 0 -58 a Fi(28)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)62 183 y(F)l(or)h(example,)e(supp)q(ose)j(y)o(ou)f
(had)h(an)f(In)o(teger)g(expression)30 b Fj(a)15 b(=)g(\(b)g(-)g(a\))g(*)g
(-\(d)g(/)g(c\);)62 320 y Fi(This)22 b(w)o(ould)g(b)q(e)h(compiled)e(as)h(if)
f(it)h(w)o(ere)37 b Fj(Integer)14 b(t1=b-a;)g(Integer)h(t2=d/c;)f(Integer)g
(t3=-t2;)0 382 y(Integer)g(t4=t1*t3;)g(a=t4;)62 519 y Fi(But,)g(with)g(some)e
(man)o(ual)h(clev)o(erness,)g(y)o(ou)h(migh)o(t)e(y)o(ourself)h(some)g(up)h
(with)29 b Fj(sub\(a,)14 b(b,)h(a\);)g(mul\(a,)f(d,)0 582 y(a\);)h(div\(a,)f
(c,)h(a\);)62 719 y Fi(A)d(related)f(phenomenon)g(o)q(ccurs)h(when)g
(creating)e(y)o(our)h(o)o(wn)g(constructiv)o(e)g(functions)g(returning)g
(instances)0 781 y(of)16 b(suc)o(h)g(t)o(yp)q(es.)22 b(Supp)q(ose)17
b(y)o(ou)f(w)o(an)o(ted)f(to)h(write)f(function)h Fj(Integer)e(f\(const)g
(Integer&)g(a\))h({)g(Integer)f(r)0 843 y(=)h(a;)g(r)g(+=)g(a;)g(return)f(r;)
h(})62 980 y Fi(This)f(function,)g(when)h(called)f(\(as)g(in)30
b Fj(a)15 b(=)g(f\(a\);)f Fi(\))g(demonstrates)f(a)h(similar)e(kind)i(of)g(w)
o(asted)g(cop)o(y)l(.)20 b(The)0 1043 y(returned)d(v)m(alue)h(r)e(m)o(ust)g
(b)q(e)i(copied)f(out)f(of)h(the)g(function)g(b)q(efore)g(it)g(can)g(b)q(e)g
(used)h(b)o(y)f(the)g(caller.)25 b(In)17 b(GNU)0 1105 y(C)p
Fj(++)p Fi(,)h(there)g(is)f(an)h(alternativ)o(e)e(via)h(the)h(use)h(of)e
(named)g(return)h(v)m(alues.)28 b(Named)17 b(return)h(v)m(alues)g(allo)o(w)e
(y)o(ou)0 1167 y(to)j(manipulate)g(the)h(returned)g(ob)s(ject)g(directly)l(,)
g(rather)f(than)h(requiring)g(y)o(ou)f(to)h(create)g(a)f(lo)q(cal)g(inside)h
(a)0 1229 y(function)14 b(and)f(then)h(cop)o(y)g(it)f(out)g(as)g(the)h
(returned)g(v)m(alue.)20 b(In)14 b(this)f(example,)g(this)g(can)h(b)q(e)g
(done)g(via)f Fj(Integer)0 1292 y(f\(const)h(Integer&)g(a\))h(return)f
(r\(a\))h({)g(r)g(+=)g(a;)g(return;)f(})62 1429 y Fi(A)i(\014nal)g
(guideline:)21 b(The)c(o)o(v)o(erloaded)e(op)q(erators)g(are)g(v)o(ery)h(con)
o(v)o(enien)o(t,)g(and)g(m)o(uc)o(h)f(clearer)g(to)h(use)g(than)0
1491 y(pro)q(cedural)e(co)q(de.)20 b(It)14 b(is)g(almost)e(alw)o(a)o(ys)g(a)i
(go)q(o)q(d)g(idea)f(to)h(mak)o(e)e(it)i(righ)o(t,)f Fc(then)h
Fi(mak)o(e)f(it)g(fast,)g(b)o(y)h(translating)0 1553 y(expression)h(co)q(de)h
(in)o(to)e(pro)q(cedural)h(co)q(de)h(after)f(it)f(is)h(kno)o(wn)g(to)f(b)q(e)
i(correct.)p eop
%%Page: 29 31
bop 0 -58 a Fi(Chapter)15 b(9:)k(Pseudo-indexes)1371 b(29)0
183 y Ff(9)41 b(Pseudo-indexes)62 389 y Fi(Man)o(y)15 b(useful)h(classes)g
(op)q(erate)f(as)h(con)o(tainers)f(of)g(elemen)o(ts.)21 b(T)l(ec)o(hniques)16
b(for)g(accessing)f(these)h(elemen)o(ts)0 452 y(from)h(a)i(con)o(tainer)g
(di\013er)f(from)g(class)g(to)h(class.)31 b(In)20 b(the)g(GNU)f(C)p
Fj(++)f Fi(library)l(,)h(access)h(metho)q(ds)e(ha)o(v)o(e)h(b)q(een)0
514 y(partially)d(standardized)i(across)f(di\013eren)o(t)h(classes)f(via)h
(the)g(use)g(of)g(pseudo-indexes)h(called)f Fj(Pixes)p Fi(.)27
b(A)18 b Fj(Pix)0 576 y Fi(acts)13 b(in)g(some)e(w)o(a)o(ys)i(lik)o(e)f(an)h
(index,)g(and)h(in)f(some)f(w)o(a)o(ys)g(lik)o(e)g(a)h(p)q(oin)o(ter.)18
b(\(Their)13 b(underlying)g(represen)o(tations)0 639 y(are)i(just)f
Fj(void*)h Fi(p)q(oin)o(ters\).)j(A)d Fj(Pix)g Fi(is)f(a)h(kind)g(of)g(\\k)o
(ey")f(that)g(is)h(translated)e(in)o(to)h(an)h(elemen)o(t)f(access)h(b)o(y)g
(the)0 701 y(class.)20 b(In)15 b(virtually)f(all)g(cases,)h
Fj(Pixes)g Fi(are)g(p)q(oin)o(ters)f(to)h(some)f(kind)h(in)o(ternal)g
(storage)f(cells.)19 b(The)d(con)o(tainers)0 763 y(use)g(these)f(p)q(oin)o
(ters)g(to)f(extract)h(items.)62 904 y Fj(Pixes)f Fi(supp)q(ort)h(tra)o(v)o
(ersal)d(and)j(insp)q(ection)f(of)g(elemen)o(ts)f(in)i(a)f(collection)f
(using)h(analogs)f(of)h(arra)o(y)g(index-)0 966 y(ing.)30 b(Ho)o(w)o(ev)o
(er,)18 b(they)h(are)f(p)q(oin)o(ter-lik)o(e)f(in)i(that)f
Fj(0)g Fi(is)h(treated)f(as)g(an)g(in)o(v)m(alid)g Fj(Pix)p
Fi(,)h(and)g(unsafe)g(insofar)e(as)0 1029 y(programmers)c(can)k(attempt)d(to)
i(access)h(nonexisten)o(t)f(elemen)o(ts)f(via)h(dangling)f(or)h(otherwise)g
(in)o(v)m(alid)g Fj(Pixes)0 1091 y Fi(without)e(\014rst)h(c)o(hec)o(king)g
(for)g(their)f(v)m(alidit)o(y)l(.)62 1232 y(In)f(general)e(it)g(is)h(a)g(v)o
(ery)f(bad)h(idea)g(to)f(p)q(erform)g(tra)o(v)o(ersals)f(in)i(the)g(the)g
(midst)e(of)h(destructiv)o(e)h(mo)q(di\014cations)0 1294 y(to)j(con)o
(tainers.)62 1435 y(T)o(ypical)f(applications)g(migh)o(t)f(include)j(co)q(de)
g(using)f(the)g(idiom)120 1576 y Fj(for)23 b(\(Pix)h(i)f(=)h(a.first\(\);)f
(i)g(!=)h(0;)g(a.next\(i\)\))e(use\(a\(i\)\);)62 1717 y Fi(for)15
b(some)f(con)o(tainer)g Fj(a)h Fi(and)g(function)h Fj(use)p
Fi(.)62 1857 y(Classes)c(supp)q(orting)g(the)h(use)g(of)g Fj(Pixes)f
Fi(alw)o(a)o(ys)e(con)o(tain)i(the)h(follo)o(wing)d(metho)q(ds,)i(assuming)f
(a)i(con)o(tainer)0 1920 y Fj(a)i Fi(of)g(elemen)o(t)f(t)o(yp)q(es)h(of)g
Fj(Base)p Fi(.)0 2061 y Fj(Pix)g(i)g(=)g(a.first\(\))240 2123
y Fi(Set)g(i)g(to)g(index)g(the)g(\014rst)g(elemen)o(t)f(of)h(a)g(or)f(0)h
(if)g(a)g(is)g(empt)o(y)l(.)0 2201 y Fj(a.next\(i\))240 2264
y Fi(adv)m(ance)h(i)f(to)f(the)i(next)f(elemen)o(t)f(of)h(a)f(or)h(0)g(if)g
(there)g(is)g(no)g(next)g(elemen)o(t;)0 2342 y Fj(Base)g(x)g(=)g(a\(i\);)f
(a\(i\))h(=)g(x;)240 2405 y Fi(a\(i\))f(returns)h(a)g(reference)h(to)e(the)i
(elemen)o(t)d(indexed)j(b)o(y)g(i.)0 2483 y Fj(int)f(present)f(=)h
(a.owns\(i\))240 2545 y Fi(returns)g(true)h(if)f(Pix)g(i)g(is)g(a)g(v)m(alid)
h(Pix)f(in)g(a.)21 b(This)15 b(is)g(often)g(a)g(relativ)o(ely)f(slo)o(w)g(op)
q(eration,)h(since)240 2608 y(the)i(collection)f(m)o(ust)g(usually)g(tra)o(v)
o(erse)g(through)h(elemen)o(ts)f(to)h(see)g(if)g(an)o(y)g(corresp)q(ond)g(to)
g(the)240 2670 y(Pix.)p eop
%%Page: 30 32
bop 0 -58 a Fi(30)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)62 183 y(Some)g(con)o(tainer)h(classes)g(also)f
(supp)q(ort)h(bac)o(kw)o(ards)f(tra)o(v)o(ersal)f(via)0 320
y Fj(Pix)i(i)g(=)g(a.last\(\))240 382 y Fi(Set)g(i)g(to)g(the)g(last)f
(elemen)o(t)g(of)h(a)g(or)f(0)h(if)g(a)g(is)f(empt)o(y)l(.)0
457 y Fj(a.prev\(i\))240 519 y Fi(sets)h(i)g(to)f(the)i(previous)e(elemen)o
(t)g(in)h(a,)g(or)g(0)f(if)h(there)g(is)g(none.)62 656 y(Collections)f(supp)q
(orting)h(elemen)o(ts)f(with)g(an)h(equalit)o(y)f(op)q(eration)h(p)q(ossess)0
793 y Fj(Pix)g(j)g(=)g(a.seek\(x\))240 856 y Fi(sets)g(j)g(to)f(the)i(index)f
(of)g(the)g(\014rst)g(o)q(ccurrence)h(of)f(x,)g(or)g(0)f(if)h(x)g(is)g(not)g
(con)o(tained)g(in)g(a.)62 993 y(Bag)g(classes)g(p)q(ossess)0
1130 y Fj(Pix)g(j)g(=)g(a.seek\(x,)f(Pix)g(from)h(=)g(0\))240
1192 y Fi(sets)g(j)h(to)f(the)h(index)g(of)f(the)h(next)f(o)q(ccurrence)i(of)
e(x)h(follo)o(wing)d(i,)i(or)g(0)h(if)f(x)g(is)h(not)f(con)o(tained)g(in)240
1254 y(a.)20 b(If)15 b(i)g(==)h(0,)e(the)h(\014rst)g(o)q(ccurrence)i(is)d
(returned.)62 1391 y(Set,)h(Bag,)g(and)g(PQ)g(classes)g(p)q(ossess)0
1528 y Fj(Pix)g(j)g(=)g(a.add\(x\))f(\(or)h(a.enq\(x\))f(for)g(priority)g
(queues\))240 1590 y Fi(add)g(x)g(to)g(the)g(collection,)f(returning)h(its)f
(Pix.)19 b(The)c(Pix)e(of)h(an)g(item)f(can)h(c)o(hange)g(in)g(collections)
240 1653 y(where)k(further)g(additions)f(and)i(deletions)e(in)o(v)o(olv)o(e)g
(the)h(actual)f(mo)o(v)o(emen)o(t)e(of)j(elemen)o(ts)f(\(cur-)240
1715 y(ren)o(tly)h(in)h(O)o(XPSet,)g(O)o(XPBag,)g(XPPQ,)g(V)o(OHSet\),)h(but)
f(in)f(all)g(other)h(cases,)g(an)g(item's)d(Pix)240 1777 y(ma)o(y)d(b)q(e)j
(considered)g(a)f(p)q(ermanen)o(t)f(k)o(ey)h(to)g(its)f(lo)q(cation.)p
eop
%%Page: 31 33
bop 0 -58 a Fi(Chapter)15 b(10:)k(Header)d(\014les)f(and)g(supp)q(ort)g(for)g
(in)o(terfacing)f(C)p Fj(++)h Fi(to)f(C)668 b(31)0 183 y Ff(10)41
b(Header)27 b(\014les)e(and)i(supp)r(ort)g(for)g(in)n(terfacing)f(C)p
Fd(++)h Ff(to)g(C)62 370 y Fi(The)18 b(follo)o(wing)d(\014les)j(are)f(pro)o
(vided)g(so)h(that)e(C)p Fj(++)h Fi(programmers)e(ma)o(y)g(in)o(v)o(ok)o(e)i
(common)e(C)i(library)g(and)0 432 y(system)12 b(calls.)19 b(The)13
b(names)g(and)h(con)o(ten)o(ts)f(of)g(these)h(\014les)f(are)h(sub)s(ject)f
(to)g(c)o(hange)h(in)f(order)h(to)f(b)q(e)h(compatible)0 495
y(with)22 b(the)h(forthcoming)d(GNU)j(C)f(library)l(.)42 b(Other)23
b(\014les,)h(not)f(listed)f(here)h(are)f(simply)f(C)p Fj(++)p
Fi(-compatible)0 557 y(in)o(terfaces)14 b(to)h(corresp)q(onding)g(C)g
(library)f(\014les.)0 694 y(`)p Fj(values.h)p Fi(')240 756
y(A)j(collection)f(of)g(constan)o(ts)g(de\014ning)i(the)f(n)o(um)o(b)q(ers)f
(of)g(bits)h(in)g(builtin)f(t)o(yp)q(es,)h(minim)o(um)c(and)240
818 y(maxim)o(um)d(v)m(alues,)15 b(and)f(the)g(lik)o(e.)19
b(Most)13 b(names)h(are)g(the)g(same)f(as)h(those)g(found)h(in)f(`)p
Fj(values.h)p Fi(')240 881 y(found)i(on)f(Sun)h(systems.)0
955 y(`)p Fj(std.h)p Fi(')94 b(A)13 b(collection)f(of)h(common)e(system)g
(calls)i(and)g(`)p Fj(libc.a)p Fi(')f(functions.)19 b(Only)13
b(those)g(functions)g(that)240 1018 y(can)h(b)q(e)h(declared)f(without)g(in)o
(tro)q(ducing)f(new)h(t)o(yp)q(e)h(de\014nitions)f(\(so)q(c)o(k)o(et)f
(structures,)h(for)f(exam-)240 1080 y(ple\))h(are)f(pro)o(vided.)19
b(Common)11 b Fj(char*)i Fi(functions)h(\(lik)o(e)f Fj(strcmp)p
Fi(\))f(are)i(among)e(the)i(declarations.)240 1142 y(All)i(functions)h(are)f
(declared)h(along)f(with)g(their)g(library)g(names,)g(so)g(that)g(they)h(ma)o
(y)e(b)q(e)j(safely)240 1204 y(o)o(v)o(erloaded.)0 1279 y(`)p
Fj(string.h)p Fi(')240 1341 y(This)11 b(\014le)h(merely)e(includes)i(`)p
Fj(<std.h>)p Fi(',)e(where)i(string)f(function)g(protot)o(yp)q(es)g(are)g
(declared.)19 b(This)240 1404 y(is)c(a)h(w)o(ork)m(around)f(for)h(the)f(fact)
h(that)f(system)f(`)p Fj(string.h)p Fi(')g(and)i(`)p Fj(strings.h)p
Fi(')e(\014les)i(often)g(di\013er)240 1466 y(in)f(con)o(ten)o(ts.)0
1541 y(`)p Fj(osfcn.h)p Fi(')46 b(This)15 b(\014le)g(merely)f(includes)h(`)p
Fj(<std.h>)p Fi(',)e(where)j(system)e(function)h(protot)o(yp)q(es)f(are)h
(declared.)0 1615 y(`)p Fj(libc.h)p Fi(')70 b(This)15 b(\014le)g(merely)f
(includes)h(`)p Fj(<std.h>)p Fi(',)e(where)j(C)f(library)f(function)h(protot)
o(yp)q(es)f(are)h(declared.)0 1690 y(`)p Fj(math.h)p Fi(')70
b(A)17 b(collection)f(of)h(protot)o(yp)q(es)g(for)f(functions)h(usually)g
(found)g(in)g(libm.a,)f(plus)h(some)f Fj(#define)p Fi(d)240
1752 y(constan)o(ts)e(that)g(app)q(ear)h(to)f(b)q(e)h(consisten)o(t)f(with)g
(those)g(pro)o(vided)h(in)f(the)h(A)l(T&T)g(v)o(ersion.)k(The)240
1815 y(v)m(alue)d(of)f Fj(HUGE)g Fi(should)h(b)q(e)g(c)o(hec)o(k)o(ed)g(b)q
(efore)g(using.)21 b(Declarations)14 b(of)h(all)g(common)e(math)h(func-)240
1877 y(tions)g(are)h(preceded)i(with)d Fj(overload)g Fi(declarations,)g
(since)h(these)h(are)f(commonly)d(o)o(v)o(erloaded.)0 1952
y(`)p Fj(stdio.h)p Fi(')46 b(Declaration)17 b(of)i Fj(FILE)g
Fi(\()p Fj(_iobuf)p Fi(\),)f(common)e(macros)i(\(lik)o(e)g
Fj(getc)p Fi(\),)h(and)g(function)g(protot)o(yp)q(es)240 2014
y(for)14 b(`)p Fj(libc.a)p Fi(')g(functions)h(that)f(op)q(erate)h(on)g
Fj(FILE*)p Fi('s.)j(The)e(v)m(alue)f Fj(BUFSIZ)f Fi(and)h(the)g(declaration)
240 2076 y(of)g Fj(_iobuf)f Fi(should)h(b)q(e)h(c)o(hec)o(k)o(ed)g(b)q(efore)
f(using.)0 2151 y(`)p Fj(assert.h)p Fi(')240 2213 y(C)p Fj(++)g
Fi(v)o(ersions)f(of)h(assert)f(macros.)0 2288 y(`)p Fj(generic.h)p
Fi(')240 2350 y(String)20 b(concatenation)g(macros)f(useful)i(in)g(creating)f
(generic)h(classes.)36 b(They)22 b(are)e(similar)e(in)240 2412
y(function)d(to)g(the)g(A)l(T&T)g(CC)g(v)o(ersions.)0 2487
y(`)p Fj(new.h)p Fi(')94 b(Declarations)14 b(of)h(the)h(default)g(global)e
(op)q(erator)h(new,)h(the)g(t)o(w)o(o-argumen)o(t)d(placemen)o(t)h(v)o
(ersion,)240 2549 y(and)h(asso)q(ciated)g(error)f(handlers.)p
eop
%%Page: 32 34
bop 0 -58 a Fi(32)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 33 35
bop 0 -58 a Fi(Chapter)15 b(11:)k(Utilit)o(y)13 b(functions)i(op)q(erating)g
(on)g(built)f(in)h(t)o(yp)q(es.)763 b(33)0 183 y Ff(11)41 b(Utilit)n(y)25
b(functions)h(op)r(erating)i(on)f(built)e(in)i(t)n(yp)r(es.)62
357 y Fi(Files)11 b(`)p Fj(builtin.h)p Fi(')f(and)i(corresp)q(onding)g(`)p
Fj(.cc)p Fi(')f(implemen)o(tat)o(ion)e(\014les)j(con)o(tain)f(v)m(arious)g
(con)o(v)o(enien)o(t)g(inline)0 420 y(and)k(non-inline)g(utilit)o(y)e
(functions.)19 b(These)c(include)g(useful)g(en)o(umeration)e(t)o(yp)q(es,)i
(suc)o(h)g(as)f Fj(TRUE)p Fi(,)g Fj(FALSE)g Fi(,the)0 482 y(t)o(yp)q(e)h
(de\014nition)g(for)g(p)q(oin)o(ters)f(to)h(libg)p Fj(++)f
Fi(error)h(handling)g(functions,)f(and)h(the)h(follo)o(wing)d(functions.)0
619 y Fj(long)i(abs\(long)f(x\);)g(double)h(abs\(double)f(x\);)240
681 y Fi(inline)21 b(v)o(ersions)g(of)h(abs.)39 b(Note)21 b(that)g(the)h
(standard)f(lib)q(c.a)h(v)o(ersion,)g Fj(int)14 b(abs\(int\))21
b Fi(is)g Fc(not)240 743 y Fi(declared)15 b(as)g(inline.)0
815 y Fj(void)g(clearbit\(long&)e(x,)i(long)f(b\);)240 877
y Fi(clears)h(the)g(b'th)g(bit)g(of)f(x)i(\(inline\).)0 949
y Fj(void)f(setbit\(long&)e(x,)i(long)g(b\);)240 1011 y Fi(sets)g(the)g(b'th)
g(bit)g(of)g(x)g(\(inline\))0 1083 y Fj(int)g(testbit\(long)e(x,)i(long)g
(b\);)240 1145 y Fi(returns)g(the)g(b'th)g(bit)g(of)g(x)g(\(inline\).)0
1216 y Fj(int)g(even\(long)f(y\);)240 1279 y Fi(returns)h(true)g(if)g(x)g(is)
g(ev)o(en)g(\(inline\).)0 1350 y Fj(int)g(odd\(long)f(y\);)240
1413 y Fi(returns)h(true)g(is)g(x)g(is)g(o)q(dd)g(\(inline\).)0
1484 y Fj(int)g(sign\(long)f(x\);)g(int)h(sign\(double)f(x\);)240
1546 y Fi(returns)19 b(-1,)h(0,)g(or)f(1,)g(indicating)g(whether)g(x)g(is)g
(less)g(than,)h(equal)f(to,)h(or)e(greater)h(than)g(zero)240
1609 y(\(inline\).)0 1680 y Fj(long)c(gcd\(long)f(x,)h(long)f(y\);)240
1743 y Fi(returns)h(the)g(greatest)f(common)f(divisor)h(of)h(x)g(and)h(y)l(.)
0 1814 y Fj(long)f(lcm\(long)f(x,)h(long)f(y\);)240 1876 y
Fi(returns)h(the)g(least)g(common)d(m)o(ultiple)i(of)g(x)h(and)h(y)l(.)0
1948 y Fj(long)f(lg\(long)f(x\);)240 2010 y Fi(returns)h(the)g(\015o)q(or)g
(of)g(the)g(base)h(2)e(log)h(of)f(x.)0 2082 y Fj(long)h(pow\(long)f(x,)h
(long)f(y\);)h(double)f(pow\(double)g(x,)h(long)f(y\);)240
2144 y Fi(returns)19 b(x)g(to)g(the)g(in)o(teger)f(p)q(o)o(w)o(er)h(y)g
(using)g(via)g(the)g(iterativ)o(e)e(O\(log)i(y\))f(\\Russian)i(p)q(easan)o
(t")240 2206 y(metho)q(d.)0 2278 y Fj(long)15 b(sqr\(long)f(x\);)g(double)h
(sqr\(double)f(x\);)240 2340 y Fi(returns)h(x)g(squared)h(\(inline\).)0
2412 y Fj(long)f(sqrt\(long)f(y\);)240 2474 y Fi(returns)h(the)g(\015o)q(or)g
(of)g(the)g(square)g(ro)q(ot)g(of)g(x.)0 2545 y Fj(unsigned)f(int)h
(hashpjw\(const)e(char*)i(s\);)240 2608 y Fi(a)h(hash)h(function)f(for)g(n)o
(ull-terminated)e(c)o(har*)i(strings)f(using)h(the)h(metho)q(d)f(describ)q
(ed)h(in)f(Aho,)240 2670 y(Sethi,)f(&)g(Ullman,)e(p)j(436.)p
eop
%%Page: 34 36
bop 0 -58 a Fi(34)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(unsigned)g(int)h
(multiplicativehash\(int)d(x\);)240 246 y Fi(a)j(hash)h(function)f(for)g(in)o
(tegers)g(that)g(returns)g(the)h(lo)o(w)o(er)e(bits)h(of)g(m)o(ultiplying)e
(x)i(b)o(y)h(the)f(golden)240 308 y(ratio)f(times)f(p)q(o)o(w\(2,)h(32\).)19
b(See)d(Kn)o(uth,)f(V)l(ol)g(3,)g(p)g(508.)0 382 y Fj(unsigned)f(int)h
(foldhash\(double)e(x\);)240 445 y Fi(a)e(hash)h(function)g(for)f(doubles)h
(that)f(exclusiv)o(e-or's)g(the)h(\014rst)f(and)h(second)g(w)o(ords)f(of)g
(x,)h(returning)240 507 y(the)j(result)g(as)g(an)g(in)o(teger.)0
582 y Fj(double)f(start_timer\(\))240 644 y Fi(Starts)g(a)h(pro)q(cess)h
(timer.)0 719 y Fj(double)e(return_elapsed_time\(double)e(last_time\))240
781 y Fi(Returns)k(the)f(pro)q(cess)h(time)e(since)i(last)p
941 781 14 2 v 15 w(time.)j(If)c(last)p 1195 781 V 16 w(time)f(==)i(0)f
(returns)g(the)h(time)d(since)j(the)240 843 y(last)e(start)p
424 843 V 15 w(timer.)k(Returns)e(-1)f(if)g(start)p 941 843
V 15 w(timer)e(w)o(as)i(not)f(\014rst)h(called.)62 980 y(The)j(follo)o(wing)d
(con)o(v)o(ersion)h(functions)h(are)g(also)f(pro)o(vided.)26
b(F)l(unctions)17 b(that)f(con)o(v)o(ert)g(ob)s(jects)h(to)g(c)o(har*)0
1043 y(strings)g(return)i(p)q(oin)o(ters)f(to)f(a)i(space)f(that)g(is)g
(reused)h(up)q(on)g(eac)o(h)g(call.)28 b(Th)o(us)19 b(the)f(results)g(are)g
(v)m(alid)g(only)0 1105 y(un)o(til)c(the)i(next)f(call)f(to)h(a)g(con)o(v)o
(ersion)f(function.)0 1242 y Fj(char*)g(itoa\(long)g(x,)h(int)g(base)g(=)g
(10,)f(int)h(width)g(=)g(0\);)240 1304 y Fi(returns)i(a)f(c)o(har*)g(string)g
(con)o(taining)g(the)h(ASCI)q(I)h(represen)o(tation)e(of)g(x)h(in)f(the)h(sp)
q(eci\014ed)h(base.)240 1366 y(If)d(the)h(represen)o(tation)e(\014ts)h(in)g
(space)g(less)g(than)g(width,)g(blanks)g(are)g(prep)q(ended.)0
1441 y Fj(char*)f(dtoa\(double)g(x,)h(char)g(cvt='g',)f(int)g(width=0,)g(int)
h(prec=6\))240 1503 y Fi(returns)h(a)g(c)o(har*)f(string)g(con)o(taining)g
(the)h(ASCI)q(I)h(represen)o(tation)f(of)f(x)h(con)o(v)o(erted)g(in)g(a)g
(prin)o(tf-)240 1566 y(lik)o(e)i(manner,)h(where)g(the)g(optional)f(argumen)o
(ts)f(corresp)q(ond)i(to)f(those)h(in)g(prin)o(tf)f(g,)h(f,)h(and)f(e)240
1628 y(formats.)e(F)l(or)e(example,)f(the)h(analog)f(of)h Fj
(printf\("\045f10.2",)e(x\))i Fi(is)f Fj(dtoa\(x,)g('f',)h(10,)g(2\))p
Fi(.)0 1703 y Fj(char*)f(hex\(long)h(x,)f(int)h(width)g(=)g(0\);)240
1765 y Fi(returns)g(itoa)f(using)h(base)g(16.)0 1840 y Fj(char*)f(oct\(long)h
(x,)f(int)h(width)g(=)g(0\);)240 1902 y Fi(returns)g(itoa)f(using)h(base)g
(8.)0 1977 y Fj(char*)f(dec\(long)h(x,)f(int)h(width)g(=)g(0\);)240
2039 y Fi(returns)g(itoa)f(using)h(base)g(10.)0 2114 y Fj(char*)f
(form\(const)g(char*)h(fmt)f(...\);)240 2176 y Fi(calls)g Fj(sprintf)g
Fi(with)h(the)g(giv)o(en)g(format)e(and)i(argumen)o(ts.)0 2250
y Fj(char*)f(chr\(char)h(ch\);)240 2313 y Fi(returns)g(c)o(h)g(as)g(a)g
(one-elemen)o(t)f(string.)62 2450 y(File)h(`)p Fj(Maxima.h)p
Fi(')e(includes)i(v)o(ersions)g(of)f Fj(MAX,)h(MIN)g Fi(for)f(builtin)h(t)o
(yp)q(es.)62 2587 y(File)f(`)p Fj(compare.h)p Fi(')f(includes)i(v)o(ersions)f
(of)h Fj(compare\(x,)f(y\))g Fi(for)g(buitlin)h(t)o(yp)q(es.)k(These)d
(return)e(negativ)o(e)g(if)0 2649 y(the)h(\014rst)g(argumen)o(t)f(is)g(less)h
(than)g(the)g(second,)h(zero)f(for)f(equal,)h(and)g(p)q(ositiv)o(e)g(for)f
(greater.)p eop
%%Page: 35 37
bop 0 -58 a Fi(Chapter)15 b(12:)k(Library)c(dynamic)f(allo)q(cation)f
(primitiv)o(es)895 b(35)0 183 y Ff(12)41 b(Library)26 b(dynamic)g(allo)r
(cation)h(primitiv)n(es)62 370 y Fi(Libg)p Fj(++)13 b Fi(con)o(tains)f(v)o
(ersions)g(of)g Fj(malloc,)i(free,)h(realloc)d Fi(that)g(w)o(ere)h(designed)g
(to)f(b)q(e)i(w)o(ell-tuned)e(to)g(C)p Fj(++)0 432 y Fi(applications.)27
b(The)19 b(source)f(\014le)g(`)p Fj(malloc.c)p Fi(')e(con)o(tains)h(some)g
(design)h(and)h(implemen)o(tat)o(ion)c(details.)28 b(Here)0
495 y(are)15 b(the)g(ma)s(jor)e(user-visible)i(di\013erences)g(from)e(most)h
(system)g(mallo)q(c)f(routines:)25 632 y(1.)29 b(These)14 b(routines)g
Fc(o)o(v)o(erwrite)h Fi(storage)d(of)i(freed)g(space.)20 b(This)14
b(means)f(that)g(it)g(is)h(nev)o(er)g(p)q(ermissible)e(to)i(use)90
694 y(a)k Fj(delete)p Fi('d)e(ob)s(ject)i(in)f(an)o(y)h(w)o(a)o(y)l(.)27
b(Doing)17 b(so)g(will)g(either)g(result)h(in)f(trapp)q(ed)i(fatal)d(errors)h
(or)g(random)90 756 y(ab)q(orts)e(within)f(mallo)q(c,)f(free,)i(or)f(reallo)q
(c.)25 831 y(2.)29 b(The)12 b(routines)f(tend)i(to)e(p)q(erform)g(w)o(ell)g
(when)h(a)g(large)e(n)o(um)o(b)q(er)i(of)f(ob)s(jects)g(of)h(the)g(same)f
(size)g(are)h(allo)q(cated)90 893 y(and)k(freed.)22 b(Y)l(ou)16
b(ma)o(y)e(\014nd)i(that)f(it)g(is)g(not)h(w)o(orth)e(it)h(to)g(create)h(y)o
(our)f(o)o(wn)g(sp)q(ecial)h(allo)q(cation)e(sc)o(hemes)90
955 y(in)h(suc)o(h)h(cases.)25 1030 y(3.)29 b(The)15 b(library)f(sets)g
(top-lev)o(el)h Fj(operator)f(new\(\))g Fi(to)g(call)g(mallo)q(c)f(and)i
Fj(operator)f(delete\(\))g Fi(to)g(call)g(free.)90 1092 y(Of)g(course,)g(y)o
(ou)f(ma)o(y)f(o)o(v)o(erride)h(these)g(de\014nitions)h(in)f(C)p
Fj(++)h Fi(programs)d(b)o(y)j(creating)f(y)o(our)g(o)o(wn)g(op)q(erators)90
1155 y(that)k(will)g(tak)o(e)g(precedence)i(o)o(v)o(er)e(the)h(library)f(v)o
(ersions.)27 b(Ho)o(w)o(ev)o(er,)17 b(if)g(y)o(ou)h(do)f(so,)h(b)q(e)h(sure)f
(to)f(de\014ne)90 1217 y Fc(b)q(oth)e Fj(operator)f(new\(\))h
Fi(and)g Fj(operator)f(delete\(\))p Fi(.)25 1292 y(4.)29 b(These)20
b(routines)e(do)h Fc(not)h Fi(supp)q(ort)f(the)h(o)q(dd)f(con)o(v)o(en)o
(tion,)g(main)o(tained)e(b)o(y)i(some)f(v)o(ersions)h(of)f(mallo)q(c,)90
1354 y(that)c(y)o(ou)h(ma)o(y)f(call)g Fj(realloc)g Fi(with)h(a)g(p)q(oin)o
(ter)f(that)h(has)g(b)q(een)h Fj(free)p Fi('d.)25 1429 y(5.)29
b(The)13 b(routines)f(automatically)d(p)q(erform)j(simple)f(c)o(hec)o(ks)i
(on)g Fj(free)p Fi('d)f(p)q(oin)o(ters)g(that)g(can)h(often)g(determine)90
1491 y(whether)h(users)g(ha)o(v)o(e)g(acciden)o(tally)f(written)g(b)q(ey)o
(ond)h(the)g(b)q(oundaries)g(of)g(allo)q(cated)f(space,)h(resulting)f(in)90
1553 y(a)i(fatal)f(error.)25 1628 y(6.)29 b(The)17 b(function)g
Fj(malloc_usable_size\(void*)12 b(p\))k Fi(returns)h(the)g(n)o(um)o(b)q(er)f
(of)h(b)o(ytes)f(actually)g(allo)q(cated)90 1690 y(for)f Fj(p)p
Fi(.)22 b(F)l(or)15 b(a)g(v)m(alid)h(p)q(oin)o(ter)f(\(i.e.,)f(one)i(that)f
(has)h(b)q(een)h Fj(malloc)p Fi('d)d(or)i Fj(realloc)p Fi('d)e(but)i(not)g(y)
o(et)f Fj(free)p Fi('d\))90 1752 y(this)k(will)g(return)h(a)g(n)o(um)o(b)q
(er)f(greater)g(than)h(or)f(equal)h(to)f(the)h(requested)h(size,)g(else)e(it)
h(will)e(normally)90 1815 y(return)d(0.)20 b(Unfortunately)l(,)14
b(a)h(non-zero)h(return)f(can)h(not)e(b)q(e)i(an)g(absolutely)e(p)q(erfect)i
(indication)e(of)h(lac)o(k)90 1877 y(of)h(error.)23 b(If)16
b(a)g(c)o(h)o(unk)h(has)f(b)q(een)i Fj(free)p Fi('d)e(but)g(then)h(re-allo)q
(cated)e(for)h(a)g(di\013eren)o(t)g(purp)q(ose)h(somewhere)90
1939 y(elsewhere,)g(then)g Fj(malloc_usable_size)d Fi(will)h(return)h
(non-zero.)25 b(Despite)16 b(this,)g(the)g(function)h(can)f(b)q(e)90
2001 y(v)o(ery)f(v)m(aluable)g(for)f(p)q(erforming)g(run-time)g(consistency)h
(c)o(hec)o(ks.)25 2076 y(7.)29 b Fj(malloc)13 b Fi(requires)g(8)h(b)o(ytes)f
(of)g(o)o(v)o(erhead)g(p)q(er)i(allo)q(cated)d(c)o(h)o(unk,)i(plus)g(a)f
(mmaxim)n(um)d(alignmen)o(t)h(adjust-)90 2138 y(men)o(t)j(of)h(8)h(b)o(ytes.)
k(The)c(n)o(um)o(b)q(er)f(of)g(b)o(ytes)g(of)h(usable)f(space)h(is)f(exactly)
g(as)g(requested,)h(rounded)g(to)f(the)90 2201 y(nearest)g(8)g(b)o(yte)g(b)q
(oundary)l(.)25 2275 y(8.)29 b(The)16 b(routines)f(do)h Fc(not)g
Fi(con)o(tain)f(an)o(y)g(sync)o(hronization)g(supp)q(ort)h(for)f(m)o(ultipro)
q(cessing.)k(If)d(y)o(ou)f(p)q(erform)90 2338 y(global)f(allo)q(cation)f(on)i
(a)g(shared)g(memory)e(m)o(ultipro)q(cessor,)f(y)o(ou)j(should)g(disable)g
(compilation)d(and)k(use)90 2400 y(of)f(libg)p Fj(++)f Fi(mallo)q(c)f(in)i
(the)g(distribution)f(`)p Fj(Makefile)p Fi(')g(and)h(use)g(y)o(our)g(system)f
(v)o(ersion)g(of)h(mallo)q(c.)p eop
%%Page: 36 38
bop 0 -58 a Fi(36)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 37 39
bop 0 -58 a Fi(Chapter)15 b(13:)k(File-based)c(classes)1303
b(37)0 183 y Ff(13)41 b(File-based)25 b(classes)62 374 y Fi(The)13
b Fj(File)e Fi(class)h(supp)q(orts)g(basic)g(IO)h(on)f(Unix)g(\014les.)19
b(Op)q(erations)12 b(are)g(based)g(on)g(common)e(C)i(stdio)f(library)0
437 y(functions.)62 575 y Fj(File)16 b Fi(serv)o(es)g(as)g(the)g(base)h
(class)e(for)h(istreams,)e(ostreams,)g(and)i(other)g(deriv)o(ed)h(classes.)22
b(It)16 b(con)o(tains)g(the)0 637 y(in)o(terface)i(b)q(et)o(w)o(een)g(the)g
(Unix)h(stdio)e(\014le)h(library)f(and)i(these)f(more)f(structured)h
(classes.)29 b(Most)17 b(op)q(erations)0 699 y(are)e(implemen)o(ted)e(as)i
(simple)e(calls)h(to)h(stdio)f(functions.)20 b Fj(File)14 b
Fi(class)h(op)q(erations)f(are)h(also)f(fully)h(compatible)0
761 y(with)k(ra)o(w)g(system)f(\014le)i(reads)f(and)h(writes)f(\(lik)o(e)f
(the)i(system)e Fj(read)h Fi(and)h Fj(lseek)f Fi(calls\))f(when)i
(bu\013ering)f(is)0 824 y(disabled)g(\(see)f(b)q(elo)o(w\).)30
b(The)19 b Fj(FILE*)f Fi(stdio)g(\014le)h(p)q(oin)o(ter)f(is,)h(ho)o(w)o(ev)o
(er)f(main)o(tained)f(as)h(protected.)31 b(Classes)0 886 y(deriv)o(ed)14
b(from)d(File)i(ma)o(y)f(only)h(use)h(the)g(IO)g(op)q(erations)f(pro)o(vided)
g(b)o(y)g(File,)g(whic)o(h)g(encompass)g(essen)o(tially)f(all)0
948 y(stdio)i(capabilities.)62 1086 y(The)i(class)e(con)o(tains)h(four)g
(general)f(kinds)i(of)e(functions:)20 b(metho)q(ds)14 b(for)h(binding)g
Fj(File)p Fi(s)g(to)f(ph)o(ysical)h(Unix)0 1148 y(\014les,)i(basic)f(IO)h
(metho)q(ds,)f(\014le)h(and)g(bu\013er)f(con)o(trol)g(metho)q(ds,)f(and)i
(metho)q(ds)f(for)g(main)o(taining)e(logical)h(and)0 1211 y(ph)o(ysical)f
(\014le)i(status.)0 1443 y Fe(13.1)32 b(Binding)62 1580 y Fi(Binding)14
b(and)f(related)g(tasks)g(are)g(accomplished)f(via)h Fj(File)g
Fi(constructors)g(and)g(destructors,)g(and)h(mem)o(b)q(er)0
1643 y(functions)h Fj(open,)f(close,)h(remove,)f(filedesc,)g(name,)g(setname)
p Fi(.)62 1781 y Fj(Files)k Fi(ma)o(y)e(b)q(e)j(constructed)g(in)f(an)o(y)g
(of)f(the)i(w)o(a)o(ys)e(supp)q(orted)i(b)o(y)f(a)g(v)o(ersion)f(of)h
Fj(open)p Fi(,)g(plus)g(a)g(default)0 1843 y(constructor.)h(They)d(di\013er)e
(in)h(sp)q(ecifying)g(if)39 1981 y Fh(\017)30 b Fi(a)17 b(\014le)h(with)f(a)g
(giv)o(en)g(\014lename)g(should)h(b)q(e)g(op)q(ened.)28 b(The)18
b(second)g(argumen)o(t)e(refers)h(to)g(the)h(IO)g(mo)q(de,)90
2043 y(whic)o(h)d(ma)o(y)f(b)q(e)h(an)o(y)g(of)90 2119 y Fj(io_readonly)330
2181 y Fi(op)q(en)h(the)f(\014le)g(for)g(reading)g(only)l(.)k(A)o(ttempted)14
b(writes)g(cause)i Fj(_fail)e Fi(status.)90 2256 y Fj(io_writeonly)330
2319 y Fi(op)q(en)i(the)f(\014le)g(for)g(writing)f(only)l(.)19
b(A)o(ttempted)14 b(reads)h(cause)h Fj(_fail)e Fi(status.)90
2394 y Fj(io_readwrite)330 2457 y Fi(op)q(en)i(the)f(\014le)g(for)g(reading)g
(and/or)f(writing.)90 2532 y Fj(io_appendonly)330 2594 y Fi(op)q(en)i(the)f
(\014le)g(for)g(app)q(ending)h(\(writing)d(at)i(end\))g(only)l(.)90
2670 y(The)g(third)g(represen)o(ts)g(the)h(access)f(mo)q(de:)p
eop
%%Page: 38 40
bop 0 -58 a Fi(38)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)90 183 y Fj(a_createonly)330 246
y Fi(create)h(the)g(\014le,)g(fail)f(if)h(it)f(already)h(exists.)90
324 y Fj(a_create)48 b Fi(create)15 b(the)g(\014le,)g(re-create)g
(\(truncate\))g(if)f(it)h(already)f(exists.)90 402 y Fj(a_useonly)330
464 y Fi(op)q(en)i(an)f(existing)f(\014le,)h(fail)f(if)h(it)f(do)q(es)i(not)e
(exist.)90 543 y Fj(a_use)120 b Fi(op)q(en)16 b(an)f(existing)f(\014le,)h
(create)g(if)g(it)f(do)q(es)i(not)e(exist.)39 621 y Fh(\017)30
b Fi(same)16 b(as)h(ab)q(o)o(v)o(e,)g(except)h(the)f(mo)q(de)g(is)g(giv)o(en)
g(using)g(the)g Fj(fopen)g Fi(c)o(har*)f(string)h(argumen)o(t)e(\()p
Fj("r",)g("w",)90 683 y("a",)g("r+",)f("w+",)h("a+")p Fi(\).)39
761 y Fh(\017)30 b Fi(the)21 b Fj(File)g Fi(should)g(b)q(e)h(b)q(ound)h(to)d
(a)h(\014le)h(asso)q(ciated)e(with)h(the)g(giv)o(en)g(\(op)q(en\))g(\014le)h
(descriptor.)37 b(This)90 824 y(metho)q(d)12 b(should)h(b)q(e)h(used)f(only)g
(if)f(a)h(\014le)g(p)q(oin)o(ter)f(asso)q(ciated)g(with)h(the)g(\014le)g
(descriptor)f(has)h(not)f(y)o(et)h(b)q(een)90 886 y(obtained.)22
b(The)16 b(second)h(argumen)o(t)d(sp)q(eci\014es)j(the)f(io)p
1038 886 14 2 v 16 w(mo)q(de,)f(as)h(ab)q(o)o(v)o(e.)22 b(This)16
b(m)o(ust)e(matc)o(h)h(the)h(actual)90 948 y(IO)g(mo)q(de)e(of)h(the)g
(\014le.)39 1026 y Fh(\017)30 b Fi(the)16 b Fj(File)g Fi(should)g(b)q(e)h(b)q
(ound)g(to)e(a)h(FILE*)g(\014le)g(p)q(oin)o(ter)g(already)f(someho)o(w)f
(obtained.)23 b(This)15 b(is)h(mainly)90 1089 y(used)g(to)e(bind)i
Fj(Files)e Fi(to)h(the)g(default)g(stdin,)f(stdout,)h(and)g(stderr)g
(\014les.)39 1167 y Fh(\017)30 b Fi(the)18 b Fj(File)g Fi(should)g(not)g(y)o
(et)g(b)q(e)h(b)q(ound)g(to)f(an)o(ything.)28 b(Files)17 b(ma)o(y)g(b)q(e)i
(declared)f(via)g(this)g(default,)g(and)90 1229 y(then)e(later)e(op)q(ened)i
(via)f Fj(open)p Fi(.)39 1307 y Fh(\017)30 b Fi(the)16 b Fj(File)g
Fi(should)g(p)q(erform)f(IO)i(in)o(to)e(or)h(out)g(of)g(a)g(user)g(supplied)h
(c)o(haracter)e(bu\013er)h(with)g(an)g(indicated)90 1370 y(size,)f(instead)g
(of)f(to)h(an)g(actual)f(\014le.)62 1510 y(After)j(a)g(successful)g(op)q(en,)
h(the)f(corresp)q(onding)g(\014le)g(descriptor)g(is)f(accessible)h(\(for)f
(use)i(in)f(system)e(calls,)0 1573 y(etc.\))k(via)14 b Fj(filedesc\(\))p
Fi(.)k(A)d Fj(File)f Fi(ma)o(y)f(b)q(e)i(b)q(ound)g(to)f(di\013eren)o(t)g(ph)
o(ysical)f(\014les)i(at)f(di\013eren)o(t)f(times:)18 b(eac)o(h)d(call)0
1635 y(to)g Fj(open)p Fi(,)f(closes)h(the)g(old)g(ph)o(ysical)f(\014le)h(and)
h(rebinds)f(the)g Fj(File)g Fi(to)g(a)f(new)i(ph)o(ysical)e(\014le.)62
1775 y(If)20 b(a)e(\014le)i(name)e(is)g(pro)o(vided)h(in)g(a)g(constructor)f
(or)h(op)q(en,)h(it)f(is)f(main)o(tained)f(as)i(class)f(v)m(ariable)h
Fj(nm)g Fi(and)0 1838 y(is)d(accessible)h(via)e Fj(name)p Fi(.)24
b(If)17 b(no)f(name)g(is)g(pro)o(vided,)g(then)h Fj(nm)f Fi(remains)f(n)o
(ull,)h(except)h(that)f Fj(Files)g Fi(b)q(ound)i(to)0 1900
y(the)e(default)f(\014les)h(stdin,)f(stdout,)g(and)h(stderr)g(are)f
(automatically)d(giv)o(en)k(the)f(names)g Fj(\(stdin\),)f(\(stdout\),)0
1962 y(\(stderr\))19 b Fi(resp)q(ectiv)o(ely)l(.)34 b(The)20
b(function)g Fj(setname)f Fi(ma)o(y)f(b)q(e)j(used)f(to)g(c)o(hange)g(the)g
(in)o(ternal)e(name)h(of)h(the)0 2024 y Fj(File)p Fi(.)f(This)c(do)q(es)h
(not)e(c)o(hange)i(the)f(name)f(of)h(the)g(ph)o(ysical)g(\014le)g(b)q(ound)h
(to)f(the)g(File.)62 2165 y(The)g(mem)o(b)q(er)d(function)i
Fj(close)g Fi(closes)g(a)g(\014le.)19 b(The)c Fj(~File)f Fi(destructor)f
(closes)h(a)g(\014le)h(if)e(it)h(is)g(op)q(en,)g(except)0 2227
y(that)k(stdin,)h(stdout,)g(and)g(stderr)g(are)f(\015ushed)i(but)g(left)e(op)
q(en)h(for)g(the)g(system)e(to)h(close)h(on)g(program)e(exit)0
2289 y(since)e(some)f(systems)f(ma)o(y)h(require)h(this,)f(and)h(on)g(others)
f(it)h(do)q(es)g(not)g(matter.)i Fj(remove)d Fi(closes)h(the)g(\014le,)g(and)
0 2352 y(then)h(deletes)g(it)f(if)h(p)q(ossible)f(b)o(y)h(calling)f(the)h
(system)e(function)i(to)f(delete)h(the)g(\014le)g(with)f(the)h(name)f(pro)o
(vided)0 2414 y(in)g(the)g Fj(nm)g Fi(\014eld.)0 2670 y Fe(13.2)32
b(Basic)24 b(IO)p eop
%%Page: 39 41
bop 0 -58 a Fi(Chapter)15 b(13:)k(File-based)c(classes)1303
b(39)39 183 y Fh(\017)30 b Fj(read)15 b Fi(and)g Fj(write)f
Fi(p)q(erform)g(binary)h(IO)h(via)f(stdio)f Fj(fread)g Fi(and)i
Fj(fwrite)p Fi(.)39 262 y Fh(\017)30 b Fj(get)15 b Fi(and)g
Fj(put)g Fi(for)f(c)o(hars)h(in)o(v)o(ok)o(e)f(stdio)h Fj(getc)f
Fi(and)i Fj(putc)e Fi(macros.)39 340 y Fh(\017)30 b Fj(get\(char*)14
b(s,)h(int)g(maxlength,)e(char)i(terminator='\\n'\))f Fi(b)q(eha)o(v)o(es)i
(as)g(describ)q(ed)h(b)o(y)f(Stroustrup.)90 403 y(It)22 b(reads)h(at)f(most)e
(maxlength)h(c)o(haracters)h(in)o(to)f(s,)j(stopping)e(when)h(the)f
(terminator)e(is)i(read,)i(and)90 465 y(pushing)c(the)f(terminator)e(bac)o(k)
j(in)o(to)e(the)i(input)g(stream.)31 b(T)l(o)19 b(accommo)q(date)e
(di\013eren)o(t)i(con)o(v)o(en)o(tions)90 527 y(ab)q(out)11
b(what)h(to)f(do)g(ab)q(out)h(the)f(terminator,)f(the)h(function)h
Fj(getline\(char*)h(s,)i(int)g(maxlength,)f(char)90 589 y(terminator='\\n'\))
i Fi(b)q(eha)o(v)o(es)j(lik)o(e)e(get,)i(except)f(that)g(the)h(terminator)c
(b)q(ecomes)j(part)g(of)g(the)g(string,)90 652 y(and)d(is)g(not)g(pushed)h
(bac)o(k.)39 730 y Fh(\017)30 b Fj(gets\(char)14 b(**sp,)g(char)h(terminator)
f(=)h('\\n'\);)i Fi(lik)o(e)g(get,)h(except)g(sp)g(is)g(attac)o(hed)f(to)g(a)
h(c)o(har*)f(allo-)90 793 y(cated)e(from)f(the)h(freestore,)f(and)i(con)o
(taining)e(the)h(line)g(read)g(in.)39 871 y Fh(\017)30 b Fj(put\(const)14
b(char*)g(s\))h Fi(outputs)g(a)g(n)o(ull-terminated)e(string)h(via)h(stdio)f
Fj(fputs)p Fi(.)39 950 y Fh(\017)30 b Fj(unget)14 b Fi(and)i
Fj(putback)e Fi(are)h(synon)o(yms.)j(Both)d(call)g(stdio)f
Fj(ungetc)p Fi(.)0 1209 y Fe(13.3)32 b(File)24 b(Con)n(trol)62
1350 y Fj(flush)p Fi(,)14 b Fj(seek)p Fi(,)h Fj(tell)p Fi(,)f(and)h
Fj(tell)g Fi(call)f(the)h(corresp)q(onding)h(stdio)e(functions.)62
1490 y Fj(flush\(char\))g Fi(and)h Fj(fill\(\))g Fi(call)f(stdio)g
Fj(_flsbuf)h Fi(and)g Fj(_filbuf)f Fi(resp)q(ectiv)o(ely)l(.)62
1631 y Fj(setbuf)d Fi(is)h(mainly)e(useful)i(to)g(turn)g(o\013)f(bu\013ering)
g(in)h(cases)g(where)h(nonsequen)o(tial)e(binary)h(IO)g(is)g(b)q(eing)g(p)q
(er-)0 1694 y(formed.)18 b Fj(raw)c Fi(is)f(a)h(synon)o(ym)e(for)i
Fj(setbuf\(_IONBF\))p Fi(.)j(After)d(a)f Fj(f.raw\(\))p Fi(,)g(using)h(the)g
(stdio)f(functions)g(instead)0 1756 y(of)18 b(the)g(system)f
Fj(read,)d(write)p Fi(,)k(etc.,)h(calls)e(en)o(tails)g(v)o(ery)h(little)e(o)o
(v)o(erhead.)29 b(Moreo)o(v)o(er,)17 b(these)i(b)q(ecome)f(fully)0
1818 y(compatible)e(with)i(in)o(termixed)e(system)h(calls)h(\(e.g.,)f
Fj(lseek\(f.filedesc\(\),)c(0,)i(0\))p Fi(\).)28 b(While)18
b(in)o(termixing)0 1880 y Fj(File)13 b Fi(and)h(system)f(IO)h(calls)f(is)g
(not)h(at)f(all)g(recommended,)f(this)h(tec)o(hnique)i(do)q(es)f(allo)o(w)e
(the)i Fj(File)f Fi(class)g(to)g(b)q(e)0 1943 y(used)i(in)f(conjunction)g
(with)g(other)g(functions)g(and)g(libraries)f(already)g(set)h(up)h(to)f(op)q
(erate)g(on)g(\014le)g(descriptors.)0 2005 y Fj(setbuf)g Fi(should)i(b)q(e)f
(called)g(at)g(most)e(once)j(after)e(a)h(constructor)f(or)h(op)q(en,)h(but)f
(b)q(efore)g(an)o(y)g(IO.)0 2264 y Fe(13.4)32 b(File)24 b(Status)62
2405 y Fi(File)15 b(status)f(is)h(main)o(tained)e(in)i(sev)o(eral)f(w)o(a)o
(ys.)62 2545 y(A)h Fj(File)g Fi(ma)o(y)f(b)q(e)h(c)o(hec)o(k)o(ed)h(for)f
(accessibilit)o(y)e(via)i Fj(is_open\(\))p Fi(,)e(whic)o(h)i(returns)g(true)g
(if)g(the)g(File)f(is)h(b)q(ound)0 2608 y(to)g(a)h(usable)g(ph)o(ysical)g
(\014le,)g Fj(readable\(\))p Fi(,)e(whic)o(h)i(returns)g(true)g(if)g(the)g
(File)f(can)h(b)q(e)h(read)f(from)f(\(op)q(ened)i(for)0 2670
y(reading,)d(and)i(not)f(in)g(a)p 437 2670 14 2 v 31 w(fail)f(state\),)g(or)g
Fj(writable\(\))p Fi(,)g(whic)o(h)h(returns)g(true)g(if)f(the)i(File)e(can)h
(b)q(e)h(written)e(to.)p eop
%%Page: 40 42
bop 0 -58 a Fi(40)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)62 183 y Fj(File)i Fi(op)q(erations)g(return)g
(their)g(status)f(via)h(t)o(w)o(o)f(means:)21 b(failure)16
b(and)g(success)h(are)f(represen)o(ted)h(via)f(the)0 246 y(logical)j(state.)
37 b(Also,)21 b(the)h(return)f(v)m(alues)g(of)f(in)o(v)o(ok)o(ed)h(stdio)f
(and)h(system)f(functions)h(that)f(return)h(useful)0 308 y(n)o(umeric)16
b(v)m(alues)h(\(not)g(just)g(failure/success)f(\015ags\))h(are)g(held)g(in)g
(a)g(class)f(v)m(ariable)h(accessible)g(via)f Fj(iocount)p
Fi(.)0 370 y(\(This)10 b(is)h(useful,)h(for)e(example,)h(in)g(determining)f
(the)h(n)o(um)o(b)q(er)f(of)h(items)f(actually)g(read)h(b)o(y)g(the)g
Fj(read)g Fi(function.\))62 519 y(Lik)o(e)20 b(the)g(A)l(T&T)h(i/o-stream)c
(classes,)k(but)f(unlik)o(e)f(the)i(description)e(in)h(the)g(Stroustrup)g(b)q
(o)q(ok,)h(p238,)0 581 y Fj(rdstate\(\))15 b Fi(returns)i(the)g(bit)o(wise)e
(OR)i(of)g Fj(_eof)p Fi(,)f Fj(_fail)f Fi(and)i Fj(_bad)p Fi(,)f(not)h
(necessarily)f(distinct)f(v)m(alues.)25 b(The)0 643 y(functions)d
Fj(eof\(\))p Fi(,)g Fj(fail\(\))p Fi(,)h Fj(bad\(\))p Fi(,)f(and)g
Fj(good\(\))g Fi(can)g(b)q(e)g(used)h(to)e(test)h(for)f(eac)o(h)h(of)g(these)
g(conditions)0 706 y(indep)q(enden)o(tly)l(.)62 854 y Fj(_fail)d
Fi(b)q(ecomes)h(set)f(for)h(an)o(y)f(input)h(op)q(eration)f(that)g(could)h
(not)f(read)h(in)g(the)g(desired)g(data,)g(and)g(for)0 916
y(other)e(failed)f(op)q(erations.)28 b(As)18 b(with)f(all)g(Unix)h(IO,)g
Fj(_eof)g Fi(b)q(ecomes)g(true)g(only)f(when)i(an)f(input)g(op)q(erations)0
979 y(fails)g(b)q(ecause)i(of)e(an)h(end)h(of)e(\014le.)32
b(Therefore,)19 b Fj(_eof)g Fi(is)f(not)h(immediatel)o(y)d(true)j(after)g
(the)g(last)f(successful)0 1041 y(read)f(of)f(a)h(\014le,)g(but)g(only)g
(after)f(one)h(\014nal)g(read)g(attempt.)23 b(Th)o(us,)17 b(for)f(input)h(op)
q(erations,)f Fj(_fail)g Fi(and)i Fj(_eof)0 1103 y Fi(almost)13
b(alw)o(a)o(ys)h(b)q(ecome)h(true)g(at)g(the)g(same)f(time.)19
b Fj(bad)c Fi(is)g(set)g(for)g(un)o(b)q(ound)i(\014les,)e(and)h(ma)o(y)d
(also)i(b)q(e)h(set)f(b)o(y)0 1165 y(applications)h(in)i(order)g(to)f(comm)o
(unicate)e(input)j(corruption.)27 b(Con)o(v)o(ersely)l(,)18
b Fj(_good)f Fi(is)g(de\014ned)i(as)f(0)f(and)h(is)0 1228 y(returned)e(b)o(y)
f Fj(rdstate\(\))f Fi(if)g(all)g(is)h(w)o(ell.)62 1376 y(The)j(state)f(ma)o
(y)f(b)q(e)i(mo)q(di\014ed)f(via)g Fj(clear\(flag\))p Fi(,)g(whic)o(h,)g
(despite)h(its)f(name,)g(sets)g(the)h(corresp)q(onding)0 1439
y(state)p 100 1439 14 2 v 16 w(v)m(alue)13 b(\015ag.)19 b Fj(clear\(\))13
b Fi(with)g(no)h(argumen)o(ts)d(resets)j(the)f(state)g(to)g
Fj(_good)p Fi(.)19 b Fj(failif\(int)14 b(cond\))f Fi(sets)g(the)0
1501 y(state)h(to)h Fj(_fail)f Fi(only)h(if)g Fj(cond)f Fi(is)h(true.)62
1650 y(Errors)23 b(o)q(ccuring)g(during)g(constructors)f(and)i(\014le)f(op)q
(ens)h(also)e(in)o(v)o(ok)o(e)h(the)g(function)g Fj(error)p
Fi(.)44 b Fj(error)0 1712 y Fi(in)21 b(turn)f(calls)g(a)g(resetable)h(error)f
(handling)g(function)h(p)q(oin)o(ted)f(to)g(b)o(y)h(the)g(non-mem)o(b)q(er)e
(global)h(v)m(ariable)0 1774 y Fj(File_error_handler)i Fi(only)j(if)f(a)g
(system)g(error)g(has)g(b)q(een)i(generated.)49 b(Since)25
b Fj(error)f Fi(cannot)h(tell)e(if)0 1836 y(the)f(curren)o(t)g(system)e
(error)i(is)f(actually)g(resp)q(onsible)h(for)f(a)h(failure,)g(it)f(ma)o(y)g
(at)g(times)f(prin)o(t)h(out)h(spuri-)0 1899 y(ous)f(messages.)35
b(Three)21 b(error)f(handlers)g(are)h(pro)o(vided.)36 b(The)21
b(default,)h Fj(verbose_File_error_hand)o(ler)0 1961 y Fi(calls)k(the)h
(system)f(function)g Fj(perror)g Fi(to)h(prin)o(t)f(the)h(corresp)q(onding)g
(error)f(message)f(on)i(standard)g(er-)0 2023 y(ror,)h(and)f(then)g(returns)f
(to)g(the)h(caller.)53 b Fj(quiet_File_error_handler)24 b Fi(do)q(es)i
(nothing,)j(and)e(simply)0 2085 y(returns.)37 b Fj(fatal_File_error_handler)
18 b Fi(prin)o(ts)i(the)h(error)f(and)i(then)f(ab)q(orts)f(execution.)38
b(These)21 b(three)0 2148 y(handlers,)f(or)f(an)o(y)g(other)g(user-de\014ned)
i(error)e(handlers)g(can)g(b)q(e)h(selected)g(via)f(the)g(non-mem)o(b)q(er)f
(function)0 2210 y Fj(set_File_error_handler)p Fi(.)62 2359
y(All)12 b(read)g(and)g(write)g(op)q(erations)f(comm)o(unicate)f(either)i
(logical)e(or)i(ph)o(ysical)g(failure)f(b)o(y)h(setting)f(the)i
Fj(_fail)0 2421 y Fi(\015ag.)23 b(All)15 b(further)h(op)q(erations)g(are)g
(blo)q(c)o(k)o(ed)g(if)g(the)g(state)g(is)f(in)h(a)g Fj(_fail)g
Fi(or)p Fj(_bad)f Fi(condition.)23 b(Programm)o(ers)0 2483
y(m)o(ust)18 b(explicitly)g(use)i Fj(clear\(\))f Fi(to)g(reset)h(the)f(state)
g(in)h(order)f(to)g(con)o(tin)o(ue)g(IO)i(pro)q(cessing)e(after)g(either)g(a)
0 2545 y(logical)14 b(or)i(ph)o(ysical)f(failure.)21 b(C)16
b(programm)o(ers)d(who)j(are)g(unfamiliar)d(with)i(these)h(con)o(v)o(en)o
(tions)f(should)h(note)0 2608 y(that,)g(unlik)o(e)g(the)h(stdio)f(library)l
(,)f Fj(File)h Fi(functions)h(indicate)f(IO)h(success,)g(status,)f(or)g
(failure)g(solely)f(through)0 2670 y(the)f(state,)e(not)h(via)g(return)h(v)m
(alues)f(of)g(the)h(functions.)19 b(The)14 b Fj(void*)f Fi(op)q(erator)f(or)h
Fj(rdstate\(\))g Fi(ma)o(y)e(b)q(e)j(used)h(to)p eop
%%Page: 41 43
bop 0 -58 a Fi(Chapter)15 b(13:)k(File-based)c(classes)1303
b(41)0 183 y(test)16 b(success.)23 b(In)17 b(particular,)e(according)g(to)h
(c)p Fj(++)g Fi(con)o(v)o(ersion)f(rules,)h(the)g Fj(void*)g
Fi(co)q(ercion)g(is)g(automatical)o(ly)0 246 y(applied)g(whenev)o(er)g(the)h
Fj(File&)e Fi(return)h(v)m(alue)g(of)g(an)o(y)g Fj(File)f Fi(function)h(is)g
(tested)f(in)h(an)g Fj(if)g Fi(or)g Fj(while)p Fi(.)21 b(Th)o(us,)0
308 y(for)14 b(example,)f(an)i(easy)g(w)o(a)o(y)f(to)g(cop)o(y)g(all)g(of)g
(stdin)h(to)f(stdout)g(un)o(til)g(eof)h(\(at)f(whic)o(h)g(p)q(oin)o(t)g
Fj(get)h Fi(fails\))e(or)h(some)0 370 y(error)g(is)h Fj(char)g(c;)g
(while\(cin.get\(c\))e(&&)i(cout.put\(c\)\);)p Fi(.)0 594 y
Fe(13.5)32 b(The)22 b(SFile)i(class)62 731 y Fj(SFile)19 b
Fi(\(short)g(for)g(structure)g(\014le\))h(is)f(pro)o(vided)g(b)q(oth)h(as)f
(a)h(demonstration)d(of)i(ho)o(w)g(to)g(build)h(deriv)o(ed)0
793 y(classes)e(from)e Fj(File)p Fi(,)i(and)g(as)g(a)g(useful)g(class)g(for)f
(pro)q(cessing)h(\014les)h(con)o(taining)d(\014xed-record-length)j(binary)0
856 y(data.)38 b(They)22 b(are)f(created)h(with)f(constructors)f(with)h(one)h
(additional)e(argumen)o(t)f(declaring)i(the)h(size)f(\(in)0
918 y(b)o(ytes,)16 b(i.e.,)g Fj(sizeof)f Fi(units\))h(of)g(the)h(records.)24
b Fj(get)p Fi(,)16 b(will)f(input)i(one)f(record,)h Fj(put)f
Fi(will)f(output)h(one,)h(and)g(the)0 980 y Fj([])d Fi(op)q(erator,)f(as)h
(in)h Fj(f[i])p Fi(,)e(will)g(p)q(osition)h(to)f(the)i(i'th)e(record.)20
b(If)15 b(the)f(\014le)h(is)e(b)q(eing)i(used)g(mainly)e(for)g(random)0
1043 y(access,)g(it)f(is)g(often)g(a)h(go)q(o)q(d)f(idea)g(to)g(eliminate)f
(in)o(ternal)g(bu\013ering)i(via)e Fj(setbuf)h Fi(or)g Fj(raw)p
Fi(.)19 b(Here)13 b(is)f(an)g(example:)120 1180 y Fj(class)23
b(record)120 1229 y({)168 1279 y(friend)g(class)g(SFile;)168
1329 y(char)g(c;)h(int)f(i;)h(double)f(d;)119 b(//)23 b(or)h(anything)f(at)g
(all)120 1379 y(};)120 1478 y(void)g(demo\(\))120 1528 y({)168
1578 y(record)g(r;)168 1628 y(SFile)g(recfile\("mydatafile",)e
(sizeof\(record\),)h(io_readwrite,)g(a_create\);)168 1678 y(recfile.raw\(\);)
168 1727 y(for)h(\(int)g(i)h(=)g(0;)g(i)f(<)h(10;)f(++i\))48
b(//)23 b(...)h(write)f(some)g(out)168 1777 y({)215 1827 y(r)h(=)g
(something\(\);)215 1877 y(recfile.put\(&r\);)285 b(//)23 b(must)h(use)f
('&r')g(for)h(proper)f(coercion)168 1927 y(})168 1977 y(for)g(\(i)h(=)f(9;)h
(i)g(>=)f(0;)h(--i\))143 b(//)23 b(now)h(use)f(them)g(in)h(reverse)f(order)
168 2026 y({)215 2076 y(recfile[i].get\(&r\);)215 2126 y
(do_something_with\(r\);)168 2176 y(})120 2226 y(})0 2450 y
Fe(13.6)32 b(The)22 b(PlotFile)j(Class)62 2587 y Fi(Class)14
b Fj(PlotFile)f Fi(is)h(a)g(simple)e(deriv)o(ed)j(class)e(of)h
Fj(File)g Fi(that)g(ma)o(y)e(b)q(e)j(used)g(to)f(pro)q(duce)h(\014les)f(in)g
(Unix)h(plot)0 2649 y(format.)j(Public)d(functions)g(ha)o(v)o(e)f(names)g
(corresp)q(onding)i(to)e(those)h(in)g(the)g Fj(plot\(5\))g
Fi(man)o(ual)e(en)o(try)l(.)p eop
%%Page: 42 44
bop 0 -58 a Fi(42)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 43 45
bop 0 -58 a Fi(Chapter)15 b(14:)k(The)d(istream)d(and)i(ostream)e(classes)
1004 b(43)0 183 y Ff(14)41 b(The)27 b(istream)g(and)f(ostream)i(classes)62
368 y Fi(The)14 b(stream)e(class)h(pro)o(vides)g(an)g(e\016cien)o(t,)h
(easy-to-use,)f(and)h(t)o(yp)q(e-secure)g(in)o(terface)f(b)q(et)o(w)o(een)h
(GNU)f(C)p Fj(++)0 431 y Fi(and)f(an)f(underlying)h(input/output)f(facilit)o
(y)l(,)f(suc)o(h)i(as)g(the)f(one)h(pro)o(vided)g(b)o(y)f(UNIX.)h(This)f
(section)h(do)q(cumen)o(ts)0 493 y(the)19 b(implemen)o(tati)o(on)d(highligh)o
(ts)i(of)g(the)i(GNU)e(C)p Fj(++)h Fi(stream)e(facilit)o(y)l(.)30
b(F)l(or)18 b(a)h(more)f(complete)f(discussion)0 555 y(ab)q(out)k(what)g
(streams)f(pro)o(vide)h(and)h(ho)o(w)f(they)h(are)f(used,)j(see)e
(Stroustrup's)e(\\The)i(C)p Fj(++)f Fi(Programm)o(ing)0 617
y(Language.")62 754 y(Classes)15 b Fj(istream)f Fi(and)i Fj(ostream)e
Fi(are)h(implemen)o(ted)f(similarl)o(y)f(to)i(those)g(describ)q(ed)h(b)o(y)g
(Stroustrup.)k(All)0 817 y(programs)15 b(using)i(the)h(A)l(T&T)g(stream)d
(classes)i(should)h(run)f(without)g(mo)q(di\014cation,)e(except)j(for)f(one)h
(minor)0 879 y(di\013erence:)62 1016 y Fj(f)d(<<)g(c)d Fi(b)q(eha)o(v)o(es)h
(lik)o(e)e Fj(f.put\(c\))p Fi(.)18 b(This)12 b(feature)g(\(whic)o(h)g(is)f
(also)h(presen)o(t)g(in)g(A)l(T&T)h(2.0\))e(ma)o(y)f(b)q(e)j(disabled)0
1078 y(b)o(y)i(placing)g Fj(#define)f(NO_OUTPUT_CHAR)f Fi(b)q(efore)j
(including)f(`)p Fj(stream.h)p Fi('.)62 1215 y(The)21 b(stream)d(and)j
(stream)o(buf)d(classes)i(are)g(actually)f(sup)q(ersets)i(of)f(the)g(A)l(T&T)
h(v)o(ersions.)34 b(The)20 b(ma)s(jor)0 1277 y(addition)14
b(is)h(supp)q(ort)h(for)f(\014les)g(accessed)h(via)f(the)g(libg)p
Fj(++)f(File)h Fi(classes.)20 b(An)o(y)15 b(istream)f(or)g(ostream)g
(declared)0 1340 y(using)h(the)g(constructors)f(and/or)g(op)q(en)h(statemen)o
(ts)e(corresp)q(onding)i(to)f(those)h(a)o(v)m(ailable)e(for)h
Fj(File)h Fi(creates)f(a)0 1402 y Fj(Filebuf)i Fi(\(a)g(deriv)o(ed)h(class)f
(of)h Fj(streambuf)p Fi(\),)e(with)h(generally)g(more)g(p)q(o)o(w)o(erful)g
(capabilities)f(than)i(those)g(for)0 1464 y(A)l(T&T)e Fj(filebufs)g
Fi(\(whic)o(h)f(are)h(also)f(supp)q(orted\).)62 1601 y(Bey)o(ond)g(those)g
(con)o(tained)f(in)h(A)l(T&T)g(streams,)d(and)j(the)g(extra)f
Fj(Filebuf)g Fi(constructors)g(and)g(op)q(en)i(meth-)0 1663
y(o)q(ds,)g(the)g(follo)o(wing)e(capabilities)h(are)h(supp)q(orted:)0
1800 y Fj(istream::is_open\(\);)e(ostream::is_open\(\))240
1863 y Fi(returns)i(true)g(if)g(the)g(underlying)g(stream)o(buf)f(is)g(attac)
o(hed)h(to)g(a)f(usable)i(\014le)f(and/or)g(bu\013er.)0 1937
y Fj(istream::close\(\);)e(ostream::close\(\))240 1999 y Fi(closes)i(an)o(y)g
(\014le)g(and/or)g(bu\013er)g(asso)q(ciated)f(with)h(the)g(stream.)0
2074 y Fj(istream::readable\(\);)d(ostream::writable\(\))240
2136 y Fi(returns)j(true)g(if)g(the)g(stream)e(is)i(op)q(en)h(and)f(in)g(a)g
(\\go)q(o)q(d")g(state.)0 2210 y Fj(istream::getline\(char*)d(s,)j(int)g(n,)g
(char)f(terminator)g(=)h('\\n'\);)240 2272 y Fi(As)g(in)g(File::getline\(\))0
2347 y Fj(istream::gets\(char**)d(ss,)j(char)g(terminator)f(=)h('\\n'\))240
2409 y Fi(reads)e(in)f(a)h(line)g(\(as)f(in)g(get\))g(of)h(unkno)o(wn)g
(length,)g(and)g(places)g(it)f(in)g(a)h(free-store)f(allo)q(cated)g(sp)q(ot)
240 2471 y(and)i(attac)o(hes)g(it)f(to)h Fj(ss)p Fi(.)19 b(The)14
b(programmer)d(m)o(ust)i(tak)o(e)h(resp)q(onsibilit)o(y)e(for)i(deleting)g
Fj(*ss)f Fi(when)240 2533 y(it)h(is)h(no)g(longer)g(needed.)0
2608 y Fj(istream::name\(\);)e(ostream::name\(\))240 2670 y
Fi(returns)18 b(a)g(name)f(asso)q(ciated)h(with)f(the)i(stream)o(buf,)d(if)i
(one)g(exists.)29 b(Curren)o(tly)17 b(only)h(streams)p eop
%%Page: 44 46
bop 0 -58 a Fi(44)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)240 183 y(based)i(on)f Fj(File/Filebuf)e
Fi(p)q(ossess)i(names.)0 258 y Fj(istream::error\(\);)e(ostream::error\(\))
240 320 y Fi(calls)j(the)h(stream)o(buf)t('s)e(error)h(handler.)26
b(Error)16 b(handlers)h(for)g Fj(File)g Fi(based)g(streams)e(are)i(reset-)240
382 y(table.)i(The)d(default)f(stream)o(buf)e(error)i(handler)g(just)g(calls)
f Fj(abort\(\))p Fi(.)0 457 y Fj(ostream::put\(const)f(char*)h(s,)h(int)g
(len\))240 519 y Fi(outputs)g(the)g(\014rst)g(len)g(c)o(haracters)g(of)f(s.)0
594 y Fj(ostream::form\(const)f(char*)h(format...\))240 656
y Fi(outputs)h Fj(printf)p Fi(-formated)e(data.)62 793 y(Some)g(of)h(these)h
(are)e(supp)q(orted)i(b)o(y)f(incorp)q(orating)f(additional,)g(mainly)f
(virtual,)h(functions)g(in)o(to)h(stream-)0 856 y(bufs:)0 993
y Fj(streambuf::open\([various)e(args]\))240 1055 y Fi(attac)o(hes)i(the)i
(stream)o(buf)d(to)i(a)g(\014le,)f(if)h(applicable)0 1130 y
Fj(streambuf::close\(\))240 1192 y Fi(detac)o(hes)g(the)h(stream)o(buf)d
(from)h(a)g(\014le,)h(if)g(applicable.)0 1267 y Fj(streambuf::sputs\(const)d
(char*)j(s\))240 1329 y Fi(outputs)g(n)o(ull-terminated)e(string)h(s)h(in)g
(a)g(generally)f(faster)h(w)o(a)o(y)f(than)h(rep)q(eated)h
Fj(sputcs)p Fi(.)0 1404 y Fj(streambuf::sputsn\(const)c(char*)i(s,)h(int)g
(n\))240 1466 y Fi(outputs)g(the)g(\014rst)g(n)g(c)o(haracters)g(of)g(s)g(in)
g(a)g(generally)f(faster)g(w)o(a)o(y)g(than)i(rep)q(eated)f
Fj(sputcs)p Fi(.)0 1541 y Fj(streambuf::error\(\))240 1603
y Fi(By)g(default,)g(calls)f Fj(abort)p Fi(.)62 1740 y(The)23
b(curren)o(t)f(v)o(ersion)f(of)h(istreams)e(and)j(ostreams)d(di\013ers)h
(signi\014can)o(tly)g(from)g(previous)h(v)o(ersions)f(in)0
1802 y(order)c(to)f(obtain)g(compatibilit)o(y)e(with)i(A)l(T&T)h(1.2)f
(streams.)24 b(Most)16 b(co)q(de)h(using)g(previous)g(v)o(ersions)f(should)0
1864 y(still)f(w)o(ork.)22 b(Ho)o(w)o(ev)o(er,)16 b(the)g(follo)o(wing)e
(features)i(of)g Fj(File)g Fi(are)g(not)g(incorp)q(orated)g(in)g(streams)e
(\(they)i(are)h(still)0 1927 y(presen)o(t)j(in)f Fj(File)p
Fi(\):)29 b Fj(scan\(const)13 b(char*)i(fmt...\),)f(remove\(\),)g(read\(\),)g
(write\(\),)g(setbuf\(\),)g(raw\(\))p Fi(.)0 1989 y(Additionally)l(,)20
b(the)h(feature)f(of)g(previous)h(streams)d(that)i(allo)o(w)o(ed)f(free)i(in)
o(termixing)d(of)i(stream)f(and)i(stdio)0 2051 y(input)15 b(and)h(output)f
(is)f(no)h(longer)g(guaran)o(teed)g(to)f(alw)o(a)o(ys)g(b)q(eha)o(v)o(e)h(as)
g(desired.)p eop
%%Page: 45 47
bop 0 -58 a Fi(Chapter)15 b(15:)k(The)d(Obstac)o(k)f(class)1287
b(45)0 183 y Ff(15)41 b(The)27 b(Obstac)n(k)f(class)62 369
y Fi(The)18 b Fj(Obstack)f Fi(class)g(is)h(a)f(simple)f(rewrite)h(of)h(the)f
(C)h(obstac)o(k)f(macros)f(and)i(functions)g(pro)o(vided)f(in)h(the)0
431 y(GNU)d(CC)g(compiler)e(source)j(distribution.)62 568 y(Obstac)o(ks)k
(pro)o(vide)f(a)h(simple)f(metho)q(d)g(of)g(creating)g(and)h(main)o(taining)d
(a)j(string)f(table,)h(optimized)f(for)0 630 y(the)i(v)o(ery)f(frequen)o(t)h
(task)f(of)g(building)g(strings)g(c)o(haracter-b)o(y-c)o(haracter,)g(and)h
(sometimes)d(k)o(eeping)i(them,)0 693 y(and)d(sometimes)e(not.)25
b(They)17 b(seem)g(esp)q(ecially)f(useful)i(in)f(an)o(y)g(parsing)f
(application.)24 b(One)18 b(of)f(the)g(test)g(\014les)0 755
y(demonstrates)c(usage.)62 892 y(A)j(brief)e(summary:)0 1029
y Fj(grow)144 b Fi(places)17 b(something)e(on)i(the)g(obstac)o(k)f(without)g
(committing)e(to)i(wrap)h(it)f(up)h(as)g(a)g(single)f(en)o(tit)o(y)240
1091 y(y)o(et.)0 1166 y Fj(finish)96 b Fi(wraps)17 b(up)i(a)e(constructed)h
(ob)s(ject)f(as)h(a)f(single)g(en)o(tit)o(y)l(,)g(and)h(returns)g(the)g(p)q
(oin)o(ter)f(to)g(its)g(start)240 1228 y(address.)0 1302 y
Fj(copy)144 b Fi(places)19 b(things)f(on)g(the)h(obstac)o(k,)f(and)h
Fc(do)q(es)i Fi(wrap)d(them)g(up.)31 b Fj(copy)18 b Fi(is)g(alw)o(a)o(ys)f
(equiv)m(alen)o(t)i(to)240 1365 y(\014rst)c(gro)o(w,)e(then)j(\014nish.)0
1439 y Fj(free)144 b Fi(deletes)15 b(something,)e(and)j(an)o(ything)e(else)h
(put)h(on)f(the)g(obstac)o(k)f(since)i(its)e(creation.)62 1576
y(The)i(other)f(functions)f(are)h(less)g(commonly)e(needed:)0
1713 y Fj(blank)120 b Fi(is)15 b(lik)o(e)f(gro)o(w,)f(except)j(it)e(just)h
(gro)o(ws)e(the)i(space)h(b)o(y)f(size)g(units)f(without)g(placing)h(an)o
(ything)f(in)o(to)240 1775 y(this)h(space)0 1850 y Fj(alloc)120
b Fi(is)15 b(lik)o(e)f Fj(blank)p Fi(,)g(but)h(it)g(wraps)g(up)g(the)h(ob)s
(ject)e(and)i(returns)f(its)f(starting)g(address.)0 1924 y
Fj(chunk_size,)g(base,)g(next_free,)g(alignment_mask,)f(size,)h(room)240
1986 y Fi(returns)h(the)g(appropriate)g(class)f(v)m(ariables.)0
2061 y Fj(grow_fast)240 2123 y Fi(places)h(a)g(c)o(haracter)f(on)i(the)f
(obstac)o(k)f(without)g(c)o(hec)o(king)i(if)e(there)h(is)g(enough)h(ro)q(om.)
0 2197 y Fj(blank_fast)240 2260 y Fi(lik)o(e)e Fj(blank)p Fi(,)g(but)i
(without)e(c)o(hec)o(king)h(if)g(there)g(is)g(enough)g(ro)q(om.)0
2334 y Fj(shrink\(int)f(n\))240 2396 y Fi(shrink)h(the)g(curren)o(t)g(c)o(h)o
(unk)h(b)o(y)f(n)g(b)o(ytes.)0 2471 y Fj(contains\(void*)e(addr\))240
2533 y Fi(returns)i(true)g(if)g(the)g(Obstac)o(k)g(holds)g(the)g(address)h
(addr.)62 2670 y(Here)g(is)e(a)h(ligh)o(tly)f(edited)h(v)o(ersion)f(of)h(the)
h(original)d(C)i(do)q(cumen)o(tation:)p eop
%%Page: 46 48
bop 0 -58 a Fi(46)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)62 183 y(These)21 b(functions)g(op)q(erate)g(a)f
(stac)o(k)g(of)h(ob)s(jects.)36 b(Eac)o(h)20 b(ob)s(ject)h(starts)e(life)h
(small,)g(and)h(ma)o(y)e(gro)o(w)h(to)0 246 y(maturit)o(y)l(.)d(\(Consider)e
(building)f(a)h(w)o(ord)f(syllable)g(b)o(y)h(syllable.\))j(An)d(ob)s(ject)g
(can)g(mo)o(v)o(e)e(while)h(it)g(is)h(gro)o(wing.)0 308 y(Once)i(it)f(has)g
(b)q(een)h(\\\014nished")g(it)f(nev)o(er)g(c)o(hanges)g(address)h(again.)22
b(So)16 b(the)h(\\top)e(of)h(the)g(stac)o(k")g(is)g(t)o(ypically)0
370 y(an)g(immature)d(gro)o(wing)i(ob)s(ject,)h(while)f(the)i(rest)f(of)f
(the)i(stac)o(k)e(is)h(of)g(mature,)e(\014xed)j(size)g(and)f(\014xed)h
(address)0 432 y(ob)s(jects.)62 572 y(These)g(routines)g(grab)f(large)g(c)o
(h)o(unks)h(of)f(memory)l(,)f(using)h(the)h(GNU)g(C)p Fj(++)f(new)h
Fi(op)q(erator.)23 b(On)18 b(o)q(ccasion,)0 634 y(they)d(free)h(c)o(h)o
(unks,)f(via)f Fj(delete)p Fi(.)62 774 y(Eac)o(h)h(indep)q(enden)o(t)i(stac)o
(k)d(is)h(represen)o(ted)h(b)o(y)f(a)g(Obstac)o(k.)62 913 y(One)g(motiv)m
(ation)c(for)i(this)g(pac)o(k)m(age)h(is)f(the)h(problem)f(of)g(gro)o(wing)f
(c)o(har)i(strings)e(in)i(sym)o(b)q(ol)e(tables.)19 b(Unless)0
976 y(y)o(ou)14 b(are)g(a)g(\\fascist)f(pig)h(with)f(a)h(read-only)g(mind")f
([Gosp)q(er's)h(immort)o(al)d(quote)j(from)e(HAKMEM)j(item)d(154,)0
1038 y(out)j(of)f(con)o(text])g(y)o(ou)h(w)o(ould)f(not)h(lik)o(e)f(to)h(put)
g(an)o(y)f(arbitrary)g(upp)q(er)i(limit)c(on)j(the)g(length)g(of)g(y)o(our)f
(sym)o(b)q(ols.)62 1178 y(In)h(practice)f(this)g(often)h(means)e(y)o(ou)h
(will)f(build)i(man)o(y)e(short)g(sym)o(b)q(ols)g(and)i(a)f(few)g(long)g(sym)
o(b)q(ols.)k(A)o(t)c(the)0 1240 y(time)f(y)o(ou)i(are)f(reading)g(a)h(sym)o
(b)q(ol)e(y)o(ou)i(don't)f(kno)o(w)g(ho)o(w)h(long)f(it)g(is.)19
b(One)d(traditional)c(metho)q(d)i(is)g(to)h(read)f(a)0 1302
y(sym)o(b)q(ol)f(in)o(to)g(a)g(bu\013er,)h Fj(realloc\(\))p
Fi(ating)e(the)j(bu\013er)f(ev)o(ery)g(time)e(y)o(ou)i(try)g(to)f(read)h(a)g
(sym)o(b)q(ol)f(that)g(is)h(longer)0 1364 y(than)f(the)h(bu\013er.)20
b(This)13 b(is)g(b)q(eaut,)h(but)g(y)o(ou)f(still)f(will)g(w)o(an)o(t)h(to)g
(cop)o(y)g(the)h(sym)o(b)q(ol)e(from)g(the)h(bu\013er)h(to)f(a)g(more)0
1427 y(p)q(ermanen)o(t)h(sym)o(b)q(ol-table)g(en)o(try)g(sa)o(y)h(ab)q(out)g
(half)g(the)g(time.)62 1566 y(With)g(obstac)o(ks,)g(y)o(ou)g(can)g(w)o(ork)g
(di\013eren)o(tly)l(.)20 b(Use)c(one)g(obstac)o(k)f(for)f(all)h(sym)o(b)q(ol)
f(names.)20 b(As)15 b(y)o(ou)h(read)f(a)0 1628 y(sym)o(b)q(ol,)e(gro)o(w)i
(the)g(name)g(in)g(the)g(obstac)o(k)g(gradually)l(.)k(When)d(the)g(name)e(is)
h(complete,)f(\014nalize)h(it.)20 b(Then,)15 b(if)0 1691 y(the)g(sym)o(b)q
(ol)f(exists)g(already)l(,)h(free)g(the)g(newly)g(read)g(name.)62
1830 y(The)g(w)o(a)o(y)f(w)o(e)h(do)g(this)f(is)g(to)g(tak)o(e)h(a)f(large)g
(c)o(h)o(unk,)h(allo)q(cating)e(memory)f(from)h(lo)o(w)h(addresses.)20
b(When)15 b(y)o(ou)0 1893 y(w)o(an)o(t)h(to)h(build)g(a)g(sym)o(b)q(ol)e(in)i
(the)g(c)o(h)o(unk)h(y)o(ou)f(just)g(add)g(c)o(hars)g(ab)q(o)o(v)o(e)g(the)g
(curren)o(t)g(\\high)g(w)o(ater)f(mark")f(in)0 1955 y(the)i(c)o(h)o(unk.)25
b(When)17 b(y)o(ou)f(ha)o(v)o(e)h(\014nished)g(adding)g(c)o(hars,)f(b)q
(ecause)i(y)o(ou)f(got)e(to)i(the)f(end)i(of)e(the)h(sym)o(b)q(ol,)e(y)o(ou)0
2017 y(kno)o(w)i(ho)o(w)h(long)f(the)h(c)o(hars)g(are,)g(and)g(y)o(ou)g(can)g
(create)g(a)g(new)g(ob)s(ject.)28 b(Mostly)16 b(the)i(c)o(hars)g(will)e(not)i
(burst)0 2079 y(o)o(v)o(er)c(the)h(highest)f(address)h(of)g(the)g(c)o(h)o
(unk,)f(b)q(ecause)i(y)o(ou)f(w)o(ould)f(t)o(ypically)f(exp)q(ect)j(a)e(c)o
(h)o(unk)i(to)e(b)q(e)h(\(sa)o(y\))f(100)0 2142 y(times)f(as)i(long)g(as)g
(an)g(a)o(v)o(erage)f(ob)s(ject.)62 2281 y(In)19 b(case)g(that)f(isn't)f
(clear,)h(when)h(w)o(e)g(ha)o(v)o(e)f(enough)g(c)o(hars)g(to)g(mak)o(e)f(up)i
(the)g(ob)s(ject,)f Fc(they)h(are)f(already)0 2344 y(con)o(tiguous)f(in)g
(the)h(c)o(h)o(unk)j Fi(\(guaran)o(teed\))c(so)g(w)o(e)h(just)f(p)q(oin)o(t)g
(to)h(it)f(where)h(it)f(lies.)27 b(No)17 b(mo)o(ving)f(of)h(c)o(hars)g(is)0
2406 y(needed)g(and)e(this)g(is)g(the)g(second)h(win:)k(p)q(oten)o(tially)14
b(long)g(strings)g(need)j(nev)o(er)e(b)q(e)h(explicitly)e(sh)o(u\017ed.)21
b(Once)0 2468 y(an)15 b(ob)s(ject)g(is)f(formed,)g(it)g(do)q(es)i(not)f(c)o
(hange)g(its)f(address)i(during)f(its)f(lifetime.)62 2608 y(When)19
b(the)f(c)o(hars)g(burst)g(o)o(v)o(er)g(a)g(c)o(h)o(unk)g(b)q(oundary)l(,)i
(w)o(e)e(allo)q(cate)f(a)h(larger)f(c)o(h)o(unk,)i(and)f(then)h(cop)o(y)f
(the)0 2670 y(partly)d(formed)f(ob)s(ject)h(from)e(the)j(end)g(of)f(the)h
(old)f(c)o(h)o(unk)h(to)f(the)g(b)q(eginning)h(of)f(the)h(new)f(larger)g(c)o
(h)o(unk.)21 b(W)l(e)p eop
%%Page: 47 49
bop 0 -58 a Fi(Chapter)15 b(15:)k(The)d(Obstac)o(k)f(class)1287
b(47)0 183 y(then)16 b(carry)e(on)h(accreting)g(c)o(haracters)f(to)h(the)g
(end)h(of)f(the)g(ob)s(ject)g(as)g(w)o(e)f(normally)f(w)o(ould.)62
320 y(A)j(sp)q(ecial)e(v)o(ersion)h(of)g(gro)o(w)f(is)g(pro)o(vided)h(to)g
(add)g(a)g(single)g(c)o(har)g(at)f(a)h(time)f(to)g(a)h(gro)o(wing)f(ob)s
(ject.)62 457 y(Summary:)39 594 y Fh(\017)30 b Fi(W)l(e)15
b(allo)q(cate)f(large)g(c)o(h)o(unks.)39 669 y Fh(\017)30 b
Fi(W)l(e)15 b(carv)o(e)g(out)g(one)g(ob)s(ject)g(at)f(a)h(time)f(from)f(the)j
(curren)o(t)f(c)o(h)o(unk.)39 744 y Fh(\017)30 b Fi(Once)16
b(carv)o(ed,)f(an)g(ob)s(ject)g(nev)o(er)g(mo)o(v)o(es.)39
818 y Fh(\017)30 b Fi(W)l(e)15 b(are)g(free)g(to)g(app)q(end)h(data)f(of)g
(an)o(y)f(size)i(to)e(the)h(curren)o(tly)g(gro)o(wing)f(ob)s(ject.)39
893 y Fh(\017)30 b Fi(Exactly)14 b(one)i(ob)s(ject)e(is)h(gro)o(wing)f(in)h
(an)g(obstac)o(k)f(at)h(an)o(y)g(one)g(time.)39 968 y Fh(\017)30
b Fi(Y)l(ou)15 b(can)h(run)f(one)h(obstac)o(k)e(p)q(er)i(con)o(trol)e(blo)q
(c)o(k.)39 1043 y Fh(\017)30 b Fi(Y)l(ou)15 b(ma)o(y)f(ha)o(v)o(e)h(as)g(man)
o(y)e(con)o(trol)h(blo)q(c)o(ks)h(as)g(y)o(ou)g(dare.)39 1117
y Fh(\017)30 b Fi(Because)17 b(of)e(the)h(w)o(a)o(y)f(w)o(e)h(do)g(it,)f(y)o
(ou)g(can)h(`un)o(wind')g(a)f(obstac)o(k)g(bac)o(k)h(to)f(a)h(previous)g
(state.)21 b(\(Y)l(ou)16 b(ma)o(y)90 1180 y(remo)o(v)o(e)d(ob)s(jects)i(m)o
(uc)o(h)f(as)h(y)o(ou)g(w)o(ould)f(with)h(a)g(stac)o(k.\))62
1316 y(The)h(obstac)o(k)e(data)h(structure)g(is)f(used)i(in)f(man)o(y)f
(places)h(in)g(the)g(GNU)g(C)p Fj(++)g Fi(compiler.)62 1453
y(Di\013erences)g(from)f(the)h(the)g(GNU)g(C)g(v)o(ersion)25
1590 y(1.)29 b(The)13 b(ob)o(vious)e(di\013erences)i(stemming)d(from)g(the)j
(use)g(of)f(classes)g(and)g(inline)g(functions)g(instead)h(of)f(structs)90
1653 y(and)j(macros.)j(The)e(C)f Fj(init)g Fi(and)g Fj(begin)f
Fi(macros)g(are)h(replaced)g(b)o(y)g(constructors.)25 1727
y(2.)29 b(Ov)o(erloaded)18 b(function)g(names)g(are)g(used)h(for)f(gro)o(w)f
(\(and)h(others\),)g(rather)g(than)g(the)h(C)f Fj(grow)p Fi(,)g
Fj(grow0)p Fi(,)90 1790 y(etc.)25 1864 y(3.)29 b(All)15 b(dynamic)f(allo)q
(cation)g(uses)i(the)f(the)h(built-in)f Fj(new)g Fi(op)q(erator.)20
b(This)15 b(restricts)f(\015exibilit)o(y)g(b)o(y)i(a)f(little,)90
1927 y(but)g(main)o(tains)e(compatibilit)o(y)f(with)i(usual)h(C)p
Fj(++)g Fi(con)o(v)o(en)o(tions.)25 2001 y(4.)29 b(There)15
b(are)g(no)o(w)g(t)o(w)o(o)f(v)o(ersions)g(of)h(\014nish:)115
2076 y(1.)29 b(\014nish\(\))15 b(b)q(eha)o(v)o(es)g(lik)o(e)g(the)g(C)g(v)o
(ersion.)115 2151 y(2.)29 b(\014nish\(c)o(har)22 b(terminator\))d(adds)j
Fj(terminator)p Fi(,)g(and)h(then)f(calls)f Fj(finish\(\))p
Fi(.)40 b(This)22 b(enables)g(the)180 2213 y(normal)13 b(in)o(v)o(o)q(cation)
g(of)i Fj(finish\(0\))f Fi(to)g(wrap)g(up)i(a)e(string)g(b)q(eing)h(gro)o(wn)
f(c)o(haracter-b)o(y-c)o(haracter.)25 2288 y(5.)29 b(There)18
b(are)f(sp)q(ecial)g(v)o(ersions)f(of)h(gro)o(w\(const)f(c)o(har*)g(s\))h
(and)h(cop)o(y\(const)e(c)o(har*)h(s\))g(that)f(add)i(the)f(n)o(ull-)90
2350 y(terminated)c(string)i Fj(s)g Fi(after)f(computing)g(its)g(length.)25
2425 y(6.)29 b(The)15 b(shrink)g(and)h(con)o(tains)e(functions)h(are)g(pro)o
(vided.)p eop
%%Page: 48 50
bop 0 -58 a Fi(48)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 49 51
bop 0 -58 a Fi(Chapter)15 b(16:)k(The)d(Allo)q(cRing)e(class)1252
b(49)0 183 y Ff(16)41 b(The)27 b(Allo)r(cRing)f(class)62 370
y Fi(An)20 b(Allo)q(cRing)f(is)f(a)h(b)q(ounded)i(ring)e(\(circular)f
(list\),)g(eac)o(h)i(of)e(whose)i(elemen)o(ts)e(con)o(tains)g(a)h(p)q(oin)o
(ter)g(to)0 432 y(some)g(space)i(allo)q(cated)f(via)f Fj(new)c
(char[some_size])p Fi(.)34 b(The)21 b(en)o(tries)f(are)g(used)h(cyclicly)l(.)
35 b(The)21 b(size,)h(n,)f(of)0 495 y(the)e(ring)f(is)h(\014xed)g(at)f
(construction.)30 b(After)19 b(that,)g(ev)o(ery)f(n)o(th)h(use)g(of)g(the)g
(ring)f(will)f(reuse)j(\(or)e(reallo)q(cate\))0 557 y(the)j(same)f(space.)38
b(Allo)q(cRings)21 b(are)g(needed)h(in)f(order)g(to)g(temp)q(orarily)d(hold)j
(c)o(h)o(unks)h(of)e(space)i(that)e(are)0 619 y(needed)14 b(transien)o(tly)l
(,)e(but)h(across)f(constructor-destructor)g(scop)q(es.)19
b(They)13 b(mainly)e(useful)i(for)f(storing)g(strings)0 681
y(con)o(taining)h(formatted)f(c)o(haracters)h(to)h(prin)o(t)f(acrosss)g(v)m
(arious)h(functions)g(and)g(co)q(ercions.)20 b(These)14 b(strings)f(are)0
744 y(needed)i(across)e(routines,)g(so)h(ma)o(y)e(not)h(b)q(e)i(deleted)f(in)
g(an)o(y)f(one)h(of)g(them,)e(but)i(should)g(b)q(e)g(reco)o(v)o(ered)g(at)f
(some)0 806 y(p)q(oin)o(t.)19 b(In)d(other)e(w)o(ords,)g(an)g(Allo)q(cRing)h
(is)f(an)h(extremely)e(simple)g(minded)h(garbage)g(collection)g(mec)o
(hanism.)0 868 y(The)i(GNU)g(C)p Fj(++)g Fi(library)f(uses)h(one)h(Allo)q
(cRing)e(for)h(suc)o(h)g(formatting)e(purp)q(oses.)23 b(Allo)q(cRings)16
b(are)f(probably)0 930 y(not)g(v)o(ery)g(useful)g(otherwise.)62
1067 y(Supp)q(ort)h(includes:)0 1204 y Fj(AllocRing)e(a\(int)g(n\))240
1267 y Fi(constructs)h(an)g(Allo)q(c)g(ring)f(with)h(n)g(en)o(tries,)f(all)g
(n)o(ull.)0 1341 y Fj(void*)g(mem)h(=)g(a.alloc\(sz\))240 1404
y Fi(mo)o(v)o(es)f(the)j(ring)f(p)q(oin)o(ter)f(to)h(the)g(next)h(en)o(try)l
(,)f(and)g(reuses)h(the)f(space)h(if)f(their)g(is)f(enough,)i(also)240
1466 y(allo)q(cates)d(space)h(via)g(new)g(c)o(har[sz].)0 1541
y Fj(int)g(present)f(=)h(a.contains\(void*)e(ptr\))240 1603
y Fi(returns)i(true)g(if)g(ptr)g(is)f(held)i(in)f(one)g(of)g(the)g(ring)g(en)
o(tries.)0 1678 y Fj(a.clear\(\))240 1740 y Fi(deletes)e(all)e(space)j(p)q
(oin)o(ted)e(to)g(in)h(an)o(y)f(en)o(try)l(.)19 b(This)13 b(is)f(called)g
(automatically)d(up)q(on)14 b(destruction.)0 1815 y Fj(a.free\(void*)g(ptr\))
240 1877 y Fi(If)k(ptr)g(is)g(one)g(of)g(the)g(en)o(tries,)g(calls)g(delete)g
(of)g(the)g(p)q(oin)o(ter,)g(and)h(resets)f(to)f(en)o(try)h(p)q(oin)o(ter)g
(to)240 1939 y(n)o(ull.)p eop
%%Page: 50 52
bop 0 -58 a Fi(50)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 51 53
bop 0 -58 a Fi(Chapter)15 b(17:)k(The)d(String)e(class)1328
b(51)0 183 y Ff(17)41 b(The)27 b(String)f(class)62 377 y Fi(The)c
Fj(String)f Fi(class)h(is)f(designed)h(to)f(extend)i(GNU)e(C)p
Fj(++)h Fi(to)f(supp)q(ort)h(string)f(pro)q(cessing)h(capabilities)0
440 y(similar)15 b(to)j(those)f(in)h(languages)f(lik)o(e)g(Awk.)29
b(The)18 b(class)f(pro)o(vides)h(facilities)e(that)h(ough)o(t)g(to)h(b)q(e)g
(con)o(v)o(enien)o(t)0 502 y(and)e(e\016cien)o(t)f(enough)h(to)f(b)q(e)h
(useful)g(replacemen)o(ts)e(for)h Fj(char*)g Fi(based)g(pro)q(cessing)h(via)f
(the)g(C)h(string)e(library)0 564 y(\(i.e.,)h Fj(strcpy,)f(strcmp,)h
Fi(etc.\))22 b(in)16 b(man)o(y)e(applications.)21 b(Man)o(y)15
b(details)g(ab)q(out)h(String)f(represen)o(tations)g(are)0
626 y(describ)q(ed)h(in)f(the)g(Represen)o(tation)g(section.)62
765 y(A)g(separate)g Fj(SubString)f Fi(class)g(supp)q(orts)i(substring)e
(extraction)g(and)h(mo)q(di\014cation)f(op)q(erations.)19 b(This)14
b(is)0 827 y(implemen)o(ted)h(in)h(a)h(w)o(a)o(y)e(that)i(user)g(programs)d
(nev)o(er)j(directly)f(construct)h(or)f(represen)o(t)h(substrings,)f(whic)o
(h)0 889 y(are)f(only)g(used)g(indirectly)g(via)f(String)h(op)q(erations.)62
1028 y(Another)g(separate)e(class,)h Fj(Regex)f Fi(is)h(also)f(used)i
(indirectly)f(via)f(String)h(op)q(erations)f(in)i(supp)q(ort)f(of)g(regular)0
1090 y(expression)g(searc)o(hing,)g(matc)o(hing,)e(and)j(the)f(lik)o(e.)19
b(The)c(Regex)g(class)f(is)g(based)g(en)o(tirely)g(on)g(the)h(GNU)f(emacs)0
1152 y(regex)21 b(functions.)38 b(Refer)22 b(to)f(the)g(GNU)g(Emacs)f(do)q
(cumen)o(tation)g(for)g(details)h(ab)q(out)g(regular)f(expression)0
1215 y(syn)o(tax,)d(etc.)28 b(See)18 b(the)g(in)o(ternal)f(do)q(cumen)o
(tation)f(in)i(\014les)f(`)p Fj(regex.h)p Fi(')f(and)i(`)p
Fj(regex.c)p Fi(')e(for)i(implemen)o(tat)o(ion)0 1277 y(details.)0
1514 y Fe(17.1)32 b(Constructors)62 1653 y Fi(Strings)15 b(are)g(initialized)
e(and)j(assigned)e(as)h(in)g(the)g(follo)o(wing)e(examples:)0
1791 y Fj(String)h(x;)h(String)g(y)g(=)g(0;)f(String)h(z)g(=)g("";)240
1853 y Fi(Set)h(x,)f(y)l(,)h(and)g(z)g(to)f(the)h(nil)f(string.)21
b(Note)15 b(that)g(either)h(0)f(or)h Fj("")f Fi(ma)o(y)f(alw)o(a)o(ys)g(b)q
(e)j(used)f(to)f(refer)240 1916 y(to)g(the)g(nil)f(string.)0
1992 y Fj(String)g(x)h(=)g("Hello";)f(String)h(y\("Hello"\);)240
2054 y Fi(Set)g(x)g(and)h(y)f(to)g(a)f(cop)o(y)h(of)g(the)g(string)g
Fj(")p Fi(Hello)p Fj(")p Fi(.)0 2130 y Fj(String)f(x)h(=)g('A';)g(String)f
(y\('A'\);)240 2192 y Fi(Set)h(x)g(and)h(y)f(to)g(the)g(string)f(v)m(alue)h
Fj(")p Fi(A)p Fj(")0 2269 y(String)f(u)h(=)g(x;)g(String)g(v\(x\);)240
2331 y Fi(Set)g(u)h(and)f(v)g(to)g(the)g(same)f(string)g(as)h(String)f(x)0
2407 y Fj(String)g(u)h(=)g(x.at\(1,4\);)f(String)g(v\(x.at\(1,4\)\);)240
2469 y Fi(Set)g(u)f(and)h(v)g(to)f(the)g(length)h(4)f(substring)g(of)g(x)g
(starting)f(at)h(p)q(osition)g(1)g(\(coun)o(ting)g(indexes)h(from)240
2532 y(0\).)0 2608 y Fj(String)g(x\("abc",)g(2\);)240 2670
y Fi(Sets)h(x)g(to)g Fj(")p Fi(ab)p Fj(")p Fi(,)f(i.e.,)g(the)i(\014rst)e(2)h
(c)o(haracters)g(of)f Fj(")p Fi(ab)q(c)p Fj(")p Fi(.)p eop
%%Page: 52 54
bop 0 -58 a Fi(52)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(String)g(x)h(=)g(dec\(20\);)240
246 y Fi(Sets)f(x)f(to)g Fj(")p Fi(20)p Fj(")p Fi(.)18 b(As)c(here,)g
(Strings)f(ma)o(y)e(b)q(e)k(initialized)d(or)h(assigned)g(the)g(results)g(of)
g(an)o(y)h Fj(char*)240 308 y Fi(function.)62 447 y(There)i(are)f(no)g
(directly)f(accessible)h(forms)f(for)g(declaring)h(SubString)g(v)m(ariables.)
62 587 y(The)h(declaration)e Fj(Regex)h(r\("[a-zA-Z_][a-zA-Z0-9_)o(]*"\);)d
Fi(creates)j(a)g(compiled)g(regular)f(expression)0 649 y(suitable)19
b(for)g(use)h(in)g(String)f(op)q(erations)g(describ)q(ed)h(b)q(elo)o(w.)33
b(\(In)20 b(this)f(case,)i(one)f(that)f(matc)o(hes)f(an)o(y)h(C)p
Fj(++)0 712 y Fi(iden)o(ti\014er\).)39 b(The)22 b(\014rst)g(argumen)o(t)e(ma)
o(y)g(also)h(b)q(e)h(a)g(String.)39 b(Be)22 b(careful)g(in)g(distinguishing)e
(the)i(role)f(of)0 774 y(bac)o(kslashes)c(in)g(quoted)h(GNU)f(C)p
Fj(++)g Fi(c)o(har*)g(constan)o(ts)f(v)o(ersus)h(those)h(in)f(Regexes.)27
b(F)l(or)17 b(example,)f(a)h(Regex)0 836 y(that)10 b(matc)o(hes)g(either)h
(one)h(or)e(more)g(tabs)h(or)f(all)h(strings)f(b)q(eginning)h(with)f
Fj(")p Fi(ba)p Fj(")h Fi(and)h(ending)f(with)g(an)o(y)g(n)o(um)o(b)q(er)0
898 y(of)16 b(o)q(ccurrences)h(of)f Fj(")p Fi(na)p Fj(")g Fi(could)h(b)q(e)g
(declared)g(as)f Fj(Regex)e(r)h(=)g
("\\\\\(\\t+\\\\\)\\\\|\\\\\(ba\\\\\(na\\\\\)*)o(\\\\\)")e
Fi(Note)0 961 y(that)j(only)h(one)g(bac)o(kslash)f(is)g(needed)j(to)d
(signify)g(the)h(tab,)f(but)h(t)o(w)o(o)f(are)h(needed)h(for)e(the)h(paren)o
(thesization)0 1023 y(and)i(virgule,)g(since)g(the)g(GNU)f(C)p
Fj(++)h Fi(lexical)f(analyzer)g(deco)q(des)i(and)f(strips)f(bac)o(kslashes)g
(b)q(efore)h(they)g(are)0 1085 y(seen)d(b)o(y)f(Regex.)62 1225
y(There)f(are)f(three)h(additional)e(optional)h(argumen)o(ts)e(to)i(the)h
(Regex)g(constructor)f(that)g(are)g(less)h(commonly)0 1287
y(useful:)0 1427 y Fj(fast)h(\(default)f(0\))240 1489 y(fast)j
Fi(ma)o(y)f(b)q(e)j(set)f(to)f(true)h(\(1\))f(if)g(the)h(Regex)g(should)g(b)q
(e)h Fj(")p Fi(fast-compiled)p Fj(")p Fi(.)25 b(This)18 b(causes)g(an)240
1551 y(additional)11 b(compilation)f(step)i(that)g(is)g(generally)g(w)o(orth)
o(while)f(if)h(the)h(Regex)g(will)e(b)q(e)i(used)g(man)o(y)240
1613 y(times.)0 1691 y Fj(bufsize)h(\(default)g(max\(40,)g(length)h(of)g(the)
f(string\)\))240 1753 y Fi(This)j(is)g(an)h(estimate)d(of)i(the)h(size)f(of)g
(the)h(in)o(ternal)e(compiled)g(expression.)27 b(Set)17 b(it)g(to)g(a)g
(larger)240 1815 y(v)m(alue)g(if)f(y)o(ou)g(kno)o(w)g(that)f(the)i
(expression)f(will)f(require)h(a)g(lot)g(of)g(space.)24 b(If)16
b(y)o(ou)g(do)h(not)f(kno)o(w,)240 1878 y(do)f(not)g(w)o(orry:)k(reallo)q(c)
14 b(is)h(used)g(if)g(necessary)l(.)0 1955 y Fj(transtable)f(\(default)g
(none)g(==)h(0\))240 2017 y Fi(The)21 b(address)f(of)g(a)g(b)o(yte)g
(translation)e(table)i(\(a)g(c)o(har[256]\))e(that)h(translates)g(eac)o(h)i
(c)o(haracter)240 2079 y(b)q(efore)15 b(matc)o(hing.)62 2219
y(As)k(a)g(con)o(v)o(enience,)h(sev)o(eral)e(Regexes)h(are)g(prede\014ned)h
(and)f(usable)g(in)g(an)o(y)f(program.)29 b(Here)19 b(are)f(their)0
2281 y(declarations)c(from)f(`)p Fj(String.h)p Fi('.)120 2421
y Fj(extern)23 b(Regex)g(RXwhite;)238 b(//)23 b(=)h("[)g(\\n\\t]+")120
2471 y(extern)f(Regex)g(RXint;)286 b(//)23 b(=)h("-?[0-9]+")120
2521 y(extern)f(Regex)g(RXdouble;)214 b(//)23 b(=)h
("-?\\\\\(\\\\\([0-9]+\\\\.[0-9]*\\\\\))o(\\\\|)860 2570 y(//)95
b(\\\\\([0-9]+\\\\\)\\\\|\\\\\(\\\\.[0-9])o(+\\\\\)\\\\\))860
2620 y(//)g(\\\\\([eE][---+]?[0-9]+\\\\\)?")120 2670 y(extern)23
b(Regex)g(RXalpha;)238 b(//)23 b(=)h("[A-Za-z]+")p eop
%%Page: 53 55
bop 0 -58 a Fi(Chapter)15 b(17:)k(The)d(String)e(class)1328
b(53)120 183 y Fj(extern)23 b(Regex)g(RXlowercase;)142 b(//)23
b(=)h("[a-z]+")120 233 y(extern)f(Regex)g(RXuppercase;)142
b(//)23 b(=)h("[A-Z]+")120 283 y(extern)f(Regex)g(RXalphanum;)166
b(//)23 b(=)h("[0-9A-Za-z]+")120 333 y(extern)f(Regex)g(RXidentifier;)118
b(//)23 b(=)h("[A-Za-z_][A-Za-z0-9_]*")0 625 y Fe(17.2)32 b(Examples)62
765 y Fi(Most)10 b Fj(String)f Fi(class)h(capabilities)f(are)h(b)q(est)h(sho)
o(wn)f(via)g(example.)17 b(The)11 b(examples)e(b)q(elo)o(w)h(use)h(the)f
(follo)o(wing)0 827 y(declarations.)215 966 y Fj(String)23
b(x)h(=)g("Hello";)215 1016 y(String)f(y)h(=)g("world";)215
1065 y(String)f(n)h(=)g("123";)215 1115 y(String)f(z;)215 1165
y(char*)47 b(s)24 b(=)g(",";)215 1215 y(String)f(lft,)h(mid,)f(rgt;)215
1265 y(Regex)47 b(r)24 b(=)g("e[a-z]*o";)215 1315 y(Regex)47
b(r2\("/[a-z]*/"\);)215 1364 y(char)71 b(c;)215 1414 y(int)95
b(i,)24 b(pos,)f(len;)215 1464 y(double)g(f;)215 1514 y(String)g(words[10];)
215 1564 y(words[0])g(=)h("a";)215 1613 y(words[1])f(=)h("b";)215
1663 y(words[2])f(=)h("c";)0 1956 y Fe(17.3)32 b(Comparing,)24
b(Searc)n(hing)f(and)h(Matc)n(hing)62 2095 y Fi(The)17 b(usual)g
(lexicographic)e(relational)g(op)q(erators)g(\()p Fj(==,)g(!=,)g(<,)f(<=,)h
(>,)g(>=)p Fi(\))h(are)g(de\014ned.)26 b(A)17 b(functional)0
2157 y(form)g Fj(compare\(String,)c(String\))k Fi(is)h(also)g(pro)o(vided,)h
(as)f(is)g Fj(fcompare\(String,)13 b(String\))p Fi(,)18 b(whic)o(h)g(com-)0
2220 y(pares)d(Strings)f(without)h(regard)f(for)h(upp)q(er)h(vs.)k(lo)o(w)o
(er)14 b(case.)62 2359 y(All)g(other)g(matc)o(hing)f(and)i(searc)o(hing)f(op)
q(erations)g(are)g(based)h(on)f(some)g(form)e(of)j(the)f(\(non-public\))h
Fj(match)0 2421 y Fi(and)f Fj(search)f Fi(functions.)20 b Fj(match)13
b Fi(and)h Fj(search)f Fi(di\013er)h(in)g(that)f Fj(match)g
Fi(attempts)f(to)i(matc)o(h)e(only)i(at)f(the)h(giv)o(en)0
2483 y(starting)i(p)q(osition,)g(while)h Fj(search)g Fi(starts)f(at)h(the)g
(p)q(osition,)g(and)g(then)h(pro)q(ceeds)g(left)f(or)g(righ)o(t)f(lo)q(oking)
h(for)0 2545 y(a)f(matc)o(h.)k(As)c(seen)g(in)g(the)g(follo)o(wing)e
(examples,)g(the)i(second)h(optional)d Fj(startpos)h Fi(argumen)o(t)f(to)h
(functions)0 2608 y(using)h Fj(match)f Fi(and)h Fj(search)f
Fi(sp)q(eci\014es)i(the)f(starting)f(p)q(osition)g(of)g(the)i(searc)o(h:)k
(If)16 b(non-negativ)o(e,)f(it)h(results)f(in)0 2670 y(a)h(left-to-righ)o(t)e
(searc)o(h)i(starting)f(at)h(p)q(osition)f Fj(startpos)p Fi(,)g(and)h(if)g
(negativ)o(e,)f(a)h(righ)o(t-to-left)e(searc)o(h)j(starting)p
eop
%%Page: 54 56
bop 0 -58 a Fi(54)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y(at)f(p)q(osition)f Fj(x.length\(\))i(+)h
(startpos)p Fi(.)j(In)c(all)f(cases,)g(the)h(index)f(returned)h(is)f(that)g
(of)g(the)g(b)q(eginning)h(of)f(the)0 246 y(matc)o(h,)g(or)i(-1)g(if)g(there)
g(is)g(no)g(matc)o(h.)62 385 y(Three)i(String)e(functions)h(serv)o(e)g(as)g
(fron)o(t)g(ends)h(to)e Fj(search)h Fi(and)g Fj(match)p Fi(.)22
b Fj(index)16 b Fi(p)q(erforms)f(a)h(searc)o(h,)g(re-)0 448
y(turning)c(the)g(index,)g Fj(matches)g Fi(p)q(erforms)e(a)i(matc)o(h,)f
(returning)h(nonzero)g(\(actually)l(,)f(the)h(length)g(of)g(the)g(matc)o(h\))
0 510 y(on)i(success,)h(and)f Fj(contains)f Fi(is)h(a)f(b)q(o)q(olean)i
(function)f(p)q(erforming)e(either)i(a)g(searc)o(h)g(or)f(matc)o(h,)g(dep)q
(ending)i(on)0 572 y(whether)g(an)h(index)f(argumen)o(t)e(is)i(pro)o(vided:)0
712 y Fj(x.index\("lo"\))240 774 y Fi(returns)k(the)h(zero-based)f(index)h
(of)f(the)g(leftmost)e(o)q(ccurrence)k(of)e(substring)g Fj(")p
Fi(lo)p Fj(")f Fi(\(3,)h(in)h(this)240 836 y(case\).)g(The)15
b(argumen)o(t)e(ma)o(y)h(b)q(e)i(a)f(String,)f(SubString,)h(c)o(har,)f(c)o
(har*,)g(or)h(Regex.)0 914 y Fj(x.index\("l",)f(2\))240 976
y Fi(returns)f(the)g(index)h(of)f(the)g(\014rst)g(of)g(the)g(leftmost)e(o)q
(ccurrence)j(of)f Fj(")p Fi(l)p Fj(")g Fi(found)g(starting)f(the)h(searc)o(h)
240 1038 y(at)i(p)q(osition)f(x[2],)g(or)g(2)h(in)g(this)g(case.)0
1116 y Fj(x.index\("l",)f(-1\))240 1178 y Fi(returns)h(the)g(index)h(of)f
(the)g(righ)o(tmost)d(o)q(ccurrence)k(of)f Fj(")p Fi(l)p Fj(")p
Fi(,)f(or)h(3)g(here.)0 1256 y Fj(x.index\("l",)f(-3\))240
1318 y Fi(returns)f(the)g(index)g(of)g(the)g(righ)o(tmost)d(o)q(ccurrence)k
(of)f Fj(")p Fi(l)p Fj(")f Fi(found)h(b)o(y)g(starting)f(the)h(searc)o(h)f
(at)h(the)240 1380 y(3rd)i(to)f(the)i(last)e(p)q(osition)g(of)h(x,)g
(returning)f(2)h(in)g(this)g(case.)0 1458 y Fj(pos)g(=)g(r.search\("leo",)e
(3,)i(len,)f(0\))240 1520 y Fi(returns)e(the)g(index)h(of)f(r)f(in)h(the)h
Fj(char*)e Fi(string)g(of)h(length)g(3,)g(starting)f(at)g(p)q(osition)g(0,)h
(also)g(placing)240 1582 y(the)j(length)g(of)g(the)g(matc)o(h)f(in)h
(reference)h(parameter)d(len.)0 1660 y Fj(x.contains\("He"\))240
1722 y Fi(returns)j(nonzero)h(if)f(the)g(String)g(x)g(con)o(tains)g(the)g
(substring)g Fj(")p Fi(He)p Fj(")p Fi(.)23 b(The)17 b(argumen)o(t)e(ma)o(y)f
(b)q(e)j(a)240 1784 y(String,)d(SubString,)h(c)o(har,)f(c)o(har*,)h(or)f
(Regex.)0 1862 y Fj(x.contains\("el",)f(1\))240 1924 y Fi(returns)i(nonzero)h
(if)f(x)h(con)o(tains)e(the)i(substring)f Fj(")p Fi(el)p Fj(")g
Fi(at)g(p)q(osition)f(1.)21 b(As)15 b(in)h(this)f(example,)f(the)240
1986 y(second)k(argumen)o(t)d(to)i Fj(contains)p Fi(,)f(if)g(presen)o(t,)i
(means)e(to)g(matc)o(h)g(the)h(substring)f(only)h(at)g(that)240
2049 y(p)q(osition,)d(and)h(not)g(to)g(searc)o(h)g(elsewhere)g(in)g(the)g
(string.)0 2126 y Fj(x.contains\(RXwhite\);)240 2188 y Fi(returns)21
b(nonzero)h(if)e(x)h(con)o(tains)g(an)o(y)g(whitespace)g(\(space,)h(tab,)g
(or)f(newline\).)38 b(Recall)21 b(that)240 2251 y Fj(RXwhite)14
b Fi(is)h(a)g(global)f(whitespace)h(Regex.)0 2328 y Fj(x.matches\("lo",)e
(3\))240 2390 y Fi(returns)i(nonzero)g(if)g(x)g(starting)e(at)h(p)q(osition)g
(3)h(exactly)f(matc)o(hes)g Fj(")p Fi(lo)p Fj(")p Fi(,)g(with)g(no)h
(trailing)e(c)o(har-)240 2453 y(acters)i(\(as)f(it)h(do)q(es)g(in)g(this)g
(example\).)0 2530 y Fj(x.matches\(r\))240 2592 y Fi(returns)g(nonzero)g(if)g
(String)g(x)g(as)f(a)h(whole)g(matc)o(hes)f(Regex)i(r.)0 2670
y Fj(int)f(f)g(=)g(x.freq\("l"\))p eop
%%Page: 55 57
bop 0 -58 a Fi(Chapter)15 b(17:)k(The)d(String)e(class)1328
b(55)240 183 y(returns)21 b(the)f(n)o(um)o(b)q(er)h(of)f(distinct,)h(nono)o
(v)o(erlapping)f(matc)o(hes)f(to)h(the)h(argumen)o(t)e(\(2)h(in)h(this)240
246 y(case\).)0 469 y Fe(17.4)32 b(Substring)24 b(extraction)62
606 y Fi(Substrings)17 b(ma)o(y)f(b)q(e)i(extracted)f(via)f(the)i
Fj(at)p Fi(,)f Fj(before)p Fi(,)f Fj(through)p Fi(,)h Fj(from)p
Fi(,)g(and)g Fj(after)g Fi(functions.)26 b(These)0 668 y(b)q(eha)o(v)o(e)16
b(as)e(either)h(lv)m(alues)g(or)g(rv)m(alues.)0 805 y Fj(z)g(=)g(x.at\(2,)f
(3\))240 867 y Fi(sets)k(String)f(z)h(to)f(b)q(e)i(equal)e(to)h(the)g(length)
f(3)h(substring)f(of)h(String)f(x)h(starting)e(at)i(zero-based)240
929 y(p)q(osition)g(2,)i(setting)e(z)h(to)g Fj(")p Fi(llo)p
Fj(")e Fi(in)i(this)g(case.)32 b(A)19 b(nil)f(String)h(is)f(returned)i(if)f
(the)g(argumen)o(ts)240 992 y(don't)c(mak)o(e)e(sense.)0 1066
y Fj(x.at\(2,)h(2\))h(=)g("r")240 1128 y Fi(Sets)k(what)g(w)o(as)g(in)g(p)q
(ositions)f(2)h(to)g(3)g(of)g(x)g(to)g Fj(")p Fi(r)p Fj(")p
Fi(,)g(setting)g(x)g(to)g Fj(")p Fi(Hero)p Fj(")g Fi(in)g(this)g(case.)32
b(As)240 1191 y(indicated)15 b(here,)g(SubString)g(assignmen)o(ts)e(ma)o(y)h
(b)q(e)i(of)f(di\013eren)o(t)f(lengths.)0 1265 y Fj(x.at\("He"\))g(=)h("je";)
240 1327 y Fi(x\()p Fj(")p Fi(He)p Fj(")p Fi(\))h(is)g(the)g(substring)g(of)h
(x)f(that)g(matc)o(hes)f(the)h(\014rst)h(o)q(ccurrence)g(of)f(it's)g(argumen)
o(t.)22 b(The)240 1390 y(substitution)16 b(sets)h(x)g(to)f
Fj(")p Fi(jello)p Fj(")p Fi(.)24 b(If)17 b Fj(")p Fi(He)p Fj(")g
Fi(did)g(not)g(o)q(ccur,)h(the)f(substring)f(w)o(ould)h(b)q(e)g(nil,)g(and)
240 1452 y(the)e(assignmen)o(t)e(w)o(ould)i(ha)o(v)o(e)g(no)g(e\013ect.)0
1526 y Fj(x.at\("l",)f(-1\))h(=)g("i";)240 1589 y Fi(replaces)g(the)g(righ)o
(tmost)e(o)q(ccurrence)j(of)f Fj(")p Fi(l)p Fj(")f Fi(with)h
Fj(")p Fi(i)p Fj(")p Fi(,)f(setting)g(x)h(to)g Fj(")p Fi(Helio)p
Fj(")p Fi(.)0 1663 y Fj(z)g(=)g(x.at\(r\))240 1725 y Fi(sets)h(String)g(z)h
(to)f(the)h(\014rst)g(matc)o(h)e(in)h(x)h(of)f(Regex)i(r,)e(or)g
Fj(")p Fi(ello)p Fj(")g Fi(in)h(this)f(case.)24 b(A)17 b(nil)f(String)g(is)
240 1787 y(returned)g(if)e(there)i(is)e(no)h(matc)o(h.)0 1862
y Fj(z)g(=)g(x.before\("o"\))240 1924 y Fi(sets)h(z)g(to)f(the)h(part)g(of)f
(x)h(to)f(the)h(left)g(of)f(the)h(\014rst)g(o)q(ccurrence)h(of)e
Fj(")p Fi(o)p Fj(")p Fi(,)g(or)h Fj(")p Fi(Hell)p Fj(")f Fi(in)h(this)f
(case.)240 1986 y(The)g(argumen)o(t)f(ma)o(y)f(also)h(b)q(e)i(a)f(String,)f
(SubString,)h(or)g(Regex.)0 2061 y Fj(x.before\("ll"\))e(=)i("Bri";)240
2123 y Fi(sets)g(the)g(part)g(of)g(x)g(to)f(the)i(left)e(of)h
Fj(")p Fi(ll)p Fj(")f Fi(to)h Fj(")p Fi(Bri)p Fj(")p Fi(,)f(setting)g(x)h(to)
g Fj(")p Fi(Brillo)p Fj(")p Fi(.)0 2198 y Fj(z)g(=)g(x.before\(2\))240
2260 y Fi(sets)g(z)g(to)g(the)g(part)g(of)f(x)i(to)e(the)h(left)g(of)g(x[2],)
f(or)g Fj(")p Fi(He)p Fj(")h Fi(in)g(this)g(case.)0 2334 y
Fj(z)g(=)g(x.after\("Hel"\))240 2397 y Fi(sets)g(z)g(to)g(the)g(part)g(of)f
(x)i(to)e(the)h(righ)o(t)f(of)h Fj(")p Fi(Hel)p Fj(")p Fi(,)g(or)f
Fj(")p Fi(lo)p Fj(")h Fi(in)g(this)f(case.)0 2471 y Fj(z)h(=)g
(x.through\("el"\))240 2533 y Fi(sets)g(z)g(to)g(the)g(part)g(of)f(x)i(up)f
(and)h(including)f Fj(")p Fi(el)p Fj(")p Fi(,)f(or)h Fj(")p
Fi(Hel)p Fj(")f Fi(in)h(this)g(case.)0 2608 y Fj(z)g(=)g(x.from\("el"\))240
2670 y Fi(sets)g(z)g(to)g(the)g(part)g(of)f(x)i(from)d Fj(")p
Fi(el)p Fj(")i Fi(to)f(the)i(end,)f(or)g Fj(")p Fi(ello)p Fj(")f
Fi(in)h(this)f(case.)p eop
%%Page: 56 58
bop 0 -58 a Fi(56)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(x.after\("Hel"\))f(=)i("p";)240
246 y Fi(sets)g(x)g(to)g Fj(")p Fi(Help)p Fj(")p Fi(;)0 329
y Fj(z)g(=)g(x.after\(3\))240 391 y Fi(sets)g(z)g(to)g(the)g(part)g(of)f(x)i
(to)e(the)h(righ)o(t)f(of)h(x[3])f(or)h Fj(")p Fi(o)p Fj(")g
Fi(in)g(this)f(case.)0 475 y Fj(z)h(=)g(")g(ab)g(c";)g(z)g(=)g
(z.after\(RXwhite\))240 537 y Fi(sets)g(z)h(to)f(the)h(part)f(of)g(its)g(old)
g(string)g(to)g(the)g(righ)o(t)g(of)g(the)h(\014rst)f(group)g(of)h
(whitespace,)f(setting)240 599 y(z)j(to)g Fj(")p Fi(ab)g(c)p
Fj(")p Fi(;)i(Use)e(gsub\(b)q(elo)o(w\))f(to)h(strip)f(out)h(m)o(ultiple)e(o)
q(ccurrences)k(of)d(whitespace)i(or)e(an)o(y)240 661 y(pattern.)0
745 y Fj(x[0])e(=)g('J';)240 807 y Fi(sets)k(the)h(\014rst)f(elemen)o(t)f(of)
h(x)h(to)f('J'.)f(x[i])h(returns)g(a)g(reference)h(to)f(the)h(ith)f(elemen)o
(t)f(of)h(x,)h(or)240 869 y(triggers)14 b(an)h(error)f(if)h(i)g(is)f(out)h
(of)g(range.)0 953 y Fj(common_prefix\(x,)e("Help"\))240 1015
y Fi(returns)18 b(the)h(String)f(con)o(taining)f(the)i(common)d(pre\014x)j
(of)f(the)h(t)o(w)o(o)e(Strings)h(or)g Fj(")p Fi(Hel)p Fj(")g
Fi(in)h(this)240 1077 y(case.)0 1161 y Fj(common_suffix\(x,)13
b("to"\))240 1223 y Fi(returns)h(the)h(String)f(con)o(taining)f(the)i(common)
d(su\016x)i(of)h(the)f(t)o(w)o(o)f(Strings)h(or)g Fj(")p Fi(o)p
Fj(")g Fi(in)g(this)g(case.)0 1526 y Fe(17.5)32 b(Concatenation)0
1671 y Fj(z)15 b(=)g(x)g(+)g(s)g(+)g(')g(')g(+)g(y.at\("w"\))f(+)h
(y.after\("w"\))f(+)h(".";)240 1734 y Fi(sets)g(z)g(to)g Fj(")p
Fi(Hello,)f(w)o(orld.)p Fj(")0 1817 y(x)h(+=)g(y;)90 b Fi(sets)15
b(x)g(to)g Fj(")p Fi(Hello)o(w)o(orld)p Fj(")0 1900 y(cat\(x,)f(y,)h(z\))240
1963 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f
Fj(+)g Fi(y)l(.)0 2046 y Fj(cat\(z,)f(y,)h(x,)g(x\))240 2108
y Fi(Double)g(concatenation;)f(A)h(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(x)g(=)g
(z)h Fj(+)f Fi(y)g Fj(+)g Fi(x.)0 2192 y Fj(y.prepend\(x\);)240
2254 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(y)g(=)h(x)f
Fj(+)g Fi(y)l(.)0 2338 y Fj(z)g(=)g(replicate\(x,)f(3\);)240
2400 y Fi(sets)h(z)g(to)g Fj(")p Fi(HelloHelloHello)p Fj(")p
Fi(.)0 2483 y Fj(z)g(=)g(join\(words,)f(3,)h("/"\))240 2545
y Fi(sets)g(z)g(to)g(the)h(concatenation)e(of)h(the)g(\014rst)g(3)g(Strings)g
(in)g(String)g(arra)o(y)f(w)o(ords,)g(eac)o(h)h(separated)240
2608 y(b)o(y)e Fj(")p Fi(/)p Fj(")p Fi(,)g(setting)f(z)h(to)g
Fj(")p Fi(a/b/c)p Fj(")f Fi(in)h(this)g(case.)19 b(The)13 b(last)f(argumen)o
(t)g(ma)o(y)f(b)q(e)j Fj("")f Fi(or)f(0,)h(indicating)240 2670
y(no)i(separation.)p eop
%%Page: 57 59
bop 0 -58 a Fi(Chapter)15 b(17:)k(The)d(String)e(class)1328
b(57)0 183 y Fe(17.6)32 b(Other)23 b(manipula)q(tions)0 320
y Fj(z)15 b(=)g("this)f(string)h(has)g(five)f(words";)g(i)h(=)g(split\(z,)f
(words,)h(10,)g(RXwhite\);)240 382 y Fi(sets)f(up)g(to)g(10)f(elemen)o(ts)g
(of)h(String)f(arra)o(y)g(w)o(ords)g(to)h(the)g(parts)g(of)f(z)i(separated)e
(b)o(y)h(whitespace,)240 445 y(and)i(returns)g(the)g(n)o(um)o(b)q(er)g(of)f
(parts)h(actually)f(encoun)o(tered)i(\(5)e(in)h(this)f(case\).)23
b(Here,)16 b(w)o(ords[0])240 507 y(=)j Fj(")p Fi(this)p Fj(")p
Fi(,)g(w)o(ords[1])e(=)j Fj(")p Fi(string)p Fj(")p Fi(,)e(etc.)32
b(The)19 b(last)f(argumen)o(t)f(ma)o(y)g(b)q(e)j(an)o(y)f(of)f(the)i(usual.)
31 b(If)240 569 y(there)18 b(is)g(no)g(matc)o(h,)f(all)h(of)f(z)i(ends)g(up)f
(in)g(w)o(ords[0].)28 b(The)18 b(w)o(ords)g(arra)o(y)f(is)g
Fc(not)i Fi(dynamically)240 632 y(created)c(b)o(y)g(split.)0
705 y Fj(int)g(nmatches)f(x.gsub\("l","ll"\))240 767 y Fi(substitutes)k(all)g
(original)e(o)q(ccurrences)k(of)e Fj(")p Fi(l)p Fj(")g Fi(with)g
Fj(")p Fi(ll)p Fj(")p Fi(,)g(setting)g(x)g(to)g Fj(")p Fi(Hellllo)p
Fj(")p Fi(.)28 b(The)19 b(\014rst)240 830 y(argumen)o(t)c(ma)o(y)g(b)q(e)i
(an)o(y)g(of)f(the)h(usual,)f(including)g(Regex.)25 b(If)17
b(the)g(second)g(argumen)o(t)e(is)h Fj("")g Fi(or)240 892 y(0,)e(all)f(o)q
(ccurrences)i(are)f(deleted.)20 b(gsub)14 b(returns)g(the)g(n)o(um)o(b)q(er)f
(of)h(matc)o(hes)f(that)g(w)o(ere)h(replaced.)0 966 y Fj(z)h(=)g(x)g(+)g(y;)g
(z.del\("loworl"\);)240 1028 y Fi(deletes)g(the)h(leftmost)c(o)q(ccurrence)17
b(of)d Fj(")p Fi(lo)o(w)o(orl)p Fj(")f Fi(in)i(z,)g(setting)f(z)i(to)e
Fj(")p Fi(Held)p Fj(")p Fi(.)0 1102 y Fj(z)h(=)g(reverse\(x\))240
1164 y Fi(sets)g(z)g(to)g(the)g(rev)o(erse)g(of)g(x,)g(or)f
Fj(")p Fi(olleH)p Fj(")p Fi(.)0 1237 y Fj(z)h(=)g(upcase\(x\))240
1300 y Fi(sets)g(z)g(to)g(x,)g(with)f(all)g(letters)h(set)f(to)h(upp)q
(ercase,)h(setting)e(z)h(to)g Fj(")p Fi(HELLO)p Fj(")0 1373
y(z)g(=)g(downcase\(x\))240 1436 y Fi(sets)g(z)g(to)g(x,)g(with)f(all)g
(letters)h(set)f(to)h(lo)o(w)o(ercase,)f(setting)g(z)h(to)g
Fj(")p Fi(hello)p Fj(")0 1509 y(z)g(=)g(capitalize\(x\))240
1571 y Fi(sets)c(z)g(to)f(x,)h(with)f(the)h(\014rst)g(letter)f(of)g(eac)o(h)h
(w)o(ord)f(set)h(to)f(upp)q(ercase,)i(and)f(all)f(others)g(to)h(lo)o(w)o
(ercase,)240 1634 y(setting)j(z)i(to)e Fj(")p Fi(Hello)p Fj(")0
1707 y(x.reverse\(\),)g(x.upcase\(\),)f(x.downcase\(\),)h(x.capitalize\(\))
240 1770 y Fi(in-place,)h(self-mo)q(difying)e(v)o(ersions)h(of)h(the)g(ab)q
(o)o(v)o(e.)0 1989 y Fe(17.7)32 b(Reading,)24 b(W)-6 b(riting)23
b(and)h(Con)n(v)n(ersion)0 2126 y Fj(cout)15 b(<<)f(x)43 b
Fi(writes)14 b(out)h(x.)0 2200 y Fj(cout)g(<<)f(x.at\(2,)h(3\))240
2262 y Fi(writes)f(out)h(the)g(substring)g Fj(")p Fi(llo)p
Fj(")p Fi(.)0 2336 y Fj(cin)g(>>)g(x)66 b Fi(reads)15 b(a)g(whitespace-b)q
(ounded)i(string)d(in)o(to)g(x.)0 2410 y Fj(x.length\(\))240
2472 y Fi(returns)h(the)g(length)g(of)g(String)g(x)g(\(5,)f(in)h(this)f
(case\).)0 2545 y Fj(s)h(=)g(\(char*\)x)240 2608 y Fi(can)d(b)q(e)h(used)g
(to)e(extract)h(the)g Fj(char*)f Fi(c)o(har)h(arra)o(y)l(.)18
b(This)12 b(co)q(ercion)g(is)g(useful)g(for)f(sending)i(a)f(String)240
2670 y(as)19 b(an)h(argumen)o(t)e(to)h(an)o(y)h(function)f(exp)q(ecting)h(a)g
Fj(const)14 b(char*)19 b Fi(argumen)o(t)f(\(lik)o(e)h Fj(atoi)p
Fi(,)h(and)p eop
%%Page: 58 60
bop 0 -58 a Fi(58)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)240 183 y Fj(File::open)p Fi(\).)23
b(This)17 b(op)q(erator)f(m)o(ust)f(b)q(e)i(used)h(with)e(care.)25
b(Strings)16 b(should)h(not)f(b)q(e)i Fc(mo)q(di\014ed)240
246 y Fi(b)o(y)e(nonmem)o(b)q(er)f(functions.)22 b(Doing)15
b(so)h(ma)o(y)e(corrupt)i(their)g(represen)o(tation.)21 b(The)c(con)o(v)o
(ersion)240 308 y(is)d(de\014ned)i(to)e(return)g(a)g(const)h(v)m(alue)f(so)h
(that)e(GNU)i(C)p Fj(++)f Fi(will)f(pro)q(duce)i(w)o(arning)f(and/or)g(error)
240 370 y(messages)g(if)g(c)o(hanges)i(are)e(attempted.)p eop
%%Page: 59 61
bop 0 -58 a Fi(Chapter)15 b(18:)k(The)d(In)o(teger)f(class.)1297
b(59)0 183 y Ff(18)41 b(The)27 b(In)n(teger)g(class.)62 378
y Fi(The)14 b Fj(Integer)f Fi(class)h(pro)o(vides)f(m)o(ultiple)f(precision)i
(in)o(teger)f(arithmetic)e(facilities.)18 b(Some)13 b(represen)o(tation)0
440 y(details)h(are)h(discussed)h(in)f(the)g(Represen)o(tation)g(section.)62
579 y Fj(Integers)h Fi(ma)o(y)f(b)q(e)j(up)f(to)f Fj(b)f(*)g(\(\(1)g(<<)g
(b\))g(-)g(1\))h Fi(bits)g(long,)h(where)g Fj(b)f Fi(is)h(the)f(n)o(um)o(b)q
(er)h(of)f(bits)g(p)q(er)i(short)0 641 y(\(t)o(ypically)e(1048560)f(bits)j
(when)g Fj(b)d(=)g(16)p Fi(\).)26 b(The)18 b(implemen)o(tati)o(on)d(assumes)i
(that)f(a)i Fj(long)f Fi(is)g(at)g(least)g(t)o(wice)0 704 y(as)e(long)g(as)h
(a)f Fj(short)p Fi(.)21 b(This)16 b(assumption)e(hides)i(b)q(eneath)g(almost)
e(all)g(primitiv)o(e)f(op)q(erations,)i(and)h(w)o(ould)f(b)q(e)0
766 y(v)o(ery)g(di\016cult)g(to)f(c)o(hange.)20 b(It)15 b(also)f(relies)h(on)
g(correct)g(b)q(eha)o(vior)g(of)f Fc(unsigned)k Fi(arithmetic)13
b(op)q(erations.)62 904 y(Some)h(of)f(the)i(arithmetic)d(algorithms)f(are)j
(v)o(ery)g(lo)q(osely)f(based)h(on)h(those)f(pro)o(vided)g(in)g(the)g(MIT)g
(Sc)o(heme)0 967 y(`)p Fj(bignum.c)p Fi(')h(release,)h(whic)o(h)g(is)g(Cop)o
(yrigh)o(t)f(\(c\))h(1987)f(Massac)o(h)o(usetts)g(Institute)h(of)g(T)l(ec)o
(hnology)l(.)23 b(Their)17 b(use)0 1029 y(here)f(falls)e(within)g(the)h(pro)o
(visions)f(describ)q(ed)i(in)f(the)g(Sc)o(heme)g(release.)62
1168 y(In)o(tegers)g(ma)o(y)f(b)q(e)i(constructed)f(in)g(the)g(follo)o(wing)e
(w)o(a)o(ys:)0 1306 y Fj(Integer)h(x;)240 1368 y Fi(Declares)h(an)g
(uninitialized)f(In)o(teger.)0 1445 y Fj(Integer)g(x)h(=)g(2;)g(Integer)f
(y\(2\);)240 1507 y Fi(Set)h(x)g(and)h(y)f(to)g(the)g(In)o(teger)g(v)m(alue)g
(2;)0 1583 y Fj(Integer)f(u\(x\);)h(Integer)f(v)h(=)g(x;)240
1646 y Fi(Set)g(u)h(and)f(v)g(to)g(the)g(same)f(v)m(alue)h(as)g(x.)62
1784 y Fj(Integers)f Fi(ma)o(y)e(b)q(e)j(co)q(erced)h(bac)o(k)e(in)o(to)f
(longs)h(via)g(the)g Fj(long)g Fi(co)q(ercion)h(op)q(erator.)j(If)d(the)g(In)
o(teger)f(cannot)0 1846 y(\014t)e(in)o(to)g(a)g(long,)g(this)f(returns)i
(MINLONG)g(or)e(MAXLONG)i(\(dep)q(ending)g(on)g(the)f(sign\))g(where)g
(MINLONG)h(is)0 1909 y(the)i(most)e(negativ)o(e,)g(and)i(MAXLONG)g(is)f(the)h
(most)e(p)q(ositiv)o(e)h(represen)o(table)g(long.)19 b(The)c(mem)o(b)q(er)e
(function)0 1971 y Fj(fits_in_long\(\))d Fi(ma)o(y)f(b)q(e)j(used)h(to)d
(test)h(this.)18 b Fj(Integers)11 b Fi(ma)o(y)e(also)i(b)q(e)h(co)q(erced)g
(in)o(to)f Fj(doubles)p Fi(,)g(with)f(p)q(oten-)0 2033 y(tial)g(loss)h(of)h
(precision.)18 b Fj(+/-HUGE)11 b Fi(is)g(returned)i(if)e(the)h(In)o(teger)g
(cannot)f(\014t)h(in)o(to)f(a)g(double.)19 b Fj(fits_in_double\(\))0
2096 y Fi(ma)o(y)13 b(b)q(e)j(used)g(to)f(test)f(this.)62 2234
y(All)20 b(of)g(the)h(usual)f(arithmetic)e(op)q(erators)i(are)g(pro)o(vided)h
(\()p Fj(+,)14 b(-,)h(*,)g(/,)g(\045,)g(+=,)f(++,)h(-=,)g(--,)g(*=,)f(/=,)0
2296 y(\045=,)h(==,)f(!=,)h(<,)g(<=,)g(>,)g(>=)p Fi(\).)j(All)13
b(op)q(erators)f(supp)q(ort)h(sp)q(ecial)g(v)o(ersions)f(for)g(mixed)g
(argumen)o(ts)f(of)i(In)o(tegers)0 2359 y(and)f(regular)f(C)p
Fj(++)g Fi(longs)g(in)h(order)g(to)f(a)o(v)o(oid)g(useless)g(co)q(ercions,)i
(as)e(w)o(ell)g(as)g(to)h(allo)o(w)e(automatic)f(promotion)g(of)0
2421 y(shorts)j(and)h(in)o(ts)f(to)g(longs,)g(so)h(that)f(they)h(ma)o(y)e(b)q
(e)i(applied)g(without)f(additional)f(In)o(teger)i(co)q(ercion)f(op)q
(erators.)0 2483 y(The)i(only)f(op)q(erators)g(that)g(b)q(eha)o(v)o(e)g
(di\013eren)o(tly)g(than)g(the)h(corresp)q(onding)g(in)o(t)f(or)g(long)g(op)q
(erators)f(are)h Fj(++)h Fi(and)0 2545 y Fj(--)p Fi(.)25 b(Because)18
b(C)p Fj(++)f Fi(do)q(es)g(not)g(distinguish)f(pre\014x)i(from)d(p)q
(ost\014x)i(application,)f(these)i(are)e(declared)i(as)f Fj(void)0
2608 y Fi(op)q(erators,)d(so)g(that)g(no)h(confusion)f(can)h(result)g(from)e
(applying)h(them)g(as)g(p)q(ost\014x.)20 b(Th)o(us,)14 b(for)g(In)o(tegers)h
(x)g(and)0 2670 y(y)l(,)30 b Fj(++x;)15 b(y)g(=)g(x;)30 b Fi(is)15
b(correct,)f(but)30 b Fj(y)15 b(=)g(++x;)30 b Fi(and)h Fj(y)15
b(=)g(x++;)29 b Fi(are)15 b(not.)p eop
%%Page: 60 62
bop 0 -58 a Fi(60)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)62 183 y(Bit)o(wise)21 b(op)q(erators)h(\()p
Fj(~,)14 b(&,)h(|,)g(^,)g(<<,)f(>>,)h(&=,)g(|=,)g(^=,)f(<<=,)h(>>=)p
Fi(\))21 b(are)h(also)g(pro)o(vided.)40 b(Ho)o(w)o(ev)o(er,)0
246 y(these)12 b(op)q(erate)g(on)g(sign-magnitude,)e(rather)i(than)f(t)o(w)o
(o's)f(complemen)o(t)g(represen)o(tations.)18 b(The)12 b(sign)f(of)h(the)g
(re-)0 308 y(sult)g(is)h(arbitrarily)d(tak)o(en)j(as)g(the)g(sign)f(of)h(the)
g(\014rst)f(argumen)o(t.)18 b(F)l(or)12 b(example,)g Fj(Integer\(-3\))h(&)i
(Integer\(5\))0 370 y Fi(returns)f Fj(Integer\(-1\))p Fi(,)f(not)h(-3,)g(as)h
(it)e(w)o(ould)h(using)g(t)o(w)o(o's)f(complemen)o(t.)k(Also,)d
Fj(~)p Fi(,)g(the)h(complemen)o(t)d(op)q(era-)0 432 y(tor,)i(complemen)o(ts)f
(only)h(those)h(bits)g(needed)h(for)f(the)g(represen)o(tation.)k(Bit)c(op)q
(erators)f(are)h(also)f(pro)o(vided)h(in)0 495 y(the)g(BitSet)g(and)g
(BitString)f(classes.)20 b(One)c(of)f(these)g(classes)g(should)g(b)q(e)h
(used)f(instead)g(of)g(In)o(tegers)g(when)h(the)0 557 y(results)f(of)f(bit)h
(manipulations)e(are)i(not)f(in)o(terpreted)h(n)o(umerically)l(.)62
694 y(The)i(follo)o(wing)d(utilit)o(y)g(functions)i(are)g(also)g(pro)o
(vided.)22 b(\(All)16 b(argumen)o(ts)e(are)i(In)o(tegers)g(unless)h
(otherwise)0 757 y(noted\).)0 894 y Fj(void)e(divide\(x,)f(y,)g(q,)h(r\);)240
957 y Fi(Sets)k(q)f(to)g(the)h(quotien)o(t)f(and)h(r)f(to)g(the)h(remainder)e
(of)h(x)h(and)g(y)l(.)30 b(\(q)18 b(and)h(r)g(are)f(returned)h(b)o(y)240
1019 y(reference\).)0 1094 y Fj(Integer)14 b(pow\(Integer)g(x,)h(Integer)f
(p\))240 1156 y Fi(returns)h(x)g(raised)g(to)f(the)i(p)q(o)o(w)o(er)e(p.)0
1232 y Fj(Integer)g(Ipow\(long)g(x,)h(long)g(p\))240 1294 y
Fi(returns)g(x)g(raised)g(to)f(the)i(p)q(o)o(w)o(er)e(p.)0
1369 y Fj(Integer)g(gcd\(x,)h(y\))240 1432 y Fi(returns)g(the)g(greatest)f
(common)f(divisor)h(of)h(x)g(and)h(y)l(.)0 1507 y Fj(Integer)e(lcm\(x,)h(y\))
240 1569 y Fi(returns)g(the)g(least)g(common)d(m)o(ultiple)i(of)g(x)h(and)h
(y)l(.)0 1645 y Fj(Integer)e(abs\(x\);)240 1707 y Fi(returns)h(the)g
(absolute)g(v)m(alue)g(of)g(x.)0 1782 y Fj(void)g(x.negate\(\);)240
1844 y Fi(negates)g(x.)0 1920 y Fj(Integer)f(sqr\(x\))240 1982
y Fi(returns)h(x)g(*)g(x;)0 2057 y Fj(Integer)f(sqrt\(x\))240
2120 y Fi(returns)h(the)g(\015o)q(or)g(of)g(the)g(square)g(ro)q(ot)g(of)g(x.)
0 2195 y Fj(long)g(lg\(x\);)240 2257 y Fi(returns)g(the)g(\015o)q(or)g(of)g
(the)g(base)h(2)e(logarithm)f(of)h(abs\(x\))0 2333 y Fj(int)h(sign\(x\))240
2395 y Fi(returns)j(-1)f(if)g(x)h(is)f(negativ)o(e,)g(0)g(if)h(zero,)f(else)h
Fj(+)p Fi(1.)27 b(Using)17 b Fj(if)e(\(sign\(x\))f(==)h(0\))i
Fi(is)g(a)h(generally)240 2457 y(faster)c(metho)q(d)h(of)g(testing)f(for)g
(zero)h(than)h(using)e(relational)g(op)q(erators.)0 2532 y
Fj(int)h(even\(x\))240 2595 y Fi(returns)g(true)g(if)g(x)g(is)g(an)g(ev)o(en)
g(n)o(um)o(b)q(er)0 2670 y Fj(int)g(odd\(x\))p eop
%%Page: 61 63
bop 0 -58 a Fi(Chapter)15 b(18:)k(The)d(In)o(teger)f(class.)1297
b(61)240 183 y(returns)15 b(true)g(if)g(x)g(is)g(an)g(o)q(dd)g(n)o(um)o(b)q
(er.)0 256 y Fj(void)g(setbit\(Integer&)e(x,)i(long)f(b\))240
318 y Fi(sets)h(the)g(b'th)g(bit)g(\(coun)o(ting)f(righ)o(t-to-left)f(from)h
(zero\))g(of)h(x)g(to)g(1.)0 390 y Fj(void)g(clearbit\(Integer&)d(x,)j(long)g
(b\))240 453 y Fi(sets)g(the)g(b'th)g(bit)g(of)g(x)g(to)f(0.)0
525 y Fj(int)h(testbit\(Integer)e(x,)i(long)f(b\))240 587 y
Fi(returns)h(true)g(if)g(the)g(b'th)g(bit)g(of)g(x)g(is)f(1.)0
660 y Fj(Integer)g(atoI\(char*)g(asciinumber,)f(int)i(base)g(=)g(10\);)240
722 y Fi(con)o(v)o(erts)f(the)i(base)f(base)g(c)o(har*)g(string)f(in)o(to)g
(its)h(In)o(teger)g(form.)0 794 y Fj(char*)f(Itoa\(x,)h(int)f(base)h(=)g(10,)
g(int)g(width)f(=)h(0\);)240 857 y Fi(returns)f(a)g(p)q(oin)o(ter)f(to)h(the)
g(ascii)f(string)h(v)m(alue)g(of)g(x)g(as)g(a)f(base)i Fj(base)e
Fi(n)o(um)o(b)q(er,)g(in)h(\014eld)h(width)f(at)240 919 y(least)g
Fj(width)p Fi(.)0 991 y Fj(ostream)g(<<)h(x;)240 1054 y Fi(prin)o(ts)f(x)i
(in)f(base)g(ten)g(format.)0 1126 y Fj(istream)f(>>)h(x;)240
1188 y Fi(reads)g(x)g(as)g(a)g(base)g(ten)g(n)o(um)o(b)q(er.)0
1261 y Fj(int)g(compare\(Integer)e(x,)i(Integer)f(y\))240 1323
y Fi(returns)h(a)g(negativ)o(e)f(n)o(um)o(b)q(er)h(if)f(x)p
Fj(<)p Fi(y)l(,)h(zero)g(if)g(x==y)l(,)h(or)e(p)q(ositiv)o(e)h(if)f(x)p
Fj(>)p Fi(y)l(.)0 1395 y Fj(int)h(ucompare\(Integer)e(x,)i(Integer)f(y\))240
1458 y Fi(lik)o(e)g(compare,)g(but)h(p)q(erforms)f(unsigned)i(comparison.)0
1530 y Fj(add\(x,)e(y,)h(z\))240 1592 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o
(y)h(z)g(=)h(x)f Fj(+)g Fi(y)l(.)0 1665 y Fj(sub\(x,)f(y,)h(z\))240
1727 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f(-)g(y)l(.)0
1800 y Fj(mul\(x,)f(y,)h(z\))240 1862 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o
(y)h(z)g(=)h(x)f(*)g(y)l(.)0 1934 y Fj(div\(x,)f(y,)h(z\))240
1997 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f(/)g(y)l(.)0
2069 y Fj(mod\(x,)f(y,)h(z\))240 2131 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o
(y)h(z)g(=)h(x)f(\045)g(y)l(.)0 2204 y Fj(and\(x,)f(y,)h(z\))240
2266 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f(&)g(y)l(.)0
2338 y Fj(or\(x,)f(y,)h(z\))240 2401 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o
(y)h(z)g(=)h(x)f Fj(|)g Fi(y)l(.)0 2473 y Fj(xor\(x,)f(y,)h(z\))240
2535 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f
Fj(^)g Fi(y)l(.)0 2608 y Fj(lshift\(x,)f(y,)h(z\))240 2670
y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f Fj(<<)g
Fi(y)l(.)p eop
%%Page: 62 64
bop 0 -58 a Fi(62)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(rshift\(x,)g(y,)h(z\))240
246 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f
Fj(>>)g Fi(y)l(.)0 320 y Fj(pow\(x,)f(y,)h(z\))240 382 y Fi(A)g(faster)g(w)o
(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(p)q(o)o(w\(x,)e(y\).)0 457 y
Fj(complement\(x,)f(z\))240 519 y Fi(A)i(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h
(z)g(=)h Fj(~)p Fi(x.)0 594 y Fj(negate\(x,)e(z\))240 656 y
Fi(A)h(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(-x.)p eop
%%Page: 63 65
bop 0 -58 a Fi(Chapter)15 b(19:)k(The)d(Rational)e(Class)1266
b(63)0 183 y Ff(19)41 b(The)27 b(Rational)g(Class)62 359 y
Fi(Class)14 b Fj(Rational)f Fi(pro)o(vides)h(m)o(ultiple)e(precision)i
(rational)e(n)o(um)o(b)q(er)i(arithmetic.)j(All)d(rationals)e(are)i(main-)0
421 y(tained)i(in)g(simplest)f(form)g(\(i.e.,)g(with)h(the)g(n)o(umerator)f
(and)h(denominator)f(relativ)o(ely)f(prime,)h(and)i(with)f(the)0
484 y(denominator)11 b(strictly)g(p)q(ositiv)o(e\).)17 b(Rational)11
b(arithmetic)g(and)h(relational)f(op)q(erators)g(are)i(pro)o(vided)f(\()p
Fj(+,)i(-,)h(*,)0 546 y(/,)g(+=,)g(-=,)f(*=,)h(/=,)g(==,)g(!=,)f(<,)h(<=,)g
(>,)g(>=)p Fi(\).)26 b(Op)q(erations)18 b(resulting)f(in)g(a)g(rational)f(n)o
(um)o(b)q(er)h(with)g(zero)0 608 y(denominator)c(trigger)h(an)h(exception.)62
745 y(Rationals)f(ma)o(y)g(b)q(e)i(constructed)f(and)g(used)h(in)f(the)g
(follo)o(wing)e(w)o(a)o(ys:)0 882 y Fj(Rational)h(x;)240 944
y Fi(Declares)h(an)g(uninitialized)f(Rational.)0 1016 y Fj(Rational)g(x)h(=)g
(2;)g(Rational)f(y\(2\);)240 1079 y Fi(Set)h(x)g(and)h(y)f(to)g(the)g
(Rational)f(v)m(alue)h(2/1;)0 1151 y Fj(Rational)f(x\(2,)h(3\);)240
1213 y Fi(Sets)g(x)g(to)g(the)g(Rational)f(v)m(alue)i(2/3;)0
1285 y Fj(Rational)e(x)h(=)g(1.2;)240 1347 y Fi(Sets)22 b(x)h(to)f(a)g
(Rational)f(v)m(alue)i(close)f(to)g(1.2.)40 b(An)o(y)23 b(double)g(precision)
f(v)m(alue)g(ma)o(y)f(b)q(e)i(used)240 1409 y(to)18 b(construct)g(a)h
(Rational.)28 b(The)19 b(Rational)f(will)f(p)q(ossess)i(exactly)f(as)g(m)o
(uc)o(h)f(precision)i(as)f(the)240 1472 y(double.)34 b(Double)20
b(v)m(alues)f(that)h(do)f(not)h(ha)o(v)o(e)f(precise)h(\015oating)f(p)q(oin)o
(t)g(equiv)m(alen)o(ts)h(\(lik)o(e)e(1.2\))240 1534 y(pro)q(duce)e(similarly)
c(imprecise)i(rational)f(v)m(alues.)0 1606 y Fj(Rational)h
(x\(Integer\(123\),)f(Integer\(4567\)\);)240 1668 y Fi(Sets)i(x)g(to)g(the)g
(Rational)f(v)m(alue)i(123/4567.)0 1740 y Fj(Rational)e(u\(x\);)h(Rational)f
(v)h(=)g(x;)240 1802 y Fi(Set)g(u)h(and)f(v)g(to)g(the)g(same)f(v)m(alue)h
(as)g(x.)0 1874 y Fj(double\(Rational)e(x\))240 1937 y Fi(A)k(Rational)f(ma)o
(y)f(b)q(e)j(co)q(erced)g(to)e(a)h(double)g(with)f(p)q(oten)o(tial)g(loss)g
(of)h(precision.)25 b Fj(+)p Fi(/-HUGE)16 b(is)240 1999 y(returned)g(if)e(it)
h(will)f(not)g(\014t.)0 2071 y Fj(Rational)g(abs\(x\))240 2133
y Fi(returns)h(the)g(absolute)g(v)m(alue)g(of)g(x.)0 2205 y
Fj(void)g(x.negate\(\))240 2267 y Fi(negates)g(x.)0 2339 y
Fj(void)g(x.invert\(\))240 2402 y Fi(sets)g(x)g(to)g(1/x.)0
2473 y Fj(int)g(sign\(x\))240 2536 y Fi(returns)g(0)g(if)g(x)g(is)f(zero,)h
(1)g(if)g(p)q(ositiv)o(e,)f(and)h(-1)g(if)g(negativ)o(e.)0
2608 y Fj(Rational)f(sqr\(x\))240 2670 y Fi(returns)h(x)g(*)g(x.)p
eop
%%Page: 64 66
bop 0 -58 a Fi(64)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(Rational)g(pow\(x,)g(Integer)h(y\))240
246 y Fi(returns)g(x)g(to)g(the)g(y)g(p)q(o)o(w)o(er.)0 320
y Fj(Integer)f(x.numerator\(\))240 382 y Fi(returns)h(the)g(n)o(umerator.)0
457 y Fj(Integer)f(x.denominator\(\))240 519 y Fi(returns)h(the)g
(denominator.)0 594 y Fj(Integer)f(floor\(x\))240 656 y Fi(returns)h(the)g
(greatest)f(In)o(teger)i(less)e(than)i(x.)0 731 y Fj(Integer)e(ceil\(x\))240
793 y Fi(returns)h(the)g(least)g(In)o(teger)g(greater)f(than)h(x.)0
868 y Fj(Integer)f(trunc\(x\))240 930 y Fi(returns)h(the)g(In)o(teger)h(part)
e(of)h(x.)0 1005 y Fj(Integer)f(round\(x\))240 1067 y Fi(returns)h(the)g
(nearest)g(In)o(teger)g(to)g(x.)0 1142 y Fj(int)g(compare\(x,)f(y\))240
1204 y Fi(returns)g(a)g(negativ)o(e,)f(zero,)h(or)f(p)q(ositiv)o(e)g(n)o(um)o
(b)q(er)h(signifying)f(whether)h(x)g(is)g(less)f(than,)h(equal)g(to,)240
1267 y(or)h(greater)f(than)h(y)l(.)0 1341 y Fj(ostream)f(<<)h(x;)240
1404 y Fi(prin)o(ts)f(x)i(in)f(the)g(form)e(n)o(um/den,)i(or)f(just)h(n)o(um)
g(if)f(the)h(denominator)f(is)g(one.)0 1478 y Fj(istream)g(>>)h(x;)240
1541 y Fi(reads)f(x)g(in)g(the)g(form)e(n)o(um/den,)i(or)f(just)h(n)o(um)f
(in)h(whic)o(h)g(case)g(the)g(denominator)e(is)i(set)g(to)f(one.)0
1615 y Fj(add\(x,)h(y,)h(z\))240 1678 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o
(y)h(z)g(=)h(x)f Fj(+)g Fi(y)l(.)0 1752 y Fj(sub\(x,)f(y,)h(z\))240
1815 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f(-)g(y)l(.)0
1889 y Fj(mul\(x,)f(y,)h(z\))240 1952 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o
(y)h(z)g(=)h(x)f(*)g(y)l(.)0 2026 y Fj(div\(x,)f(y,)h(z\))240
2089 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f(/)g(y)l(.)0
2163 y Fj(pow\(x,)f(y,)h(z\))240 2226 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o
(y)h(z)g(=)h(p)q(o)o(w\(x,)e(y\).)0 2300 y Fj(negate\(x,)g(z\))240
2363 y Fi(A)h(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(-x.)p
eop
%%Page: 65 67
bop 0 -58 a Fi(Chapter)15 b(20:)k(The)d(Complex)d(class.)1261
b(65)0 183 y Ff(20)41 b(The)27 b(Complex)f(class.)62 369 y
Fi(Class)19 b Fj(Complex)f Fi(is)h(implemen)o(ted)f(in)h(a)g(w)o(a)o(y)g
(similar)e(to)h(that)h(describ)q(ed)i(b)o(y)e(Stroustrup.)33
b(In)20 b(k)o(eeping)0 431 y(with)15 b(libg)p Fj(++)g Fi(con)o(v)o(en)o
(tions,)g(the)h(class)g(is)f(named)g Fj(Complex)p Fi(,)g(not)h
Fj(complex)p Fi(.)21 b(Complex)15 b(arithmetic)e(and)j(rela-)0
494 y(tional)c(op)q(erators)h(are)g(pro)o(vided)g(\()p Fj(+,)i(-,)g(*,)f(/,)h
(+=,)g(-=,)g(*=,)g(/=,)f(==,)h(!=)p Fi(\).)k(A)o(ttempted)12
b(division)g(b)o(y)i(\(0,)f(0\))0 556 y(triggers)h(an)h(exception.)62
693 y(Complex)f(n)o(um)o(b)q(ers)g(ma)o(y)g(b)q(e)i(constructed)f(and)g(used)
h(in)f(the)h(follo)o(wing)c(w)o(a)o(ys:)0 830 y Fj(Complex)i(x;)240
892 y Fi(Declares)h(an)g(uninitialized)f(Complex.)0 967 y Fj(Complex)g(x)h(=)
g(2;)g(Complex)f(y\(2.0\);)240 1029 y Fi(Set)h(x)g(and)h(y)f(to)g(the)g
(Complex)e(v)m(alue)j(\(2.0,)d(0.0\);)0 1103 y Fj(Complex)h(x\(2,)h(3\);)240
1166 y Fi(Sets)g(x)g(to)g(the)g(Complex)f(v)m(alue)h(\(2,)f(3\);)0
1240 y Fj(Complex)g(u\(x\);)h(Complex)f(v)h(=)g(x;)240 1302
y Fi(Set)g(u)h(and)f(v)g(to)g(the)g(same)f(v)m(alue)h(as)g(x.)0
1377 y Fj(double)f(real\(Complex&)g(x\);)240 1439 y Fi(returns)h(the)g(real)g
(part)f(of)h(x.)0 1514 y Fj(double)f(imag\(Complex&)g(x\);)240
1576 y Fi(returns)h(the)g(imaginary)e(part)h(of)h(x.)0 1650
y Fj(double)f(abs\(Complex&)g(x\);)240 1713 y Fi(returns)h(the)g(magnitude)f
(of)h(x.)0 1787 y Fj(double)f(norm\(Complex&)g(x\);)240 1849
y Fi(returns)h(the)g(square)g(of)g(the)g(magnitude)f(of)h(x.)0
1924 y Fj(double)f(arg\(Complex&)g(x\);)240 1986 y Fi(returns)h(the)g
(argumen)o(t)f(\(amplitude\))f(of)i(x.)0 2061 y Fj(Complex)f(polar\(double)g
(r,)h(double)f(t)h(=)g(0.0\);)240 2123 y Fi(returns)g(a)g(Complex)f(with)g
(abs)h(of)g(r)g(and)g(arg)g(of)f(t.)0 2197 y Fj(Complex)g(conj\(Complex&)g
(x\);)240 2260 y Fi(returns)h(the)g(complex)f(conjugate)h(of)g(x.)0
2334 y Fj(Complex)f(cos\(Complex&)g(x\);)240 2396 y Fi(returns)h(the)g
(complex)f(cosine)h(of)g(x.)0 2471 y Fj(Complex)f(sin\(Complex&)g(x\);)240
2533 y Fi(returns)h(the)g(complex)f(sine)i(of)e(x.)0 2608 y
Fj(Complex)g(cosh\(Complex&)g(x\);)240 2670 y Fi(returns)h(the)g(complex)f(h)
o(yp)q(erb)q(olic)i(cosine)f(of)g(x.)p eop
%%Page: 66 68
bop 0 -58 a Fi(66)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(Complex)g(sinh\(Complex&)g(x\);)240
246 y Fi(returns)h(the)g(complex)f(h)o(yp)q(erb)q(olic)i(sine)f(of)g(x.)0
320 y Fj(Complex)f(exp\(Complex&)g(x\);)240 382 y Fi(returns)h(the)g(exp)q
(onen)o(tial)g(of)g(x.)0 457 y Fj(Complex)f(log\(Complex&)g(x\);)240
519 y Fi(returns)h(the)g(natural)g(log)f(of)h(x.)0 594 y Fj(Complex)f
(pow\(Complex&)g(x,)h(long)f(p\);)240 656 y Fi(returns)h(x)g(raised)g(to)f
(the)i(p)f(p)q(o)o(w)o(er.)0 731 y Fj(Complex)f(pow\(Complex&)g(x,)h
(Complex&)f(p\);)240 793 y Fi(returns)h(x)g(raised)g(to)f(the)i(p)f(p)q(o)o
(w)o(er.)0 868 y Fj(Complex)f(sqrt\(Complex&)g(x\);)240 930
y Fi(returns)h(the)g(square)g(ro)q(ot)g(of)g(x.)0 1005 y Fj(ostream)f(<<)h
(x;)240 1067 y Fi(prin)o(ts)f(x)i(in)f(the)g(form)e(\(re,)i(im\).)0
1142 y Fj(istream)f(>>)h(x;)240 1204 y Fi(reads)h(x)g(in)g(the)h(form)d
(\(re,)i(im\),)e(or)i(just)f(\(re\))h(or)g(re)g(in)g(whic)o(h)g(case)g(the)g
(imaginary)e(part)h(is)h(set)240 1267 y(to)f(zero.)p eop
%%Page: 67 69
bop 0 -58 a Fi(Chapter)15 b(21:)k(Fixed)c(precision)g(n)o(um)o(b)q(ers)1164
b(67)0 183 y Ff(21)41 b(Fixed)25 b(precision)h(n)n(um)n(b)r(ers)62
384 y Fi(Classes)15 b Fj(Fix16)p Fi(,)g Fj(Fix24)p Fi(,)g Fj(Fix32)p
Fi(,)g(and)h Fj(Fix48)g Fi(supp)q(ort)g(op)q(erations)f(on)h(16,)f(24,)g(32,)
g(or)h(48)f(bit)g(quan)o(tities)0 446 y(that)h(are)f(considered)i(as)f(real)f
(n)o(um)o(b)q(ers)h(in)g(the)g(range)g([-1,)g Fj(+)p Fi(1\).)22
b(Suc)o(h)17 b(n)o(um)o(b)q(ers)e(are)h(often)g(encoun)o(tered)h(in)0
509 y(digital)e(signal)h(pro)q(cessing)h(applications.)24 b(The)18
b(classes)e(ma)o(y)g(b)q(e)h(b)q(e)h(used)g(in)f(isolation)e(or)h(together.)
25 b(Class)0 571 y Fj(Fix32)13 b Fi(op)q(erations)h(are)f(en)o(tirely)g
(self-con)o(tained.)19 b(Class)13 b Fj(Fix16)h Fi(op)q(erations)f(are)h
(self-con)o(tained)f(except)i(that)0 633 y(the)c(m)o(ultiplicatio)o(n)e(op)q
(eration)h Fj(Fix16)k(*)h(Fix16)c Fi(returns)g(a)g Fj(Fix32)p
Fi(.)17 b Fj(Fix24)11 b Fi(and)g Fj(Fix48)f Fi(are)h(similarly)d(related.)62
773 y(The)k(standard)e(arithmetic)f(and)i(relational)e(op)q(erations)h(are)h
(supp)q(orted)h(\()p Fj(=,)i(+,)h(-,)g(*,)g(/,)g(<<,)g(>>,)f(+=,)h(-)0
835 y(=,)g(*=,)g(/=,)f(<<=,)h(>>=,)g(==,)f(!=,)h(<,)g(<=,)g(>,)g(>=)p
Fi(\))10 b(All)g(op)q(erations)h(include)g(pro)o(visions)f(for)g(sp)q(ecial)h
(handling)0 897 y(in)19 b(cases)f(where)h(the)g(result)f(exceeds)i
Fj(+)p Fi(/-)e(1.0.)30 b(There)19 b(are)f(t)o(w)o(o)g(cases)g(that)h(ma)o(y)e
(b)q(e)i(handled)g(separately:)0 960 y(\\o)o(v)o(er\015o)o(w")14
b(where)i(the)g(results)f(of)g(addition)g(and)h(subtraction)e(op)q(erations)h
(go)g(out)g(of)h(range,)f(and)h(all)e(other)0 1022 y(\\range)i(errors")h(in)f
(whic)o(h)h(resulting)g(v)m(alues)g(go)f(o\013-scale)h(\(as)f(with)g
(division)g(op)q(erations,)h(and)g(assignmen)o(t)0 1084 y(or)d
(initialization)d(with)j(o\013-scale)f(v)m(alues\).)19 b(In)c(signal)e(pro)q
(cessing)i(applications,)d(it)i(is)g(often)g(useful)g(to)g(handle)0
1146 y(these)h(t)o(w)o(o)f(cases)h(di\013eren)o(tly)l(.)k(Handlers)c(tak)o(e)
f(one)h(argumen)o(t,)e(a)i(reference)h(to)e(the)h(in)o(teger)g(man)o(tissa)d
(of)j(the)0 1209 y(o\013ending)i(v)m(alue,)h(whic)o(h)g(ma)o(y)e(then)h(b)q
(e)i(manipulated.)25 b(In)18 b(cases)g(of)f(o)o(v)o(er\015o)o(w,)g(this)g(v)m
(alue)h(is)f(the)g(result)g(of)0 1271 y(the)g(\(in)o(teger\))f(arithmetic)f
(computation)h(on)h(the)g(man)o(tissa;)f(in)h(others)g(it)f(is)h(a)g(fully)g
(saturated)g(\(i.e.,)f(most)0 1333 y(p)q(ositiv)o(e)h(or)h(most)e(negativ)o
(e\))h(v)m(alue.)30 b(Handling)17 b(ma)o(y)g(b)q(e)i(reset)f(to)f(an)o(y)h
(of)g(sev)o(eral)f(pro)o(vided)h(functions)g(or)0 1395 y(an)o(y)d(other)f
(user-de\014ned)j(function)e(via)g Fj(set_overflow_handler)d
Fi(and)j Fj(set_range_error_handler)p Fi(.)i(The)0 1458 y(pro)o(vided)j
(functions)g(for)f Fj(Fix16)g Fi(are)h(as)g(follo)o(ws)e(\(corresp)q(onding)h
(functions)h(are)g(also)f(supp)q(orted)h(for)g(the)0 1520 y(others\).)0
1660 y Fj(Fix16_overflow_saturate)240 1722 y Fi(The)d(default)g(o)o(v)o
(er\015o)o(w)e(handler.)25 b(Results)17 b(are)g(\\saturated":)k(p)q(ositiv)o
(e)16 b(results)g(are)h(set)g(to)f(the)240 1784 y(largest)e(represen)o(table)
h(v)m(alue)g(\(binary)g(0.111111...)o(\),)d(and)j(negativ)o(e)f(v)m(alues)i
(to)e(-1.0.)0 1862 y Fj(Fix16_ignore)240 1924 y Fi(P)o(erforms)h(no)i
(action.)24 b(F)l(or)16 b(o)o(v)o(er\015o)o(w,)g(this)g(will)g(allo)o(w)f
(addition)h(and)h(subtraction)f(op)q(erations)240 1986 y(to)h(\\wrap)g
(around")h(in)f(the)h(same)e(manner)h(as)g(in)o(teger)g(arithmetic,)f(and)i
(for)f(saturation,)f(will)240 2049 y(lea)o(v)o(e)e(v)m(alues)i(saturated.)0
2126 y Fj(Fix16_overflow_warning_sat)o(urate)240 2188 y Fi(Prin)o(ts)e(a)h(w)
o(arning)f(message)g(on)h(standard)g(error,)f(then)h(saturates)f(the)i
(results.)0 2266 y Fj(Fix16_warning)240 2328 y Fi(The)11 b(default)g(range)p
590 2328 14 2 v 16 w(error)g(handler.)18 b(Prin)o(ts)10 b(a)h(w)o(arning)f
(message)g(on)h(standard)f(error;)i(otherwise)240 2390 y(lea)o(ving)i(the)h
(argumen)o(t)f(unmo)q(di\014ed.)0 2468 y Fj(Fix16_abort)240
2530 y Fi(prin)o(ts)g(an)i(error)e(message)g(on)h(standard)g(error,)f(then)h
(ab)q(orts)g(execution.)62 2670 y(In)h(addition)e(to)h(arithmetic)e(op)q
(erations,)h(the)h(follo)o(wing)e(are)i(pro)o(vided:)p eop
%%Page: 68 70
bop 0 -58 a Fi(68)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(Fix16)g(a)h(=)g(0.5;)240
246 y Fi(Constructs)10 b(\014xed)h(precision)g(ob)s(jects)f(from)f(double)i
(precision)f(v)m(alues.)18 b(A)o(ttempting)9 b(to)h(initialize)240
308 y(to)k(a)h(v)m(alue)g(outside)f(the)h(range)g(in)o(v)o(ok)o(es)e(the)i
(range)p 1155 308 14 2 v 16 w(error)f(handler,)h(except,)g(as)f(a)h(con)o(v)o
(enience,)240 370 y(initialization)f(to)j(1.0)f(sets)h(the)h(v)m(ariable)e
(to)h(the)g(most)f(p)q(ositiv)o(e)g(represen)o(table)h(v)m(alue)h(\(binary)
240 432 y(0.1111111...)o(\))f(without)d(in)o(v)o(oking)g(the)h(handler.)0
507 y Fj(short&)f(mantissa\(a\);)g(long&)g(mantissa\(b\);)240
569 y Fi(return)g(a)f(*)g(p)q(o)o(w\(2,)g(15\))g(or)g(b)h(*)f(p)q(o)o(w\(2,)g
(31\))g(as)g(an)h(in)o(teger.)k(These)d(are)e(returned)h(b)o(y)g(reference,)
240 632 y(to)h(enable)g(\\man)o(ual")e(data)h(manipulation.)0
706 y Fj(double)g(value\(a\);)g(double)h(value\(b\);)240 769
y Fi(return)g(a)g(or)g(b)g(as)g(\015oating)f(p)q(oin)o(t)h(n)o(um)o(b)q(ers.)
p eop
%%Page: 69 71
bop 0 -58 a Fi(Chapter)15 b(22:)k(Classes)c(for)f(Bit)h(manipulation)1080
b(69)0 183 y Ff(22)41 b(Classes)26 b(for)h(Bit)g(manipulation)62
372 y Fi(libg)p Fj(++)18 b Fi(pro)o(vides)f(sev)o(eral)h(di\013eren)o(t)g
(classes)f(supp)q(orting)i(the)f(use)h(and)f(manipulation)e(of)i(collections)
f(of)0 434 y(bits)e(in)g(di\013eren)o(t)f(w)o(a)o(ys.)39 571
y Fh(\017)30 b Fi(Class)13 b Fj(Integer)g Fi(pro)o(vides)g(\\in)o(teger")f
(seman)o(tics.)18 b(It)c(supp)q(orts)g(manipulation)d(of)i(bits)h(in)f(w)o(a)
o(ys)g(that)g(are)90 634 y(often)i(useful)g(when)g(treating)f(bit)g(arra)o
(ys)g(as)g(n)o(umerical)g(\(in)o(teger\))f(quan)o(tities.)19
b(This)14 b(class)h(is)f(describ)q(ed)90 696 y(elsewhere.)39
771 y Fh(\017)30 b Fi(Class)12 b Fj(BitSet)h Fi(pro)o(vides)f(\\set")h(seman)
o(tics.)k(It)c(supp)q(orts)h(op)q(erations)e(useful)i(when)f(treating)f
(collections)90 833 y(of)j(bits)f(as)h(represen)o(ting)g(p)q(oten)o(tially)f
(in\014nite)h(sets)f(of)h(in)o(tegers.)39 908 y Fh(\017)30
b Fi(Class)14 b Fj(BitSet32)g Fi(supp)q(orts)h(\014xed-length)h(BitSets)f
(holding)g(exactly)f(32)h(bits.)39 983 y Fh(\017)30 b Fi(Class)14
b Fj(Bitset256)p Fi(supp)q(orts)g(\014xed-length)i(BitSets)f(holding)f
(exactly)h(256)f(bits.)39 1058 y Fh(\017)30 b Fi(Class)11 b
Fj(BitString)g Fi(pro)o(vides)h(\\string")e(\(or)i(\\v)o(ector"\))e(seman)o
(tics.)17 b(It)c(supp)q(orts)f(op)q(erations)f(useful)h(when)90
1121 y(treating)i(collections)g(of)h(bits)f(as)h(strings)f(of)h(zeros)g(and)g
(ones.)62 1258 y(These)h(classes)f(also)f(di\013er)g(in)h(the)h(follo)o(wing)
c(w)o(a)o(ys:)39 1395 y Fh(\017)30 b Fi(BitSets)21 b(are)g(logically)e
(in\014nite.)38 b(Their)21 b(space)g(is)g(dynamically)e(altered)i(to)f
(adjust)h(to)g(the)g(smallest)90 1458 y(n)o(um)o(b)q(er)f(of)h(consecutiv)o
(e)f(bits)h(actually)e(required)i(to)f(represen)o(t)h(the)g(sets.)37
b(In)o(tegers)20 b(also)g(ha)o(v)o(e)h(this)90 1520 y(prop)q(ert)o(y)l(.)f
(BitStrings)13 b(are)i(logically)e(\014nite,)h(but)h(their)g(sizes)f(are)h
(in)o(ternally)e(dynamically)g(managed)h(to)90 1582 y(main)o(tain)i(prop)q
(er)j(length.)30 b(This)18 b(means)g(that,)g(for)g(example,)g(BitStrings)f
(are)h(concatenatable)g(while)90 1644 y(BitSets)d(and)g(In)o(tegers)g(are)g
(not.)39 1719 y Fh(\017)30 b Fi(BitSet32)18 b(and)h(BitSet256)e(ha)o(v)o(e)h
(precisely)h(the)f(same)g(prop)q(erties)g(as)g(BitSets,)h(except)g(that)f
(they)h(use)90 1782 y(constan)o(t)14 b(\014xed)i(length)f(bit)g(v)o(ectors.)
39 1857 y Fh(\017)30 b Fi(While)11 b(all)f(classes)g(supp)q(ort)h(basic)g
(unary)g(and)h(binary)e(op)q(erations)h Fj(~,)k(&,)f(|,)h(^,)g(-)p
Fi(,)d(the)f(seman)o(tics)e(di\013er.)90 1919 y(BitSets)14
b(p)q(erform)g(bit)g(op)q(erations)g(that)g(precisely)g(mirror)e(those)j(for)
f(in\014nite)g(sets.)20 b(F)l(or)14 b(example,)f(com-)90 1981
y(plemen)o(ting)d(an)i(empt)o(y)e(BitSet)h(returns)h(one)f(represen)o(ting)h
(an)f(in\014nite)h(n)o(um)o(b)q(er)f(of)g(set)g(bits.)18 b(Op)q(erations)90
2044 y(on)f(BitStrings)f(and)i(In)o(tegers)f(op)q(erate)h(only)f(on)g(those)g
(bits)g(actually)f(presen)o(t)i(in)f(the)g(represen)o(tation.)90
2106 y(F)l(or)c(BitStrings)g(and)g(In)o(tegers,)h(the)g(the)g
Fj(&)f Fi(op)q(eration)g(returns)h(a)f(BitString)f(with)i(a)f(length)g(equal)
h(to)f(the)90 2168 y(minim)o(um)e(length)k(of)g(the)g(op)q(erands,)g(and)h
Fj(|,)f(^)g Fi(return)g(one)g(with)g(length)g(of)f(the)i(maxim)n(um.)39
2243 y Fh(\017)30 b Fi(Only)15 b(BitStrings)f(supp)q(ort)i(substring)e
(extraction)g(and)i(bit)e(pattern)h(matc)o(hing.)0 2470 y Fe(22.1)32
b(BitSet)62 2608 y Fi(Bitsets)15 b(are)g(ob)s(jects)f(that)h(con)o(tain)g
(logically)e(in\014nite)i(sets)g(of)g(nonnegativ)o(e)g(in)o(tegers.)k
(Represen)o(tational)0 2670 y(details)14 b(are)i(discussed)g(in)f(the)g
(Represen)o(tation)h(c)o(hapter.)k(Because)c(they)g(are)f(logically)e
(in\014nite,)i(all)f(BitSets)p eop
%%Page: 70 72
bop 0 -58 a Fi(70)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y(p)q(ossess)j(a)f(trailing,)e(in\014nitely)
i(replicated)h(0)f(or)g(1)g(bit,)g(called)g(the)h(\\virtual)e(bit",)h(and)g
(indicated)h(via)f(0*)f(or)0 246 y(1*.)62 382 y(BitSet32)j(and)h(BitSet256)e
(ha)o(v)o(e)h(they)h(same)e(prop)q(erties,)i(except)g(they)g(are)f(of)g
(\014xed)i(length,)e(and)h(th)o(us)0 445 y(ha)o(v)o(e)c(no)g(virtual)f(bit.)
62 582 y(BitSets)h(ma)o(y)e(b)q(e)j(constructed)g(as)e(follo)o(ws:)0
719 y Fj(BitSet)g(a;)34 b Fi(declares)15 b(an)g(empt)o(y)f(BitSet.)0
791 y Fj(BitSet)g(a)h(=)g(atoBitSet\("001000"\);)240 853 y
Fi(sets)h(a)g(to)f(the)i(BitSet)f(0010*,)e(reading)i(left-to-righ)o(t.)21
b(The)c(\\0*")e(indicates)g(that)h(the)g(set)g(ends)240 916
y(with)f(an)g(in\014nite)g(n)o(um)o(b)q(er)f(of)h(zero)g(\(clear\))f(bits.)0
988 y Fj(BitSet)g(a)h(=)g(atoBitSet\("00101*"\);)240 1050 y
Fi(sets)c(a)h(to)f(the)h(BitSet)f(00101*,)f(where)i(\\1*")f(means)g(that)g
(the)h(set)f(ends)h(with)f(an)h(in\014nite)g(n)o(um)o(b)q(er)240
1112 y(of)j(one)g(\(set\))f(bits.)0 1185 y Fj(BitSet)g(a)h(=)g
(longtoBitSet\(\(long\)23\);)240 1247 y Fi(sets)g(a)g(to)f(the)i(BitSet)e
(111010*,)f(the)j(binary)e(represen)o(tation)h(of)f(decimal)g(23.)0
1319 y Fj(BitSet)g(a)h(=)g(utoBitSet\(\(unsigned\)23\);)240
1382 y Fi(sets)g(a)g(to)f(the)i(BitSet)e(111010*,)f(the)j(binary)e(represen)o
(tation)h(of)f(decimal)g(23.)62 1519 y(The)21 b(follo)o(wing)e(functions)h
(and)h(op)q(erators)e(are)i(pro)o(vided)f(\(Assume)g(the)h(declaration)e(of)h
(BitSets)g(a)h(=)0 1581 y(0011010*,)13 b(b)i(=)h(101101*,)c(throughout,)j(as)
f(examples\).)0 1718 y Fj(~a)192 b Fi(returns)15 b(the)g(complemen)o(t)e(of)i
(a,)f(or)h(1100101*)e(in)i(this)g(case.)0 1790 y Fj(a.complement\(\))240
1852 y Fi(sets)g(a)g(to)f Fj(~)p Fi(a.)0 1925 y Fj(a)h(&)g(b;)g(a)g(&=)g(b;)
240 1987 y Fi(returns)g(a)g(in)o(tersected)g(with)f(b,)h(or)g(0011010*.)0
2059 y Fj(a)g(|)g(b;)g(a)g(|=)g(b;)240 2122 y Fi(returns)g(a)g(unioned)h
(with)e(b,)h(or)g(1011111*.)0 2194 y Fj(a)g(-)g(b;)g(a)g(-=)g(b;)240
2256 y Fi(returns)g(the)g(set)g(di\013erence)h(of)e(a)h(and)h(b,)f(or)f
(000010*.)0 2329 y Fj(a)h(^)g(b;)g(a)g(^=)g(b;)240 2391 y Fi(returns)g(the)g
(symmetric)e(di\013erence)i(of)g(a)g(and)g(b,)g(or)g(1000101*.)0
2463 y Fj(a.empty\(\))240 2525 y Fi(returns)g(true)g(if)g(a)g(is)f(an)i(empt)
o(y)d(set.)0 2598 y Fj(a)i(==)g(b;)90 b Fi(returns)15 b(true)g(if)g(a)g(and)g
(b)g(con)o(tain)g(the)g(same)f(set.)0 2670 y Fj(a)h(<=)g(b;)90
b Fi(returns)15 b(true)g(if)g(a)g(is)f(a)h(subset)h(of)e(b.)p
eop
%%Page: 71 73
bop 0 -58 a Fi(Chapter)15 b(22:)k(Classes)c(for)f(Bit)h(manipulation)1080
b(71)0 183 y Fj(a)15 b(<)g(b;)114 b Fi(returns)15 b(true)g(if)g(a)g(is)f(a)h
(prop)q(er)h(subset)f(of)g(b;)0 256 y Fj(a)g(!=)g(b;)g(a)g(>=)g(b;)g(a)g(>)g
(b;)240 319 y Fi(are)g(the)g(con)o(v)o(erses)g(of)g(the)g(ab)q(o)o(v)o(e.)0
392 y Fj(a.set\(7\))48 b Fi(sets)15 b(the)g(7th)g(\(coun)o(ting)f(from)g(0\))
g(bit)h(of)g(a,)f(setting)g(a)h(to)g(001111010*)0 465 y Fj(a.clear\(2\))240
527 y Fi(clears)g(the)g(2nd)g(bit)g(bit)g(of)f(a,)h(setting)f(a)h(to)g
(00011110*)0 600 y Fj(a.clear\(\))240 662 y Fi(clears)g(all)f(bits)g(of)h(a;)
0 735 y Fj(a.set\(\))72 b Fi(sets)15 b(all)f(bits)h(of)f(a;)0
808 y Fj(a.invert\(0\))240 870 y Fi(complemen)o(ts)f(the)i(0th)g(bit)g(of)f
(a,)h(setting)f(a)h(to)f(10011110*)0 943 y Fj(a.set\(0,1\))240
1006 y Fi(sets)h(the)g(0th)g(through)g(1st)g(bits)f(of)h(a,)g(setting)f(a)h
(to)g(110111110*)d(The)j(t)o(w)o(o-argumen)o(t)e(v)o(ersions)240
1068 y(of)i(clear)f(and)i(in)o(v)o(ert)e(are)h(similar.)0 1141
y Fj(a.test\(3\))240 1203 y Fi(returns)g(true)g(if)g(the)g(3rd)g(bit)g(of)g
(a)f(is)h(set.)0 1276 y Fj(a.test\(3,)f(5\))240 1339 y Fi(returns)h(true)g
(if)g(an)o(y)g(of)f(bits)h(3)g(through)g(5)g(are)g(set.)0 1412
y Fj(int)g(i)g(=)g(a[3];)f(a[3])h(=)g(0;)240 1474 y Fi(The)f(subscript)g(op)q
(erator)g(allo)o(ws)e(bits)i(to)f(b)q(e)i(insp)q(ected)g(and)f(c)o(hanged)h
(via)e(standard)h(subscript)240 1536 y(seman)o(tics,)f(using)i(a)g(friend)g
(class)f(BitSetBit.)19 b(The)c(use)h(of)e(the)i(subscript)f(op)q(erator)f
(a[i])g(rather)240 1598 y(than)h(a.test\(i\))e(requires)i(somewhat)e(greater)
i(o)o(v)o(erhead.)0 1671 y Fj(a.first\(1\))f(or)h(a.first\(\))240
1734 y Fi(returns)g(the)g(index)h(of)f(the)g(\014rst)g(set)g(bit)f(of)h(a)g
(\(2)g(in)g(this)f(case\),)h(or)f(-1)h(if)g(no)g(bits)g(are)g(set.)0
1807 y Fj(a.first\(0\))240 1869 y Fi(returns)g(the)g(index)h(of)f(the)g
(\014rst)g(clear)f(bit)h(of)g(a)g(\(0)f(in)h(this)g(case\),)f(or)h(-1)g(if)g
(no)g(bits)g(are)g(clear.)0 1942 y Fj(a.next\(2,)f(1\))h(or)g(a.next\(2\))240
2004 y Fi(returns)21 b(the)f(index)h(of)f(the)h(next)g(bit)f(after)g(p)q
(osition)g(2)g(that)g(is)g(set)g(\(3)g(in)h(this)f(case\))g(or)g(-1.)240
2067 y Fj(first)14 b Fi(and)h Fj(next)f Fi(ma)o(y)f(b)q(e)j(used)f(as)g
(iterators,)d(as)j(in)f Fj(for)h(\(int)g(i)g(=)g(a.first\(\);)e(i)i(>=)g(0;)g
(i)g(=)240 2129 y(a.next\(i\)\)...)p Fi(.)0 2202 y Fj(a.last\(1\))240
2264 y Fi(returns)g(the)g(index)h(of)f(the)g(righ)o(tmost)d(set)j(bit,)f(or)h
(-1)g(if)g(there)g(or)g(no)g(set)g(bits)f(or)h(all)f(set)h(bits.)0
2337 y Fj(a.previous\(3,)e(0\))240 2399 y Fi(returns)i(the)g(index)h(of)f
(the)g(previous)g(clear)g(bit)f(b)q(efore)i(p)q(osition)e(3.)0
2472 y Fj(a.count\(1\))240 2535 y Fi(returns)h(the)g(n)o(um)o(b)q(er)g(of)g
(set)g(bits)f(in)h(a,)g(or)f(-1)h(if)g(there)g(are)g(an)g(in\014nite)h(n)o
(um)o(b)q(er.)0 2608 y Fj(a.virtual_bit\(\))240 2670 y Fi(returns)f(the)g
(trailing)f(\(in\014nitely)g(replicated\))g(bit)h(of)g(a.)p
eop
%%Page: 72 74
bop 0 -58 a Fi(72)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(a)h(=)g(atoBitSet\("ababX",)e('a',)h
('b',)h('X'\);)240 246 y Fi(con)o(v)o(erts)h(the)i(c)o(har*)e(string)g(in)o
(to)h(a)f(bitset,)h(with)g('a')f(denoting)g(false,)h('b')g(denoting)g(true,)g
(and)240 308 y('X')d(denoting)h(in\014nite)g(replication.)0
378 y Fj(char*)f(s)h(=)g(BitSettoa\(a,)f('-',)h('.',)f(0\))240
441 y Fi(returns)i(a)g(p)q(oin)o(ter)g(to)f(a)h(\(static\))e(lo)q(cation)h
(holding)h(a)g(represen)o(ted)h(with)e('-')h(for)f(falses,)h('.')22
b(for)240 503 y(trues,)15 b(and)g(no)g(replication)f(mark)o(er.)0
573 y Fj(diff\(x,)g(y,)h(z\))240 636 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o
(y)h(z)g(=)h(x)f(-)g(y)l(.)0 706 y Fj(and\(x,)f(y,)h(z\))240
769 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f(&)g(y)l(.)0
839 y Fj(or\(x,)f(y,)h(z\))240 901 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)
h(z)g(=)h(x)f Fj(|)g Fi(y)l(.)0 972 y Fj(xor\(x,)f(y,)h(z\))240
1034 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f
Fj(^)g Fi(y)l(.)0 1105 y Fj(complement\(x,)e(z\))240 1167 y
Fi(A)i(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h Fj(~)p Fi(x.)0
1375 y Fe(22.2)32 b(BitString)62 1512 y Fi(BitStrings)10 b(are)g(ob)s(jects)g
(that)g(con)o(tain)g(arbitrary-length)f(strings)g(of)h(zero)q(es)h(and)g
(ones.)18 b(BitStrings)10 b(p)q(ossess)0 1574 y(some)21 b(features)h(that)f
(mak)o(e)g(them)g(b)q(eha)o(v)o(e)i(lik)o(e)e(sets,)j(and)e(others)g(that)f
(b)q(eha)o(v)o(e)i(as)f(strings.)40 b(They)22 b(are)0 1636
y(useful)g(in)f(applications)f(\(suc)o(h)i(as)f(signature-based)g
(algorithms\))d(where)k(b)q(oth)g(capabilities)e(are)h(needed.)0
1699 y(Represen)o(tational)16 b(details)g(are)h(discussed)h(in)f(the)g
(Represen)o(tation)g(c)o(hapter.)26 b(Most)16 b(capabilities)f(are)i(exact)0
1761 y(analogs)c(of)h(those)f(supp)q(orted)i(in)f(the)g(BitSet)g(and)g
(String)g(classes.)19 b(A)14 b(BitSubString)g(is)f(used)i(with)f(substring)0
1823 y(op)q(erations)d(along)h(the)g(same)f(lines)h(as)f(the)i(String)e
(SubString)h(class.)19 b(A)12 b(BitP)o(attern)f(class)g(is)h(used)h(for)e
(mask)o(ed)0 1885 y(bit)k(pattern)f(searc)o(hing.)62 2022 y(Only)k(a)g
(default)f(constructor)g(is)h(supp)q(orted.)28 b(The)19 b(declaration)d
Fj(BitString)e(a;)k Fi(initializes)e(a)h(to)g(b)q(e)i(an)0
2085 y(empt)o(y)14 b(BitString.)19 b(BitStrings)13 b(ma)o(y)h(often)h(b)q(e)h
(initialized)d(via)i Fj(atoBitString)e Fi(and)j Fj(longtoBitString)p
Fi(.)62 2222 y(Set)i(op)q(erations)g(\()c Fj(~,)h(complement,)f(&,)h(&=,)g
(|,)g(|=,)f(-,)h(^,)g(^=)p Fi(\))i(b)q(eha)o(v)o(e)i(just)f(as)f(the)i
(BitSet)e(v)o(ersions,)0 2284 y(except)d(that)f(there)h(is)f(no)h(\\virtual)e
(bit":)19 b(complemen)o(ting)11 b(complemen)o(ts)g(only)i(those)h(bits)f(in)h
(the)g(BitString,)0 2346 y(and)20 b(all)f(binary)g(op)q(erations)g(across)g
(unequal)h(length)f(BitStrings)g(assume)f(a)i(virtual)e(bit)h(of)h(zero.)33
b(The)20 b Fj(&)0 2408 y Fi(op)q(eration)15 b(returns)g(a)g(BitString)f(with)
h(a)g(length)g(equal)h(to)e(the)i(minim)o(um)11 b(length)16
b(of)f(the)g(op)q(erands,)h(and)f Fj(|,)0 2471 y(^)g Fi(return)g(one)g(with)g
(length)g(of)g(the)g(maxim)o(um)o(.)62 2608 y(Set-based)g(relational)d(op)q
(erations)i(\()p Fj(==,)g(!=,)h(<=,)g(<,)g(>=,)f(>)p Fi(\))g(follo)o(w)e(the)
j(same)e(rules.)19 b(A)14 b(string-lik)o(e)f(lex-)0 2670 y(icographic)f
(comparison)g(function,)h Fj(lcompare)p Fi(,)f(tests)h(the)g(lexicographic)f
(relation)g(b)q(et)o(w)o(een)i(t)o(w)o(o)e(BitStrings.)p eop
%%Page: 73 75
bop 0 -58 a Fi(Chapter)15 b(22:)k(Classes)c(for)f(Bit)h(manipulation)1080
b(73)0 183 y(F)l(or)13 b(example,)g(lcompare\(1100,)e(0101\))h(returns)i(1,)f
(since)i(the)f(\014rst)f(BitString)g(starts)f(with)i(1)f(and)h(the)g(second)0
246 y(with)h(0.)62 385 y(Individual)23 b(bit)f(setting,)h(testing,)g(and)g
(iterator)e(op)q(erations)h(\()p Fj(set,)14 b(clear,)g(invert,)g(test,)h
(first,)0 448 y(next,)f(last,)h(previous)p Fi(\))20 b(are)h(also)f(lik)o(e)h
(those)g(for)g(BitSets.)38 b(BitStrings)20 b(are)h(automatically)d(expanded)0
510 y(when)e(setting)e(bits)h(at)f(p)q(ositions)g(greater)h(than)g(their)f
(curren)o(t)h(length.)62 650 y(The)g(string-based)f(capabilities)f(are)i
(just)f(as)g(those)g(for)g(class)g(String.)19 b(BitStrings)14
b(ma)o(y)f(b)q(e)i(concatenated)0 712 y(\()p Fj(+,)g(+=)p Fi(\),)k(searc)o
(hed)g(\()p Fj(index,)14 b(contains,)g(matches)p Fi(\),)k(and)h(extracted)g
(in)o(to)f(BitSubStrings)h(\()p Fj(before,)13 b(at,)0 774 y(after)p
Fi(\))18 b(whic)o(h)h(ma)o(y)f(b)q(e)i(assigned)e(and)i(otherwise)e
(manipulated.)31 b(Other)19 b(string-based)g(utilit)o(y)e(functions)0
836 y(\()p Fj(reverse,)d(common_prefix,)f(common_suffix)p Fi(\))h(are)i(also)
f(pro)o(vided.)23 b(These)17 b(ha)o(v)o(e)f(the)h(same)e(capabilities)0
899 y(and)g(descriptions)g(as)g(those)g(for)f(Strings.)62 1038
y(String-orien)o(ted)f(op)q(erations)g(can)g(also)g(b)q(e)h(p)q(erformed)f
(with)g(a)h(mask)e(via)h(class)g(BitP)o(attern.)18 b(BitP)o(atterns)0
1101 y(consist)e(of)h(t)o(w)o(o)e(BitStrings,)h(a)h(pattern)f(and)h(a)g
(mask.)23 b(On)18 b(searc)o(hing)e(and)h(matc)o(hing,)e(bits)i(in)f(the)h
(pattern)0 1163 y(that)g(corresp)q(ond)h(to)f(0)g(bits)g(in)h(the)g(mask)e
(are)h(ignored.)27 b(\(The)17 b(mask)f(ma)o(y)g(b)q(e)j(shorter)e(than)g(the)
h(pattern,)0 1225 y(in)i(whic)o(h)g(case)g(trailing)e(mask)g(bits)h(are)h
(assumed)f(to)h(b)q(e)g(0\).)34 b(The)20 b(pattern)f(and)i(mask)d(are)i(b)q
(oth)g(public)0 1287 y(v)m(ariables,)14 b(and)i(ma)o(y)d(b)q(e)j
(individually)e(sub)s(jected)h(to)g(other)g(bit)f(op)q(erations.)62
1427 y(Con)o(v)o(erting)h(to)h(c)o(har*)g(and)g(prin)o(ting)f(\()p
Fj(\(atoBitString,)e(BitStringtoa,)h(atoBitPattern,)f(BitPat-)0
1490 y(terntoa,)h(ostream)g(<<\))p Fi(\))i(are)g(also)g(as)g(in)g(BitSets,)g
(except)h(that)f(no)h(virtual)e(bit)h(is)g(used,)h(and)g(an)f('X')g(in)g(a)0
1552 y(BitP)o(attern)e(means)g(that)g(the)i(pattern)e(bit)h(is)g(mask)o(ed)f
(out.)62 1692 y(The)i(follo)o(wing)d(features)h(are)h(unique)h(to)f
(BitStrings.)62 1831 y(Assume)d(declarations)g(of)g(BitString)g(a)g(=)h
(atoBitString\()p Fj(")p Fi(01010)o(110)p Fj(")p Fi(\))c(and)k(b)g(=)g
(atoBitST)l(ring\()p Fj(")p Fi(1101)p Fj(")p Fi(\))o(.)0 1971
y Fj(a)i(=)g(b)g(+)g(c;)36 b Fi(Sets)15 b(a)g(to)g(the)g(concatenation)f(of)h
(b)h(and)f(c;)0 2049 y Fj(a)g(=)g(b)g(+)g(0;)g(a)g(=)g(b)g(+)g(1;)240
2111 y Fi(sets)g(a)g(to)f(b,)h(app)q(ended)i(with)e(a)g(zero)g(\(one\).)0
2188 y Fj(a)g(+=)g(b;)90 b Fi(app)q(ends)16 b(b)g(to)e(a;)0
2266 y Fj(a)h(+=)g(0;)g(a)g(+=)g(1;)240 2328 y Fi(app)q(ends)h(a)f(zero)g
(\(one\))g(to)f(a.)0 2406 y Fj(a)h(<<)g(2;)g(a)g(<<=)g(2)240
2468 y Fi(return)c(a)f(with)h(2)f(zeros)h(prep)q(ended,)i(setting)d(a)h(to)f
(0001010110.)16 b(\(Note)10 b(the)h(necessary)g(confusion)240
2530 y(of)j Fj(<<)h Fi(and)g Fj(>>)f Fi(op)q(erators.)19 b(F)l(or)14
b(consistency)g(with)g(the)h(in)o(teger)f(v)o(ersions,)g Fj(<<)g
Fi(shifts)g(lo)o(w)f(bits)i(to)240 2592 y(high,)g(ev)o(en)g(though)g(they)g
(are)g(prin)o(ted)g(lo)o(w)f(bits)h(\014rst.\))0 2670 y Fj(a)g(>>)g(3;)g(a)g
(>>=)g(3)p eop
%%Page: 74 76
bop 0 -58 a Fi(74)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)240 183 y(return)h(a)g(with)g(the)g(\014rst)g(3)g
(bits)f(deleted,)h(setting)g(a)f(to)h(10110.)0 258 y Fj(a.left_trim\(0\))240
320 y Fi(deletes)g(all)f(0)h(bits)g(on)g(the)g(left)g(of)g(a,)f(setting)g(a)h
(to)g(1010110.)0 395 y Fj(a.right_trim\(0\))240 457 y Fi(deletes)g(all)f
(trailing)g(0)g(bits)h(of)g(a,)f(setting)h(a)g(to)f(0101011.)0
532 y Fj(cat\(x,)g(y,)h(z\))240 594 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o
(y)h(z)g(=)h(x)f Fj(+)g Fi(y)l(.)0 669 y Fj(diff\(x,)f(y,)h(z\))240
731 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f(-)g(y)l(.)0
806 y Fj(and\(x,)f(y,)h(z\))240 868 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o
(y)h(z)g(=)h(x)f(&)g(y)l(.)0 943 y Fj(or\(x,)f(y,)h(z\))240
1005 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f
Fj(|)g Fi(y)l(.)0 1080 y Fj(xor\(x,)f(y,)h(z\))240 1142 y Fi(A)g(faster)g(w)o
(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f Fj(^)g Fi(y)l(.)0 1217 y
Fj(lshift\(x,)f(y,)h(z\))240 1279 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h
(z)g(=)h(x)f Fj(<<)g Fi(y)l(.)0 1354 y Fj(rshift\(x,)f(y,)h(z\))240
1416 y Fi(A)g(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h(x)f
Fj(>>)g Fi(y)l(.)0 1491 y Fj(complement\(x,)e(z\))240 1553
y Fi(A)i(faster)g(w)o(a)o(y)f(to)g(sa)o(y)h(z)g(=)h Fj(~)p
Fi(x.)p eop
%%Page: 75 77
bop 0 -58 a Fi(Chapter)15 b(23:)k(Random)c(Num)o(b)q(er)f(Generators)g(and)i
(related)e(classes)689 b(75)0 183 y Ff(23)41 b(Random)28 b(Num)n(b)r(er)e
(Generators)i(and)f(related)f(classes)62 369 y Fi(The)21 b(t)o(w)o(o)e
(classes)h Fj(RNG)f Fi(and)i Fj(Random)e Fi(are)h(used)h(together)f(to)f
(generate)h(a)g(v)m(ariet)o(y)g(of)g(random)f(n)o(um)o(b)q(er)0
431 y(distributions.)27 b(A)18 b(distinction)f(m)o(ust)g(b)q(e)i(made)e(b)q
(et)o(w)o(een)h Fc(random)f(n)o(um)o(b)q(er)h(generators)p
Fi(,)f(implemen)o(ted)f(b)o(y)0 493 y(class)j Fj(RNG)p Fi(,)h(and)g
Fc(random)e(n)o(um)o(b)q(er)h(distributions)p Fi(.)32 b(A)20
b(random)e(n)o(um)o(b)q(er)h(generator)g(pro)q(duces)i(a)e(series)g(of)0
556 y(randomly)13 b(ordered)j(bits.)j(These)d(bits)e(can)i(b)q(e)f(used)h
(directly)l(,)f(or)f(cast)h(to)f(other)h(represen)o(tations,)f(suc)o(h)h(as)g
(a)0 618 y(\015oating)10 b(p)q(oin)o(t)h(v)m(alue.)19 b(A)12
b(random)e(n)o(um)o(b)q(er)g(generator)h(should)g(pro)q(duce)i(a)e
Fc(uniform)f Fi(distribution.)17 b(A)11 b(random)0 680 y(n)o(um)o(b)q(er)h
(distribution,)f(on)h(the)h(other)e(hand,)i(uses)g(the)f(randomly)f
(generated)h(bits)g(of)g(a)g(generator)f(to)h(pro)q(duce)0
742 y(n)o(um)o(b)q(ers)j(from)f(a)h(distribution)f(with)h(sp)q(eci\014c)i
(prop)q(erties.)k(Eac)o(h)15 b(instance)h(of)f Fj(Random)f
Fi(uses)i(an)g(instance)f(of)0 805 y(class)d Fj(RNG)g Fi(to)g(pro)o(vide)h
(the)f(ra)o(w,)g(uniform)f(distribution)h(used)h(to)f(pro)q(duce)h(the)g(sp)q
(eci\014c)h(distribution.)j(Sev)o(eral)0 867 y(instances)g(of)g
Fj(Random)g Fi(classes)g(can)g(share)g(the)h(same)e(instance)h(of)g
Fj(RNG)p Fi(,)g(or)g(eac)o(h)g(instance)h(can)f(use)h(its)e(o)o(wn)0
929 y(cop)o(y)l(.)0 1152 y Fe(23.1)32 b(RNG)62 1289 y Fi(Random)17
b(distributions)f(are)h(constructed)h(from)e(mem)o(b)q(ers)g(of)h(class)g
Fj(RNG)p Fi(,)g(the)h(actual)e(random)h(n)o(um)o(b)q(er)0 1351
y(generators.)h(The)13 b Fj(RNG)g Fi(class)g(con)o(tains)f(no)h(data;)g(it)f
(only)g(serv)o(es)h(to)g(de\014ne)h(the)f(in)o(terface)f(to)h(random)f(n)o
(um)o(b)q(er)0 1414 y(generators.)18 b(The)d Fj(RNG::asLong)d
Fi(mem)o(b)q(er)g(returns)i(an)f(unsigned)i(long)e(\(t)o(ypically)f(32)h
(bits\))g(of)g(random)g(bits.)0 1476 y(Applications)g(that)g(require)h(a)f(n)
o(um)o(b)q(er)g(of)h(random)e(bits)h(can)h(use)g(this)g(directly)l(.)19
b(More)13 b(often,)g(these)h(random)0 1538 y(bits)h(are)g(transformed)e(to)h
(a)h(uniform)f(random)g(n)o(um)o(b)q(er:)215 1675 y Fj(//)215
1725 y(//)24 b(Return)f(random)g(bits)g(converted)g(to)h(either)f(a)g(float)h
(or)f(a)h(double)215 1775 y(//)215 1824 y(float)g(asFloat\(\);)215
1874 y(double)f(asDouble\(\);)120 1924 y(};)0 2061 y Fi(using)d(either)h
Fj(asFloat)f Fi(or)g Fj(asDouble)p Fi(.)35 b(It)21 b(is)f(in)o(tended)h(that)
f Fj(asFloat)g Fi(and)h Fj(asDouble)e Fi(return)i(di\013ering)0
2123 y(precisions;)d(t)o(ypically)l(,)e Fj(asDouble)g Fi(will)g(dra)o(w)h(t)o
(w)o(o)f(random)g(longw)o(ords)g(and)h(transform)e(them)i(in)o(to)f(a)h
(legal)0 2186 y Fj(double)p Fi(,)i(while)g Fj(asFloat)f Fi(will)g(dra)o(w)h
(a)g(single)g(longw)o(ord)f(and)i(transform)d(it)h(in)o(to)h(a)g(legal)f
Fj(float)p Fi(.)32 b(These)0 2248 y(mem)o(b)q(ers)18 b(are)h(used)i(b)o(y)f
(sub)q(classes)g(of)f(the)h Fj(Random)f Fi(class)g(to)g(implemen)o(t)e(a)j(v)
m(ariet)o(y)f(of)g(random)g(n)o(um)o(b)q(er)0 2310 y(distributions.)0
2533 y Fe(23.2)32 b(A)n(CG)62 2670 y Fi(Class)10 b Fj(ACG)h
Fi(is)f(a)g(v)m(arian)o(t)g(of)h(a)f(Linear)h(Congruen)o(tial)e(Generator)h
(\(Algorithm)e(M\))i(describ)q(ed)i(in)f(Kn)o(uth,)g Fc(Art)p
eop
%%Page: 76 78
bop 0 -58 a Fi(76)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fc(of)d(Computer)f(Programmi)o(ng,)f(V)l
(ol)i(I)q(I)q(I)p Fi(.)i(This)e(result)g(is)g(p)q(erm)o(uted)g(with)g(a)g
(Fib)q(onacci)g(Additiv)o(e)g(Congruen)o(tial)0 246 y(Generator)i(to)h(get)g
(go)q(o)q(d)h(indep)q(endence)h(b)q(et)o(w)o(een)f(samples.)j(This)c(is)g(a)g
(v)o(ery)g(high)h(qualit)o(y)e(random)g(n)o(um)o(b)q(er)0 308
y(generator,)h(although)g(it)h(requires)g(a)g(fair)f(amoun)o(t)f(of)i(memory)
e(for)h(eac)o(h)h(instance)g(of)g(the)h(generator.)62 452 y(The)e
Fj(ACG::ACG)e Fi(constructor)g(tak)o(es)g(t)o(w)o(o)g(parameters:)17
b(the)c(seed)h(and)f(the)g(size.)19 b(The)14 b(seed)f(is)g(an)o(y)g(n)o(um)o
(b)q(er)0 514 y(to)j(b)q(e)h(used)g(as)e(an)i(initial)d(seed.)24
b(The)16 b(p)q(erformance)g(of)g(the)g(generator)g(dep)q(ends)h(on)g(ha)o
(ving)e(a)h(distribution)0 577 y(of)h(bits)h(through)f(the)h(seed.)29
b(If)18 b(y)o(ou)g(c)o(ho)q(ose)g(a)f(n)o(um)o(b)q(er)g(in)h(the)g(range)g
(of)f(0)h(to)f(31,)h(a)f(seed)i(with)e(more)g(bits)0 639 y(is)h(c)o(hosen.)28
b(Other)18 b(v)m(alues)h(are)e(deterministically)e(mo)q(di\014ed)j(to)f(giv)o
(e)g(a)h(b)q(etter)g(distribution)f(of)h(bits.)27 b(This)0
701 y(pro)o(vides)14 b(a)g(go)q(o)q(d)h(random)e(n)o(um)o(b)q(er)h(generator)
f(while)h(still)f(allo)o(wing)g(a)h(sequence)i(to)e(b)q(e)h(rep)q(eated)g
(giv)o(en)f(the)0 763 y(same)g(initial)f(seed.)62 908 y(The)19
b Fj(size)g Fi(parameter)e(determines)g(the)i(size)g(of)f(t)o(w)o(o)g(tables)
g(used)i(in)e(the)h(generator.)30 b(The)19 b(\014rst)g(table)0
970 y(is)e(used)h(in)g(the)g(Additiv)o(e)f(Generator;)g(see)h(the)g
(algorithm)c(in)k(Kn)o(uth)g(for)f(more)f(information.)25 b(In)18
b(general,)0 1032 y(this)i(table)g(is)g Fj(size)g Fi(longw)o(ords)g(long.)35
b(The)21 b(default)f(v)m(alue,)i(used)f(in)g(the)f(algorithm)e(in)i(Kn)o
(uth,)i(giv)o(es)e(a)0 1095 y(table)c(of)g(220)g(b)o(ytes.)23
b(The)17 b(table)e(size)i(a\013ects)e(the)i(p)q(erio)q(d)g(of)f(the)g
(generators;)g(smaller)e(v)m(alues)j(giv)o(e)f(shorter)0 1157
y(p)q(erio)q(ds)22 b(and)f(larger)f(tables)h(giv)o(e)f(longer)h(p)q(erio)q
(ds.)38 b(The)22 b(smallest)d(table)h(size)i(is)e(7)h(longw)o(ords,)g(and)h
(the)0 1219 y(longest)c(is)h(98)f(longw)o(ords.)31 b(The)19
b Fj(size)f Fi(parameter)g(also)g(determines)g(the)h(size)g(of)g(the)g(table)
g(used)g(for)g(the)0 1281 y(Linear)e(Congruen)o(tial)f(Generator.)25
b(This)17 b(v)m(alue)g(is)g(c)o(hosen)h(implicitly)c(based)k(on)f(the)g(size)
g(of)g(the)h(Additiv)o(e)0 1344 y(Congruen)o(tial)d(Generator)g(table.)23
b(It)16 b(is)g(t)o(w)o(o)f(p)q(o)o(w)o(ers)h(of)f(t)o(w)o(o)g(larger)h(than)g
(the)g(p)q(o)o(w)o(er)g(of)g(t)o(w)o(o)f(that)g(is)h(larger)0
1406 y(than)j Fj(size)p Fi(.)31 b(F)l(or)18 b(example,)h(if)f
Fj(size)h Fi(is)f(7,)i(the)f(A)o(CG)f(table)h(is)f(7)h(longw)o(ords)e(and)j
(the)f(LCG)g(table)f(is)h(128)0 1468 y(longw)o(ords.)30 b(Th)o(us,)19
b(the)g(default)g(size)g(\(55\))f(requires)g(55)h Fj(+)g Fi(256)f(longw)o
(ords,)g(or)g(1244)g(b)o(ytes.)31 b(The)19 b(largest)0 1530
y(table)f(requires)h(2440)e(b)o(ytes)i(and)f(the)h(smallest)e(table)h
(requires)g(100)g(b)o(ytes.)30 b(Applications)18 b(that)g(require)g(a)0
1593 y(large)d(n)o(um)o(b)q(er)h(of)f(generators)h(or)f(applications)g(that)h
(aren't)f(so)h(fussy)g(ab)q(out)g(the)g(qualit)o(y)f(of)h(the)g(generator)0
1655 y(ma)o(y)d(elect)j(to)e(use)i(the)f Fj(MLCG)g Fi(generator.)0
1945 y Fe(23.3)32 b(MLCG)62 2090 y Fi(The)16 b Fj(MLCG)f Fi(class)g(implemen)
o(ts)d(a)k Fc(Multiplicativ)o(e)d(Linear)i(Congruen)o(tial)f(Generator)p
Fi(.)20 b(In)c(particular,)e(it)g(is)0 2152 y(an)j(implemen)o(tati)o(on)d(of)
j(the)g(double)g(MLCG)f(describ)q(ed)i(in)f Fc(\\E\016cien)o(t)f(and)h(P)o
(ortable)f(Com)o(bined)g(Random)0 2214 y(Num)o(b)q(er)e(Generators")f
Fi(b)o(y)i(Pierre)f(L'Ecuy)o(er,)g(app)q(earing)g(in)g Fc(Comm)o(unications)d
(of)j(the)h(A)o(CM,)e(V)l(ol.)20 b(31.)f(No.)0 2277 y(6)p Fi(.)g(This)14
b(generator)f(has)h(a)f(fairly)g(long)g(p)q(erio)q(d,)h(and)h(has)e(b)q(een)j
(statistically)11 b(analyzed)i(to)h(sho)o(w)f(that)h(it)f(giv)o(es)0
2339 y(go)q(o)q(d)i(in)o(ter-sample)e(indep)q(endence.)62 2483
y(The)h Fj(MLCG::MLCG)f Fi(constructor)g(has)h(t)o(w)o(o)f(parameters,)f(b)q
(oth)i(of)f(whic)o(h)h(are)g(seeds)g(for)f(the)h(generator.)19
b(As)0 2545 y(in)14 b(the)h Fj(MLCG)e Fi(generator,)h(b)q(oth)g(seeds)h(are)f
(mo)q(di\014ed)g(to)g(giv)o(e)f(a)h(\\b)q(etter")g(distribution)f(of)h(seed)h
(digits.)j(Th)o(us,)0 2608 y(y)o(ou)d(can)h(safely)f(use)g(v)m(alues)h(suc)o
(h)g(as)f(`0')g(or)g(`1')f(for)h(the)g(seeds.)22 b(The)16 b
Fj(MLCG)e Fi(generator)h(used)h(m)o(uc)o(h)f(less)g(state)0
2670 y(than)g(the)g Fj(ACG)g Fi(generator;)f(only)h(t)o(w)o(o)f(longw)o(ords)
f(\(8)i(b)o(ytes\))g(are)f(needed)j(for)d(eac)o(h)i(generator.)p
eop
%%Page: 77 79
bop 0 -58 a Fi(Chapter)15 b(23:)k(Random)c(Num)o(b)q(er)f(Generators)g(and)i
(related)e(classes)689 b(77)0 183 y Fe(23.4)32 b(Random)62
328 y Fi(A)16 b(random)f(n)o(um)o(b)q(er)g(generator)h(ma)o(y)e(b)q(e)j
(declared)f(b)o(y)g(\014rst)g(declaring)f(a)h Fj(RNG)g Fi(and)g(then)g(a)g
Fj(Random)p Fi(.)22 b(F)l(or)0 391 y(example,)13 b Fj(ACG)i(gen\(10,)f(20\);)
h(NegativeExpntl)e(rnd)i(\(1.0,)f(&gen\);)g Fi(declares)h(an)f(additiv)o(e)g
(congruen)o(tial)0 453 y(generator)h(with)f(seed)i(10)f(and)h(table)f(size)g
(20,)g(that)g(is)g(used)h(to)f(generate)g(exp)q(onen)o(tially)g(distributed)g
(v)m(alues)0 515 y(with)g(mean)f(of)h(1.0.)62 660 y(The)h(virtual)f(mem)o(b)q
(er)f Fj(Random::operator\(\))f Fi(is)i(the)h(common)d(w)o(a)o(y)i(of)g
(extracting)g(a)g(random)g(n)o(um)o(b)q(er)0 722 y(from)k(a)h(particular)g
(distribution.)35 b(The)21 b(base)g(class,)g Fj(Random)f Fi(do)q(es)h(not)f
(implemen)o(t)e Fj(operator\(\))p Fi(.)35 b(This)0 785 y(is)19
b(p)q(erformed)g(b)o(y)g(eac)o(h)h(of)f(the)g(sub)q(classes.)33
b(Th)o(us,)20 b(giv)o(en)f(the)h(ab)q(o)o(v)o(e)f(declaration)f(of)h
Fj(rnd)p Fi(,)h(new)f(random)0 847 y(v)m(alues)12 b(ma)o(y)e(b)q(e)i
(obtained)g(via,)f(for)g(example,)g Fj(double)k(next_exp_rand)e(=)i(rnd\(\);)
c Fi(Curren)o(tly)l(,)g(the)h(follo)o(wing)0 909 y(sub)q(classes)j(are)g(pro)
o(vided.)0 1206 y Fe(23.5)32 b(Binomial)62 1351 y Fi(The)17
b(binomial)d(distribution)h(mo)q(dels)g(successfully)h(dra)o(wing)f(items)g
(from)f(a)i(p)q(o)q(ol.)23 b(The)17 b(\014rst)f(parameter)0
1413 y(to)k(the)g(constructor,)h Fj(n)p Fi(,)g(is)f(the)g(n)o(um)o(b)q(er)g
(of)g(items)f(in)h(the)g(p)q(o)q(ol,)h(and)g(the)f(second)h(parameter,)f
Fj(u)p Fi(,)h(is)f(the)0 1475 y(probabilit)o(y)15 b(of)i(eac)o(h)g(item)e(b)q
(eing)j(successfully)f(dra)o(wn.)25 b(The)17 b(mem)o(b)q(er)e
Fj(asDouble)h Fi(returns)h(the)g(n)o(um)o(b)q(er)f(of)0 1538
y(samples)e(dra)o(wn)g(from)g(the)h(p)q(o)q(ol.)20 b(Although)14
b(it)h(is)f(not)h(c)o(hec)o(k)o(ed,)g(it)f(is)h(assumed)f(that)h
Fj(n>0)f Fi(and)i Fj(0)f(<=)g(u)g(<=)g(1)p Fi(.)0 1600 y(The)g(remaining)f
(mem)o(b)q(ers)f(allo)o(w)g(y)o(ou)i(to)g(read)g(and)g(set)g(the)h
(parameters.)0 1897 y Fe(23.6)32 b(Erlang)62 2042 y Fi(The)16
b Fj(Erlang)e Fi(class)h(implemen)o(ts)d(an)j(Erlang)f(distribution)g(with)h
(mean)f Fj(mean)h Fi(and)g(v)m(ariance)g Fj(variance)p Fi(.)0
2338 y Fe(23.7)32 b(Geometric)62 2483 y Fi(The)17 b Fj(Geometric)e
Fi(class)g(implemen)o(ts)f(a)i(discrete)g(geometric)e(distribution.)22
b(The)17 b(\014rst)f(parameter)e(to)i(the)0 2545 y(constructor,)g
Fj(mean)p Fi(,)f(is)h(the)h(mean)f(of)g(the)g(distribution.)23
b(Although)16 b(it)f(is)h(not)g(c)o(hec)o(k)o(ed,)h(it)f(is)g(assumed)g(that)
0 2608 y Fj(0)f(<=)g(mean)f(<=)h(1)p Fi(.)33 b Fj(Geometric\(\))18
b Fi(returns)h(the)g(n)o(um)o(b)q(er)g(of)g(uniform)f(random)g(samples)g
(that)g(w)o(ere)h(dra)o(wn)0 2670 y(b)q(efore)c(the)h(sample)e(w)o(as)g
(larger)g(than)h Fj(mean)p Fi(.)k(This)c(quan)o(tit)o(y)f(is)h(alw)o(a)o(ys)e
(greater)h(than)h(zero.)p eop
%%Page: 78 80
bop 0 -58 a Fi(78)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fe(23.8)32 b(Hyp)r(erGeometric)62
327 y Fi(The)20 b Fj(HyperGeometric)d Fi(class)i(implemen)o(ts)d(the)j(h)o
(yp)q(ergeometric)f(distribution.)30 b(The)20 b(\014rst)f(parameter)0
389 y(to)e(the)g(constructor,)g Fj(mean)p Fi(,)g(is)g(the)g(mean)g(and)g(the)
h(second,)g Fj(variance)p Fi(,)e(is)h(the)h(v)m(ariance.)26
b(The)18 b(remaining)0 452 y(mem)o(b)q(ers)13 b(allo)o(w)h(y)o(ou)h(to)f
(insp)q(ect)i(and)f(c)o(hange)g(the)h(mean)e(and)h(v)m(ariance.)0
738 y Fe(23.9)32 b(Negativ)n(eExpn)n(tl)62 882 y Fi(The)16
b Fj(NegativeExpntl)d Fi(class)i(implemen)o(ts)d(the)k(negativ)o(e)e(exp)q
(onen)o(tial)h(distribution.)k(The)d(\014rst)e(param-)0 944
y(eter)h(to)g(the)h(constructor)f(is)g(the)h(mean.)k(The)c(remaining)e(mem)o
(b)q(ers)f(allo)o(w)h(y)o(ou)h(to)g(insp)q(ect)h(and)g(c)o(hange)g(the)0
1006 y(mean.)0 1292 y Fe(23.10)32 b(Normal)62 1436 y Fi(The)18
b Fj(Normal)p Fi(class)e(implemen)o(ts)f(the)i(normal)e(distribution.)26
b(The)17 b(\014rst)g(parameter)f(to)h(the)g(constructor,)0
1499 y Fj(mean)p Fi(,)f(is)h(the)g(mean)f(and)h(the)g(second,)h
Fj(variance)p Fi(,)d(is)i(the)g(v)m(ariance.)25 b(The)17 b(remaining)e(mem)o
(b)q(ers)g(allo)o(w)g(y)o(ou)0 1561 y(to)g(insp)q(ect)g(and)g(c)o(hange)h
(the)f(mean)f(and)i(v)m(ariance.)j(The)d Fj(LogNormal)e Fi(class)g(is)h(a)g
(sub)q(class)g(of)g Fj(Normal)p Fi(.)0 1847 y Fe(23.11)32 b(LogNormal)62
1991 y Fi(The)13 b Fj(LogNormal)p Fi(class)d(implemen)o(ts)g(the)i
(logarithmic)d(normal)i(distribution.)17 b(The)c(\014rst)f(parameter)e(to)i
(the)0 2053 y(constructor,)h Fj(mean)p Fi(,)g(is)g(the)h(mean)f(and)g(the)h
(second,)g Fj(variance)p Fi(,)f(is)g(the)h(v)m(ariance.)19
b(The)14 b(remaining)e(mem)o(b)q(ers)0 2115 y(allo)o(w)18 b(y)o(ou)i(to)f
(insp)q(ect)i(and)f(c)o(hange)g(the)g(mean)f(and)h(v)m(ariance.)35
b(The)20 b Fj(LogNormal)f Fi(class)g(is)h(a)f(sub)q(class)h(of)0
2178 y Fj(Normal)p Fi(.)0 2464 y Fe(23.12)32 b(P)n(oisson)62
2608 y Fi(The)15 b Fj(Poisson)f Fi(class)g(implemen)o(ts)e(the)j(p)q(oisson)g
(distribution.)j(The)d(\014rst)g(parameter)e(to)h(the)h(constructor)0
2670 y(is)g(the)g(mean.)k(The)c(remaining)f(mem)o(b)q(ers)f(allo)o(w)g(y)o
(ou)i(to)g(insp)q(ect)g(and)h(c)o(hange)f(the)g(mean.)p eop
%%Page: 79 81
bop 0 -58 a Fi(Chapter)15 b(23:)k(Random)c(Num)o(b)q(er)f(Generators)g(and)i
(related)e(classes)689 b(79)0 183 y Fe(23.13)32 b(DiscreteUniform)62
320 y Fi(The)22 b Fj(DiscreteUniform)d Fi(class)i(implemen)o(ts)e(a)i
(uniform)f(random)g(v)m(ariable)g(o)o(v)o(er)h(the)h(closed)f(in)o(terv)m(al)
0 382 y(ranging)14 b(from)f Fj([low..high])p Fi(.)18 b(The)d(\014rst)f
(parameter)f(to)h(the)g(constructor)g(is)g Fj(low)p Fi(,)g(and)h(the)g
(second)g(is)f Fj(high)p Fi(,)0 445 y(although)k(the)g(order)g(of)g(these)h
(ma)o(y)d(b)q(e)k(rev)o(ersed.)29 b(The)19 b(remaining)d(mem)o(b)q(ers)h
(allo)o(w)f(y)o(ou)i(to)g(insp)q(ect)h(and)0 507 y(c)o(hange)c
Fj(low)g Fi(and)g Fj(high)p Fi(.)0 731 y Fe(23.14)32 b(Uniform)62
868 y Fi(The)17 b Fj(Uniform)e Fi(class)g(implemen)o(ts)f(a)h(uniform)g
(random)g(v)m(ariable)g(o)o(v)o(er)g(the)i(op)q(en)f(in)o(terv)m(al)g
(ranging)f(from)0 930 y Fj([low..high\))p Fi(.)j(The)d(\014rst)g(parameter)e
(to)h(the)h(constructor)f(is)h Fj(low)p Fi(,)f(and)h(the)g(second)g(is)g
Fj(high)p Fi(,)f(although)g(the)0 993 y(order)h(of)f(these)h(ma)o(y)f(b)q(e)h
(rev)o(ersed.)20 b(The)15 b(remaining)e(mem)o(b)q(ers)h(allo)o(w)f(y)o(ou)h
(to)h(insp)q(ect)g(and)g(c)o(hange)g Fj(low)g Fi(and)0 1055
y Fj(high)p Fi(.)0 1279 y Fe(23.15)32 b(W)-6 b(eibull)62 1416
y Fi(The)20 b Fj(Weibull)e Fi(class)g(implemen)o(ts)f(a)h(w)o(eibull)h
(distribution)e(with)i(parameters)e Fj(alpha)h Fi(and)i Fj(beta)p
Fi(.)31 b(The)0 1478 y(\014rst)13 b(parameter)e(to)h(the)i(class)e
(constructor)g(is)h Fj(alpha)p Fi(,)f(and)h(the)h(second)f(parameter)e(is)i
Fj(beta)p Fi(.)19 b(The)13 b(remaining)0 1541 y(mem)o(b)q(ers)g(allo)o(w)h(y)
o(ou)h(to)f(insp)q(ect)i(and)f(c)o(hange)g Fj(alpha)g Fi(and)g
Fj(beta)p Fi(.)0 1765 y Fe(23.16)32 b(RandomIn)n(teger)62 1902
y Fi(The)15 b Fj(RandomInteger)e Fi(class)h(is)g Fc(not)h Fi(a)g(sub)q(class)
f(of)g(Random,)g(but)h(a)f(stand-alone)g(in)o(teger-orien)o(ted)g(class)0
1964 y(that)e(is)h(dep)q(enden)o(t)h(on)f(the)g(RNG)g(classes.)19
b(RandomIn)o(teger)12 b(returns)h(random)f(in)o(tegers)g(uniformly)f(from)g
(the)0 2026 y(closed)i(in)o(terv)m(al)e Fj([low..high])p Fi(.)18
b(The)13 b(\014rst)f(parameter)f(to)h(the)h(constructor)f(is)g
Fj(low)p Fi(,)h(and)g(the)f(second)i(is)e Fj(high)p Fi(,)0
2089 y(although)e(b)q(oth)h(are)f(optional.)17 b(The)12 b(last)d(argumen)o(t)
g(is)i(alw)o(a)o(ys)e(a)h(generator.)18 b(Additional)9 b(mem)o(b)q(ers)g
(allo)o(w)g(y)o(ou)0 2151 y(to)15 b(insp)q(ect)g(and)h(c)o(hange)f
Fj(low)g Fi(and)h Fj(high)p Fi(.)k(Random)14 b(in)o(tegers)h(are)g(generated)
g(using)g Fj(asInt\(\))g Fi(or)f Fj(asLong\(\))p Fi(.)0 2213
y(Op)q(erator)19 b(syn)o(tax)f(\()p Fj(\(\))p Fi(\))g(is)g(also)g(a)o(v)m
(ailable)f(as)i(a)f(shorthand)h(for)f Fj(asLong\(\))p Fi(.)30
b(Because)19 b Fj(RandomInteger)e Fi(is)0 2275 y(often)g(used)g(in)g(sim)o
(ulations)d(for)i(whic)o(h)h(uniform)f(random)f(in)o(tegers)h(are)h(desired)g
(o)o(v)o(er)f(a)h(v)m(ariet)o(y)f(of)h(ranges,)0 2338 y Fj(asLong\(\))e
Fi(and)i Fj(asInt)e Fi(ha)o(v)o(e)h Fj(high)g Fi(as)g(an)g(optional)f
(argumen)o(t.)21 b(Using)16 b(this)g(optional)f(argumen)o(t)f(pro)q(duces)0
2400 y(a)h(single)f(v)m(alue)i(from)d(the)j(new)f(range,)f(but)i(do)q(es)f
(not)g(c)o(hange)g(the)h(default)e(range.)p eop
%%Page: 80 82
bop 0 -58 a Fi(80)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 81 83
bop 0 -58 a Fi(Chapter)15 b(24:)k(Data)14 b(Collection)1336
b(81)0 183 y Ff(24)41 b(Data)28 b(Collection)62 413 y Fi(Libg)p
Fj(++)15 b Fi(curren)o(tly)g(pro)o(vides)g(t)o(w)o(o)e(classes)i(for)g
Fc(data)f(collection)g Fi(and)i(analysis)e(of)g(the)i(collected)e(data.)0
715 y Fe(24.1)32 b(SampleStati)q(s)q(tic)62 860 y Fi(Class)16
b Fj(SampleStatistic)f Fi(pro)o(vides)i(a)g(means)f(of)h(accum)o(ulating)e
(samples)g(of)i Fj(double)f Fi(v)m(alues)i(and)f(pro-)0 923
y(viding)e(common)d(sample)i(statistics.)62 1068 y(Assume)h(declaration)f(of)
g Fj(double)h(x)p Fi(.)0 1214 y Fj(SampleStatistic)e(a;)240
1276 y Fi(declares)i(and)g(initializes)f(a.)0 1360 y Fj(a.reset\(\);)240
1422 y Fi(re-initializes)f(a.)0 1505 y Fj(a)i(+=)g(x;)90 b
Fi(adds)15 b(sample)f(x.)0 1588 y Fj(int)h(n)g(=)g(a.samples\(\);)240
1651 y Fi(returns)g(the)g(n)o(um)o(b)q(er)g(of)g(samples.)0
1734 y Fj(x)g(=)g(a.mean;)240 1796 y Fi(returns)g(the)g(means)f(of)h(the)h
(samples.)0 1880 y Fj(x)f(=)g(a.var\(\))240 1942 y Fi(returns)g(the)g(sample)
f(v)m(ariance)h(of)g(the)g(samples.)0 2025 y Fj(x)g(=)g(a.stdDev\(\))240
2088 y Fi(returns)g(the)g(sample)f(standard)h(deviation)f(of)h(the)g
(samples.)0 2171 y Fj(x)g(=)g(a.min\(\))240 2233 y Fi(returns)g(the)g(minim)o
(um)d(encoun)o(tered)k(sample.)0 2317 y Fj(x)f(=)g(a.max\(\))240
2379 y Fi(returns)g(the)g(maxim)o(um)c(encoun)o(tered)16 b(sample.)0
2462 y Fj(x)f(=)g(a.confidence\(int)e(p\))240 2524 y Fi(returns)i(the)g(p-p)q
(ercen)o(t)i(\(0)d Fj(<)p Fi(=)h(p)h Fj(<)f Fi(100\))f(con\014dence)j(in)o
(terv)m(al.)0 2608 y Fj(x)e(=)g(a.confidence\(double)e(p\))240
2670 y Fi(returns)i(the)g(p-probabilit)o(y)f(\(0)h Fj(<)p Fi(=)g(p)h
Fj(<)f Fi(1\))f(con\014dence)j(in)o(terv)m(al.)p eop
%%Page: 82 84
bop 0 -58 a Fi(82)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fe(24.2)32 b(SampleHistogram)62
320 y Fi(Class)20 b Fj(SampleHistogram)f Fi(is)h(a)g(deriv)o(ed)h(class)f(of)
h Fj(SampleStatistic)d Fi(that)i(supp)q(orts)h(collection)f(and)0
382 y(displa)o(y)14 b(of)h(samples)f(in)i(buc)o(k)o(eted)f(in)o(terv)m(als.)
20 b(It)15 b(supp)q(orts)h(the)f(follo)o(wing)e(in)j(addition)e(to)h
Fj(SampleStatisic)0 445 y Fi(op)q(erations.)0 582 y Fj(SampleHistogram)e
(h\(double)h(lo,)h(double)f(hi,)h(double)f(width\);)240 644
y Fi(declares)k(and)g(initializes)e(h)i(to)f(ha)o(v)o(e)g(buc)o(k)o(ets)h(of)
f(size)h(width)f(from)g(lo)g(to)g(hi.)27 b(If)18 b(the)g(optional)240
706 y(argumen)o(t)11 b(width)h(is)f(not)h(sp)q(eci\014ed,)i(10)e(buc)o(k)o
(ets)g(are)g(created.)19 b(The)13 b(\014rst)f(buc)o(k)o(et)g(and)h(also)e
(holds)240 769 y(samples)j(less)h(than)g(lo,)f(and)h(the)g(last)g(one)g
(holds)g(samples)e(greater)i(than)g(hi.)0 843 y Fj(int)g(n)g(=)g
(h.similarSamples\(x\))240 906 y Fi(returns)g(the)g(n)o(um)o(b)q(er)g(of)g
(samples)e(in)i(the)h(same)e(buc)o(k)o(et)h(as)g(x.)0 980 y
Fj(int)g(n)g(=)g(h.inBucket\(int)e(i\))240 1043 y Fi(returns)i(the)g(n)o(um)o
(b)q(er)g(of)g(samples)e(in)i(buc)o(k)o(et)h(i.)0 1117 y Fj(int)f(b)g(=)g
(h.buckets\(\))240 1180 y Fi(returns)g(the)g(n)o(um)o(b)q(er)g(of)g(buc)o(k)o
(ets.)0 1254 y Fj(h.printBuckets\(ostream)d(s\))240 1316 y
Fi(prin)o(ts)i(buc)o(k)o(et)i(coun)o(ts)f(on)g(ostream)e(s.)0
1391 y Fj(double)h(bound)h(=)g(h.bucketThreshold\(int)d(i\))240
1453 y Fi(returns)j(the)g(upp)q(er)i(b)q(ound)f(of)e(buc)o(k)o(et)i(i.)p
eop
%%Page: 83 85
bop 0 -58 a Fi(Chapter)15 b(25:)k(Curses-based)d(classes)1246
b(83)0 183 y Ff(25)41 b(Curses-based)26 b(classes)62 368 y
Fi(The)20 b Fj(CursesWindow)e Fi(class)h(is)g(a)h(repac)o(k)m(aging)f(of)g
(standard)g(curses)h(library)f(features)g(in)o(to)g(a)g(class.)33
b(It)0 430 y(relies)15 b(on)g(`)p Fj(curses.h)p Fi('.)62 567
y(The)g(supplied)h(`)p Fj(curses.h)p Fi(')d(is)h(a)h(fairly)e(conserv)m(ativ)
o(e)h(declaration)g(of)h(curses)g(library)e(features,)i(and)g(do)q(es)0
629 y(not)j(include)g(features)g(lik)o(e)f(\\screen")h(or)g(X-windo)o(w)g
(supp)q(ort.)28 b(It)19 b(is,)f(for)f(the)h(most)f(part,)h(an)g(adaptation,)0
692 y(rather)h(than)g(an)h(impro)o(v)o(emen)o(t)c(of)j(C-based)h(`)p
Fj(curses.h)p Fi(')e(\014les.)33 b(The)19 b(only)h(substan)o(tiv)o(e)e(c)o
(hanges)i(are)f(the)0 754 y(declarations)e(of)i(man)o(y)e(functions)h(as)g
(inline)g(functions)h(rather)f(than)g(macros,)g(whic)o(h)g(w)o(as)g(done)h
(solely)f(to)0 816 y(allo)o(w)13 b(o)o(v)o(erloading.)62 953
y(The)i Fj(CursesWindow)e Fi(class)h(encapsulates)g(curses)h(windo)o(w)f
(functions)g(within)g(a)g(class.)19 b(Only)c(those)f(func-)0
1015 y(tions)d(that)h(con)o(trol)f(windo)o(ws)g(are)h(included:)19
b(T)l(erminal)11 b(con)o(trol)g(functions)h(and)g(macros)f(lik)o(e)g
Fj(cbreak)g Fi(are)h(not)0 1078 y(part)i(of)g(the)g(class.)19
b(All)14 b Fj(CursesWindows)e Fi(mem)o(b)q(er)h(functions)h(ha)o(v)o(e)f
(names)h(iden)o(tical)f(to)h(the)g(corresp)q(onding)0 1140
y(curses)20 b(library)f(functions,)h(except)g(that)f(the)h(\\w")f(pre\014x)i
(is)e(generally)g(dropp)q(ed.)35 b(Descriptions)18 b(of)i(these)0
1202 y(functions)15 b(ma)o(y)e(b)q(e)j(found)g(in)f(y)o(our)g(lo)q(cal)f
(curses)h(library)f(do)q(cumen)o(tation.)62 1339 y(A)i Fj(CursesWindow)d
Fi(ma)o(y)h(b)q(e)h(declared)h(via)0 1476 y Fj(CursesWindow)e(w\(WINDOW*)f
(win\))240 1538 y Fi(attac)o(hes)i(w)h(to)f(the)i(existing)e(WINDO)o(W*)g
(win.)22 b(This)16 b(is)f(constructor)h(is)f(normally)f(used)i(only)240
1601 y(in)f(the)g(follo)o(wing)e(sp)q(ecial)i(case.)0 1675
y Fj(CursesWindow)f(w\(stdscr\))240 1737 y Fi(attac)o(hes)g(w)h(to)g(the)g
(default)g(curses)g(library)f(standard)h(screen)h(windo)o(w.)0
1811 y Fj(CursesWindow)e(w\(int)g(lines,)g(int)h(cols,)g(int)f(begin_y,)g
(int)h(begin_x\))240 1874 y Fi(attac)o(hes)f(to)h(an)g(allo)q(cated)f(curses)
i(windo)o(w)e(with)h(the)g(indicated)g(size)g(and)g(screen)h(p)q(osition.)0
1948 y Fj(CursesWindow)e(sub\(CursesWindow&)e(w,int)j(l,int)f(c,int)h(by,int)
f(bx,char)g(ar='a'\))240 2010 y Fi(attac)o(hes)i(to)g(a)h(sub)o(windo)o(w)f
(of)h(w)g(created)g(via)f(the)h(curses)g(`sub)o(win')f(command.)23
b(If)17 b(ar)g(is)f(sen)o(t)240 2072 y(as)f(`r',)f(the)h(origin)f(\(b)o(y)l
(,)g(b)o(x\))h(is)g(relativ)o(e)f(to)g(the)i(paren)o(t)e(windo)o(w,)g(else)i
(it)e(is)h(absolute.)62 2209 y(The)e(class)g(main)o(tains)d(a)j(static)e
(coun)o(ter)i(that)f(is)h(used)g(in)g(order)f(to)h(automaticall)o(y)d(call)i
(the)h(curses)g(library)0 2271 y Fj(initscr)19 b Fi(and)i Fj(endscr)e
Fi(functions)h(at)g(the)g(prop)q(er)g(times.)34 b(These)20
b(need)h(not,)g(and)f(should)h(not)e(b)q(e)i(called)0 2334
y(\\man)o(ually".)62 2471 y Fj(CursesWindow)p Fi(s)14 b(main)o(tain)f(a)j
(tree)f(of)g(their)h(sub)o(windo)o(ws.)k(Up)q(on)c(destruction)g(of)f(a)g
Fj(CursesWindow)p Fi(,)f(all)0 2533 y(of)h(their)f(sub)o(windo)o(ws)h(are)g
(also)f(in)o(v)m(alidated)g(if)h(they)g(had)h(not)e(previously)h(b)q(een)h
(destro)o(y)o(ed.)62 2670 y(It)g(is)e(p)q(ossible)h(to)g(tra)o(v)o(erse)f
(trees)h(of)f(sub)o(windo)o(ws)h(via)f(the)i(follo)o(wing)d(mem)o(b)q(er)g
(functions)p eop
%%Page: 84 86
bop 0 -58 a Fi(84)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(CursesWindow*)f(w.parent\(\))240
246 y Fi(returns)i(a)g(p)q(oin)o(ter)g(to)f(the)h(paren)o(t)g(of)g(the)g(sub)
o(windo)o(w,)g(or)f(0)h(if)g(there)g(is)g(none.)0 320 y Fj(CursesWindow*)e
(w.child\(\))240 382 y Fi(returns)i(the)g(\014rst)g(c)o(hild)g(sub)o(windo)o
(w)g(of)f(the)i(windo)o(w,)e(or)g(0)h(if)g(there)g(is)g(none.)0
457 y Fj(CursesWindow*)e(w.sibling\(\))240 519 y Fi(returns)i(the)g(next)h
(sibling)e(of)h(the)g(sub)o(windo)o(w,)f(or)h(0)g(if)f(there)i(is)e(none.)62
656 y(F)l(or)h(example,)e(to)i(call)f(some)g(function)h Fj(visit)g
Fi(for)f(all)g(sub)o(windo)o(ws)h(of)g(a)g(windo)o(w,)f(y)o(ou)h(could)g
(write)120 843 y Fj(void)23 b(traverse\(CursesWindow&)e(w\))120
893 y({)168 943 y(visit\(w\);)168 993 y(if)i(\(w.child\(\))g(!=)g(0\))h
(traverse\(*w.child\);)168 1043 y(if)f(\(w.sibling\(\))g(!=)g(0\))h
(traverse\(*w.sibling\);)120 1092 y(})p eop
%%Page: 85 87
bop 0 -58 a Fi(Chapter)15 b(26:)k(List)c(classes)1428 b(85)0
183 y Ff(26)41 b(List)27 b(classes)62 363 y Fi(Files)19 b(`)p
Fj(g++-include/List.hP)p Fi(')d(and)j(`)p Fj(g++-include/List.ccP)p
Fi(')d(pro)o(vide)j(pseudo-generic)i(Lisp-t)o(yp)q(e)0 426
y(List)16 b(classes.)24 b(These)17 b(lists)e(are)h(homogeneous)g(lists,)f
(more)g(similar)f(to)i(lists)f(in)i(statically)d(t)o(yp)q(ed)j(functional)0
488 y(languages)i(lik)o(e)g(ML)h(than)f(Lisp,)i(but)f(supp)q(ort)g(op)q
(erations)f(v)o(ery)h(similar)d(to)i(those)g(found)h(in)g(Lisp.)34
b(An)o(y)0 550 y(particular)19 b(kind)i(of)f(list)g(class)g(ma)o(y)f(b)q(e)i
(generated)g(via)f(the)h Fj(genclass)f Fi(shell)g(command.)34
b(Ho)o(w)o(ev)o(er,)21 b(the)0 613 y(implemen)o(tati)o(on)15
b(assumes)i(that)g(the)h(base)g(class)f(supp)q(orts)h(an)g(equalit)o(y)f(op)q
(erator)g Fj(==)p Fi(.)28 b(All)17 b(equalit)o(y)g(tests)0
675 y(use)f(the)f Fj(==)g Fi(op)q(erator,)f(and)h(are)g(th)o(us)g(equiv)m
(alen)o(t)g(to)f(the)i(use)f(of)g Fj(equal)p Fi(,)f(not)h Fj(eq)g
Fi(in)g(Lisp.)62 812 y(All)j(list)f(no)q(des)h(are)g(created)g(dynamically)l
(,)f(and)h(managed)f(via)g(reference)i(coun)o(ts.)28 b Fj(List)18
b Fi(v)m(ariables)f(are)0 874 y(actually)h(p)q(oin)o(ters)g(to)h(these)g
(list)f(no)q(des.)32 b(Lists)19 b(ma)o(y)e(also)h(b)q(e)i(tra)o(v)o(ersed)e
(via)g(Pixes,)h(as)g(describ)q(ed)h(in)f(the)0 936 y(section)c(describing)g
(Pixes.)k(See)d(Chapter)f(9)g([Pix],)e(page)j(29)62 1073 y(Supp)q(orted)g(op)
q(erations)f(are)g(mirrored)e(closely)h(after)h(those)g(in)g(Lisp.)20
b(Generally)l(,)14 b(op)q(erations)h(with)f(func-)0 1136 y(tional)20
b(forms)f(are)i(constructiv)o(e,)g(functional)f(op)q(erations,)h(while)g(mem)
o(b)q(er)e(forms)g(\(often)i(with)f(the)h(same)0 1198 y(name\))14
b(are)h(sometimes)d(pro)q(cedural,)j(p)q(ossibly)g(destructiv)o(e)f(op)q
(erations.)62 1335 y(As)j(with)g(Lisp,)g(destructiv)o(e)f(op)q(erations)g
(are)h(supp)q(orted.)26 b(Programm)o(ers)14 b(are)j(allo)o(w)o(ed)e(to)i(c)o
(hange)g(head)0 1397 y(and)c(tail)e(\014elds)j(in)e(an)o(y)h(fashion,)f
(creating)g(circular)g(structures)h(and)g(the)g(lik)o(e.)18
b(Ho)o(w)o(ev)o(er,)12 b(again)g(as)g(with)g(Lisp,)0 1459 y(some)e(op)q
(erations)g(implicitly)f(assume)h(that)h(they)g(are)g(op)q(erating)g(on)g
(pure)h(lists,)e(and)i(ma)o(y)d(en)o(ter)i(in\014nite)g(lo)q(ops)0
1522 y(when)k(presen)o(ted)f(with)g(improp)q(er)f(lists.)18
b(Also,)13 b(the)i(reference-coun)o(ting)f(storage)f(managemen)o(t)e(facilit)
o(y)i(ma)o(y)0 1584 y(fail)h(to)h(reclaim)e(un)o(used)j(circularly-link)o(ed)
e(no)q(des.)62 1721 y(Sev)o(eral)h(Lisp-lik)o(e)h(higher)f(order)g(functions)
h(are)f(supp)q(orted)h(\(e.g.,)f Fj(map)p Fi(\).)20 b(T)o(yp)q(edef)c
(declarations)f(for)g(the)0 1783 y(required)g(functional)g(forms)e(are)i(pro)
o(vided)g(in)o(t)f(the)i(`)p Fj(.h)p Fi(')e(\014le.)62 1920
y(F)l(or)i(purp)q(oses)h(of)f(illustration,)e(assume)h(the)h(sp)q
(eci\014cation)h(of)f(class)f Fj(intList)p Fi(.)23 b(Common)13
b(Lisp)k(v)o(ersions)0 1982 y(of)e(supp)q(orted)h(op)q(erations)e(are)h(sho)o
(wn)g(in)g(brac)o(k)o(ets)f(for)h(comparison)e(purp)q(oses.)0
2200 y Fe(26.1)32 b(Constructors)23 b(and)h(assignmen)n(t)0
2337 y Fj(intList)14 b(a;)h([)g(\(setq)g(a)g(nil\))f(])240
2399 y Fi(Declares)h(a)f(to)h(b)q(e)h(a)f(nil)f(in)o(tList.)0
2472 y Fj(intList)g(b\(2\);)h([)g(\(setq)f(b)h(\(cons)g(2)g(nil\)\))f(])240
2535 y Fi(Declares)h(b)g(to)g(b)q(e)g(an)h(in)o(tList)e(with)g(a)h(head)h(v)m
(alue)f(of)g(2,)f(and)i(a)f(nil)f(tail.)0 2608 y Fj(intList)g(c\(3,)h(b\);)g
([)g(\(setq)f(c)h(\(cons)g(3)g(b\)\))f(])240 2670 y Fi(Declares)h(c)g(to)f(b)
q(e)i(an)f(in)o(tList)g(with)f(a)h(head)h(v)m(alue)f(of)g(3,)f(and)i(b)f(as)g
(its)f(tail.)p eop
%%Page: 86 88
bop 0 -58 a Fi(86)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(b)h(=)g(a;)g([)g(\(setq)f(b)h(a\))g(])
240 246 y Fi(Sets)g(b)h(to)e(b)q(e)i(the)f(same)f(list)g(as)h(a.)62
385 y(Assume)g(the)g(declarations)f(of)h(in)o(tLists)f(a,)g(b,)h(and)h(c)f
(in)g(the)g(follo)o(wing.)j(See)e(Chapter)f(9)f([Pix],)g(page)h(29.)0
634 y Fe(26.2)32 b(List)23 b(status)0 774 y Fj(a.null\(\);)14
b(OR)h(!a;)g([)g(\(null)f(a\))h(])240 836 y Fi(returns)g(true)g(if)g(a)g(is)f
(n)o(ull.)0 914 y Fj(a.valid\(\);)g([)h(\(listp)f(a\))h(])240
976 y Fi(returns)g(true)g(if)g(a)g(is)g(non-n)o(ull.)20 b(Inside)c(a)f
(conditional)f(test,)g(the)i Fj(void*)e Fi(co)q(ercion)h(ma)o(y)f(also)g(b)q
(e)240 1038 y(used)i(as)f(in)g Fj(if)g(\(a\))f(...)p Fi(.)0
1116 y Fj(intList\(\);)g([)h(nil)g(])240 1178 y Fi(in)o(tList\(\))i(ma)o(y)f
(b)q(e)k(used)f(to)f(n)o(ull)f(terminate)g(a)h(list,)g(as)g(in)g
Fj(intList)c(f\(int)h(x\))g({if)g(\(x)f(==)h(0\))240 1240 y(return)f
(intList\(\);)g(...)h(})g Fi(.)0 1318 y Fj(a.length\(\);)f([)h(\(length)f
(a\))h(])240 1380 y Fi(returns)g(the)g(length)g(of)g(a.)0 1458
y Fj(a.list_length\(\);)e([)i(\(list-length)e(a\))i(])240 1520
y Fi(returns)g(the)g(length)g(of)g(a,)g(or)f(-1)h(if)g(a)g(is)f(circular.)0
1769 y Fe(26.3)32 b(heads)24 b(and)g(tails)0 1909 y Fj(a.get\(\);)14
b(OR)h(a.head\(\))f([)h(\(car)g(a\))f(])240 1971 y Fi(returns)h(a)g
(reference)h(to)e(the)i(head)f(\014eld.)0 2049 y Fj(a[2];)f([)h(\(elt)g(a)g
(2\))g(])240 2111 y Fi(returns)g(a)g(reference)h(to)e(the)i(second)f(\(coun)o
(ting)g(from)e(zero\))i(head)g(\014eld.)0 2188 y Fj(a.tail\(\);)f([)h(\(cdr)g
(a\))f(])240 2251 y Fi(returns)h(the)g(in)o(tList)f(that)h(is)g(the)g(tail)f
(of)g(a.)0 2328 y Fj(a.last\(\);)g([)h(\(last)f(a\))h(])240
2390 y Fi(returns)g(the)g(in)o(tList)f(that)h(is)g(the)g(last)f(no)q(de)i(of)
f(a.)0 2468 y Fj(a.nth\(2\);)f([)h(\(nth)g(a)g(2\))f(])240
2530 y Fi(returns)h(the)g(in)o(tList)f(that)h(is)g(the)g(n)o(th)g(no)q(de)h
(of)f(a.)0 2608 y Fj(a.set_tail\(b\);)e([)i(\(rplacd)f(a)h(b\))g(])240
2670 y Fi(sets)g(a's)f(tail)g(to)h(b.)p eop
%%Page: 87 89
bop 0 -58 a Fi(Chapter)15 b(26:)k(List)c(classes)1428 b(87)0
183 y Fj(a.push\(2\);)14 b([)h(\(push)f(2)h(a\))g(])240 246
y Fi(equiv)m(alen)o(t)g(to)f(a)h(=)h(in)o(tList\(2,)d(a\);)0
321 y Fj(int)i(x)g(=)g(a.pop\(\))f([)h(\(setq)f(x)h(\(car)g(a\)\))g(\(pop)f
(a\))h(])240 383 y Fi(returns)g(the)g(head)h(of)f(a,)f(also)g(setting)h(a)f
(to)h(its)f(tail.)0 614 y Fe(26.4)32 b(Constructiv)n(e)24 b(op)r(erations)0
751 y Fj(b)15 b(=)g(copy\(a\);)f([)h(\(setq)g(b)g(\(copy-seq)f(a\)\))g(])240
814 y Fi(sets)h(b)g(to)g(a)g(cop)o(y)g(of)g(a.)0 889 y Fj(b)g(=)g
(reverse\(a\);)f([)h(\(setq)f(b)h(\(reverse)f(a\)\))h(])240
951 y Fi(Sets)g(b)h(to)e(a)h(rev)o(ersed)g(cop)o(y)g(of)g(a.)0
1027 y Fj(c)g(=)g(concat\(a,)f(b\);)h([)g(\(setq)f(c)h(\(concat)f(a)h(b\)\))g
(])240 1089 y Fi(Sets)g(c)h(to)e(a)h(concatenated)g(cop)o(y)g(of)g(a)g(and)g
(b.)0 1164 y Fj(c)g(=)g(append\(a,)f(b\);)h([)g(\(setq)f(c)h(\(append)f(a)h
(b\)\))g(])240 1227 y Fi(Sets)f(c)h(to)e(a)h(concatenated)h(cop)o(y)f(of)g(a)
g(and)g(b.)20 b(All)13 b(no)q(des)i(of)f(a)g(are)g(copied,)g(with)g(the)g
(last)f(no)q(de)240 1289 y(p)q(oin)o(ting)h(to)h(b.)0 1364
y Fj(b)g(=)g(map\(f,)f(a\);)h([)g(\(setq)g(b)g(\(mapcar)f(f)h(a\)\))g(])240
1427 y Fi(Sets)g(b)h(to)e(a)h(new)g(list)f(created)i(b)o(y)f(applying)f
(function)h(f)h(to)e(eac)o(h)h(no)q(de)h(of)f(a.)0 1502 y Fj(c)g(=)g
(combine\(f,)f(a,)h(b\);)240 1564 y Fi(Sets)h(c)f(to)g(a)h(new)g(list)e
(created)i(b)o(y)f(applying)g(function)h(f)f(to)g(successiv)o(e)h(pairs)f(of)
g(a)h(and)f(b.)22 b(The)240 1627 y(resulting)14 b(list)g(has)h(length)g(the)g
(shorter)g(of)g(a)g(and)g(b.)0 1702 y Fj(b)g(=)g(remove\(x,)f(a\);)h([)g
(\(setq)f(b)h(\(remove)f(x)h(a\)\))g(])240 1764 y Fi(Sets)g(b)h(to)e(a)h(cop)
o(y)g(of)g(a,)f(omitting)f(all)h(o)q(ccurrences)i(of)f(x.)0
1840 y Fj(b)g(=)g(remove\(f,)f(a\);)h([)g(\(setq)f(b)h(\(remove-if)f(f)h
(a\)\))g(])240 1902 y Fi(Sets)g(b)h(to)e(a)h(cop)o(y)g(of)g(a,)f(omitting)f
(v)m(alues)i(causing)g(function)g(f)g(to)g(return)g(true.)0
1977 y Fj(b)g(=)g(select\(f,)f(a\);)h([)g(\(setq)f(b)h(\(remove-if-not)e(f)i
(a\)\))g(])240 2040 y Fi(Sets)g(b)h(to)e(a)h(cop)o(y)g(of)g(a,)f(omitting)f
(v)m(alues)i(causing)g(function)g(f)g(to)g(return)g(false.)0
2115 y Fj(c)g(=)g(merge\(a,)f(b,)h(f\);)g([)g(\(setq)f(c)h(\(merge)g(a)g(b)g
(f\)\))f(])240 2177 y Fi(Sets)k(c)g(to)g(a)f(list)g(con)o(taining)g(the)h
(ordered)g(elemen)o(ts)f(\(using)g(the)h(comparison)e(function)i(f)t(\))f(of)
240 2240 y(the)e(sorted)g(lists)f(a)h(and)g(b.)0 2470 y Fe(26.5)32
b(Destructiv)n(e)22 b(op)r(erations)0 2608 y Fj(a.append\(b\);)14
b([)h(\(rplacd)f(\(last)g(a\))h(b\))g(])240 2670 y Fi(app)q(ends)h(b)g(to)e
(the)i(end)f(of)g(a.)20 b(No)15 b(new)g(no)q(des)h(are)f(constructed.)p
eop
%%Page: 88 90
bop 0 -58 a Fi(88)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(a.prepend\(b\);)f([)i(\(setq)g(a)g
(\(append)f(b)h(a\)\))g(])240 246 y Fi(prep)q(ends)i(b)e(to)g(the)g(b)q
(eginning)g(of)g(a.)0 320 y Fj(a.del\(x\);)f([)h(\(delete)f(x)h(a\))g(])240
382 y Fi(deletes)g(all)f(no)q(des)i(with)f(v)m(alue)g(x)g(from)f(a.)0
457 y Fj(a.del\(f\);)g([)h(\(delete-if)f(f)h(a\))g(])240 519
y Fi(deletes)g(all)f(no)q(des)i(causing)f(function)g(f)g(to)g(return)g(true.)
0 594 y Fj(a.select\(f\);)f([)h(\(delete-if-not)e(f)i(a\))g(])240
656 y Fi(deletes)g(all)f(no)q(des)i(causing)f(function)g(f)g(to)g(return)g
(false.)0 731 y Fj(a.reverse\(\);)f([)h(\(nreverse)e(a\))i(])240
793 y Fi(rev)o(erses)g(a)g(in-place.)0 868 y Fj(a.sort\(f\);)f([)h(\(sort)f
(a)h(f\))g(])240 930 y Fi(sorts)f(a)h(in-place)g(using)g(ordering)g
(\(comparison\))d(function)j(f.)0 1005 y Fj(a.apply\(f\);)f([)h(\(mapc)f(f)h
(a\))g(])240 1067 y Fi(Applies)g(v)o(oid)g(function)g(f)g(\(in)o(t)f(x\))h
(to)f(eac)o(h)h(elemen)o(t)f(of)h(a.)0 1142 y Fj(a.subst\(int)f(old,)g(int)h
(repl\);)f([)h(\(nsubst)g(repl)f(old)h(a\))g(])240 1204 y Fi(substitutes)e
(repl)g(for)f(eac)o(h)h(o)q(ccurrence)i(of)d(old)h(in)g(a.)19
b(Note)13 b(the)g(di\013eren)o(t)g(argumen)o(t)e(order)i(than)240
1267 y(the)i(Lisp)h(v)o(ersion.)0 1491 y Fe(26.6)32 b(Other)23
b(op)r(erations)0 1628 y Fj(a.find\(int)14 b(x\);)h([)g(\(find)f(x)h(a\))g(])
240 1690 y Fi(returns)g(the)g(in)o(tList)f(at)h(the)g(\014rst)g(o)q
(ccurrence)h(of)f(x.)0 1765 y Fj(a.find\(b\);)f([)h(\(find)f(b)h(a\))g(])240
1827 y Fi(returns)g(the)g(in)o(tList)f(at)h(the)g(\014rst)g(o)q(ccurrence)h
(of)f(sublist)g(b.)0 1902 y Fj(a.contains\(int)e(x\);)i([)g(\(member)f(x)h
(a\))g(])240 1964 y Fi(returns)g(true)g(if)g(a)g(con)o(tains)f(x.)0
2039 y Fj(a.contains\(b\);)f([)i(\(member)f(b)h(a\))g(])240
2101 y Fi(returns)g(true)g(if)g(a)g(con)o(tains)f(sublist)g(b.)0
2176 y Fj(a.position\(int)f(x\);)i([)g(\(position)f(x)h(a\))g(])240
2238 y Fi(returns)g(the)g(zero-based)h(index)f(of)g(x)g(in)g(a,)g(or)g(-1)g
(if)f(x)h(do)q(es)h(not)f(o)q(ccur.)0 2313 y Fj(int)g(x)g(=)g(a.reduce\(f,)e
(int)i(base\);)f([)i(\(reduce)e(f)h(a)g(:initial-value)e(base\))h(])240
2375 y Fi(Accum)o(ulates)h(the)h(result)g(of)f(applying)h(in)o(t)f(function)h
(f\(in)o(t,)f(in)o(t\))g(to)h(successiv)o(e)g(elemen)o(ts)f(of)h(a,)240
2437 y(starting)e(with)g(base.)p eop
%%Page: 89 91
bop 0 -58 a Fi(Chapter)15 b(27:)k(Link)o(ed)d(Lists)1405 b(89)0
183 y Ff(27)41 b(Link)n(ed)26 b(Lists)62 389 y Fi(SLLists)14
b(pro)o(vide)e(pseudo-generic)i(singly)f(link)o(ed)f(lists.)18
b(DLLists)13 b(pro)o(vide)g(doubly)g(link)o(ed)g(lists.)18
b(The)13 b(lists)0 451 y(are)i(designed)i(for)e(the)h(simple)e(main)o
(tenance)g(of)i(elemen)o(ts)e(in)i(a)f(link)o(ed)g(structure,)h(and)g(do)f
(not)h(pro)o(vide)f(the)0 513 y(more)d(extensiv)o(e)h(op)q(erations)g(\(or)f
(no)q(de-sharing\))h(of)g(class)g Fj(List)p Fi(.)19 b(They)13
b(b)q(eha)o(v)o(e)h(similarly)c(to)j(the)g Fj(slist)g Fi(and)0
575 y(similar)f(classes)j(describ)q(ed)h(b)o(y)f(Stroustrup.)62
716 y(All)g(list)f(no)q(des)i(are)e(created)i(dynamically)l(.)i(Assignmen)o
(t)13 b(is)i(p)q(erformed)f(via)h(cop)o(ying.)62 857 y(Class)f
Fj(DLList)h Fi(supp)q(orts)g(all)f Fj(SLList)g Fi(op)q(erations,)g(plus)i
(additional)d(op)q(erations)i(describ)q(ed)h(b)q(elo)o(w.)62
998 y(F)l(or)j(purp)q(oses)h(of)f(illustration,)f(assume)g(the)i(sp)q
(eci\014cation)f(of)g(class)g Fj(intSLList)p Fi(.)31 b(In)20
b(addition)f(to)g(the)0 1060 y(op)q(erations)14 b(listed)h(here,)g(SLLists)g
(supp)q(ort)h(tra)o(v)o(ersal)d(via)h(Pixes.)20 b(See)c(Chapter)f(9)f([Pix],)
g(page)h(29)0 1201 y Fj(intSLList)f(a;)240 1263 y Fi(Declares)h(a)f(to)h(b)q
(e)h(an)f(empt)o(y)f(list.)0 1341 y Fj(intSLList)g(b)h(=)g(a;)240
1404 y Fi(Sets)g(b)h(to)e(an)h(elemen)o(t-b)o(y-elemen)o(t)e(cop)o(y)i(of)g
(a.)0 1482 y Fj(a.empty\(\))240 1544 y Fi(returns)g(true)g(if)g(a)g(con)o
(tains)f(no)h(elemen)o(ts)0 1623 y Fj(a.length\(\);)240 1685
y Fi(returns)g(the)g(n)o(um)o(b)q(er)g(of)g(elemen)o(ts)f(in)h(a.)0
1763 y Fj(a.prepend\(x\);)240 1826 y Fi(places)g(x)g(at)g(the)g(fron)o(t)f
(of)h(the)g(list.)0 1904 y Fj(a.append\(x\);)240 1966 y Fi(places)g(x)g(at)g
(the)g(end)h(of)f(the)g(list.)0 2045 y Fj(a.join\(b\))240 2107
y Fi(places)g(all)f(no)q(des)i(from)d(b)j(to)e(the)i(end)g(of)e(a,)h(sim)o
(ultaneously)d(destro)o(ying)i(b.)0 2186 y Fj(x)h(=)g(a.front\(\))240
2248 y Fi(returns)f(a)h(reference)g(to)f(the)h(item)e(stored)h(at)g(the)g
(head)h(of)f(the)h(list,)e(or)h(triggers)f(an)i(error)f(if)g(the)240
2310 y(list)g(is)h(empt)o(y)l(.)0 2389 y Fj(a.rear\(\))48 b
Fi(returns)15 b(a)g(reference)h(to)e(the)i(rear)e(of)h(the)g(list,)f(or)h
(triggers)e(an)j(error)e(if)h(the)g(list)f(is)h(empt)o(y)l(.)0
2467 y Fj(x)g(=)g(a.remove_front\(\))240 2529 y Fi(deletes)g(and)h(returns)f
(the)g(item)f(stored)g(at)h(the)g(head)h(of)e(the)i(list.)0
2608 y Fj(a.del_front\(\))240 2670 y Fi(deletes)f(the)h(\014rst)e(elemen)o
(t,)g(without)g(returning)h(it.)p eop
%%Page: 90 92
bop 0 -58 a Fi(90)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(a.clear\(\))240 246 y
Fi(deletes)h(all)f(items)g(from)f(the)j(list.)0 320 y Fj(a.ins_after\(Pix)d
(i,)i(item\);)240 382 y Fi(inserts)g(item)e(after)i(p)q(osition)f(i.)19
b(If)d(i)e(is)h(n)o(ull,)f(insertion)h(is)f(at)h(the)g(fron)o(t.)0
457 y Fj(a.del_after\(Pix)e(i\);)240 519 y Fi(deletes)i(the)h(elemen)o(t)d
(follo)o(wing)g(i.)20 b(If)15 b(i)g(is)g(0,)f(the)i(\014rst)e(item)g(is)h
(deleted.)0 744 y Fe(27.1)32 b(Doubly)23 b(link)n(ed)g(lists)62
881 y Fi(Class)c Fj(DLList)f Fi(supp)q(orts)i(the)f(follo)o(wing)f
(additional)g(op)q(erations,)h(as)g(w)o(ell)f(as)i(bac)o(kw)o(ard)e(tra)o(v)o
(ersal)g(via)0 943 y(Pixes.)0 1080 y Fj(x)d(=)g(a.remove_rear\(\);)240
1142 y Fi(deletes)g(and)h(returns)f(the)g(item)f(stored)g(at)h(the)g(rear)g
(of)g(the)g(list.)0 1217 y Fj(a.del_rear\(\);)240 1279 y Fi(deletes)g(the)h
(last)e(elemen)o(t,)f(without)h(returning)h(it.)0 1354 y Fj
(a.ins_before\(Pix)e(i,)i(x\))240 1416 y Fi(inserts)g(x)g(b)q(efore)g(the)g
(i.)0 1491 y Fj(a.del\(Pix&)f(iint)g(dir)h(=)g(1\))240 1553
y Fi(deletes)i(the)h(item)d(at)i(the)g(curren)o(t)g(p)q(osition,)g(then)g
(adv)m(ances)h(forw)o(ard)e(if)h(dir)g(is)g(p)q(ositiv)o(e,)f(else)240
1615 y(bac)o(kw)o(ard.)p eop
%%Page: 91 93
bop 0 -58 a Fi(Chapter)15 b(28:)k(V)l(ector)c(classes)1376
b(91)0 183 y Ff(28)41 b(V)-7 b(ector)28 b(classes)62 377 y
Fi(Files)16 b(`)p Fj(g++-include/Vec.[h,)c(cc]P)p Fi(')j(and)i(`)p
Fj(g++-include/AVec.[h,)12 b(cc]P)p Fi(')j(pro)o(vide)h(pseudo-generic)0
439 y(standard)g(arra)o(y-based)f(v)o(ector)h(op)q(erations.)22
b(Class)15 b Fj(Vec)h Fi(pro)o(vides)g(op)q(erations)f(suitable)h(for)f(an)o
(y)h(base)h(class)0 502 y(that)10 b(includes)h(an)g(equalit)o(y)f(op)q
(erator.)18 b(Sub)q(class)11 b Fj(AVec)f Fi(pro)o(vides)h(additional)e
(arithmetic)g(op)q(erations)h(suitable)0 564 y(for)15 b(base)g(classes)g
(that)f(include)i(the)f(full)f(complemen)o(t)f(of)i(arithmetic)e(op)q
(erators.)62 702 y Fj(Vecs)i Fi(are)g(constructed)g(and)h(assigned)e(b)o(y)i
(cop)o(ying.)j(Th)o(us,)c(they)g(should)h(normally)c(b)q(e)k(passed)g(b)o(y)f
(refer-)0 764 y(ence)h(in)f(applications)f(programs.)62 903
y(Sev)o(eral)e(mapping)f(functions)h(are)g(pro)o(vided)g(that)f(allo)o(w)f
(programmers)f(to)j(sp)q(ecify)g(op)q(erations)g(on)g(v)o(ectors)0
965 y(as)j(a)g(whole.)62 1103 y(F)l(or)22 b(illustrativ)o(e)d(purp)q(oses)k
(assume)e(that)g(classes)g Fj(intVec)h Fi(and)g Fj(intAVec)f
Fi(ha)o(v)o(e)g(b)q(een)j(generated)e(via)0 1166 y Fj(genclass)p
Fi(.)0 1402 y Fe(28.1)32 b(Constructors)23 b(and)h(assignmen)n(t)0
1541 y Fj(intVec)14 b(a;)34 b Fi(declares)15 b(a)g(to)g(b)q(e)g(an)h(empt)o
(y)d(v)o(ector.)20 b(Its)15 b(size)g(ma)o(y)e(b)q(e)j(c)o(hanged)g(via)e
(resize.)0 1617 y Fj(intVec)g(a\(10\);)240 1679 y Fi(declares)h(a)g(to)g(b)q
(e)g(an)h(uninitialized)e(v)o(ector)g(of)h(ten)g(elemen)o(ts)f(\(n)o(um)o(b)q
(ered)h(0-9\).)0 1755 y Fj(intVec)f(b\(6,)h(0\);)240 1818 y
Fi(declares)g(b)g(to)f(b)q(e)i(a)e(v)o(ector)h(of)f(six)g(elemen)o(ts,)g(all)
f(initialized)h(to)g(zero.)20 b(An)o(y)15 b(v)m(alue)g(can)g(b)q(e)g(used)240
1880 y(as)g(the)g(initial)e(\014ll)i(argumen)o(t.)0 1956 y
Fj(a)g(=)g(b;)114 b Fi(Copies)15 b(b)g(to)g(a.)k(a)c(is)g(resized)g(to)g(b)q
(e)h(the)f(same)f(as)h(b.)0 2032 y Fj(a)g(=)g(b.at\(2,)f(4\))240
2094 y Fi(constructs)h(a)g(from)e(the)i(4)g(elemen)o(ts)f(of)h(b)g(starting)f
(at)g(b[2].)62 2233 y(Assume)h(declarations)f(of)g Fj(intVec)h(a,)g(b,)f(c)h
Fi(and)h Fj(int)f(i,)f(x)h Fi(in)h(the)f(follo)o(wing.)0 2469
y Fe(28.2)32 b(Status)25 b(and)f(access)0 2608 y Fj(a.capacity\(\);)240
2670 y Fi(returns)15 b(the)g(n)o(um)o(b)q(er)g(of)g(elemen)o(ts)f(that)g(can)
h(b)q(e)h(held)g(in)f(a.)p eop
%%Page: 92 94
bop 0 -58 a Fi(92)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(a.resize\(20\);)240 246
y Fi(sets)f(a's)g(length)h(to)f(20.)18 b(All)13 b(elemen)o(ts)g(are)g(unc)o
(hanged,)i(except)f(that)f(if)g(the)h(new)f(size)h(is)f(smaller)240
308 y(than)k(the)g(original,)f(than)h(trailing)e(elemen)o(ts)h(are)h
(deleted,)h(and)f(if)g(greater,)f(trailing)f(elemen)o(ts)240
370 y(are)g(uninitialized.)0 442 y Fj(a[i];)120 b Fi(returns)15
b(a)g(reference)h(to)e(the)i(i'th)e(elemen)o(t)g(of)h(a,)f(or)h(pro)q(duces)h
(an)f(error)g(if)f(i)h(is)g(out)g(of)f(range.)0 515 y Fj(a.elem\(i\))240
577 y Fi(returns)g(a)h(reference)g(to)f(the)h(i'th)f(elemen)o(t)f(of)h(a.)19
b(Unlik)o(e)14 b(the)h Fj([])f Fi(op)q(erator,)g(i)g(is)g(not)h(c)o(hec)o(k)o
(ed)g(to)240 639 y(ensure)h(that)e(it)h(is)f(within)h(range.)0
712 y Fj(a)g(==)g(b;)90 b Fi(returns)15 b(true)g(if)g(a)g(and)g(b)g(con)o
(tain)g(the)g(same)f(elemen)o(ts)g(in)h(the)g(same)f(order.)0
784 y Fj(a)h(!=)g(b;)90 b Fi(is)15 b(the)g(con)o(v)o(erse)g(of)g(a)g(==)g(b.)
0 999 y Fe(28.3)32 b(Constructiv)n(e)24 b(op)r(erations)0 1136
y Fj(c)15 b(=)g(concat\(a,)f(b\);)240 1199 y Fi(sets)h(c)g(to)g(the)g(new)h
(v)o(ector)e(constructed)h(from)f(all)g(of)h(the)g(elemen)o(ts)f(of)h(a)f
(follo)o(w)o(ed)g(b)o(y)h(all)f(of)h(b.)0 1271 y Fj(c)g(=)g(map\(f,)f(a\);)
240 1333 y Fi(sets)h(c)g(to)g(the)g(new)g(v)o(ector)g(constructed)g(b)o(y)g
(applying)g(in)o(t)f(function)h(f\(in)o(t\))f(to)g(eac)o(h)h(elemen)o(t)f(of)
240 1395 y(a.)0 1468 y Fj(c)h(=)g(merge\(a,)f(b,)h(f\);)240
1530 y Fi(sets)f(c)h(to)f(the)h(new)g(v)o(ector)f(constructed)h(b)o(y)g
(merging)e(the)i(elemen)o(ts)e(of)h(ordered)h(v)o(ectors)f(a)h(and)240
1592 y(b)g(using)g(ordering)g(\(comparison\))e(function)i(f.)0
1665 y Fj(c)g(=)g(combine\(f,)f(a,)h(b\);)240 1727 y Fi(sets)i(c)g(to)g(the)g
(new)h(v)o(ector)e(constructed)i(b)o(y)f(applying)f(in)o(t)h(function)g
(f\(in)o(t,)f(in)o(t\))g(to)h(successiv)o(e)240 1789 y(pairs)d(of)h(a)g(and)h
(b.)k(The)15 b(result)g(has)g(length)g(the)g(shorter)f(of)h(a)g(and)g(b.)0
1862 y Fj(c)g(=)g(reverse\(a\))240 1924 y Fi(sets)g(c)g(to)g(a,)f(with)h
(elemen)o(ts)f(in)h(rev)o(erse)g(order.)0 2139 y Fe(28.4)32
b(Destructiv)n(e)22 b(op)r(erations)0 2276 y Fj(a.reverse\(\);)240
2338 y Fi(rev)o(erses)15 b(a)g(in-place.)0 2411 y Fj(a.sort\(f\))240
2473 y Fi(sorts)g(a)g(in-place)h(using)g(comparison)e(function)h(f.)22
b(The)16 b(sorting)e(metho)q(d)h(is)h(a)f(v)m(ariation)f(of)i(the)240
2535 y(quic)o(ksort)e(functions)h(supplied)h(with)e(GNU)h(emacs.)0
2608 y Fj(a.fill\(0,)f(4,)h(2\))240 2670 y Fi(\014lls)g(the)g(2)g(elemen)o
(ts)f(starting)f(at)i(a[4])f(with)g(zero.)p eop
%%Page: 93 95
bop 0 -58 a Fi(Chapter)15 b(28:)k(V)l(ector)c(classes)1376
b(93)0 183 y Fe(28.5)32 b(Other)23 b(op)r(erations)0 320 y
Fj(a.apply\(f\))240 382 y Fi(applies)15 b(function)g(f)g(to)f(eac)o(h)i
(elemen)o(t)e(in)h(a.)0 454 y Fj(x)g(=)g(a.reduce\(f,)f(base\))240
516 y Fi(accum)o(ulates)f(the)h(results)f(of)h(applying)g(function)g(f)g(to)f
(successiv)o(e)i(elemen)o(ts)d(of)i(a)g(starting)f(with)240
579 y(base.)0 650 y Fj(a.index\(int)h(targ\);)240 712 y Fi(returns)h(the)g
(index)h(of)f(the)g(leftmost)e(o)q(ccurrence)j(of)f(the)g(target,)f(or)g(-1,)
h(if)g(it)f(do)q(es)i(not)e(o)q(ccur.)0 784 y Fj(a.error\(char*)f(msg\))240
846 y Fi(in)o(v)o(ok)o(es)h(the)h(error)g(handler.)20 b(The)15
b(default)g(v)o(ersion)f(prin)o(ts)h(the)g(error)g(message,)e(then)j(ab)q
(orts.)0 1058 y Fe(28.6)32 b(A)-7 b(V)h(ec)24 b(op)r(erations.)62
1195 y Fi(A)-5 b(V)l(ecs)12 b(pro)o(vide)g(additional)e(arithmetic)f(op)q
(erations.)18 b(All)11 b(v)o(ector-b)o(y-v)o(ector)f(op)q(erators)h(generate)
g(an)h(error)0 1257 y(if)j(the)h(v)o(ectors)f(are)g(not)h(the)f(same)g
(length.)21 b(The)16 b(follo)o(wing)d(op)q(erations)i(are)h(pro)o(vided,)f
(for)g Fj(AVecs)f(a,)h(b)h Fi(and)0 1319 y(base)f(elemen)o(t)f(\(scalar\))g
Fj(s)p Fi(.)0 1456 y Fj(a)h(=)g(b;)114 b Fi(Copies)15 b(b)g(to)g(a.)k(a)c
(and)g(b)h(m)o(ust)e(b)q(e)h(the)h(same)e(size.)0 1528 y Fj(a)h(=)g(s;)114
b Fi(\014lls)15 b(all)f(elemen)o(ts)g(of)g(a)h(with)g(the)g(v)m(alue)g(s.)20
b(a)15 b(is)g(not)g(resized.)0 1599 y Fj(a)g(+)g(s;)g(a)g(-)g(s;)g(a)g(*)g
(s;)g(a)g(/)g(s)240 1662 y Fi(adds,)g(subtracts,)f(m)o(ultiplies,)e(or)j
(divides)g(eac)o(h)g(elemen)o(t)f(of)h(a)g(with)f(the)i(scalar.)0
1733 y Fj(a)f(+=)g(s;)g(a)g(-=)g(s;)g(a)g(*=)f(s;)h(a)g(/=)g(s;)240
1795 y Fi(adds,)g(subtracts,)f(m)o(ultiplies,)e(or)j(divides)g(the)g(scalar)g
(in)o(to)f(a.)0 1867 y Fj(a)h(+)g(b;)g(a)g(-)g(b;)g(product\(a,)f(b\),)g
(quotient\(a,)g(b\))240 1929 y Fi(adds,)h(subtracts,)f(m)o(ultiplies,)e(or)j
(divides)g(corresp)q(onding)g(elemen)o(ts)f(of)h(a)g(and)g(b.)0
2001 y Fj(a)g(+=)g(b;)g(a)g(-=)g(b;)g(a.product\(b\);)e(a.quotient\(b\);)240
2063 y Fi(adds,)i(subtracts,)f(m)o(ultiplies,)e(or)j(divides)g(corresp)q
(onding)g(elemen)o(ts)f(of)h(b)g(in)o(to)f(a.)0 2135 y Fj(s)h(=)g(a)g(*)g(b;)
36 b Fi(returns)15 b(the)g(inner)h(\(dot\))e(pro)q(duct)h(of)g(a)g(and)g(b.)0
2206 y Fj(x)g(=)g(a.sum\(\);)240 2269 y Fi(returns)g(the)g(sum)g(of)f(elemen)
o(ts)g(of)h(a.)0 2340 y Fj(x)g(=)g(a.sumsq\(\);)240 2402 y
Fi(returns)g(the)g(sum)g(of)f(squared)i(elemen)o(ts)e(of)g(a.)0
2474 y Fj(x)h(=)g(a.min\(\);)240 2536 y Fi(returns)g(the)g(minim)o(um)d
(elemen)o(t)i(of)g(a.)0 2608 y Fj(x)h(=)g(a.max\(\);)240 2670
y Fi(returns)g(the)g(maxim)o(um)c(elemen)o(t)j(of)h(a.)p eop
%%Page: 94 96
bop 0 -58 a Fi(94)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(i)h(=)g(a.min_index\(\);)240
246 y Fi(returns)g(the)g(index)h(of)f(the)g(minim)o(um)c(elemen)o(t)j(of)h
(a.)0 320 y Fj(i)g(=)g(a.max_index\(\);)240 382 y Fi(returns)g(the)g(index)h
(of)f(the)g(maxim)o(um)c(elemen)o(t)j(of)h(a.)240 457 y(Note)20
b(that)h(it)f(is)g(p)q(ossible)g(to)h(apply)f(v)o(ector)g(v)o(ersions)g
(other)h(arithmetic)d(op)q(erators)i(via)g(the)240 519 y(mapping)e
(functions.)31 b(F)l(or)19 b(example,)f(to)h(set)g(v)o(ector)f(b)i(to)e(the)h
(cosines)g(of)g(doubleV)l(ec)h(a,)g(use)240 582 y Fj(b)15 b(=)g(map\(cos,)f
(a\);)p Fi(.)28 b(This)17 b(is)h(often)g(more)e(e\016cien)o(t)i(than)g(p)q
(erforming)e(the)i(op)q(erations)f(in)h(an)240 644 y(elemen)o(t-b)o(y-elemen)
o(t)13 b(fashion.)p eop
%%Page: 95 97
bop 0 -58 a Fi(Chapter)15 b(29:)k(Plex)c(classes)1417 b(95)0
183 y Ff(29)41 b(Plex)26 b(classes)62 360 y Fi(A)16 b(\\Plex")e(is)h(a)f
(kind)i(of)e(arra)o(y)g(with)h(the)g(follo)o(wing)e(prop)q(erties:)39
497 y Fh(\017)30 b Fi(Plexes)12 b(ma)o(y)f(ha)o(v)o(e)h(arbitrary)f(upp)q(er)
j(and)e(lo)o(w)o(er)f(index)i(b)q(ounds.)20 b(F)l(or)12 b(example)f(a)i(Plex)
f(ma)o(y)f(b)q(e)i(declared)90 560 y(to)i(run)g(from)e(indices)j(-10)e(..)20
b(10.)39 632 y Fh(\017)30 b Fi(Plexes)13 b(ma)o(y)e(b)q(e)i(dynamically)e
(expanded)j(at)e(b)q(oth)h(the)g(lo)o(w)o(er)f(and)h(upp)q(er)h(b)q(ounds)f
(of)g(the)g(arra)o(y)e(in)i(steps)90 694 y(of)i(one)g(elemen)o(t.)39
767 y Fh(\017)30 b Fi(Only)15 b(elemen)o(ts)f(that)h(ha)o(v)o(e)g(b)q(een)h
(sp)q(eci\014cally)f(initialized)e(or)i(added)h(ma)o(y)d(b)q(e)j(accessed.)39
839 y Fh(\017)30 b Fi(Elemen)o(ts)18 b(ma)o(y)g(b)q(e)i(accessed)g(via)f
(indices.)32 b(Indices)21 b(are)e(alw)o(a)o(ys)f(c)o(hec)o(k)o(ed)h(for)g(v)m
(alidit)o(y)f(at)h(run)h(time.)90 901 y(Plexes)15 b(ma)o(y)f(b)q(e)h(tra)o(v)
o(ersed)g(via)f(simple)g(v)m(ariations)f(of)i(standard)g(arra)o(y)f(indexing)
h(lo)q(ops.)39 973 y Fh(\017)30 b Fi(Plex)15 b(elemen)o(ts)f(ma)o(y)f(b)q(e)j
(accessed)g(and)f(tra)o(v)o(ersed)g(via)f(Pixes.)39 1046 y
Fh(\017)30 b Fi(Plex-to-Plex)14 b(assignmen)o(t)f(and)j(related)e(op)q
(erations)h(on)g(en)o(tire)g(Plexes)g(are)g(supp)q(orted.)39
1118 y Fh(\017)30 b Fi(Plex)16 b(classes)f(con)o(tain)g(metho)q(ds)g(to)h
(help)g(programmers)d(c)o(hec)o(k)j(the)g(v)m(alidit)o(y)f(of)g(indexing)h
(and)g(p)q(oin)o(ter)90 1180 y(op)q(erations.)39 1253 y Fh(\017)30
b Fi(Plexes)16 b(form)f(\\natural")g(base)h(classes)g(for)g(man)o(y)f
(restricted-access)h(data)g(structures)g(relying)g(on)g(logi-)90
1315 y(cally)e(con)o(tiguous)h(indices,)f(suc)o(h)i(as)f(arra)o(y-based)f
(stac)o(ks)h(and)g(queues.)39 1387 y Fh(\017)30 b Fi(Plexes)18
b(are)h(implemen)o(ted)d(as)i(pseudo-generic)h(classes,)g(and)g(m)o(ust)e(b)q
(e)i(generated)g(via)e(the)i Fj(genclass)90 1450 y Fi(utilit)o(y)l(.)62
1587 y(F)l(our)13 b(sub)q(classes)h(of)f(Plexes)g(are)g(supp)q(orted:)19
b(A)14 b Fj(FPlex)e Fi(is)h(a)g(Plex)g(that)g(ma)o(y)f(only)h(gro)o(w)f(or)h
(shrink)g(within)0 1649 y(declared)h(b)q(ounds;)h(an)f Fj(XPlex)g
Fi(ma)o(y)e(dynamically)g(gro)o(w)h(or)h(shrink)g(without)f(b)q(ounds;)i(an)f
Fj(RPlex)f Fi(is)h(the)g(same)0 1711 y(as)19 b(an)f Fj(XPlex)h
Fi(but)g(b)q(etter)g(supp)q(orts)g(indexing)g(with)f(p)q(o)q(or)h(lo)q(calit)
o(y)e(of)h(reference;)k(a)c Fj(MPlex)g Fi(ma)o(y)g(gro)o(w)f(or)0
1773 y(shrink,)22 b(and)f(additionally)e(allo)o(ws)h(the)h(logical)e
(deletion)i(and)g(restoration)e(of)i(elemen)o(ts.)36 b(Because)22
b(these)0 1836 y(classes)15 b(are)g(virtual)g(sub)q(classes)g(of)g(the)h
(\\abstract")e(class)h Fj(Plex)p Fi(,)g(it)g(is)g(p)q(ossible)g(to)g(write)g
(user)g(co)q(de)h(suc)o(h)g(as)0 1898 y Fj(void)f(f\(Plex&)f(a\))h(...)d
Fi(that)h(op)q(erates)g(on)g(an)o(y)g(kind)g(of)g(Plex.)19
b(Ho)o(w)o(ev)o(er,)12 b(as)h(with)f(nearly)h(an)o(y)g(virtual)f(class,)0
1960 y(sp)q(ecifying)j(the)g(particular)f(Plex)h(class)g(b)q(eing)g(used)h
(results)f(in)g(more)e(e\016cien)o(t)i(co)q(de.)62 2097 y(Plexes)j(are)f
(implemen)o(ted)e(as)j(a)f(link)o(ed)g(list)g(of)g Fj(IChunks)p
Fi(.)26 b(Eac)o(h)17 b(c)o(h)o(unk)h(con)o(tains)f(a)g(part)g(of)h(the)f
(arra)o(y)l(.)0 2159 y(Ch)o(unk)k(sizes)g(ma)o(y)e(b)q(e)i(sp)q(eci\014ed)h
(within)e(Plex)g(constructors.)36 b(Default)20 b(v)o(ersions)f(also)h(exist,)
h(that)f(use)h(a)0 2222 y Fj(#define'd)14 b Fi(default.)19
b(Plexes)c(gro)o(w)f(b)o(y)h(\014lling)f(un)o(used)i(space)g(in)f(existing)f
(c)o(h)o(unks,)h(if)f(p)q(ossible,)h(else,)f(except)0 2284
y(for)f(FPlexes,)g(b)o(y)h(adding)g(another)f(c)o(h)o(unk.)20
b(Whenev)o(er)14 b(Plexes)f(gro)o(w)g(b)o(y)h(a)f(new)h(c)o(h)o(unk,)g(the)g
(default)f(elemen)o(t)0 2346 y(constructors)h(\(i.e.,)e(those)j(whic)o(h)f
(tak)o(e)f(no)i(argumen)o(ts\))d(for)i(all)f(c)o(h)o(unk)i(elemen)o(ts)e(are)
h(called)g(at)g(once.)20 b(When)0 2408 y(Plexes)d(shrink,)h(destructors)f
(for)g(the)g(elemen)o(ts)f(are)i(not)f(called)g(un)o(til)f(an)i(en)o(tire)f
(c)o(h)o(unk)h(is)f(freed.)27 b(F)l(or)17 b(this)0 2471 y(reason,)i(Plexes)f
(\(lik)o(e)g(C)p Fj(++)g Fi(arra)o(ys\))f(should)i(only)f(b)q(e)i(used)f(for)
f(elemen)o(ts)g(with)g(default)g(constructors)g(and)0 2533
y(destructors)d(that)f(ha)o(v)o(e)h(no)g(side)g(e\013ects.)62
2670 y(Plexes)e(ma)o(y)e(b)q(e)j(indexed)g(and)f(used)h(lik)o(e)e(arra)o(ys,)
f(although)i(tra)o(v)o(ersal)e(syn)o(tax)h(is)g(sligh)o(tly)g(di\013eren)o
(t.)18 b(Ev)o(en)p eop
%%Page: 96 98
bop 0 -58 a Fi(96)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y(though)d(Plexes)g(main)o(tain)d(elemen)o
(ts)i(in)h(lists)f(of)g(c)o(h)o(unks,)i(they)f(are)g(implemen)o(ted)e(so)h
(that)h(iteration)e(and)i(other)0 246 y(constructs)i(that)g(main)o(tain)e(lo)
q(calit)o(y)h(of)h(reference)h(require)f(v)o(ery)h(little)e(o)o(v)o(erhead)h
(o)o(v)o(er)f(that)h(for)g(simple)f(arra)o(y)0 308 y(tra)o(v)o(ersal)k
(Pix-based)i(tra)o(v)o(ersal)e(is)h(also)g(supp)q(orted.)29
b(F)l(or)18 b(example,)f(for)g(a)h(plex,)g(p,)h(of)f(in)o(ts,)f(the)h(follo)o
(wing)0 370 y(tra)o(v)o(ersal)13 b(metho)q(ds)h(could)i(b)q(e)g(used.)120
512 y Fj(for)23 b(\(int)h(i)f(=)h(p.low\(\);)f(i)h(<)f(p.fence\(\);)g
(p.next\(i\)\))f(use\(p[i]\);)120 562 y(for)h(\(int)h(i)f(=)h(p.high\(\);)f
(i)h(>)f(p.ecnef\(\);)g(p.prev\(i\)\))f(use\(p[i]\);)120 612
y(for)h(\(Pix)h(t)f(=)h(p.first\(\);)f(t)g(!=)h(0;)g(p.next\(t\)\))e
(use\(p\(i\)\);)120 662 y(for)h(\(Pix)h(t)f(=)h(p.last\(\);)f(t)h(!=)f(0;)h
(p.prev\(t\)\))e(use\(p\(i\)\);)62 804 y Fi(Except)15 b(for)f(MPlexes,)f
(simply)g(using)h Fj(++i)g Fi(and)g Fj(--i)g Fi(w)o(orks)f(just)h(as)g(w)o
(ell)g(as)g Fj(p.next\(i\))f Fi(and)h Fj(p.prev\(i\))0 866
y Fi(when)i(tra)o(v)o(ersing)d(b)o(y)i(index.)20 b(Index-based)d(tra)o(v)o
(ersal)c(is)i(generally)f(a)h(bit)g(faster)f(than)h(Pix-based)g(tra)o(v)o
(ersal.)62 1008 y Fj(XPlexes)f Fi(and)g Fj(MPlexes)f Fi(are)i(less)e(than)i
(optimal)c(for)j(applications)f(in)h(whic)o(h)h(widely)e(scattered)h(elemen)o
(ts)0 1070 y(are)h(indexed,)g(as)g(migh)o(t)d(o)q(ccur)k(when)f(using)g
(Plexes)g(as)f(hash)h(tables)f(or)h(\\man)o(ually")d(allo)q(cated)i(link)o
(ed)h(lists.)0 1133 y(In)20 b(suc)o(h)f(applications,)g Fj(RPlexes)f
Fi(are)h(often)f(preferable.)32 b Fj(RPlexes)18 b Fi(use)i(a)e(secondary)i(c)
o(h)o(unk)f(index)h(table)0 1195 y(that)14 b(requires)h(sligh)o(tly)f
(greater,)g(but)h(en)o(tirely)f(uniform)g(o)o(v)o(erhead)h(p)q(er)g(index)h
(op)q(eration.)62 1337 y(Ev)o(en)h(though)g(they)g(ma)o(y)e(gro)o(w)h(in)g
(either)h(direction,)f(Plexes)h(are)f(normally)f(constructed)i(so)f(that)g
(their)0 1399 y(\\natural")k(gro)o(wth)h(direction)g(is)g(up)o(w)o(ards,)i
(in)f(that)f(default)g(c)o(h)o(unk)h(construction)f(lea)o(v)o(es)g(free)h
(space,)h(if)0 1461 y(presen)o(t,)15 b(at)g(the)h(end)g(of)f(the)h(plex.)21
b(Ho)o(w)o(ev)o(er,)15 b(if)g(the)g(c)o(h)o(unksize)h(argumen)o(ts)e(to)h
(constructors)g(are)g(negativ)o(e,)0 1524 y(they)g(lea)o(v)o(e)g(space)g(at)g
(the)g(b)q(eginning.)62 1666 y(All)g(v)o(ersions)g(of)h(Plexes)f(supp)q(ort)h
(the)g(follo)o(wing)d(basic)j(capabilities.)k(\(letting)14
b Fj(Plex)h Fi(stand)h(for)f(the)h(t)o(yp)q(e)0 1728 y(name)i(constructed)g
(via)g(the)h(genclass)f(utilit)o(y)f(\(e.g.,)h Fj(intPlex)p
Fi(,)g Fj(doublePlex)p Fi(\)\).)28 b(Assume)18 b(declarations)f(of)0
1790 y Fj(Plex)e(p,)f(q)p Fi(,)h Fj(int)g(i,)g(j)p Fi(,)f(base)i(elemen)o(t)e
Fj(x)p Fi(,)g(and)i(Pix)e Fj(pix)p Fi(.)0 1932 y Fj(Plex)h(p;)81
b Fi(Declares)18 b(p)h(to)g(b)q(e)g(an)g(initially)e(zero-sized)i(Plex)f
(with)h(lo)o(w)e(index)j(of)e(zero,)h(and)g(the)g(default)240
1995 y(c)o(h)o(unk)d(size.)j(F)l(or)c(FPlexes,)f(c)o(h)o(unk)i(sizes)f
(represen)o(t)g(maxim)o(um)c(sizes.)0 2074 y Fj(Plex)k(p\(int)f(size\);)240
2137 y Fi(Declares)h(p)i(to)e(b)q(e)i(an)f(initially)d(zero-sized)j(Plex)g
(with)g(lo)o(w)e(index)j(of)e(zero,)h(and)g(the)g(indicated)240
2199 y(c)o(h)o(unk)e(size.)19 b(If)14 b(size)g(is)f(negativ)o(e,)f(then)i
(the)g(Plex)f(is)g(created)h(with)f(free)g(space)h(at)f(the)h(b)q(eginning)
240 2261 y(of)g(the)h(Plex,)f(allo)o(wing)e(more)h(e\016cien)o(t)i(add)p
1018 2261 14 2 v 16 w(lo)o(w\(\))e(op)q(erations.)19 b(Otherwise,)14
b(it)g(lea)o(v)o(es)g(space)h(at)240 2324 y(the)g(end.)0 2403
y Fj(Plex)g(p\(int)f(low,)h(int)f(size\);)240 2466 y Fi(Declares)i(p)h(to)g
(b)q(e)g(an)g(initially)e(zero-sized)i(Plex)g(with)f(lo)o(w)g(index)h(of)f
(lo)o(w,)g(and)h(the)g(indicated)240 2528 y(c)o(h)o(unk)f(size.)0
2608 y Fj(Plex)f(p\(int)f(low,)h(int)f(high,)h(Base)f(initval,)h(int)f(size)h
(=)g(0\);)240 2670 y Fi(Declares)g(p)h(to)f(b)q(e)i(a)e(Plex)h(with)f
(indices)h(from)e(lo)o(w)g(to)i(high,)f(initially)e(\014lled)j(with)f(initv)m
(al,)g(and)p eop
%%Page: 97 99
bop 0 -58 a Fi(Chapter)15 b(29:)k(Plex)c(classes)1417 b(97)240
183 y(the)17 b(indicated)f(c)o(h)o(unk)i(size)e(if)g(sp)q(eci\014ed,)i(else)f
(the)g(default)f(or)g(\(high)h(-)g(lo)o(w)e Fj(+)i Fi(1\),)f(whic)o(hev)o(er)
g(is)240 246 y(greater.)0 322 y Fj(Plex)f(q\(p\);)240 384 y
Fi(Declares)g(q)g(to)f(b)q(e)i(a)f(cop)o(y)g(of)g(p.)0 461
y Fj(p)g(=)g(q;)114 b Fi(Copies)15 b(Plex)g(q)g(in)o(to)f(p,)h(deleting)g
(its)f(previous)h(con)o(ten)o(ts.)0 538 y Fj(p.length\(\))240
600 y Fi(Returns)h(the)f(n)o(um)o(b)q(er)g(of)f(elemen)o(ts)g(in)h(the)g
(Plex.)0 677 y Fj(p.empty\(\))240 739 y Fi(Returns)h(true)f(if)f(Plex)h(p)h
(con)o(tains)e(no)h(elemen)o(ts.)0 816 y Fj(p.full\(\))48 b
Fi(Returns)16 b(true)e(if)h(Plex)g(p)g(cannot)g(b)q(e)g(expanded.)21
b(This)15 b(alw)o(a)o(ys)e(returns)i(false)f(for)h(XPlexes)g(and)240
878 y(MPlexes.)0 955 y Fj(p[i])144 b Fi(Returns)17 b(a)g(reference)g(to)f
(the)h(i'th)f(elemen)o(t)g(of)g(p.)25 b(An)17 b(exception)g(\(error\))e(o)q
(ccurs)i(if)f(i)h(is)f(not)g(a)240 1017 y(v)m(alid)f(index.)0
1094 y Fj(p.valid\(i\))240 1156 y Fi(Returns)h(true)f(if)f(i)h(is)g(a)g(v)m
(alid)g(index)g(in)o(to)f(Plex)h(p.)0 1233 y Fj(p.low\(\);)f(p.high\(\);)240
1295 y Fi(Return)g(the)g(minim)o(um)c(\(maxim)n(um)o(\))g(v)m(alid)k(index)f
(of)h(the)f(Plex,)h(or)f(the)g(high)h(\(lo)o(w\))e(fence)i(if)f(the)240
1357 y(plex)i(is)g(empt)o(y)l(.)0 1434 y Fj(p.ecnef\(\);)f(p.fence\(\);)240
1496 y Fi(Return)i(the)f(index)h(one)f(p)q(osition)f(past)h(the)g(minim)o(um)
c(\(maxim)o(um)o(\))h(v)m(alid)j(index.)0 1573 y Fj(p.next\(i\);)f(i)h(=)g
(p.prev\(i\);)240 1635 y Fi(Set)g(i)g(to)g(the)g(next)g(\(previous\))f
(index.)21 b(This)14 b(index)i(ma)o(y)d(not)i(b)q(e)h(within)e(b)q(ounds.)0
1712 y Fj(p\(pix\))96 b Fi(returns)15 b(a)g(reference)h(to)e(the)i(item)d(at)
i(Pix)f(pix.)0 1788 y Fj(pix)h(=)g(p.first\(\);)f(pix)g(=)h(p.last\(\);)240
1851 y Fi(Return)h(the)f(minim)o(um)c(\(maxim)o(um)o(\))h(v)m(alid)j(Pix)f
(of)h(the)g(Plex,)g(or)g(0)g(if)f(the)h(plex)h(is)e(empt)o(y)l(.)0
1927 y Fj(p.next\(pix\);)g(p.prev\(pix\);)240 1990 y Fi(set)h(pix)g(to)g(the)
g(next)g(\(previous\))f(Pix,)h(or)f(0)h(if)g(there)g(is)g(none.)0
2066 y Fj(p.owns\(pix\))240 2129 y Fi(Returns)h(true)f(if)f(the)i(Plex)f(con)
o(tains)f(the)h(elemen)o(t)f(asso)q(ciated)h(with)f(pix.)0
2205 y Fj(p.Pix_to_index\(pix\))240 2268 y Fi(If)19 b(pix)g(is)f(a)h(v)m
(alid)f(Pix)h(to)f(an)h(elemen)o(t)e(of)i(the)g(Plex,)g(returns)f(its)h
(corresp)q(onding)f(index,)i(else)240 2330 y(raises)14 b(an)i(exception.)0
2407 y Fj(ptr)f(=)g(p.index_to_Pix\(i\))240 2469 y Fi(if)g(i)f(is)h(a)g(v)m
(alid)g(index,)g(returns)g(a)g(the)g(corresp)q(onding)g(Pix.)0
2545 y Fj(p.low_element\(\);)e(p.high_element\(\);)240 2608
y Fi(Return)i(a)f(reference)h(to)f(the)h(elemen)o(t)e(at)h(the)g(minim)o(um)d
(\(maxim)n(um)o(\))g(v)m(alid)j(index.)20 b(An)15 b(excep-)240
2670 y(tion)f(o)q(ccurs)i(if)f(the)g(Plex)g(is)g(empt)o(y)l(.)p
eop
%%Page: 98 100
bop 0 -58 a Fi(98)1018 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(p.can_add_low\(\);)f
(p.can_add_high\(\);)240 246 y Fi(Returns)22 b(true)f(if)g(the)h(plex)f(can)h
(b)q(e)g(extended)g(one)g(elemen)o(t)e(do)o(wn)o(w)o(ard)g(\(up)o(w)o(ard\).)
38 b(These)240 308 y(alw)o(a)o(ys)13 b(return)j(true)f(for)f(XPlex)h(and)h
(MPlex.)0 383 y Fj(j)f(=)g(p.add_low\(x\);)e(j)i(=)g(p.add_high\(x\);)240
445 y Fi(Extend)h(the)f(Plex)g(b)o(y)h(one)f(elemen)o(t)f(do)o(wn)o(w)o(ard)h
(\(up)o(w)o(ard\).)k(The)d(new)f(minim)o(um)d(\(maxim)n(um)o(\))240
508 y(index)j(is)g(returned.)0 583 y Fj(j)g(=)g(p.del_low\(\);)f(j)h(=)g
(p.del_high\(\))240 645 y Fi(Shrink)f(the)g(Plex)g(b)o(y)g(one)g(elemen)o(t)e
(on)i(the)g(lo)o(w)f(\(high\))g(end.)20 b(The)14 b(new)h(minim)o(um)10
b(\(maxim)n(um)o(\))240 708 y(elemen)o(t)k(is)h(returned.)20
b(An)15 b(exception)h(o)q(ccurs)f(if)g(the)g(Plex)g(is)g(empt)o(y)l(.)0
783 y Fj(p.append\(q\);)240 845 y Fi(App)q(end)i(all)d(of)h(Plex)g(q)g(to)f
(the)i(high)f(side)g(of)f(p.)0 920 y Fj(p.prepend\(q\);)240
983 y Fi(Prep)q(end)i(all)e(of)h(q)g(to)g(the)g(lo)o(w)f(side)h(of)g(p.)0
1058 y Fj(p.clear\(\))240 1120 y Fi(Delete)g(all)f(elemen)o(ts,)f(resetting)i
(p)g(to)g(a)f(zero-sized)i(Plex.)0 1196 y Fj(p.reset_low\(i\);)240
1258 y Fi(Resets)11 b(p)g(to)g(b)q(e)g(indexed)h(starting)d(at)h(lo)o(w\(\))f
(=)i(i.)18 b(F)l(or)11 b(example.)17 b(if)10 b(p)h(w)o(ere)g(initially)e
(declared)i(via)240 1320 y Fj(Plex)k(p\(0,)f(10,)h(0\))p Fi(,)f(and)g(then)h
(re-indexed)g(via)f Fj(p.reset_low\(5\))p Fi(,)e(it)i(could)g(then)h(b)q(e)g
(indexed)240 1382 y(from)e(indices)j(5)f(..)k(14.)0 1458 y
Fj(p.fill\(x\))240 1520 y Fi(sets)c(all)f(p[i])g(to)h(x.)0
1595 y Fj(p.fill\(x,)f(lo,)h(hi\))240 1658 y Fi(sets)g(all)f(of)h(p[i])f
(from)g(lo)g(to)h(hi,)f(inclusiv)o(e,)g(to)h(x.)0 1733 y Fj(p.reverse\(\))240
1795 y Fi(rev)o(erses)g(p)g(in-place.)0 1871 y Fj(p.chunk_size\(\))240
1933 y Fi(returns)g(the)g(c)o(h)o(unk)h(size)f(used)h(for)e(the)i(plex.)0
2008 y Fj(p.error\(const)d(char)i(*)g(msg\))240 2070 y Fi(calls)f(the)i
(resettable)e(error)g(handler.)62 2208 y(MPlexes)k(are)f(plexes)h(with)g
(bitmaps)e(that)h(allo)o(w)f(items)g(to)i(b)q(e)g(logically)e(deleted)i(and)g
(restored.)28 b(They)0 2270 y(b)q(eha)o(v)o(e)16 b(lik)o(e)e(other)h(plexes,)
g(but)g(also)f(supp)q(ort)h(the)h(follo)o(wing)d(additional)g(and)j(mo)q
(di\014ed)e(capabilities:)0 2408 y Fj(p.del_index\(i\);)f(p.del_Pix\(pix\))
240 2470 y Fi(logically)i(deletes)h(p[i])g(\(p\(pix\)\).)23
b(After)17 b(deletion,)f(attempts)e(to)j(access)f(p[i])g(generate)h(a)f
(error.)240 2532 y(Indexing)i(via)f(lo)o(w\(\),)g(high\(\),)g(prev\(\),)g
(and)h(next\(\))f(skip)h(the)g(elemen)o(t.)26 b(Deleting)17
b(an)g(elemen)o(t)240 2595 y(nev)o(er)e(c)o(hanges)h(the)f(logical)e(b)q
(ounds)j(of)f(the)g(plex.)0 2670 y Fj(p.undel_index\(i\);)e
(p.undel_Pix\(pix\))p eop
%%Page: 99 101
bop 0 -58 a Fi(Chapter)15 b(29:)k(Plex)c(classes)1417 b(99)240
183 y(logically)13 b(undeletes)j(p[i])e(\(p\(pix\)\).)0 258
y Fj(p.del_low\(\);)g(p.del_high\(\))240 320 y Fi(Delete)h(the)g(lo)o(w)o
(est)e(\(highest\))h(undeleted)i(elemen)o(t,)d(resetting)h(the)h(logical)e(b)
q(ounds)j(of)f(the)g(plex)240 382 y(to)j(the)h(next)g(lo)o(w)o(est)f
(\(highest\))g(undeleted)h(index.)32 b(Th)o(us,)19 b(MPlex)g(del)p
1528 382 14 2 v 16 w(lo)o(w\(\))e(and)i(del)p 1815 382 V 17
w(high\(\))240 445 y(ma)o(y)13 b(shrink)i(the)h(b)q(ounds)g(of)f(the)g(plex)g
(b)o(y)g(more)f(than)h(one)g(index.)0 519 y Fj(p.adjust_bounds\(\))240
582 y Fi(Resets)j(the)f(lo)o(w)g(and)g(high)g(b)q(ounds)i(of)e(the)g(Plex)g
(to)g(the)h(indexes)f(of)g(the)h(lo)o(w)o(est)e(and)h(highest)240
644 y(actual)d(undeleted)i(elemen)o(ts.)0 719 y Fj(int)f(i)g(=)g(p.add\(x\))
240 781 y Fi(Adds)h(x)f(in)g(an)g(un)o(used)h(index,)f(if)g(p)q(ossible,)f
(else)h(p)q(erforms)f(add)p 1378 781 V 17 w(high.)0 856 y Fj(p.count\(\))240
918 y Fi(returns)h(the)g(n)o(um)o(b)q(er)g(of)g(v)m(alid)g(\(undeleted\))g
(elemen)o(ts.)0 993 y Fj(p.available\(\))240 1055 y Fi(returns)g(the)g(n)o
(um)o(b)q(er)g(of)g(a)o(v)m(ailable)f(\(deleted\))g(indices.)0
1130 y Fj(int)h(i)g(=)g(p.unused_index\(\))240 1192 y Fi(returns)20
b(the)h(index)f(of)g(some)f(deleted)i(elemen)o(t,)e(if)h(one)h(exists,)f
(else)g(triggers)f(an)h(error.)35 b(An)240 1254 y(un)o(used)16
b(elemen)o(t)e(ma)o(y)f(b)q(e)j(reused)g(via)f(undel.)0 1329
y Fj(pix)g(=)g(p.unused_Pix\(\))240 1391 y Fi(returns)h(the)g(pix)f(of)h
(some)e(deleted)i(elemen)o(t,)f(if)g(one)h(exists,)f(else)h(0.)21
b(An)16 b(un)o(used)h(elemen)o(t)e(ma)o(y)240 1453 y(b)q(e)h(reused)g(via)e
(undel.)p eop
%%Page: 100 102
bop 0 -58 a Fi(100)995 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 101 103
bop 0 -58 a Fi(Chapter)15 b(30:)k(Stac)o(ks)1500 b(101)0 183
y Ff(30)41 b(Stac)n(ks)62 370 y Fi(Stac)o(ks)12 b(are)f(declared)i(as)e(an)h
(\\abstract")e(class.)18 b(They)13 b(are)e(curren)o(tly)h(implemen)o(ted)d
(in)j(an)o(y)g(of)f(three)h(w)o(a)o(ys.)0 507 y Fj(VStack)96
b Fi(implemen)o(t)12 b(\014xed)k(sized)g(stac)o(ks)e(via)h(arra)o(ys.)0
582 y Fj(XPStack)72 b Fi(implemen)o(t)12 b(dynamically-sized)i(stac)o(ks)g
(via)h(XPlexes.)0 656 y Fj(SLStack)72 b Fi(implemen)o(t)12
b(dynamically-size)i(stac)o(ks)g(via)g(link)o(ed)h(lists.)62
793 y(All)f(p)q(ossess)h(the)f(same)f(capabilities.)18 b(They)d(di\013er)f
(only)g(in)g(constructors.)19 b(VStac)o(k)14 b(constructors)f(require)0
856 y(a)g(\014xed)g(maxim)o(um)c(capacit)o(y)j(argumen)o(t.)17
b(XPStac)o(k)12 b(constructors)g(optionally)f(tak)o(e)i(a)f(c)o(h)o(unk)h
(size)g(argumen)o(t.)0 918 y(SLStac)o(k)i(constructors)g(tak)o(e)f(no)h
(argumen)o(t.)62 1055 y(Assume)g(the)g(declaration)f(of)h(a)g(base)g(elemen)o
(t)f Fj(x)p Fi(.)0 1192 y Fj(Stack)g(s;)h(or)g(Stack)g(s\(int)f(capacity\))
240 1254 y Fi(declares)h(a)g(Stac)o(k.)0 1329 y Fj(s.empty\(\))240
1391 y Fi(returns)g(true)g(if)g(stac)o(k)f(s)h(is)g(empt)o(y)l(.)0
1466 y Fj(s.full\(\))48 b Fi(returns)15 b(true)g(if)g(stac)o(k)f(s)h(is)g
(full.)k(XPStac)o(ks)c(and)g(SLStac)o(ks)h(nev)o(er)f(b)q(ecome)g(full.)0
1541 y Fj(s.length\(\))240 1603 y Fi(returns)g(the)g(curren)o(t)g(n)o(um)o(b)
q(er)g(of)g(elemen)o(ts)f(in)h(the)g(stac)o(k.)0 1678 y Fj(s.push\(x\))240
1740 y Fi(pushes)h(x)f(on)g(stac)o(k)g(s.)0 1815 y Fj(x)g(=)g(s.pop\(\))240
1877 y Fi(p)q(ops)h(and)f(returns)g(the)g(top)g(of)g(stac)o(k)0
1952 y Fj(s.top\(\))72 b Fi(returns)15 b(a)g(reference)h(to)e(the)i(top)f(of)
f(stac)o(k.)0 2026 y Fj(s.del_top\(\))240 2089 y Fi(p)q(ops,)i(but)g(do)q(es)
g(not)f(return)h(the)g(top)f(of)h(stac)o(k.)21 b(When)16 b(large)f(items)f
(are)h(held)h(on)g(the)g(stac)o(k)f(it)240 2151 y(is)j(often)g(a)g(go)q(o)q
(d)g(idea)g(to)g(use)g Fj(top\(\))g Fi(to)g(insp)q(ect)g(and)h(use)f(the)h
(top)f(of)g(stac)o(k,)f(follo)o(w)o(ed)g(b)o(y)h(a)240 2213
y Fj(del_top\(\))0 2288 y(s.clear\(\))240 2350 y Fi(remo)o(v)o(es)13
b(all)h(elemen)o(ts)g(from)g(the)h(stac)o(k.)p eop
%%Page: 102 104
bop 0 -58 a Fi(102)995 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 103 105
bop 0 -58 a Fi(Chapter)15 b(31:)k(Queues)1484 b(103)0 183 y
Ff(31)41 b(Queues)62 370 y Fi(Queues)20 b(are)f(declared)g(as)f(an)h
(\\abstract")e(class.)31 b(They)19 b(are)f(curren)o(tly)h(implemen)o(ted)d
(in)j(an)o(y)f(of)h(three)0 432 y(w)o(a)o(ys.)0 569 y Fj(VQueue)96
b Fi(implemen)o(t)12 b(\014xed)k(sized)g(Queues)g(via)f(arra)o(ys.)0
644 y Fj(XPQueue)72 b Fi(implemen)o(t)12 b(dynamically-sized)i(Queues)i(via)f
(XPlexes.)0 719 y Fj(SLQueue)72 b Fi(implemen)o(t)12 b(dynamically-size)i
(Queues)i(via)e(link)o(ed)h(lists.)62 856 y(All)d(p)q(ossess)h(the)g(same)f
(capabilities.)17 b(They)d(di\013er)e(only)g(in)h(constructors.)18
b(V)o(Queue)c(constructors)e(require)0 918 y(a)f(\014xed)h(maxim)o(um)7
b(capacit)o(y)j(argumen)o(t.)17 b(XPQueue)c(constructors)d(optionally)g(tak)o
(e)g(a)h(c)o(h)o(unk)h(size)f(argumen)o(t.)0 980 y(SLQueue)17
b(constructors)d(tak)o(e)h(no)g(argumen)o(t.)62 1117 y(Assume)g(the)g
(declaration)f(of)h(a)g(base)g(elemen)o(t)f Fj(x)p Fi(.)0 1254
y Fj(Queue)g(q;)h(or)g(Queue)g(q\(int)f(capacity\);)240 1316
y Fi(declares)h(a)g(queue.)0 1391 y Fj(q.empty\(\))240 1453
y Fi(returns)g(true)g(if)g(queue)h(q)f(is)g(empt)o(y)l(.)0
1528 y Fj(q.full\(\))48 b Fi(returns)15 b(true)g(if)g(queue)h(q)f(is)g(full.)
k(XPQueues)d(and)g(SLQueues)h(are)e(nev)o(er)g(full.)0 1603
y Fj(q.length\(\))240 1665 y Fi(returns)g(the)g(curren)o(t)g(n)o(um)o(b)q(er)
g(of)g(elemen)o(ts)f(in)h(the)g(queue.)0 1740 y Fj(q.enq\(x\))48
b Fi(enqueues)16 b(x)g(on)f(queue)h(q.)0 1815 y Fj(x)f(=)g(q.deq\(\))240
1877 y Fi(dequeues)h(and)g(returns)f(the)g(fron)o(t)f(of)h(queue)0
1952 y Fj(q.front\(\))240 2014 y Fi(returns)g(a)g(reference)h(to)e(the)i
(fron)o(t)e(of)h(queue.)0 2089 y Fj(q.del_front\(\))240 2151
y Fi(dequeues,)h(but)f(do)q(es)h(not)f(return)g(the)g(fron)o(t)f(of)h(queue)0
2226 y Fj(q.clear\(\))240 2288 y Fi(remo)o(v)o(es)e(all)h(elemen)o(ts)g(from)
g(the)h(queue.)p eop
%%Page: 104 106
bop 0 -58 a Fi(104)995 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 105 107
bop 0 -58 a Fi(Chapter)15 b(32:)k(Double)c(ended)h(Queues)1197
b(105)0 183 y Ff(32)41 b(Double)26 b(ended)g(Queues)62 370
y Fi(Deques)16 b(are)f(declared)g(as)g(an)g(\\abstract")f(class.)19
b(They)c(are)g(curren)o(tly)g(implemen)o(ted)e(in)i(t)o(w)o(o)f(w)o(a)o(ys.)0
507 y Fj(XPDeque)72 b Fi(implemen)o(t)12 b(dynamically-sized)i(Deques)h(via)g
(XPlexes.)0 582 y Fj(DLDeque)72 b Fi(implemen)o(t)12 b(dynamically-size)i
(Deques)h(via)g(link)o(ed)f(lists.)62 719 y(All)21 b(p)q(ossess)h(the)g(same)
e(capabilities.)38 b(They)22 b(di\013er)f(only)h(in)f(constructors.)39
b(XPDeque)22 b(constructors)0 781 y(optionally)13 b(tak)o(e)i(a)g(c)o(h)o
(unk)g(size)g(argumen)o(t.)k(DLDeque)c(constructors)g(tak)o(e)f(no)h(argumen)
o(t.)62 918 y(Double-ended)i(queues)e(supp)q(ort)h(b)q(oth)f(stac)o(k-lik)o
(e)f(and)h(queue-lik)o(e)h(capabilities:)62 1055 y(Assume)f(the)g
(declaration)f(of)h(a)g(base)g(elemen)o(t)f Fj(x)p Fi(.)0 1192
y Fj(Deque)g(d;)h(or)g(Deque)g(d\(int)f(initial_capacity\))240
1254 y Fi(declares)h(a)g(deque.)0 1329 y Fj(d.empty\(\))240
1391 y Fi(returns)g(true)g(if)g(deque)h(d)f(is)g(empt)o(y)l(.)0
1466 y Fj(d.full\(\))48 b Fi(returns)15 b(true)g(if)g(deque)h(d)f(is)g(full.)
k(Alw)o(a)o(ys)14 b(returns)h(false)g(in)g(curren)o(t)g(implemen)o(tat)o
(ions.)0 1541 y Fj(d.length\(\))240 1603 y Fi(returns)g(the)g(curren)o(t)g(n)
o(um)o(b)q(er)g(of)g(elemen)o(ts)f(in)h(the)g(deque.)0 1678
y Fj(d.enq\(x\))48 b Fi(inserts)15 b(x)g(at)f(the)i(rear)e(of)h(deque)h(d.)0
1752 y Fj(d.push\(x\))240 1815 y Fi(inserts)f(x)g(at)f(the)i(fron)o(t)e(of)h
(deque)h(d.)0 1889 y Fj(x)f(=)g(d.deq\(\))240 1952 y Fi(dequeues)h(and)g
(returns)f(the)g(fron)o(t)f(of)h(deque)0 2026 y Fj(d.front\(\))240
2089 y Fi(returns)g(a)g(reference)h(to)e(the)i(fron)o(t)e(of)h(deque.)0
2163 y Fj(d.rear\(\))48 b Fi(returns)15 b(a)g(reference)h(to)e(the)i(rear)e
(of)h(the)g(deque.)0 2238 y Fj(d.del_front\(\))240 2300 y Fi(deletes,)g(but)g
(do)q(es)h(not)f(return)g(the)g(fron)o(t)f(of)h(deque)0 2375
y Fj(d.del_rear\(\))240 2437 y Fi(deletes,)g(but)g(do)q(es)h(not)f(return)g
(the)g(rear)g(of)f(the)i(deque.)0 2512 y Fj(d.clear\(\))240
2574 y Fi(remo)o(v)o(es)d(all)h(elemen)o(ts)g(from)g(the)h(deque.)p
eop
%%Page: 106 108
bop 0 -58 a Fi(106)995 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 107 109
bop 0 -58 a Fi(Chapter)15 b(33:)k(Priorit)o(y)13 b(Queue)k(class)d(protot)o
(yp)q(es.)984 b(107)0 183 y Ff(33)41 b(Priorit)n(y)26 b(Queue)g(class)g
(protot)n(yp)r(es.)62 380 y Fi(Priorit)o(y)13 b(queues)j(main)o(tain)d
(collections)h(of)h(ob)s(jects)f(arranged)h(for)f(fast)h(access)g(to)g(the)g
(least)f(elemen)o(t.)62 519 y(Sev)o(eral)h(protot)o(yp)q(e)f(implemen)o
(tations)e(of)j(priorit)o(y)e(queues)j(are)f(supp)q(orted.)0
658 y Fj(XPPQs)120 b Fi(implemen)o(t)12 b(2-ary)j(heaps)h(via)e(XPlexes.)0
734 y Fj(SplayPQs)48 b Fi(implemen)o(t)11 b(PQs)j(via)f(Sleater)g(and)h(T)l
(arjan's)f(\(JA)o(CM)g(1985\))f(spla)o(y)h(trees.)19 b(The)14
b(algorithms)d(use)240 797 y(a)18 b(v)o(ersion)g(of)f(\\simple)g(top-do)o(wn)
h(spla)o(ying")f(\(describ)q(ed)i(on)f(page)g(669)g(of)g(the)g(article\).)28
b(The)240 859 y(simple-spla)o(y)15 b(mec)o(hanism)g(for)h(priorit)o(y)g
(queue)i(functions)f(is)f(lo)q(osely)g(based)i(on)f(the)g(one)g(used)240
921 y(b)o(y)d(D.)f(Jones)i(in)f(the)g(C)g(spla)o(y)f(tree)h(functions)g(a)o
(v)m(ailable)e(from)h(v)o(olume)f(14)i(of)f(the)h(uunet.uu.net)240
984 y(arc)o(hiv)o(es.)0 1060 y Fj(PHPQs)120 b Fi(implemen)o(t)16
b(pairing)i(heaps)h(as)g(describ)q(ed)g(b)o(y)g(F)l(redman)f(and)h(Sedgewic)o
(k)g Fc(Algorithmica)p Fi(,)d(V)l(ol)240 1122 y(1,)h(p111-129.)25
b(Storage)16 b(for)g(heap)i(elemen)o(ts)e(is)g(managed)g(via)h(an)g(in)o
(ternal)f(freelist)g(tec)o(hnique.)240 1185 y(The)j(constructor)f(allo)o(ws)e
(an)j(initial)e(capacit)o(y)g(estimate)g(for)h(freelist)f(space.)30
b(The)19 b(storage)e(is)240 1247 y(automaticall)o(y)10 b(expanded)j(if)e
(necessary)i(to)e(hold)h(new)h(items.)k(The)12 b(deletion)g(tec)o(hnique)g
(is)g(a)g(fast)240 1309 y(\\lazy)18 b(deletion")g(strategy)f(that)h(marks)f
(items)g(as)h(deleted,)i(without)e(reclaiming)e(space)j(un)o(til)240
1372 y(the)c(items)f(come)g(to)g(the)i(top)f(of)f(the)i(heap.)62
1511 y(All)g(PQ)h(classes)f(supp)q(ort)h(the)f(follo)o(wing)f(op)q(erations,)
g(for)h(some)g(PQ)g(class)g Fj(Heap)p Fi(,)g(instance)h Fj(h)p
Fi(,)f Fj(Pix)f(ind)p Fi(,)0 1573 y(and)g(base)h(class)e(v)m(ariable)h
Fj(x)p Fi(.)0 1712 y Fj(h.empty\(\))240 1774 y Fi(returns)g(true)g(if)g
(there)g(are)g(no)g(elemen)o(ts)f(in)h(the)g(PQ.)0 1851 y Fj(h.length\(\))240
1913 y Fi(returns)g(the)g(n)o(um)o(b)q(er)g(of)g(elemen)o(ts)f(in)h(h.)0
1990 y Fj(ind)g(=)g(h.enq\(x\))240 2052 y Fi(Places)g(x)g(in)g(the)g(PQ,)g
(and)h(returns)f(its)f(index.)0 2129 y Fj(x)h(=)g(h.deq\(\))240
2191 y Fi(Dequeues)j(the)g(minim)o(um)c(elemen)o(t)i(of)h(the)h(PQ)g(in)o(to)
f(x,)h(or)f(generates)g(an)h(error)f(if)g(the)h(PQ)f(is)240
2253 y(empt)o(y)l(.)0 2330 y Fj(h.front\(\))240 2392 y Fi(returns)e(a)g
(reference)h(to)e(the)i(minim)o(um)11 b(elemen)o(t.)0 2469
y Fj(h.del_front\(\))240 2531 y Fi(deletes)k(the)h(minim)o(um)11
b(elemen)o(t.)0 2608 y Fj(h.clear\(\);)240 2670 y Fi(deletes)k(all)f(elemen)o
(ts)g(from)g(h;)p eop
%%Page: 108 110
bop 0 -58 a Fi(108)995 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(h.contains\(x\))240 246
y Fi(returns)h(true)g(if)g(x)g(is)g(in)g(h.)0 320 y Fj(h\(ind\))96
b Fi(returns)15 b(a)g(reference)h(to)e(the)i(item)d(indexed)j(b)o(y)f(ind.)0
395 y Fj(ind)g(=)g(h.first\(\))240 457 y Fi(returns)h(the)g(Pix)f(of)g
(\014rst)h(item)e(in)i(the)f(PQ)i(or)e(0)g(if)h(empt)o(y)l(.)k(This)c(need)g
(not)g(b)q(e)g(the)g(Pix)f(of)h(the)240 519 y(least)e(elemen)o(t.)0
594 y Fj(h.next\(ind\))240 656 y Fi(adv)m(ances)i(ind)f(to)g(the)g(Pix)g(of)g
(next)g(elemen)o(t,)e(or)i(0)g(if)g(there)g(are)g(no)g(more.)0
731 y Fj(ind)g(=)g(h.seek\(x\))240 793 y Fi(Sets)g(ind)g(to)g(the)g(Pix)g(of)
g(x,)g(or)f(0)h(if)g(x)g(is)g(not)f(in)h(h.)0 868 y Fj(h.del\(ind\))240
930 y Fi(deletes)g(the)h(item)d(with)i(Pix)f(ind.)p eop
%%Page: 109 111
bop 0 -58 a Fi(Chapter)15 b(34:)k(Set)c(class)g(protot)o(yp)q(es)1230
b(109)0 183 y Ff(34)41 b(Set)27 b(class)f(protot)n(yp)r(es)62
380 y Fi(Set)16 b(classes)e(main)o(tain)f(un)o(b)q(ounded)k(collections)d(of)
g(items)g(con)o(taining)g(no)h(duplicate)g(elemen)o(ts.)62
519 y(These)c(are)g(curren)o(tly)f(implemen)o(ted)f(in)h(sev)o(eral)g(w)o(a)o
(ys,)h(di\013ering)e(in)i(represen)o(tation)f(strategy)l(,)g(algorithmic)0
581 y(e\016ciency)l(,)22 b(and)e(appropriateness)g(for)g(v)m(arious)f(tasks.)
35 b(\(Listed)19 b(next)i(to)e(eac)o(h)i(are)f(a)o(v)o(erage)f(\(follo)o(w)o
(ed)f(b)o(y)0 643 y(w)o(orst-case,)12 b(if)g(di\013eren)o(t\))g(time)f
(complexities)f(for)i([a])g(adding,)h([f)t(])e(\014nding)i(\(via)f(seek,)h
(con)o(tains\),)f([d])g(deleting,)0 706 y(elemen)o(ts,)h(and)j([c])e
(comparing)g(\(via)g(==,)h Fj(<)p Fi(=\))h(and)f([m])e(merging)h(\(via)g
Fj(|)p Fi(=,)h(-=,)g(&=\))h(sets\).)0 845 y Fj(XPSets)96 b
Fi(implemen)o(t)17 b(unordered)k(sets)e(via)h(XPlexes.)34 b(\([a)19
b(O\(n\)],)h([f)f(O\(n\)],)i([d)e(O\(n\)],)i([c)e(O\(n)p Fj(^)p
Fi(2\)])g([m)240 907 y(O\(n)p Fj(^)p Fi(2\)]\).)0 984 y Fj(OXPSets)72
b Fi(implemen)o(t)18 b(ordered)k(sets)e(via)h(XPlexes.)37 b(\([a)20
b(O\(n\)],)i([f)f(O\(log)f(n\)],)h([d)g(O\(n\)],)h([c)f(O\(n\)])f([m)240
1046 y(O\(n\)]\).)0 1122 y Fj(SLSets)96 b Fi(implemen)o(t)15
b(unordered)k(sets)e(via)h(link)o(ed)f(lists)g(\([a)g(O\(n\)],)g([f)h
(O\(n\)],)f([d)h(O\(n\)],)g([c)f(O\(n)p Fj(^)p Fi(2\)])g([m)240
1185 y(O\(n)p Fj(^)p Fi(2\)]\).)0 1261 y Fj(OSLSets)72 b Fi(implemen)o(t)11
b(ordered)j(sets)g(via)f(link)o(ed)h(lists)f(\([a)g(O\(n\)],)g([f)h(O\(n\)],)
f([d)h(O\(n\)],)f([c)h(O\(n\)])g([m)e(O\(n\)]\).)0 1338 y Fj(AVLSets)72
b Fi(implemen)o(t)11 b(ordered)j(sets)f(via)g(threaded)h(A)-5
b(VL)14 b(trees)f(\([a)g(O\(log)g(n\)],)g([f)g(O\(log)g(n\)],)g([d)g(O\(log)g
(n\)],)240 1400 y([c)i(O\(n\)])g([m)e(O\(n\)]\).)0 1477 y Fj(BSTSets)72
b Fi(implemen)o(t)11 b(ordered)i(sets)g(via)g(binary)g(searc)o(h)g(trees.)19
b(The)14 b(trees)f(ma)o(y)f(b)q(e)i(man)o(ually)d(rebalanced)240
1539 y(via)17 b(the)i(O\(n\))f Fj(balance\(\))e Fi(mem)o(b)q(er)h(function.)
28 b(\([a)17 b(O\(log)g(n\)/O\(n\)],)h([f)f(O\(log)g(n\)/O\(n\)],)h([d)240
1602 y(O\(log)c(n\)/O\(n\)],)g([c)h(O\(n\)])g([m)f(O\(n\)]\).)0
1678 y Fj(SplaySets)240 1741 y Fi(implemen)o(t)j(ordered)j(sets)g(via)f
(Sleater)h(and)g(T)l(arjan's)f(\(JA)o(CM)g(1985\))g(spla)o(y)g(trees.)34
b(The)20 b(al-)240 1803 y(gorithms)c(use)j(a)g(v)o(ersion)f(of)g(\\simple)f
(top-do)o(wn)i(spla)o(ying")e(\(describ)q(ed)i(on)g(page)g(669)f(of)g(the)240
1865 y(article\).)g(\(Amortized:)g([a)d(O\(log)f(n\)],)g([f)h(O\(log)f(n\)],)
h([d)g(O\(log)f(n\)],)g([c)h(O\(n\)])g([m)f(O\(n)h(log)f(n\)]\).)0
1942 y Fj(VHSets)96 b Fi(implemen)o(t)23 b(unordered)k(sets)f(via)f(hash)i
(tables.)52 b(The)26 b(tables)f(are)h(automatically)d(resized)240
2004 y(when)e(their)f(capacit)o(y)g(is)g(exhausted.)36 b(\([a)19
b(O\(1\)/O\(n\)],)i([f)f(O\(1\)/O\(n\)],)g([d)g(O\(1\)/O\(n\)],)g([c)240
2066 y(O\(n\)/O\(n)p Fj(^)p Fi(2\)])14 b([m)g(O\(n\)/O\(n)p
Fj(^)p Fi(2\)]\).)0 2143 y Fj(VOHSets)72 b Fi(implemen)o(t)11
b(unordered)k(sets)e(via)g(ordered)h(hash)g(tables)f(The)h(tables)f(are)h
(automatical)o(ly)d(resized)240 2205 y(when)21 b(their)f(capacit)o(y)g(is)g
(exhausted.)36 b(\([a)19 b(O\(1\)/O\(n\)],)i([f)f(O\(1\)/O\(n\)],)g([d)g
(O\(1\)/O\(n\)],)g([c)240 2268 y(O\(n\)/O\(n)p Fj(^)p Fi(2\)])14
b([m)g(O\(n\)/O\(n)p Fj(^)p Fi(2\)]\).)0 2344 y Fj(CHSets)96
b Fi(implemen)o(t)15 b(unordered)j(sets)g(via)f(c)o(hained)h(hash)g(tables.)
27 b(\([a)16 b(O\(1\)/O\(n\)],)h([f)g(O\(1\)/O\(n\)],)g([d)240
2407 y(O\(1\)/O\(n\)],)d([c)h(O\(n\)/O\(n)p Fj(^)p Fi(2\)])f([m)f
(O\(n\)/O\(n)p Fj(^)p Fi(2\)]\).)62 2545 y(The)e(di\013eren)o(t)e(implemen)o
(tati)o(ons)f(di\013er)h(in)h(whether)g(their)g(constructors)f(require)i(an)f
(argumen)o(t)e(sp)q(ecifying)0 2608 y(their)16 b(initial)e(capacit)o(y)l(.)22
b(Initial)15 b(capacities)h(are)g(required)g(for)f(plex)i(and)f(hash)g(table)
g(based)g(Sets.)23 b(If)17 b(none)f(is)0 2670 y(giv)o(en)f
Fj(DEFAULT_INITIAL_CAPACITY)d Fi(\(from)h(`)p Fj(<T>defs.h)p
Fi('\))g(is)h(used.)p eop
%%Page: 110 112
bop 0 -58 a Fi(110)995 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)62 183 y(Sets)h(supp)q(ort)g(the)g(follo)o(wing)e
(op)q(erations,)g(for)i(some)e(class)h Fj(Set)p Fi(,)g(instances)h
Fj(a)g Fi(and)g Fj(b)p Fi(,)f Fj(Pix)h(ind)p Fi(,)f(and)h(base)0
246 y(elemen)o(t)g Fj(x)p Fi(.)23 b(Since)17 b(all)e(implemen)o(tati)o(ons)f
(are)i(virtual)e(deriv)o(ed)j(classes)f(of)f(the)i Fj(<T>Set)e
Fi(class,)h(it)f(is)h(p)q(ossible)0 308 y(to)g(mix)f(and)i(matc)o(h)e(op)q
(erations)g(across)h(di\013eren)o(t)g(implemen)o(tati)o(ons,)e(although,)h
(as)h(usual,)h(op)q(erations)e(are)0 370 y(generally)f(faster)h(when)g(the)h
(particular)e(classes)g(are)h(sp)q(eci\014ed)h(in)f(functions)g(op)q(erating)
g(on)g(Sets.)62 507 y(Pix-based)20 b(op)q(erations)f(are)h(more)f(fully)g
(describ)q(ed)i(in)f(the)g(section)g(on)g(Pixes.)34 b(See)20
b(Chapter)g(9)g([Pix],)0 569 y(page)15 b(29)0 706 y Fj(Set)g(a;)g(or)f(Set)h
(a\(int)g(initial_size\);)240 769 y Fi(Declares)d(a)h(to)g(b)q(e)h(an)f(empt)
o(y)e(Set.)20 b(The)13 b(second)h(v)o(ersion)e(is)h(allo)o(w)o(ed)e(in)i(set)
g(classes)g(that)f(require)240 831 y(initial)h(capacit)o(y)i(or)f(sizing)h
(sp)q(eci\014cations.)0 906 y Fj(a.empty\(\))240 968 y Fi(returns)g(true)g
(if)g(a)g(is)f(empt)o(y)l(.)0 1043 y Fj(a.length\(\))240 1105
y Fi(returns)h(the)g(n)o(um)o(b)q(er)g(of)g(elemen)o(ts)f(in)h(a.)0
1180 y Fj(Pix)g(ind)f(=)h(a.add\(x\))240 1242 y Fi(inserts)g(x)g(in)o(to)f
(a,)g(returning)h(its)g(index.)0 1316 y Fj(a.del\(x\))48 b
Fi(deletes)15 b(x)g(from)f(a.)0 1391 y Fj(a.clear\(\))240 1453
y Fi(deletes)h(all)f(elemen)o(ts)g(from)g(a;)0 1528 y Fj(a.contains\(x\))240
1590 y Fi(returns)h(true)g(if)g(x)g(is)g(in)g(a.)0 1665 y Fj(a\(ind\))96
b Fi(returns)15 b(a)g(reference)h(to)e(the)i(item)d(indexed)j(b)o(y)f(ind.)0
1740 y Fj(ind)g(=)g(a.first\(\))240 1802 y Fi(returns)h(the)g(Pix)g(of)g
(\014rst)g(item)e(in)i(the)h(set)f(or)f(0)h(if)g(the)g(Set)h(is)e(empt)o(y)l
(.)22 b(F)l(or)16 b(ordered)g(Sets,)h(this)240 1864 y(is)e(the)g(Pix)g(of)f
(the)i(least)e(elemen)o(t.)0 1939 y Fj(a.next\(ind\))240 2001
y Fi(adv)m(ances)i(ind)f(to)g(the)g(Pix)g(of)g(next)g(elemen)o(t,)e(or)i(0)g
(if)g(there)g(are)g(no)g(more.)0 2076 y Fj(ind)g(=)g(a.seek\(x\))240
2138 y Fi(Sets)g(ind)g(to)g(the)g(Pix)g(of)g(x,)g(or)f(0)h(if)g(x)g(is)g(not)
f(in)h(a.)0 2213 y Fj(a)g(==)g(b)114 b Fi(returns)15 b(true)g(if)g(a)g(and)g
(b)g(con)o(tain)g(all)f(the)h(same)f(elemen)o(ts.)0 2288 y
Fj(a)h(!=)g(b)114 b Fi(returns)15 b(true)g(if)g(a)g(and)g(b)g(do)h(not)e(con)
o(tain)h(all)f(the)h(same)f(elemen)o(ts.)0 2363 y Fj(a)h(<=)g(b)114
b Fi(returns)15 b(true)g(if)g(a)g(is)f(a)h(subset)h(of)e(b.)0
2437 y Fj(a)h(|=)g(b)114 b Fi(Adds)16 b(all)e(elemen)o(ts)g(of)g(b)i(to)e(a.)
0 2512 y Fj(a)h(-=)g(b)114 b Fi(Deletes)15 b(all)f(elemen)o(ts)g(of)g(b)i
(from)d(a.)0 2587 y Fj(a)i(&=)g(b)114 b Fi(Deletes)15 b(all)f(elemen)o(ts)g
(of)g(a)h(not)g(o)q(ccurring)g(in)g(b.)p eop
%%Page: 111 113
bop 0 -58 a Fi(Chapter)15 b(35:)k(Bag)c(class)g(protot)o(yp)q(es)1215
b(111)0 183 y Ff(35)41 b(Bag)28 b(class)e(protot)n(yp)r(es)62
380 y Fi(Bag)15 b(classes)g(main)o(tain)d(un)o(b)q(ounded)17
b(collections)d(of)h(items)e(p)q(oten)o(tially)h(con)o(taining)g(duplicate)h
(elemen)o(ts.)62 519 y(These)c(are)g(curren)o(tly)f(implemen)o(ted)f(in)h
(sev)o(eral)g(w)o(a)o(ys,)h(di\013ering)e(in)i(represen)o(tation)f(strategy)l
(,)g(algorithmic)0 581 y(e\016ciency)l(,)22 b(and)e(appropriateness)g(for)g
(v)m(arious)f(tasks.)35 b(\(Listed)19 b(next)i(to)e(eac)o(h)i(are)f(a)o(v)o
(erage)f(\(follo)o(w)o(ed)f(b)o(y)0 643 y(w)o(orst-case,)12
b(if)i(di\013eren)o(t\))e(time)g(complexities)g(for)h([a])g(adding,)g([f)t(])
f(\014nding)i(\(via)f(seek,)h(con)o(tains\),)e([d])h(deleting)0
706 y(elemen)o(ts\).)0 845 y Fj(XPBags)96 b Fi(implemen)o(t)12
b(unordered)k(Bags)f(via)g(XPlexes.)k(\([a)c(O\(1\)],)e([f)i(O\(n\)],)f([d)h
(O\(n\)]\).)0 921 y Fj(OXPBags)72 b Fi(implemen)o(t)12 b(ordered)k(Bags)f
(via)f(XPlexes.)20 b(\([a)14 b(O\(n\)],)g([f)h(O\(log)f(n\)],)h([d)g
(O\(n\)]\).)0 998 y Fj(SLBags)96 b Fi(implemen)o(t)12 b(unordered)k(Bags)f
(via)g(link)o(ed)f(lists)g(\([a)h(O\(1\)],)e([f)i(O\(n\)],)f([d)h(O\(n\)]\).)
0 1075 y Fj(OSLBags)72 b Fi(implemen)o(t)12 b(ordered)k(Bags)f(via)f(link)o
(ed)h(lists)f(\([a)g(O\(n\)],)g([f)h(O\(n\)],)f([d)h(O\(n\)]\).)0
1151 y Fj(SplayBags)240 1214 y Fi(implemen)o(t)h(ordered)i(Bags)g(via)g
(Sleater)g(and)h(T)l(arjan's)e(\(JA)o(CM)h(1985\))f(spla)o(y)g(trees.)30
b(The)18 b(al-)240 1276 y(gorithms)e(use)j(a)g(v)o(ersion)f(of)g(\\simple)f
(top-do)o(wn)i(spla)o(ying")e(\(describ)q(ed)i(on)g(page)g(669)f(of)g(the)240
1338 y(article\).)g(\(Amortized:)g([a)d(O\(log)f(n\)],)g([f)h(O\(log)f(n\)],)
h([d)g(O\(log)f(n\)]\).)0 1415 y Fj(VHBags)96 b Fi(implemen)o(t)12
b(unordered)j(Bags)e(via)h(hash)g(tables.)19 b(The)c(tables)e(are)h
(automatically)d(resized)j(when)240 1477 y(their)h(capacit)o(y)f(is)h
(exhausted.)20 b(\([a)14 b(O\(1\)/O\(n\)],)g([f)g(O\(1\)/O\(n\)],)g([d)h
(O\(1\)/O\(n\)]\).)0 1554 y Fj(CHBags)96 b Fi(implemen)o(t)13
b(unordered)k(Bags)f(via)f(c)o(hained)i(hash)f(tables.)22 b(\([a)15
b(O\(1\)/O\(n\)],)g([f)g(O\(1\)/O\(n\)],)g([d)240 1616 y(O\(1\)/O\(n\)]\).)62
1755 y(The)c(di\013eren)o(t)e(implemen)o(tati)o(ons)f(di\013er)h(in)h
(whether)g(their)g(constructors)f(require)i(an)f(argumen)o(t)e(sp)q(ecifying)
0 1817 y(their)15 b(initial)f(capacit)o(y)l(.)20 b(Initial)14
b(capacities)h(are)g(required)g(for)g(plex)h(and)f(hash)h(table)f(based)h
(Bags.)k(If)c(none)f(is)0 1880 y(giv)o(en)g Fj(DEFAULT_INITIAL_CAPACITY)d
Fi(\(from)h(`)p Fj(<T>defs.h)p Fi('\))g(is)h(used.)62 2018
y(Bags)g(supp)q(ort)g(the)f(follo)o(wing)f(op)q(erations,)h(for)g(some)g
(class)g Fj(Bag)p Fi(,)g(instances)h Fj(a)f Fi(and)h Fj(b)p
Fi(,)g Fj(Pix)h(ind)p Fi(,)e(and)h(base)0 2081 y(elemen)o(t)h
Fj(x)p Fi(.)23 b(Since)17 b(all)e(implemen)o(tati)o(ons)f(are)i(virtual)e
(deriv)o(ed)j(classes)f(of)f(the)i Fj(<T>Bag)e Fi(class,)h(it)f(is)h(p)q
(ossible)0 2143 y(to)g(mix)f(and)i(matc)o(h)e(op)q(erations)g(across)h
(di\013eren)o(t)g(implemen)o(tati)o(ons,)e(although,)h(as)h(usual,)h(op)q
(erations)e(are)0 2205 y(generally)f(faster)h(when)g(the)h(particular)e
(classes)g(are)h(sp)q(eci\014ed)h(in)f(functions)g(op)q(erating)g(on)g(Bags.)
62 2344 y(Pix-based)20 b(op)q(erations)f(are)h(more)f(fully)g(describ)q(ed)i
(in)f(the)g(section)g(on)g(Pixes.)34 b(See)20 b(Chapter)g(9)g([Pix],)0
2407 y(page)15 b(29)0 2545 y Fj(Bag)g(a;)g(or)f(Bag)h(a\(int)g
(initial_size\))240 2608 y Fi(Declares)20 b(a)f(to)h(b)q(e)h(an)f(empt)o(y)f
(Bag.)34 b(The)21 b(second)f(v)o(ersion)g(is)g(allo)o(w)o(ed)e(in)i(Bag)g
(classes)g(that)240 2670 y(require)15 b(initial)e(capacit)o(y)i(or)f(sizing)h
(sp)q(eci\014cations.)p eop
%%Page: 112 114
bop 0 -58 a Fi(112)995 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(a.empty\(\))240 246 y
Fi(returns)h(true)g(if)g(a)g(is)f(empt)o(y)l(.)0 320 y Fj(a.length\(\))240
382 y Fi(returns)h(the)g(n)o(um)o(b)q(er)g(of)g(elemen)o(ts)f(in)h(a.)0
457 y Fj(ind)g(=)g(a.add\(x\))240 519 y Fi(inserts)g(x)g(in)o(to)f(a,)g
(returning)h(its)g(index.)0 594 y Fj(a.del\(x\))48 b Fi(deletes)15
b(one)h(o)q(ccurrence)g(of)f(x)g(from)e(a.)0 669 y Fj(a.remove\(x\))240
731 y Fi(deletes)i(all)f(o)q(ccurrences)j(of)d(x)h(from)f(a.)0
806 y Fj(a.clear\(\))240 868 y Fi(deletes)h(all)f(elemen)o(ts)g(from)g(a;)0
943 y Fj(a.contains\(x\))240 1005 y Fi(returns)h(true)g(if)g(x)g(is)g(in)g
(a.)0 1080 y Fj(a.nof\(x\))48 b Fi(returns)15 b(the)g(n)o(um)o(b)q(er)g(of)g
(o)q(ccurrences)h(of)f(x)g(in)g(a.)0 1155 y Fj(a\(ind\))96
b Fi(returns)15 b(a)g(reference)h(to)e(the)i(item)d(indexed)j(b)o(y)f(ind.)0
1229 y Fj(int)g(=)g(a.first\(\))240 1292 y Fi(returns)e(the)h(Pix)f(of)g
(\014rst)h(item)e(in)h(the)h(Bag)f(or)g(0)g(if)g(the)h(Bag)f(is)g(empt)o(y)l
(.)19 b(F)l(or)13 b(ordered)g(Bags,)h(this)240 1354 y(is)h(the)g(Pix)g(of)f
(the)i(least)e(elemen)o(t.)0 1429 y Fj(a.next\(ind\))240 1491
y Fi(adv)m(ances)i(ind)f(to)g(the)g(Pix)g(of)g(next)g(elemen)o(t,)e(or)i(0)g
(if)g(there)g(are)g(no)g(more.)0 1566 y Fj(ind)g(=)g(a.seek\(x.)f(Pix)g(from)
h(=)g(0\))240 1628 y Fi(Sets)i(ind)g(to)g(the)g(Pix)g(of)f(the)h(next)h(o)q
(ccurrence)g(x,)f(or)f(0)h(if)g(there)g(are)g(none.)26 b(If)17
b(from)e(is)i(0,)g(the)240 1690 y(\014rst)e(o)q(ccurrence)h(is)f(returned,)g
(else)g(the)g(follo)o(wing)e(from.)p eop
%%Page: 113 115
bop 0 -58 a Fi(Chapter)15 b(36:)k(Map)c(\(Asso)q(ciativ)o(e)f(arra)o(y\))f
(class)i(protot)o(yp)q(es.)798 b(113)0 183 y Ff(36)41 b(Map)27
b(\(Asso)r(ciativ)n(e)e(arra)n(y\))j(class)e(protot)n(yp)r(es.)62
363 y Fi(Maps)12 b(supp)q(ort)g(asso)q(ciativ)o(e)e(arra)o(y)g(op)q(erations)
h(\(insertion,)g(deletion,)h(and)g(mem)o(b)q(ership)e(of)h(records)h(based)0
425 y(on)k(an)g(asso)q(ciated)g(k)o(ey\).)22 b(They)16 b(require)g(the)h(sp)q
(eci\014cation)f(of)g(t)o(w)o(o)e(t)o(yp)q(es,)i(the)h(k)o(ey)f(t)o(yp)q(e)g
(and)g(the)h(con)o(ten)o(ts)0 487 y(t)o(yp)q(e.)62 624 y(These)11
b(are)g(curren)o(tly)f(implemen)o(ted)f(in)h(sev)o(eral)g(w)o(a)o(ys,)h
(di\013ering)e(in)i(represen)o(tation)f(strategy)l(,)g(algorithmic)0
687 y(e\016ciency)l(,)i(and)f(appropriateness)e(for)h(v)m(arious)g(tasks.)18
b(\(Listed)10 b(next)h(to)f(eac)o(h)g(are)h(a)o(v)o(erage)e(\(follo)o(w)o(ed)
g(b)o(y)h(w)o(orst-)0 749 y(case,)15 b(if)g(di\013eren)o(t\))f(time)f
(complexities)g(for)i([a])f(accessing)h(\(via)f(op)h([],)f(con)o(tains\),)g
([d])g(deleting)h(elemen)o(ts\).)0 886 y Fj(AVLMaps)72 b Fi(implemen)o(t)12
b(ordered)k(Maps)f(via)f(threaded)i(A)-5 b(VL)15 b(trees)g(\([a)f(O\(log)h
(n\)],)f([d)h(O\(log)f(n\)]\).)0 959 y Fj(RAVLMaps)48 b Fi(Similar,)15
b(but)i(also)f(main)o(tain)e(ranking)j(information,)d(used)k(via)e
Fj(ranktoPix\(int)e(r\))p Fi(,)i(that)h(re-)240 1021 y(turns)22
b(the)g Fj(Pix)g Fi(of)g(the)g(item)f(at)g(rank)h(r,)i(and)e
Fj(rank\(key\))f Fi(that)h(returns)g(the)g(rank)g(of)g(the)240
1083 y(corresp)q(onding)15 b(item.)j(\([a)d(O\(log)f(n\)],)g([d)h(O\(log)f
(n\)]\).)0 1156 y Fj(SplayMaps)240 1218 y Fi(implemen)o(t)h(ordered)j(Maps)f
(via)g(Sleater)g(and)g(T)l(arjan's)g(\(JA)o(CM)g(1985\))f(spla)o(y)h(trees.)
27 b(The)17 b(al-)240 1281 y(gorithms)f(use)j(a)g(v)o(ersion)f(of)g(\\simple)
f(top-do)o(wn)i(spla)o(ying")e(\(describ)q(ed)i(on)g(page)g(669)f(of)g(the)
240 1343 y(article\).)g(\(Amortized:)g([a)d(O\(log)f(n\)],)g([d)h(O\(log)g
(n\)]\).)0 1416 y Fj(VHMaps)96 b Fi(implemen)o(t)10 b(unordered)k(Maps)f(via)
f(hash)h(tables.)19 b(The)13 b(tables)g(are)g(automaticall)o(y)d(resized)j
(when)240 1478 y(their)i(capacit)o(y)f(is)h(exhausted.)20 b(\([a)14
b(O\(1\)/O\(n\)],)g([d)h(O\(1\)/O\(n\)]\).)0 1551 y Fj(CHMaps)96
b Fi(implemen)o(t)12 b(unordered)k(Maps)f(via)g(c)o(hained)g(hash)g(tables.)
20 b(\([a)14 b(O\(1\)/O\(n\)],)f([d)i(O\(1\)/O\(n\)]\).)62
1688 y(The)c(di\013eren)o(t)e(implemen)o(tati)o(ons)f(di\013er)h(in)h
(whether)g(their)g(constructors)f(require)i(an)f(argumen)o(t)e(sp)q(ecifying)
0 1750 y(their)18 b(initial)e(capacit)o(y)l(.)29 b(Initial)17
b(capacities)h(are)g(required)g(for)g(hash)h(table)f(based)g(Maps.)29
b(If)19 b(none)g(is)e(giv)o(en)0 1813 y Fj(DEFAULT_INITIAL_CAPACITY)12
b Fi(\(from)h(`)p Fj(<T>defs.h)p Fi('\))g(is)i(used.)62 1950
y(All)d(Map)h(classes)f(share)h(the)g(follo)o(wing)e(op)q(erations)h(\(for)f
(some)h(Map)g(class,)h Fj(Map)f Fi(instance)h Fj(d)p Fi(,)g
Fj(Pix)h(ind)f Fi(and)0 2012 y(k)o(ey)i(v)m(ariable)g Fj(k)p
Fi(,)f(and)i(con)o(ten)o(ts)e(v)m(ariable)h Fj(x)p Fi(\).)62
2149 y(Pix-based)20 b(op)q(erations)f(are)h(more)f(fully)g(describ)q(ed)i(in)
f(the)g(section)g(on)g(Pixes.)34 b(See)20 b(Chapter)g(9)g([Pix],)0
2211 y(page)15 b(29)0 2348 y Fj(Map)g(d\(x\);)f(Map)h(d\(x,)g(int)f
(initial_capacity\))240 2410 y Fi(Declare)c(d)h(to)f(b)q(e)h(an)g(empt)o(y)e
(Map.)18 b(The)11 b(required)f(argumen)o(t,)g(x,)h(sp)q(eci\014es)g(the)g
(default)f(con)o(ten)o(ts,)240 2473 y(i.e.,)j(the)i(con)o(ten)o(ts)f(of)h(an)
f(otherwise)g(uninitialized)g(lo)q(cation.)k(The)d(second)g(v)o(ersion,)f(sp)
q(ecifying)240 2535 y(initial)f(capacit)o(y)i(is)f(allo)o(w)o(ed)g(for)h
(Maps)f(with)h(an)g(initial)e(capacit)o(y)i(argumen)o(t.)0
2608 y Fj(d.empty\(\))240 2670 y Fi(returns)g(true)g(if)g(d)g(con)o(tains)g
(no)g(items.)p eop
%%Page: 114 116
bop 0 -58 a Fi(114)995 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 183 y Fj(d.length\(\))240 246
y Fi(returns)h(the)g(n)o(um)o(b)q(er)g(of)g(items)e(in)i(d.)0
320 y Fj(d[k])144 b Fi(returns)19 b(a)h(reference)g(to)f(the)h(con)o(ten)o
(ts)f(of)g(item)f(with)g(k)o(ey)i(k.)33 b(If)20 b(no)f(suc)o(h)h(item)e
(exists,)i(it)e(is)240 382 y(installed)c(with)h(the)g(default)g(con)o(ten)o
(ts.)k(Th)o(us)c(d[k])g(=)g(x)g(installs)f(x,)h(and)g(x)g(=)h(d[k])e(retriev)
o(es)h(it.)0 457 y Fj(d.contains\(k\))240 519 y Fi(returns)g(true)g(if)g(an)g
(item)e(with)i(k)o(ey)g(\014eld)h(k)f(exists)f(in)h(d.)0 594
y Fj(d.del\(k\))48 b Fi(deletes)15 b(the)h(item)d(with)i(k)o(ey)g(k.)0
669 y Fj(d.clear\(\))240 731 y Fi(deletes)g(all)f(items)g(from)f(the)j
(table.)0 806 y Fj(x)f(=)g(d.dflt\(\))240 868 y Fi(returns)g(the)g(default)g
(con)o(ten)o(ts.)0 943 y Fj(k)g(=)g(d.key\(ind\))240 1005 y
Fi(returns)g(a)g(reference)h(to)e(the)i(k)o(ey)f(at)f(Pix)h(ind.)0
1080 y Fj(x)g(=)g(d.contents\(ind\))240 1142 y Fi(returns)g(a)g(reference)h
(to)e(the)i(con)o(ten)o(ts)e(at)h(Pix)g(ind.)0 1217 y Fj(ind)g(=)g
(d.first\(\))240 1279 y Fi(returns)g(the)g(Pix)g(of)g(the)g(\014rst)g(elemen)
o(t)f(in)h(d,)g(or)g(0)f(if)h(d)h(is)e(empt)o(y)l(.)0 1354
y Fj(d.next\(ind\))240 1416 y Fi(adv)m(ances)i(ind)f(to)g(the)g(next)g
(elemen)o(t,)f(or)h(0)f(if)h(there)g(are)g(no)g(more.)0 1491
y Fj(ind)g(=)g(d.seek\(k\))240 1553 y Fi(returns)g(the)g(Pix)g(of)g(elemen)o
(t)f(with)g(k)o(ey)h(k,)g(or)g(0)g(if)f(k)h(is)g(not)g(in)g(d.)p
eop
%%Page: 115 117
bop 0 -58 a Fi(Chapter)15 b(37:)k(C)p Fj(++)c Fi(v)o(ersion)f(of)h(the)g
(GNU/UNIX)h(getopt)e(function)682 b(115)0 183 y Ff(37)41 b(C)p
Fd(++)27 b Ff(v)n(ersion)f(of)g(the)h(GNU/UNIX)h(getopt)g(function)62
412 y Fi(The)16 b(GetOpt)f(class)g(pro)o(vides)f(an)i(e\016cien)o(t)f(and)g
(structured)g(mec)o(hanism)e(for)i(pro)q(cessing)g(command-line)0
474 y(options)d(from)g(an)h(application)f(program.)17 b(The)d(sample)e
(program)f(fragmen)o(t)g(b)q(elo)o(w)i(illustrates)e(a)i(t)o(ypical)g(use)0
536 y(of)i(the)g(GetOpt)g(class)g(for)f(some)g(h)o(yp)q(othetical)g
(application)g(program:)120 682 y Fj(#include)23 b(<stdio.h>)120
731 y(#include)g(<GetOpt.h>)120 781 y(//...)120 831 y(int)g(debug_flag,)g
(compile_flag,)f(size_in_bytes;)120 931 y(int)120 980 y(main)h(\(int)h(argc,)
f(char)g(**argv\))120 1030 y({)168 1080 y(//)g(Invokes)g(ctor)h(`GetOpt)e
(\(int)i(argc,)f(char)g(**argv,)g(char)g(*optstring\);')168
1130 y(GetOpt)g(getopt)g(\(argc,)g(argv,)g("dcs:"\);)168 1180
y(int)g(option_char;)168 1279 y(//)g(Invokes)g(member)g(function)g(`int)g
(operator)g(\(\)\(void\);')168 1329 y(while)g(\(\(option_char)f(=)i(getopt)f
(\(\)\))g(!=)h(EOF\))215 1379 y(switch)f(\(option_char\))263
1429 y({)335 1479 y(case)g('d':)g(debug_flag)g(=)h(1;)f(break;)335
1528 y(case)g('c':)g(compile_flag)g(=)g(1;)h(break;)335 1578
y(case)f('s':)g(size_in_bytes)f(=)i(atoi)g(\(getopt.optarg\);)d(break;)335
1628 y(case)i('?':)g(fprintf)g(\(stderr,)g("usage:)g(\045s)h
([dcs<size>]\\n",)d(argv[0]\);)263 1678 y(})120 1728 y(})62
1873 y Fi(Unlik)o(e)14 b(the)g(C)f(library)g(v)o(ersion,)g(the)h(libg)p
Fj(++)f Fi(GetOpt)g(class)h(uses)g(its)f(constructor)g(to)g(initialize)f
(class)i(data)0 1935 y(mem)o(b)q(ers)h(con)o(taining)h(the)g(argumen)o(t)g
(coun)o(t,)g(argumen)o(t)f(v)o(ector,)h(and)h(the)g(option)f(string.)24
b(This)17 b(simpli\014es)0 1997 y(the)e(in)o(terface)g(for)f(eac)o(h)i
(subsequen)o(t)f(call)g(to)f(mem)o(b)q(er)g(function)h Fj(int)f(operator)h
(\(\)\(void\))p Fi(.)62 2143 y(The)23 b(C)f(v)o(ersion,)i(on)e(the)h(other)f
(hand,)i(uses)f(hidden)h(static)d(v)m(ariables)h(to)g(retain)g(the)g(option)g
(string)0 2205 y(and)e(argumen)o(t)e(list)h(v)m(alues)h(b)q(et)o(w)o(een)h
(calls)e(to)g Fj(getopt)p Fi(.)34 b(This)19 b(complicates)f(the)i
Fj(getopt)g Fi(in)o(terface)f(since)0 2267 y(the)g(argumen)o(t)e(coun)o(t,)i
(argumen)o(t)e(v)o(ector,)i(and)g(option)f(string)g(m)o(ust)f(b)q(e)i(passed)
g(as)g(parameters)e(for)h(eac)o(h)0 2330 y(in)o(v)o(o)q(cation.)g(F)l(or)d
(the)g(C)g(v)o(ersion,)f(the)i(lo)q(op)e(in)h(the)h(previous)f(example)f(b)q
(ecomes:)168 2475 y Fj(while)23 b(\(\(option_char)f(=)i(getopt)f(\(argc,)g
(argv,)g("dcs:"\)\))g(!=)g(EOF\))215 2525 y(//)h(...)62 2670
y Fi(whic)o(h)15 b(requires)g(extra)g(o)o(v)o(erhead)g(to)f(pass)h(the)g
(parameters)f(for)g(ev)o(ery)h(call.)p eop
%%Page: 116 118
bop 0 -58 a Fi(116)995 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)62 183 y(Along)j(with)h(the)f(GetOpt)h
(constructor)f(and)h Fj(int)d(operator)f(\(\)\(void\))p Fi(,)j(the)g(other)h
(relev)m(an)o(t)f(elemen)o(ts)0 246 y(of)e(class)f(GetOpt)h(are:)0
382 y Fj(char)g(*optarg)240 445 y Fi(Used)24 b(for)f(comm)o(unication)e(from)
h Fj(operator)14 b(\(\)\(void\))23 b Fi(to)g(the)h(caller.)45
b(When)24 b Fj(operator)240 507 y(\(\)\(void\))14 b Fi(\014nds)i(an)f(option)
f(that)h(tak)o(es)f(an)h(argumen)o(t,)f(the)h(argumen)o(t)e(v)m(alue)j(is)e
(stored)h(here.)0 582 y Fj(int)g(optind)240 644 y Fi(Index)e(in)e
Fj(argv)g Fi(of)g(the)h(next)f(elemen)o(t)g(to)g(b)q(e)h(scanned.)19
b(This)11 b(is)g(used)i(for)e(comm)o(unicati)o(on)e(to)i(and)240
706 y(from)g(the)i(caller)f(and)h(for)f(comm)o(unicatio)o(n)e(b)q(et)o(w)o
(een)k(successiv)o(e)e(calls)g(to)g Fj(operator)i(\(\)\(void\))p
Fi(.)240 781 y(When)g Fj(operator)g(\(\)\(void\))f Fi(returns)g(EOF,)h(this)f
(is)g(the)h(index)g(of)f(the)h(\014rst)f(of)h(the)f(non-option)240
843 y(elemen)o(ts)h(that)g(the)i(caller)e(should)h(itself)f(scan.)240
918 y(Otherwise,)f Fj(optind)f Fi(comm)o(unicates)e(from)h(one)i(call)f(to)g
(the)h(next)g(ho)o(w)g(m)o(uc)o(h)e(of)i Fj(argv)f Fi(has)h(b)q(een)240
980 y(scanned)j(so)f(far.)62 1117 y(The)k(libg)p Fj(++)f Fi(v)o(ersion)f(of)h
(GetOpt)h(acts)f(lik)o(e)g(standard)g(UNIX)h Fj(getopt)f Fi(for)g(the)g
(calling)f(routine,)i(but)g(it)0 1180 y(b)q(eha)o(v)o(es)f(di\013eren)o(tly)e
(for)g(the)i(user,)f(since)h(it)e(allo)o(ws)g(the)h(user)h(to)e(in)o(tersp)q
(erse)h(the)h(options)e(with)h(the)g(other)0 1242 y(argumen)o(ts.)62
1379 y(As)i(GetOpt)f(w)o(orks,)g(it)g(p)q(erm)o(utes)f(the)i(elemen)o(ts)e
(of)h Fj(argv)g Fi(so)g(that,)h(when)g(it)e(is)h(done,)i(all)d(the)i(options)
0 1441 y(precede)f(ev)o(erything)f(else.)27 b(Th)o(us)17 b(all)f(application)
g(programs)f(are)j(extended)g(to)f(handle)g(\015exible)h(argumen)o(t)0
1503 y(order.)62 1640 y(Setting)g(the)h(en)o(vironmen)o(t)d(v)m(ariable)p
745 1640 14 2 v 34 w(POSIX)p 902 1640 V 18 w(OPTION)p 1104
1640 V 17 w(ORDER)j(disables)f(p)q(erm)o(utation.)28 b(Then)19
b(the)0 1703 y(b)q(eha)o(vior)c(is)f(completely)g(standard.)p
eop
%%Page: 117 119
bop 0 -58 a Fi(Chapter)15 b(38:)k(A)c(P)o(erfect)g(Hash)g(F)l(unction)g
(Generator)917 b(117)0 183 y Ff(38)41 b(A)27 b(P)n(erfect)f(Hash)h(F)-7
b(unction)26 b(Generator)62 370 y Fi(GNU)17 b(GPERF)f(is)h(a)f(utilit)o(y)f
(program)g(that)h(automatically)e(generates)i(p)q(erfect)i(hash)f(functions)f
(from)f(a)0 432 y(list)h(of)h(k)o(eyw)o(ords.)25 b(The)17 b(GNU)h(C,)e(GNU)h
(C)p Fj(++)p Fi(,)g(GNU)g(P)o(ascal,)f(GNU)h(Mo)q(dula)g(3)g(compilers)e(and)
j(the)f(GNU)0 495 y(inden)o(t)c(co)q(de)h(formatting)c(program)h(all)h
(utilize)g(reserv)o(ed)h(w)o(ord)f(recognizer)h(routines)g(generated)g(b)o(y)
g(GPERF.)0 557 y(Complete)19 b(do)q(cumen)o(tation)g(and)i(source)g(co)q(de)g
(is)f(a)o(v)m(ailable)g(in)g(the)h(./gp)q(erf)f(sub)q(directory)h(in)f(the)h
(libg)p Fj(++)0 619 y Fi(distribution.)i(A)16 b(pap)q(er)h(describing)g
(GPERF)f(in)g(detail)g(is)g(a)o(v)m(ailable)f(in)i(the)f(pro)q(ceedings)h(of)
f(the)h(USENIX)0 681 y(Second)f(C)p Fj(++)f Fi(Conference.)p
eop
%%Page: 118 120
bop 0 -58 a Fi(118)995 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)p eop
%%Page: 119 121
bop 0 -58 a Fi(Chapter)15 b(39:)k(Pro)s(jects)14 b(and)i(other)e(things)h
(left)g(to)f(do)921 b(119)0 183 y Ff(39)41 b(Pro)t(jects)27
b(and)g(other)g(things)g(left)f(to)i(do)0 489 y Fe(39.1)k(Coming)23
b(A)n(ttractions)62 629 y Fi(Some)14 b(things)h(that)g(will)e(probably)i(b)q
(e)h(a)o(v)m(ailable)e(in)h(libg)p Fj(++)f Fi(in)h(the)g(near)h(future:)39
768 y Fh(\017)30 b Fi(Rev)m(amp)q(ed)17 b(C-compatibilit)o(y)d(header)j
(\014les)f(that)g(will)g(b)q(e)h(compatible)e(with)h(the)h(forthcoming)d
(\(ANSI-)90 830 y(based\))h(GNU)g(lib)q(c.a)39 908 y Fh(\017)30
b Fi(A)20 b(revision)f(of)g(the)h(File-based)f(classes)h(that)f(will)f(use)j
(the)e(GNU)h(stdio)f(library)l(,)h(and)g(also)e(b)q(e)j(100\045)90
970 y(compatible)13 b(\(ev)o(en)j(at)e(the)h(stream)o(buf)f(lev)o(el\))g
(with)h(the)g(A)l(T&T)g(2.0)g(stream)e(classes.)39 1047 y Fh(\017)30
b Fi(Additional)14 b(con)o(tainer)g(class)h(protot)o(yp)q(es.)39
1124 y Fh(\017)30 b Fi(generic)15 b(Matrix)f(class)g(protot)o(yp)q(es.)39
1201 y Fh(\017)30 b Fi(A)15 b(task)g(pac)o(k)m(age)g(probably)g(based)g(on)g
(Dirk)g(Grun)o(w)o(ald's)e(threads)i(pac)o(k)m(age.)0 1448
y Fe(39.2)32 b(Wish)24 b(List)62 1587 y Fi(Some)17 b(things)h(that)f(p)q
(eople)i(ha)o(v)o(e)f(men)o(tioned)f(that)g(they)h(w)o(ould)g(lik)o(e)f(to)h
(see)g(in)g(libg)p Fj(++)p Fi(,)f(but)i(for)e(whic)o(h)0 1649
y(there)e(ha)o(v)o(e)g(not)g(b)q(een)h(an)o(y)f(o\013ers:)39
1789 y Fh(\017)30 b Fi(Class-based)15 b(in)o(terfaces)f(to)h(Sun)h(RPC)f
(using)g(g)p Fj(++)f Fi(wrapp)q(ers.)39 1866 y Fh(\017)30 b
Fi(A)16 b(metho)q(d)f(to)g(automaticall)o(y)e(con)o(v)o(ert)i(or)g(incorp)q
(orate)g(libg)p Fj(++)g Fi(classes)g(so)g(they)h(can)g(b)q(e)g(used)h
(directly)90 1928 y(in)e(Gorlen's)f(OOPS)i(en)o(vironmen)o(t.)39
2005 y Fh(\017)30 b Fi(A)15 b(class)g(bro)o(wser.)39 2083 y
Fh(\017)30 b Fi(A)15 b(b)q(etter)g(general)g(exception-handling)g(strategy)l
(.)39 2160 y Fh(\017)30 b Fi(Better)15 b(do)q(cumen)o(tation.)0
2406 y Fe(39.3)32 b(Ho)n(w)22 b(to)h(con)n(tribute)62 2545
y Fi(Programmers)c(who)k(ha)o(v)o(e)f(written)g(C)p Fj(++)g
Fi(classes)g(that)g(they)h(b)q(eliev)o(e)g(to)f(b)q(e)h(of)f(general)h(in)o
(terest)e(are)0 2608 y(encourage)e(to)f(write)f(to)h(dl)h(at)f(ro)q(c)o(ky)l
(.osw)o(ego.edu.)28 b(Con)o(tributing)17 b(co)q(de)i(is)f(not)h(di\016cult.)
29 b(Here)19 b(are)f(some)0 2670 y(general)d(guidelines:)p
eop
%%Page: 120 122
bop 0 -58 a Fi(120)995 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)39 183 y Fh(\017)30 b Fi(FSF)16
b(m)o(ust)g(main)o(tain)e(the)j(righ)o(t)f(to)g(accept)h(or)g(reject)g(p)q
(oten)o(tial)e(con)o(tributions.)24 b(Generally)l(,)16 b(the)h(only)90
246 y(reasons)g(for)h(rejecting)f(con)o(tributions)f(are)i(cases)g(where)g
(they)g(duplicate)f(existing)g(or)g(nearly-released)90 308
y(co)q(de,)g(con)o(tain)e(unremo)o(v)m(able)g(sp)q(eci\014c)i(mac)o(hine)e
(dep)q(endencies,)j(or)e(are)g(someho)o(w)e(incompatible)h(with)90
370 y(the)g(rest)g(of)g(the)g(library)l(.)39 445 y Fh(\017)30
b Fi(Acceptance)17 b(of)e(con)o(tributions)f(means)h(that)g(the)h(co)q(de)g
(is)f(accepted)h(for)f(adaptation)g(in)o(to)f(libg)p Fj(++)p
Fi(.)20 b(FSF)90 507 y(m)o(ust)10 b(reserv)o(e)i(the)g(righ)o(t)f(to)g(mak)o
(e)g(v)m(arious)g(editorial)g(c)o(hanges)h(in)f(co)q(de.)20
b(V)l(ery)12 b(often,)g(this)g(merely)e(en)o(tails)90 569 y(formatting,)g
(main)o(tenance)h(of)i(v)m(arious)f(con)o(v)o(en)o(tions,)g(etc.)19
b(Con)o(tributors)11 b(are)i(alw)o(a)o(ys)e(giv)o(en)h(authorship)90
632 y(credit)j(and)g(sho)o(wn)g(the)g(\014nal)g(v)o(ersion)g(for)f(appro)o(v)
m(al.)39 706 y Fh(\017)30 b Fi(Con)o(tributors)12 b(m)o(ust)f(assign)i(their)
g(cop)o(yrigh)o(t)f(to)g(FSF)h(via)g(a)g(form)e(sen)o(t)i(out)g(up)q(on)h
(acceptance.)20 b(Assign-)90 769 y(ing)15 b(cop)o(yrigh)o(t)f(to)g(FSF)h
(ensures)h(that)e(the)h(co)q(de)h(ma)o(y)e(b)q(e)i(freely)e(distributed.)39
843 y Fh(\017)30 b Fi(Assistance)17 b(in)g(pro)o(viding)g(do)q(cumen)o
(tation,)f(test)g(\014les,)i(and)g(debugging)f(supp)q(ort)g(is)g(strongly)f
(encour-)90 906 y(aged.)62 1043 y(Extensions,)22 b(commen)o(ts,)e(and)h
(suggested)g(mo)q(di\014cations)e(of)i(existing)f(libg)p Fj(++)g
Fi(features)g(are)h(also)f(v)o(ery)0 1105 y(w)o(elcome.)p eop
%%Page: -1 123
bop 1937 -58 a Fi(i)0 183 y Ff(T)-7 b(able)27 b(of)f(Con)n(ten)n(ts)0
358 y Fe(GNU)c(CC)h(GENERAL)g(PUBLIC)e(LICENSE)11 b Fb(:)c(:)g(:)f(:)h(:)f(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)k Fe(1)149
435 y Fi(COPYING)16 b(POLICIES)9 b Fb(:)f(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)i Fi(1)149 498 y(NO)16 b(W)-5 b(ARRANTY)7
b Fb(:)h(:)e(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)g Fi(3)0 622 y Fe(Con)n(tributors)24 b(to)e(GNU)g(C)p
Fa(++)g Fe(library)10 b Fb(:)e(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)j Fe(5)0 762 y(1)67 b(Installi)q(ng)25 b(GNU)d(C)p Fa(++)g
Fe(library)7 b Fb(:)g(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h Fe(7)0 902 y(2)67 b(T)-6 b(rouble)23 b(in)g(Installa)q(ti)q
(on)6 b Fb(:)j(:)e(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f Fe(9)0 1043 y(3)67
b(GNU)21 b(C)p Fa(++)i Fe(library)g(aims,)g(ob)t(jectiv)n(es,)g(and)g
(limitat)q(ions)q(11)0 1183 y(4)67 b(GNU)21 b(C)p Fa(++)i Fe(library)g(st)n
(ylistic)i(con)n(v)n(en)n(tions)8 b Fb(:)g(:)f(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)j Fe(13)0 1323 y(5)67 b(Supp)r(ort)23
b(for)f(represen)n(tation)h(in)n(v)l(arian)n(ts)5 b Fb(:)k(:)d(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)t
Fe(15)0 1463 y(6)67 b(In)n(tro)r(duction)23 b(to)g(con)n(tainer)g(class)i
(protot)n(yp)r(es)t Fb(:)5 b(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)f
Fe(17)149 1541 y Fi(6.1)45 b(Example)9 b Fb(:)e(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)12
b Fi(20)0 1665 y Fe(7)67 b(Ho)n(w)22 b(v)l(ariable-sized)j(ob)t(jects)e(are)f
(represen)n(ted.)t Fb(:)6 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)f
Fe(25)0 1805 y(8)67 b(Some)15 b(guidelines)i(for)e(using)h(expression-orien)n
(ted)f(classes27)0 1945 y(9)67 b(Pseudo-indexes)11 b Fb(:)c(:)g(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)12 b Fe(29)0
2085 y(10)66 b(Header)22 b(\014les)h(and)h(supp)r(ort)f(for)f(in)n(terfacing)
i(C)p Fa(++)e Fe(to)g(C31)0 2226 y(11)66 b(Utilit)n(y)25 b(functions)f(op)r
(erating)f(on)g(built)h(in)g(t)n(yp)r(es.)5 b Fb(:)h(:)h(:)f(:)g(:)h(:)f(:)g
Fe(33)0 2366 y(12)66 b(Library)22 b(dynamic)i(allo)r(cation)i(primitiv)n(es)5
b Fb(:)j(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
Fe(35)0 2506 y(13)66 b(File-based)25 b(classes)10 b Fb(:)f(:)e(:)f(:)h(:)f(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)11 b Fe(37)149 2584 y Fi(13.1)45 b(Binding)8
b Fb(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)i Fi(37)149 2646 y(13.2)45 b(Basic)15
b(IO)9 b Fb(:)e(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)j Fi(38)p eop
%%Page: -2 124
bop 0 -58 a Fi(ii)1038 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)149 42 y(13.3)45 b(File)14 b(Con)o(trol)c
Fb(:)d(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)13 b Fi(39)149 104 y(13.4)45 b(File)14 b(Status)6 b Fb(:)f(:)i(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
Fi(39)149 166 y(13.5)45 b(The)15 b(SFile)g(class)10 b Fb(:)5
b(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)11
b Fi(41)149 228 y(13.6)45 b(The)15 b(PlotFile)e(Class)e Fb(:)6
b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)12 b Fi(41)0
353 y Fe(14)66 b(The)23 b(istream)g(and)h(ostream)f(classes)10
b Fb(:)f(:)d(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)11 b Fe(43)0 493 y(15)66 b(The)23
b(Obstac)n(k)h(class)10 b Fb(:)e(:)f(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)j
Fe(45)0 633 y(16)66 b(The)23 b(Allo)r(cRing)h(class)9 b Fb(:)g(:)e(:)f(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)k Fe(49)0 773 y(17)66 b(The)23 b(String)g(class)10
b Fb(:)f(:)d(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)11
b Fe(51)149 851 y Fi(17.1)45 b(Constructors)t Fb(:)5 b(:)i(:)f(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)e Fi(51)149
913 y(17.2)45 b(Examples)9 b Fb(:)c(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)k Fi(53)149
976 y(17.3)45 b(Comparing,)12 b(Searc)o(hing)j(and)h(Matc)o(hing)8
b Fb(:)d(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)j Fi(53)149
1038 y(17.4)45 b(Substring)15 b(extraction)s Fb(:)5 b(:)i(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)t Fi(55)149 1100 y(17.5)45 b(Concatenation)7
b Fb(:)e(:)h(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)i
Fi(56)149 1162 y(17.6)45 b(Other)15 b(manipulations)9 b Fb(:)c(:)h(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)j Fi(57)149 1225 y(17.7)45 b(Reading,)15
b(W)l(riting)f(and)h(Con)o(v)o(ersion)s Fb(:)5 b(:)i(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)t Fi(57)0 1349 y Fe(18)66
b(The)23 b(In)n(teger)e(class.)5 b Fb(:)k(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g Fe(59)0 1489 y(19)66 b(The)23 b(Rational)i(Class)t
Fb(:)9 b(:)d(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)t Fe(63)0 1629 y(20)66
b(The)23 b(Complex)g(class.)7 b Fb(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)i
Fe(65)0 1769 y(21)66 b(Fixed)23 b(precision)h(n)n(um)n(b)r(ers)7
b Fb(:)h(:)e(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)i Fe(67)0 1910 y(22)66 b(Classes)26 b(for)c(Bit)h(manipula)q(ti)q(on)t
Fb(:)9 b(:)d(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)t
Fe(69)149 1987 y Fi(22.1)45 b(BitSet)5 b Fb(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
Fi(69)149 2050 y(22.2)45 b(BitString)t Fb(:)5 b(:)h(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)t
Fi(72)0 2174 y Fe(23)66 b(Random)24 b(Num)n(b)r(er)e(Generators)g(and)i
(related)f(classes)s Fb(:)7 b Fe(75)149 2252 y Fi(23.1)45 b(RNG)7
b Fb(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)i Fi(75)149 2314 y(23.2)45
b(A)o(CG)8 b Fb(:)d(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)j Fi(75)149
2377 y(23.3)45 b(MLCG)8 b Fb(:)d(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)j Fi(76)149
2439 y(23.4)45 b(Random)11 b Fb(:)6 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)13 b Fi(77)149
2501 y(23.5)45 b(Binomial)6 b Fb(:)t(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)g Fi(77)149
2563 y(23.6)45 b(Erlang)10 b Fb(:)c(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)12
b Fi(77)149 2626 y(23.7)45 b(Geometric)9 b Fb(:)e(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)12 b
Fi(77)p eop
%%Page: -3 125
bop 1912 -58 a Fi(iii)149 42 y(23.8)45 b(Hyp)q(erGeometric)5
b Fb(:)g(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
Fi(78)149 104 y(23.9)45 b(Negativ)o(eExpn)o(tl)6 b Fb(:)f(:)h(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)g Fi(78)149 166
y(23.10)44 b(Normal)10 b Fb(:)5 b(:)h(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)k Fi(78)149
228 y(23.11)44 b(LogNormal)10 b Fb(:)5 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)k Fi(78)149 291 y(23.12)44
b(P)o(oisson)10 b Fb(:)5 b(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)11 b Fi(78)149 353 y(23.13)44
b(DiscreteUniform)t Fb(:)5 b(:)h(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)e Fi(79)149 415 y(23.14)44 b(Uniform)10 b Fb(:)c(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)12
b Fi(79)149 477 y(23.15)44 b(W)l(eibull)8 b Fb(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)i
Fi(79)149 540 y(23.16)44 b(RandomIn)o(teger)5 b Fb(:)h(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g Fi(79)0 664 y Fe(24)66
b(Data)24 b(Collection)8 b Fb(:)g(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)h Fe(81)149 742 y Fi(24.1)45 b(SampleStatistic)6
b Fb(:)s(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
Fi(81)149 804 y(24.2)45 b(SampleHistogram)r Fb(:)t(:)6 b(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)t Fi(82)0 929 y Fe(25)66 b(Curses-based)25
b(classes)t Fb(:)9 b(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)t Fe(83)0 1069
y(26)66 b(List)24 b(classes)11 b Fb(:)d(:)f(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)12 b Fe(85)149
1147 y Fi(26.1)45 b(Constructors)14 b(and)h(assignmen)o(t)9
b Fb(:)c(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)j Fi(85)149 1209 y(26.2)45 b(List)14 b(status)8
b Fb(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)i Fi(86)149 1271 y(26.3)45 b(heads)15 b(and)h(tails)9
b Fb(:)d(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)12
b Fi(86)149 1334 y(26.4)45 b(Constructiv)o(e)14 b(op)q(erations)6
b Fb(:)f(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h Fi(87)149 1396 y(26.5)45
b(Destructiv)o(e)14 b(op)q(erations)c Fb(:)5 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)11
b Fi(87)149 1458 y(26.6)45 b(Other)15 b(op)q(erations)10 b
Fb(:)5 b(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)11
b Fi(88)0 1583 y Fe(27)66 b(Link)n(ed)23 b(Lists)s Fb(:)8 b(:)f(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)t
Fe(89)149 1660 y Fi(27.1)45 b(Doubly)14 b(link)o(ed)h(lists)10
b Fb(:)c(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)12 b
Fi(90)0 1785 y Fe(28)66 b(V)-6 b(ector)23 b(classes)7 b Fb(:)i(:)d(:)h(:)f(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)i Fe(91)149
1863 y Fi(28.1)45 b(Constructors)14 b(and)h(assignmen)o(t)9
b Fb(:)c(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)j Fi(91)149 1925 y(28.2)45 b(Status)14 b(and)i(access)t
Fb(:)6 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)f
Fi(91)149 1987 y(28.3)45 b(Constructiv)o(e)14 b(op)q(erations)6
b Fb(:)f(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h Fi(92)149 2050 y(28.4)45
b(Destructiv)o(e)14 b(op)q(erations)c Fb(:)5 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)11
b Fi(92)149 2112 y(28.5)45 b(Other)15 b(op)q(erations)10 b
Fb(:)5 b(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)11
b Fi(93)149 2174 y(28.6)45 b(A)-5 b(V)l(ec)16 b(op)q(erations.)10
b Fb(:)d(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)13
b Fi(93)0 2299 y Fe(29)66 b(Plex)23 b(classes)11 b Fb(:)d(:)f(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)k
Fe(95)0 2439 y(30)66 b(Stac)n(ks)8 b Fb(:)h(:)d(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)j
Fe(101)0 2579 y(31)66 b(Queues)t Fb(:)8 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)t
Fe(103)p eop
%%Page: -4 126
bop 0 -58 a Fi(iv)1027 b(User's)14 b(Guide)i(to)e(the)h(GNU)g(C)p
Fj(++)g Fi(Class)f(Library)0 42 y Fe(32)66 b(Double)23 b(ended)g(Queues)12
b Fb(:)7 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)12 b Fe(105)0 182 y(33)66 b(Priorit)n(y)23 b(Queue)g(class)h
(protot)n(yp)r(es.)s Fb(:)6 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)t Fe(107)0 322
y(34)66 b(Set)23 b(class)i(protot)n(yp)r(es)11 b Fb(:)5 b(:)i(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)11
b Fe(109)0 462 y(35)66 b(Bag)23 b(class)i(protot)n(yp)r(es)10
b Fb(:)5 b(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)j Fe(111)0 602 y(36)66 b(Map)24 b(\(Asso)r(ciativ)n(e)
h(arra)n(y\))e(class)h(protot)n(yp)r(es.)5 b Fb(:)g(:)i(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)f Fe(113)0 742 y(37)66 b(C)p Fa(++)23 b Fe(v)n(ersion)f(of)h(the)g
(GNU/UNIX)e(getopt)h(function)16 b(115)0 882 y(38)66 b(A)24
b(P)n(erfect)e(Hash)h(F)-6 b(unction)25 b(Generator)7 b Fb(:)f(:)g(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)i Fe(117)0
1022 y(39)66 b(Pro)t(jects)22 b(and)i(other)e(things)i(left)g(to)e(do)11
b Fb(:)6 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)k Fe(119)149 1100 y Fi(39.1)45 b(Coming)13 b(A)o(ttractions)7
b Fb(:)t(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)i Fi(119)149
1162 y(39.2)45 b(Wish)14 b(List)5 b Fb(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f Fi(119)149
1225 y(39.3)45 b(Ho)o(w)14 b(to)h(con)o(tribute)t Fb(:)6 b(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)f Fi(119)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF