| %!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 |