[llvm-commits] [parallel] CVS: llvm/test/Programs/MultiSource/Benchmarks/MallocBench/gs/INPUT/README large.ps manual.ps small.ps

Misha Brukman brukman at cs.uiuc.edu
Mon Mar 1 20:33:57 PST 2004


Changes in directory llvm/test/Programs/MultiSource/Benchmarks/MallocBench/gs/INPUT:

README added (r1.1.2.1)
large.ps added (r1.1.2.1)
manual.ps added (r1.1.2.1)
small.ps added (r1.1.2.1)

---
Log message:

Merge from trunk

---
Diffs of the changes:  (+36199 -0)

Index: llvm/test/Programs/MultiSource/Benchmarks/MallocBench/gs/INPUT/README
diff -c /dev/null llvm/test/Programs/MultiSource/Benchmarks/MallocBench/gs/INPUT/README:1.1.2.1
*** /dev/null	Mon Mar  1 17:59:22 2004
--- llvm/test/Programs/MultiSource/Benchmarks/MallocBench/gs/INPUT/README	Mon Mar  1 17:59:12 2004
***************
*** 0 ****
--- 1,9 ----
+ 
+ Test Inputs to gs program:
+ 
+ gs -DNODISPLAY INPUT/small.ps
+ gs -DNODISPLAY INPUT/large.ps
+ gs -DNODISPLAY INPUT/manual.ps
+ 
+ Note that the largest inputs are missing because they occupy 5-10
+ megabytes each.


Index: llvm/test/Programs/MultiSource/Benchmarks/MallocBench/gs/INPUT/large.ps
diff -c /dev/null llvm/test/Programs/MultiSource/Benchmarks/MallocBench/gs/INPUT/large.ps:1.1.2.1
*** /dev/null	Mon Mar  1 17:59:22 2004
--- llvm/test/Programs/MultiSource/Benchmarks/MallocBench/gs/INPUT/large.ps	Mon Mar  1 17:59:12 2004
***************
*** 0 ****
--- 1,5992 ----
+ %!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


Index: llvm/test/Programs/MultiSource/Benchmarks/MallocBench/gs/INPUT/manual.ps
diff -c /dev/null llvm/test/Programs/MultiSource/Benchmarks/MallocBench/gs/INPUT/manual.ps:1.1.2.1
*** /dev/null	Mon Mar  1 17:59:22 2004
--- llvm/test/Programs/MultiSource/Benchmarks/MallocBench/gs/INPUT/manual.ps	Mon Mar  1 17:59:12 2004
***************
*** 0 ****
--- 1,29702 ----
+ %!
+ %%BoundingBox: (atend)
+ %%Pages: (atend)
+ %%DocumentFonts: (atend)
+ %%EndComments
+ %
+ % FrameMaker PostScript Prolog 2.0, for use with FrameMaker 2.0
+ % Copyright (c) 1986,87,89 by Frame Technology, Inc.  All rights reserved.
+ %
+ % Known Problems:
+ %	Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
+ /FMversion (2.0) def 
+ % Set up Color vs. Black-and-White
+ 	/FMPrintInColor systemdict /colorimage known def
+ % Uncomment this line to force b&w on color printer
+ %   /FMPrintInColor false def
+ /FrameDict 190 dict def 
+ systemdict /errordict known not {/errordict 10 dict def
+ 		errordict /rangecheck {stop} put} if
+ % The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
+ FrameDict /tmprangecheck errordict /rangecheck get put 
+ errordict /rangecheck {FrameDict /bug true put} put 
+ FrameDict /bug false put 
+ mark 
+ % Some PS machines read past the CR, so keep the following 3 lines together!
+ currentfile 5 string readline
+ 00
+ 0000000000
+ cleartomark 
+ errordict /rangecheck FrameDict /tmprangecheck get put 
+ FrameDict /bug get { 
+ 	/readline {
+ 		/gstring exch def
+ 		/gfile exch def
+ 		/gindex 0 def
+ 		{
+ 			gfile read pop 
+ 			dup 10 eq {exit} if 
+ 			dup 13 eq {exit} if 
+ 			gstring exch gindex exch put 
+ 			/gindex gindex 1 add def 
+ 		} loop
+ 		pop 
+ 		gstring 0 gindex getinterval true 
+ 		} def
+ 	} if
+ /FMVERSION {
+ 	FMversion ne {
+ 		/Times-Roman findfont 18 scalefont setfont
+ 		100 100 moveto
+ 		(FrameMaker version does not match postscript_prolog!)
+ 		dup =
+ 		show showpage
+ 		} if
+ 	} def 
+ /FMLOCAL {
+ 	FrameDict begin
+ 	0 def 
+ 	end 
+ 	} def 
+ 	/gstring FMLOCAL
+ 	/gfile FMLOCAL
+ 	/gindex FMLOCAL
+ 	/orgxfer FMLOCAL
+ 	/orgproc FMLOCAL
+ 	/organgle FMLOCAL
+ 	/orgfreq FMLOCAL
+ 	/yscale FMLOCAL
+ 	/xscale FMLOCAL
+ 	/manualfeed FMLOCAL
+ 	/paperheight FMLOCAL
+ 	/paperwidth FMLOCAL
+ /FMDOCUMENT { 
+ 	array /FMfonts exch def 
+ 	/#copies exch def
+ 	FrameDict begin
+ 	0 ne dup {setmanualfeed} if
+ 	/manualfeed exch def
+ 	/paperheight exch def
+ 	/paperwidth exch def
+ 	setpapername
+ 	manualfeed {true} {papersize} ifelse 
+ 	{manualpapersize} {false} ifelse 
+ 	{desperatepapersize} if
+ 	/yscale exch def
+ 	/xscale exch def
+ 	currenttransfer cvlit /orgxfer exch def
+ 	currentscreen cvlit /orgproc exch def
+ 	/organgle exch def /orgfreq exch def
+ 	end 
+ 	} def 
+ 	/pagesave FMLOCAL
+ 	/orgmatrix FMLOCAL
+ 	/landscape FMLOCAL
+ /FMBEGINPAGE { 
+ 	FrameDict begin 
+ 	/pagesave save def
+ 	3.86 setmiterlimit
+ 	/landscape exch 0 ne def
+ 	landscape { 
+ 		90 rotate 0 exch neg translate pop 
+ 		}
+ 		{pop pop}
+ 		ifelse
+ 	xscale yscale scale
+ 	/orgmatrix matrix def
+ 	gsave 
+ 	} def 
+ /FMENDPAGE {
+ 	grestore 
+ 	pagesave restore
+ 	end 
+ 	showpage
+ 	} def 
+ /FMDEFINEFONT { 
+ 	FrameDict begin
+ 	findfont 
+ 	ReEncode 
+ 	2 index exch 
+ 	definefont exch 
+ 	scalefont 
+ 	FMfonts 3 1 roll 
+ 	put
+ 	end 
+ 	} bind def
+ /FMNORMALIZEGRAPHICS { 
+ 	newpath
+ 	0.0 0.0 moveto
+ 	1 setlinewidth
+ 	0 setlinecap
+ 	0 0 0 sethsbcolor
+ 	0 setgray 
+ 	} bind def
+ 	/fx FMLOCAL
+ 	/fy FMLOCAL
+ 	/fh FMLOCAL
+ 	/fw FMLOCAL
+ 	/llx FMLOCAL
+ 	/lly FMLOCAL
+ 	/urx FMLOCAL
+ 	/ury FMLOCAL
+ /FMBEGINEPSF { 
+ 	end 
+ 	/FMEPSF save def 
+ 	/showpage {} def 
+ 	FMNORMALIZEGRAPHICS 
+ 	[/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall 
+ 	fx fy translate 
+ 	rotate
+ 	fw urx llx sub div fh ury lly sub div scale 
+ 	llx neg lly neg translate 
+ 	} bind def
+ /FMENDEPSF {
+ 	FMEPSF restore
+ 	FrameDict begin 
+ 	} bind def
+ FrameDict begin 
+ /setmanualfeed {
+ %%BeginFeature *ManualFeed True
+ 	 statusdict /manualfeed true put
+ %%EndFeature
+ 	} def
+ /max {2 copy lt {exch} if pop} bind def
+ /min {2 copy gt {exch} if pop} bind def
+ /inch {72 mul} def
+ /pagedimen { 
+ 	paperheight sub abs 16 lt exch 
+ 	paperwidth sub abs 16 lt and
+ 	{/papername exch def} {pop} ifelse
+ 	} def
+ 	/papersizedict FMLOCAL
+ /setpapername { 
+ 	/papersizedict 14 dict def 
+ 	papersizedict begin
+ 	/papername /unknown def 
+ 		/Letter 8.5 inch 11.0 inch pagedimen
+ 		/LetterSmall 7.68 inch 10.16 inch pagedimen
+ 		/Tabloid 11.0 inch 17.0 inch pagedimen
+ 		/Ledger 17.0 inch 11.0 inch pagedimen
+ 		/Legal 8.5 inch 14.0 inch pagedimen
+ 		/Statement 5.5 inch 8.5 inch pagedimen
+ 		/Executive 7.5 inch 10.0 inch pagedimen
+ 		/A3 11.69 inch 16.5 inch pagedimen
+ 		/A4 8.26 inch 11.69 inch pagedimen
+ 		/A4Small 7.47 inch 10.85 inch pagedimen
+ 		/B4 10.125 inch 14.33 inch pagedimen
+ 		/B5 7.16 inch 10.125 inch pagedimen
+ 	end
+ 	} def
+ /papersize {
+ 	papersizedict begin
+ 		/Letter {lettertray} def
+ 		/LetterSmall {lettertray lettersmall} def
+ 		/Tabloid {11x17tray} def
+ 		/Ledger {ledgertray} def
+ 		/Legal {legaltray} def
+ 		/Statement {statementtray} def
+ 		/Executive {executivetray} def
+ 		/A3 {a3tray} def
+ 		/A4 {a4tray} def
+ 		/A4Small {a4tray a4small} def
+ 		/B4 {b4tray} def
+ 		/B5 {b5tray} def
+ 		/unknown {unknown} def
+ 	papersizedict dup papername known {papername} {/unknown} ifelse get
+ 	end
+ 	statusdict begin stopped end 
+ 	} def
+ /manualpapersize {
+ 	papersizedict begin
+ 		/Letter {letter} def
+ 		/LetterSmall {lettersmall} def
+ 		/Tabloid {11x17} def
+ 		/Ledger {ledger} def
+ 		/Legal {legal} def
+ 		/Statement {statement} def
+ 		/Executive {executive} def
+ 		/A3 {a3} def
+ 		/A4 {a4} def
+ 		/A4Small {a4small} def
+ 		/B4 {b4} def
+ 		/B5 {b5} def
+ 		/unknown {unknown} def
+ 	papersizedict dup papername known {papername} {/unknown} ifelse get
+ 	end
+ 	stopped 
+ 	} def
+ /desperatepapersize {
+ 	statusdict /setpageparams known
+ 		{
+ 		paperwidth paperheight 0 1 
+ 		statusdict begin
+ 		{setpageparams} stopped pop 
+ 		end
+ 		} if
+ 	} def
+ /savematrix {
+ 	orgmatrix currentmatrix pop
+ 	} bind def
+ /restorematrix {
+ 	orgmatrix setmatrix
+ 	} bind def
+ /dmatrix matrix def
+ /dpi    72 0 dmatrix defaultmatrix dtransform
+     dup mul exch   dup mul add   sqrt def
+ /freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
+ /sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
+ /DiacriticEncoding [
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
+ /numbersign /dollar /percent /ampersand /quotesingle /parenleft
+ /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+ /two /three /four /five /six /seven /eight /nine /colon /semicolon
+ /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
+ /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
+ /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
+ /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
+ /braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
+ /Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
+ /atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
+ /iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
+ /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
+ /udieresis /dagger /.notdef /cent /sterling /section /bullet
+ /paragraph /germandbls /registered /copyright /trademark /acute
+ /dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
+ /yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
+ /exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
+ /guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
+ /Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
+ /quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
+ /fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
+ /periodcentered /quotesinglbase /quotedblbase /perthousand
+ /Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
+ /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
+ /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
+ /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
+ ] def
+ /ReEncode { 
+ 	dup 
+ 	length 
+ 	dict begin 
+ 	{
+ 	1 index /FID ne 
+ 		{def} 
+ 		{pop pop} ifelse 
+ 	} forall
+ 	Encoding StandardEncoding eq 
+ 	{
+ 		/Encoding DiacriticEncoding def
+ 	}if
+ 	currentdict 
+ 	end 
+ 	} bind def
+ /graymode true def
+ 	/bwidth FMLOCAL
+ 	/bpside FMLOCAL
+ 	/bstring FMLOCAL
+ 	/onbits FMLOCAL
+ 	/offbits FMLOCAL
+ 	/xindex FMLOCAL
+ 	/yindex FMLOCAL
+ 	/x FMLOCAL
+ 	/y FMLOCAL
+ /setpattern {
+ 	 /bwidth  exch def
+ 	 /bpside  exch def
+ 	 /bstring exch def
+ 	 /onbits 0 def  /offbits 0 def
+ 	 freq sangle landscape {90 add} if 
+ 		{/y exch def
+ 		 /x exch def
+ 		 /xindex x 1 add 2 div bpside mul cvi def
+ 		 /yindex y 1 add 2 div bpside mul cvi def
+ 		 bstring yindex bwidth mul xindex 8 idiv add get
+ 		 1 7 xindex 8 mod sub bitshift and 0 ne
+ 		 {/onbits  onbits  1 add def 1}
+ 		 {/offbits offbits 1 add def 0}
+ 		 ifelse
+ 		}
+ 		setscreen
+ 	 {} settransfer
+ 	 offbits offbits onbits add div FMsetgray
+ 	/graymode false def
+ 	} bind def
+ /grayness {
+ 	FMsetgray
+ 	graymode not {
+ 		/graymode true def
+ 		orgxfer cvx settransfer
+ 		orgfreq organgle orgproc cvx setscreen
+ 		} if
+ 	} bind def
+ 	/HUE FMLOCAL
+ 	/SAT FMLOCAL
+ 	/BRIGHT FMLOCAL
+ 	/Colors FMLOCAL
+ FMPrintInColor 
+ 	
+ 	{
+ 	/HUE 0 def
+ 	/SAT 0 def
+ 	/BRIGHT 0 def
+ 	% array of arrays Hue and Sat values for the separations [HUE BRIGHT]
+ 	/Colors   
+ 	[[0    0  ]    % black
+ 	 [0    0  ]    % white
+ 	 [0.00 1.0]    % red
+ 	 [0.37 1.0]    % green
+ 	 [0.60 1.0]    % blue
+ 	 [0.50 1.0]    % cyan
+ 	 [0.83 1.0]    % magenta
+ 	 [0.16 1.0]    % comment / yellow
+ 	 ] def
+       
+ 	/BEGINBITMAPCOLOR { 
+ 		BITMAPCOLOR} def
+ 	/BEGINBITMAPCOLORc { 
+ 		BITMAPCOLORc} def
+ 	/K { 
+ 		Colors exch get dup
+ 		0 get /HUE exch store 
+ 		1 get /BRIGHT exch store
+ 		  HUE 0 eq BRIGHT 0 eq and
+ 			{1.0 SAT sub setgray}
+ 			{HUE SAT BRIGHT sethsbcolor} 
+ 		  ifelse
+ 		} def
+ 	/FMsetgray { 
+ 		/SAT exch 1.0 exch sub store 
+ 		  HUE 0 eq BRIGHT 0 eq and
+ 			{1.0 SAT sub setgray}
+ 			{HUE SAT BRIGHT sethsbcolor} 
+ 		  ifelse
+ 		} bind def
+ 	}
+ 	
+ 	{
+ 	/BEGINBITMAPCOLOR { 
+ 		BITMAPGRAY} def
+ 	/BEGINBITMAPCOLORc { 
+ 		BITMAPGRAYc} def
+ 	/FMsetgray {setgray} bind def
+ 	/K { 
+ 		pop
+ 		} def
+ 	}
+ ifelse
+ /normalize {
+ 	transform round exch round exch itransform
+ 	} bind def
+ /dnormalize {
+ 	dtransform round exch round exch idtransform
+ 	} bind def
+ /lnormalize { 
+ 	0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
+ 	} bind def
+ /H { 
+ 	lnormalize setlinewidth
+ 	} bind def
+ /Z {
+ 	setlinecap
+ 	} bind def
+ /X { 
+ 	fillprocs exch get exec
+ 	} bind def
+ /V { 
+ 	gsave eofill grestore
+ 	} bind def
+ /N { 
+ 	stroke
+ 	} bind def
+ /M {newpath moveto} bind def
+ /E {lineto} bind def
+ /D {curveto} bind def
+ /O {closepath} bind def
+ 	/n FMLOCAL
+ /L { 
+  	/n exch def
+ 	newpath
+ 	normalize
+ 	moveto 
+ 	2 1 n {pop normalize lineto} for
+ 	} bind def
+ /Y { 
+ 	L 
+ 	closepath
+ 	} bind def
+ 	/x1 FMLOCAL
+ 	/x2 FMLOCAL
+ 	/y1 FMLOCAL
+ 	/y2 FMLOCAL
+ 	/rad FMLOCAL
+ /R { 
+ 	/y2 exch def
+ 	/x2 exch def
+ 	/y1 exch def
+ 	/x1 exch def
+ 	x1 y1
+ 	x2 y1
+ 	x2 y2
+ 	x1 y2
+ 	4 Y 
+ 	} bind def
+ /RR { 
+ 	/rad exch def
+ 	normalize
+ 	/y2 exch def
+ 	/x2 exch def
+ 	normalize
+ 	/y1 exch def
+ 	/x1 exch def
+ 	newpath
+ 	x1 y1 rad add moveto
+ 	x1 y2 x2 y2 rad arcto
+ 	x2 y2 x2 y1 rad arcto
+ 	x2 y1 x1 y1 rad arcto
+ 	x1 y1 x1 y2 rad arcto
+ 	closepath
+ 	16 {pop} repeat
+ 	} bind def
+ /C { 
+ 	grestore
+ 	gsave
+ 	R 
+ 	clip
+ 	} bind def
+ /U { 
+ 	grestore
+ 	gsave
+ 	} bind def
+ /F { 
+ 	FMfonts exch get
+ 	setfont
+ 	} bind def
+ /T { 
+ 	moveto show
+ 	} bind def
+ /RF { 
+ 	rotate
+ 	0 ne {-1 1 scale} if
+ 	} bind def
+ /TF { 
+ 	gsave
+ 	moveto 
+ 	RF
+ 	show
+ 	grestore
+ 	} bind def
+ /P { 
+ 	moveto
+ 	0 32 3 2 roll widthshow
+ 	} bind def
+ /PF { 
+ 	gsave
+ 	moveto 
+ 	RF
+ 	0 32 3 2 roll widthshow
+ 	grestore
+ 	} bind def
+ /S { 
+ 	moveto
+ 	0 exch ashow
+ 	} bind def
+ /SF { 
+ 	gsave
+ 	moveto
+ 	RF
+ 	0 exch ashow
+ 	grestore
+ 	} bind def
+ /B { 
+ 	moveto
+ 	0 32 4 2 roll 0 exch awidthshow
+ 	} bind def
+ /BF { 
+ 	gsave
+ 	moveto
+ 	RF
+ 	0 32 4 2 roll 0 exch awidthshow
+ 	grestore
+ 	} bind def
+ 	/x FMLOCAL
+ 	/y FMLOCAL
+ 	/dx FMLOCAL
+ 	/dy FMLOCAL
+ 	/dl FMLOCAL
+ 	/t FMLOCAL
+ 	/t2 FMLOCAL
+ 	/Cos FMLOCAL
+ 	/Sin FMLOCAL
+ 	/r FMLOCAL
+ /W { 
+ 	dnormalize
+ 	/dy exch def
+ 	/dx exch def
+ 	normalize
+ 	/y  exch def
+ 	/x  exch def
+ 	/dl dx dx mul dy dy mul add sqrt def
+ 	dl 0.0 gt {
+ 		/t currentlinewidth def
+ 		savematrix
+ 		/Cos dx dl div def
+ 		/Sin dy dl div def
+ 		/r [Cos Sin Sin neg Cos 0.0 0.0] def
+ 		/t2 t 2.5 mul 3.5 max def
+ 		newpath
+ 		x y translate
+ 		r concat
+ 		0.0 0.0 moveto
+ 		dl t 2.7 mul sub 0.0 rlineto
+ 		stroke
+ 		restorematrix
+ 		x dx add y dy add translate
+ 		r concat
+ 		t 0.67 mul setlinewidth
+ 		t 1.61 mul neg  0.0 translate
+ 		0.0 0.0 moveto
+ 		t2 1.7 mul neg  t2 2.0 div     moveto
+ 		0.0 0.0 lineto
+ 		t2 1.7 mul neg  t2 2.0 div neg lineto
+ 		stroke
+ 		t setlinewidth
+ 		restorematrix
+ 		} if
+ 	} bind def
+ /G { 
+ 	gsave
+ 	newpath
+ 	normalize translate 0.0 0.0 moveto 
+ 	dnormalize scale 
+ 	0.0 0.0 1.0 5 3 roll arc 
+ 	closepath fill
+ 	grestore
+ 	} bind def
+ /A { 
+ 	gsave
+ 	savematrix
+ 	newpath
+ 	2 index 2 div add exch 3 index 2 div sub exch 
+ 	normalize 2 index 2 div sub exch 3 index 2 div add exch 
+ 	translate 
+ 	scale 
+ 	0.0 0.0 1.0 5 3 roll arc 
+ 	restorematrix
+ 	stroke
+ 	grestore
+ 	} bind def
+ 	/x FMLOCAL
+ 	/y FMLOCAL
+ 	/w FMLOCAL
+ 	/h FMLOCAL
+ 	/xx FMLOCAL
+ 	/yy FMLOCAL
+ 	/ww FMLOCAL
+ 	/hh FMLOCAL
+ 	/FMsaveobject FMLOCAL
+ 	/FMoptop FMLOCAL
+ 	/FMdicttop FMLOCAL
+ /BEGINPRINTCODE { 
+ 	/FMdicttop countdictstack 1 add def 
+ 	/FMoptop count 4 sub def 
+ 	/FMsaveobject save def
+ 	userdict begin 
+ 	/showpage {} def 
+ 	FMNORMALIZEGRAPHICS 
+ 	3 index neg 3 index neg translate
+ 	} bind def
+ /ENDPRINTCODE {
+ 	count -1 FMoptop {pop pop} for 
+ 	countdictstack -1 FMdicttop {pop end} for 
+ 	FMsaveobject restore 
+ 	} bind def
+ /gn { 
+ 	0 
+ 	{	46 mul 
+ 		cf read pop 
+ 		32 sub 
+ 		dup 46 lt {exit} if 
+ 		46 sub add 
+ 		} loop
+ 	add 
+ 	} bind def
+ 	/str FMLOCAL
+ /cfs { 
+ 	/str sl string def 
+ 	0 1 sl 1 sub {str exch val put} for 
+ 	str def 
+ 	} bind def
+ /ic [ 
+ 	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+ 	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+ 	0
+ 	{0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
+ 	{10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
+ 	{19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
+ 	{13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
+ 	{4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
+ 	{13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
+ 	{7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
+ 	{0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
+ 	{10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
+ 	] def
+ 	/sl FMLOCAL
+ 	/val FMLOCAL
+ 	/ws FMLOCAL
+ 	/im FMLOCAL
+ 	/bs FMLOCAL
+ 	/cs FMLOCAL
+ 	/len FMLOCAL
+ 	/pos FMLOCAL
+ /ms { 
+ 	/sl exch def 
+ 	/val 255 def 
+ 	/ws cfs 
+ 	/im cfs 
+ 	/val 0 def 
+ 	/bs cfs 
+ 	/cs cfs 
+ 	} bind def
+ 400 ms 
+ /ip { 
+ 	is 
+ 	0 
+ 	cf cs readline pop 
+ 	{	ic exch get exec 
+ 		add 
+ 		} forall 
+ 	pop 
+ 	
+ 	} bind def
+ /wh { 
+ 	/len exch def 
+ 	/pos exch def 
+ 	ws 0 len getinterval im pos len getinterval copy pop
+ 	pos len 
+ 	} bind def
+ /bl { 
+ 	/len exch def 
+ 	/pos exch def 
+ 	bs 0 len getinterval im pos len getinterval copy pop
+ 	pos len 
+ 	} bind def
+ /s1 1 string def
+ /fl { 
+ 	/len exch def 
+ 	/pos exch def 
+ 	/val cf s1 readhexstring pop 0 get def
+ 	pos 1 pos len add 1 sub {im exch val put} for
+ 	pos len 
+ 	} bind def
+ /hx { 
+ 	3 copy getinterval 
+ 	cf exch readhexstring pop pop 
+ 	} bind def
+ 	/h FMLOCAL
+ 	/w FMLOCAL
+ 	/d FMLOCAL
+ 	/lb FMLOCAL
+ 	/bitmapsave FMLOCAL
+ 	/is FMLOCAL
+ 	/cf FMLOCAL
+ /wbytes { 
+ 	dup 
+ 	8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse
+ 	} bind def
+ /BEGINBITMAPBWc { 
+ 	1 {} COMMONBITMAPc
+ 	} bind def
+ /BEGINBITMAPGRAYc { 
+ 	8 {} COMMONBITMAPc
+ 	} bind def
+ /BEGINBITMAP2BITc { 
+ 	2 {} COMMONBITMAPc
+ 	} bind def
+ /COMMONBITMAPc { 
+ 	/r exch def
+ 	/d exch def
+ 	gsave
+ 	translate rotate scale /h exch def /w exch def
+ 	/lb w d wbytes def 
+ 	sl lb lt {lb ms} if 
+ 	/bitmapsave save def 
+ 	r                    
+ 	/is im 0 lb getinterval def 
+ 	ws 0 lb getinterval is copy pop 
+ 	/cf currentfile def 
+ 	w h d [w 0 0 h neg 0 h] 
+ 	{ip} image 
+ 	bitmapsave restore 
+ 	grestore
+ 	} bind def
+ /BEGINBITMAPBW { 
+ 	1 {} COMMONBITMAP
+ 	} bind def
+ /BEGINBITMAPGRAY { 
+ 	8 {} COMMONBITMAP
+ 	} bind def
+ /BEGINBITMAP2BIT { 
+ 	2 {} COMMONBITMAP
+ 	} bind def
+ /COMMONBITMAP { 
+ 	/r exch def
+ 	/d exch def
+ 	gsave
+ 	translate rotate scale /h exch def /w exch def
+ 	/bitmapsave save def 
+ 	r                    
+ 	/is w d wbytes string def
+ 	/cf currentfile def 
+ 	w h d [w 0 0 h neg 0 h] 
+ 	{cf is readhexstring pop} image
+ 	bitmapsave restore 
+ 	grestore
+ 	} bind def
+ 	/proc1 FMLOCAL
+ 	/proc2 FMLOCAL
+ 	/newproc FMLOCAL
+ /Fmcc {
+     /proc2 exch cvlit def
+     /proc1 exch cvlit def
+     /newproc proc1 length proc2 length add array def
+     newproc 0 proc1 putinterval
+     newproc proc1 length proc2 putinterval
+     newproc cvx
+ } bind def
+ /ngrayt 256 array def
+ /nredt 256 array def
+ /nbluet 256 array def
+ /ngreent 256 array def
+ 	/gryt FMLOCAL
+ 	/blut FMLOCAL
+ 	/grnt FMLOCAL
+ 	/redt FMLOCAL
+ 	/indx FMLOCAL
+ 	/cynu FMLOCAL
+ 	/magu FMLOCAL
+ 	/yelu FMLOCAL
+ 	/k FMLOCAL
+ 	/u FMLOCAL
+ /colorsetup {
+ 	currentcolortransfer
+ 	/gryt exch def
+ 	/blut exch def
+ 	/grnt exch def
+ 	/redt exch def
+ 	0 1 255 {
+ 		/indx exch def
+ 		/cynu 1 red indx get 255 div sub def
+ 		/magu 1 green indx get 255 div sub def
+ 		/yelu 1 blue indx get 255 div sub def
+ 		/k cynu magu min yelu min def
+ 		/u k currentundercolorremoval exec def
+ 		nredt indx 1 0 cynu u sub max sub redt exec put
+ 		ngreent indx 1 0 magu u sub max sub grnt exec put
+ 		nbluet indx 1 0 yelu u sub max sub blut exec put
+ 		ngrayt indx 1 k currentblackgeneration exec sub gryt exec put
+ 	} for
+ 	{255 mul cvi nredt exch get}
+ 	{255 mul cvi ngreent exch get}
+ 	{255 mul cvi nbluet exch get}
+ 	{255 mul cvi ngrayt exch get}
+ 	setcolortransfer
+ 	{pop 0} setundercolorremoval
+ 	{} setblackgeneration
+ 	} bind def
+ 	/tran FMLOCAL
+ /fakecolorsetup {
+ 	/tran 256 string def
+ 	0 1 255 {/indx exch def 
+ 		tran indx
+ 		red indx get 77 mul
+ 		green indx get 151 mul
+ 		blue indx get 28 mul
+ 		add add 256 idiv put} for
+ 	currenttransfer
+ 	{255 mul cvi tran exch get 255.0 div}
+ 	exch Fmcc settransfer
+ } bind def
+ /BITMAPCOLOR { 
+ 	/d 8 def
+ 	gsave
+ 	translate rotate scale /h exch def /w exch def
+ 	/bitmapsave save def 
+ 	colorsetup
+ 	/is w d wbytes string def
+ 	/cf currentfile def 
+ 	w h d [w 0 0 h neg 0 h] 
+ 	{cf is readhexstring pop} {is} {is} true 3 colorimage 
+ 	bitmapsave restore 
+ 	grestore
+ 	} bind def
+ /BITMAPCOLORc { 
+ 	/d 8 def
+ 	gsave
+ 	translate rotate scale /h exch def /w exch def
+ 	/lb w d wbytes def 
+ 	sl lb lt {lb ms} if 
+ 	/bitmapsave save def 
+ 	colorsetup
+ 	/is im 0 lb getinterval def 
+ 	ws 0 lb getinterval is copy pop 
+ 	/cf currentfile def 
+ 	w h d [w 0 0 h neg 0 h] 
+ 	{ip} {is} {is} true 3 colorimage
+ 	bitmapsave restore 
+ 	grestore
+ 	} bind def
+ /BITMAPGRAY { 
+ 	8 {fakecolorsetup} COMMONBITMAP
+ 	} bind def
+ /BITMAPGRAYc { 
+ 	8 {fakecolorsetup} COMMONBITMAPc
+ 	} bind def
+ /ENDBITMAP {
+ 	} bind def
+ end 
+ %%EndProlog
+ %%BeginSetup
+ (2.0) FMVERSION
+ 1 1 612 792 0 1 47 FMDOCUMENT
+ /fillprocs 32 array def
+ fillprocs 0 { 0.000000 grayness } put
+ fillprocs 1 { 0.100000 grayness } put
+ fillprocs 2 { 0.300000 grayness } put
+ fillprocs 3 { 0.500000 grayness } put
+ fillprocs 4 { 0.700000 grayness } put
+ fillprocs 5 { 0.900000 grayness } put
+ fillprocs 6 { 0.970000 grayness } put
+ fillprocs 7 { 1.000000 grayness } put
+ fillprocs 8 {<0f1e3c78f0e1c387> 8 1 setpattern } put
+ fillprocs 9 {<0f87c3e1f0783c1e> 8 1 setpattern } put
+ fillprocs 10 {<cccccccccccccccc> 8 1 setpattern } put
+ fillprocs 11 {<ffff0000ffff0000> 8 1 setpattern } put
+ fillprocs 12 {<8142241818244281> 8 1 setpattern } put
+ fillprocs 13 {<03060c183060c081> 8 1 setpattern } put
+ fillprocs 14 {<8040201008040201> 8 1 setpattern } put
+ fillprocs 15 {} put
+ fillprocs 16 { 1.000000 grayness } put
+ fillprocs 17 { 0.900000 grayness } put
+ fillprocs 18 { 0.700000 grayness } put
+ fillprocs 19 { 0.500000 grayness } put
+ fillprocs 20 { 0.300000 grayness } put
+ fillprocs 21 { 0.100000 grayness } put
+ fillprocs 22 { 0.030000 grayness } put
+ fillprocs 23 { 0.000000 grayness } put
+ fillprocs 24 {<f0e1c3870f1e3c78> 8 1 setpattern } put
+ fillprocs 25 {<f0783c1e0f87c3e1> 8 1 setpattern } put
+ fillprocs 26 {<3333333333333333> 8 1 setpattern } put
+ fillprocs 27 {<0000ffff0000ffff> 8 1 setpattern } put
+ fillprocs 28 {<7ebddbe7e7dbbd7e> 8 1 setpattern } put
+ fillprocs 29 {<fcf9f3e7cf9f3f7e> 8 1 setpattern } put
+ fillprocs 30 {<7fbfdfeff7fbfdfe> 8 1 setpattern } put
+ fillprocs 31 {} put
+ %%EndSetup
+ 0 36 /Times-Roman FMDEFINEFONT
+ 1 32 /Times-Roman FMDEFINEFONT
+ 2 12 /Times-Bold FMDEFINEFONT
+ 3 12 /Times-Italic FMDEFINEFONT
+ 4 12 /Times-Roman FMDEFINEFONT
+ %%Page: "1" 1
+ %%BeginPaperSize: Letter
+ %%EndPaperSize
+ 612 792 0 FMBEGINPAGE
+ 72 63 540 747.36 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (The S) 175.58 563.36 T
+ 1 F
+ (ELF) 260.56 563.36 T
+ 0 F
+ ( Manual) 317.46 563.36 T
+ 2 F
+ (Urs H\232lzle) 278.85 451.36 T
+ (Bay-W) 265.52 436.36 T
+ (ei Chang) 300.84 436.36 T
+ (Craig Chambers) 263.2 421.36 T
+ (Ole Agesen) 277.19 406.36 T
+ (David Ungar) 272.85 391.36 T
+ 3 F
+ (Center for Integrated Systems) 234.21 361.36 T
+ (Computer Systems Laboratory) 232.71 346.36 T
+ (Stanfor) 259.08 331.36 T
+ (d University) 293.96 331.36 T
+ (Stanfor) 258.41 316.36 T
+ (d, CA 94305) 293.29 316.36 T
+ 4 F
+ (V) 278.68 190.36 T
+ (ersion 1.1) 286.01 190.36 T
+ (February 4, 1991) 264.86 175.36 T
+ FMENDPAGE
+ %%EndPage: "1" 2
+ 0 10 /Times-Roman FMDEFINEFONT
+ 1 9 /Times-Roman FMDEFINEFONT
+ 5 11 /Times-Bold FMDEFINEFONT
+ 6 11 /Times-Roman FMDEFINEFONT
+ %%Page: "2" 2
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 71.42 742.9 539.42 742.9 2 L
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 F
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Manual) 92.96 749.62 T
+ (Table of Contents) 467.8 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 2 F
+ 0 X
+ (T) 71.42 708.11 T
+ (able of Contents) 78.32 708.11 T
+ (Part I:) 71.42 676.11 T
+ (S) 143.42 676.11 T
+ 5 F
+ (ELF) 150.09 676.11 T
+ 2 F
+ ( System Manual) 171.46 676.11 T
+ 4 F
+ (Chapter 1) 71.42 652.11 T
+ (Introduction) 143.42 652.11 T
+ 0 F
+ ( ) 202.72 652.11 T
+ (................................................................................................................................) 207.39 652.11 T
+ (I-1) 527.77 652.11 T
+ 4 F
+ (Chapter 2) 71.42 636.11 T
+ (About this release) 143.42 636.11 T
+ 0 F
+ (......................................................................................................................) 232.37 636.11 T
+ (I-2) 527.77 636.11 T
+ 4 F
+ (Chapter 3) 71.42 620.11 T
+ (Overview of S) 143.42 620.11 T
+ 6 F
+ (ELF) 213.37 620.11 T
+ 0 F
+ (.....................................................................................................................) 234.87 620.11 T
+ (I-4) 527.77 620.11 T
+ 4 F
+ (Chapter 4) 71.42 604.11 T
+ (Installing S) 143.42 604.11 T
+ 6 F
+ (ELF) 198.4 604.11 T
+ 0 F
+ (...........................................................................................................................) 219.88 604.11 T
+ (I-6) 527.77 604.11 T
+ 4 F
+ (Chapter 5) 71.42 588.11 T
+ (Using S) 143.42 588.11 T
+ 6 F
+ (ELF) 181.74 588.11 T
+ 0 F
+ (................................................................................................................................) 202.39 588.11 T
+ (I-10) 522.77 588.11 T
+ 4 F
+ (Appendix A) 71.42 567.11 T
+ (Run-time message lookup errors) 143.42 567.11 T
+ 0 F
+ (.........................................................................................) 299.83 567.11 T
+ (I-28) 522.77 567.11 T
+ 4 F
+ (Appendix B) 71.42 551.11 T
+ (The initial S) 143.42 551.11 T
+ 6 F
+ (ELF) 202.73 551.11 T
+ 4 F
+ ( world) 222.26 551.11 T
+ 0 F
+ (...........................................................................................................) 254.86 551.11 T
+ (I-29) 522.77 551.11 T
+ 4 F
+ (Appendix C) 71.42 535.11 T
+ (startup.self) 143.42 535.11 T
+ 0 F
+ (..................................................................................................................................) 197.39 535.11 T
+ (I-32) 522.77 535.11 T
+ 4 F
+ (Appendix D) 71.42 519.11 T
+ (VM configuration) 143.42 519.11 T
+ 0 F
+ (....................................................................................................................) 232.37 519.11 T
+ (I-34) 522.77 519.11 T
+ 4 F
+ (Appendix E) 71.42 503.11 T
+ (The system monitor) 143.42 503.11 T
+ 0 F
+ (.................................................................................................................) 239.87 503.11 T
+ (I-35) 522.77 503.11 T
+ 4 F
+ (Appendix F) 71.42 487.11 T
+ (Primitives) 143.42 487.11 T
+ 0 F
+ (...................................................................................................................................) 194.89 487.11 T
+ (I-37) 522.77 487.11 T
+ 4 F
+ (References) 71.42 466.11 T
+ 0 F
+ (...............................................................................................................................................................) 124.93 466.11 T
+ (I-51) 522.77 466.11 T
+ 2 F
+ (Part II:) 71.42 436.11 T
+ (The S) 143.42 436.11 T
+ 5 F
+ (ELF) 173.08 436.11 T
+ 2 F
+ ( World) 194.45 436.11 T
+ 4 F
+ (Chapter 1) 71.42 412.11 T
+ (Organizing the world) 143.42 412.11 T
+ 0 F
+ ( ) 246.02 412.11 T
+ (.............................................................................................................) 249.86 412.11 T
+ (II-1) 524.44 412.11 T
+ 4 F
+ (Chapter 2) 71.42 396.11 T
+ (Map of the world) 143.42 396.11 T
+ 0 F
+ (......................................................................................................................) 227.38 396.11 T
+ (II-5) 524.44 396.11 T
+ 4 F
+ (Appendix A) 71.42 375.11 T
+ (Mirrors) 143.42 375.11 T
+ 0 F
+ (......................................................................................................................................) 182.4 375.11 T
+ (II-16) 519.45 375.11 T
+ 4 F
+ (Appendix B) 71.42 359.11 T
+ (Strings) 143.42 359.11 T
+ 0 F
+ (.......................................................................................................................................) 179.9 359.11 T
+ (II-18) 519.45 359.11 T
+ 4 F
+ (Appendix C) 71.42 343.11 T
+ (Other objects in the S) 143.42 343.11 T
+ 6 F
+ (ELF) 247.36 343.11 T
+ 4 F
+ ( world) 266.89 343.11 T
+ 0 F
+ (.......................................................................................) 299.83 343.11 T
+ (II-20) 519.45 343.11 T
+ 4 F
+ (Appendix D) 71.42 327.11 T
+ (The S) 143.42 327.11 T
+ 6 F
+ (ELF) 171.74 327.11 T
+ 4 F
+ ( prototype user interface) 191.27 327.11 T
+ 0 F
+ (...................................................................................) 309.83 327.11 T
+ (II-21) 519.45 327.11 T
+ 4 F
+ (Appendix E) 71.42 311.11 T
+ (Selector glossary) 143.42 311.11 T
+ 0 F
+ (....................................................................................................................) 227.38 311.11 T
+ (II-23) 519.45 311.11 T
+ 4 F
+ (References) 71.42 290.11 T
+ 0 F
+ (.............................................................................................................................................................) 124.93 290.11 T
+ (II-31) 519.45 290.11 T
+ 2 F
+ (Part III:) 71.42 260.11 T
+ (S) 143.42 260.11 T
+ 5 F
+ (ELF) 150.09 260.11 T
+ 2 F
+ ( Language Reference Manual) 171.46 260.11 T
+ 4 F
+ (Chapter 1) 71.42 236.11 T
+ (Introduction) 143.42 236.11 T
+ 0 F
+ ( ) 202.72 236.11 T
+ (.............................................................................................................................) 207.39 236.11 T
+ (III-1) 521.11 236.11 T
+ 4 F
+ (Chapter 2) 71.42 220.11 T
+ (Objects) 143.42 220.11 T
+ 0 F
+ (.......................................................................................................................................) 182.4 220.11 T
+ (III-2) 521.11 220.11 T
+ 4 F
+ (Chapter 3) 71.42 204.11 T
+ (Slot descriptors) 143.42 204.11 T
+ 0 F
+ (........................................................................................................................) 219.88 204.11 T
+ (III-7) 521.11 204.11 T
+ 4 F
+ (Chapter 4) 71.42 188.11 T
+ (Expressions) 143.42 188.11 T
+ 0 F
+ (.............................................................................................................................) 202.39 188.11 T
+ (III-1) 516.49 188.11 T
+ (1) 534.43 188.11 T
+ 4 F
+ (Chapter 5) 71.42 172.11 T
+ (Message lookup semantics) 143.42 172.11 T
+ 0 F
+ (.................................................................................................) 272.35 172.11 T
+ (III-15) 516.12 172.11 T
+ 4 F
+ (Chapter 6) 71.42 156.11 T
+ (Lexical elements) 143.42 156.11 T
+ 0 F
+ (...................................................................................................................) 227.38 156.11 T
+ (III-21) 516.12 156.11 T
+ 4 F
+ (Appendix A) 71.42 135.11 T
+ (Glossary) 143.42 135.11 T
+ 0 F
+ (...................................................................................................................................) 187.4 135.11 T
+ (III-25) 516.12 135.11 T
+ 4 F
+ (Appendix B) 71.42 119.11 T
+ (Lexical overview) 143.42 119.11 T
+ 0 F
+ (...................................................................................................................) 227.38 119.11 T
+ (III-28) 516.12 119.11 T
+ 4 F
+ (Appendix C) 71.42 103.11 T
+ (Syntax overview) 143.42 103.11 T
+ 0 F
+ (....................................................................................................................) 224.88 103.11 T
+ (III-29) 516.12 103.11 T
+ 4 F
+ (Appendix D) 71.42 87.11 T
+ (Built-in types) 143.42 87.11 T
+ 0 F
+ (..........................................................................................................................) 209.88 87.11 T
+ (III-31) 516.12 87.11 T
+ 4 F
+ (References) 71.42 66.11 T
+ 0 F
+ (............................................................................................................................................................) 124.93 66.11 T
+ (III-32) 516.12 66.11 T
+ FMENDPAGE
+ %%EndPage: "2" 3
+ 7 24 /Times-Roman FMDEFINEFONT
+ 8 21 /Times-Roman FMDEFINEFONT
+ %%Page: "1" 3
+ 612 792 0 FMBEGINPAGE
+ 72 63 540 747.36 R
+ 7 X
+ 0 K
+ V
+ 7 F
+ 0 X
+ (Part I) 279.69 641.36 T
+ (S) 202.71 591.36 T
+ 8 F
+ (ELF) 216.05 591.36 T
+ 7 F
+ ( System Manual) 253.38 591.36 T
+ FMENDPAGE
+ %%EndPage: "1" 4
+ %%Page: "1" 4
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 71.42 742.9 539.42 742.9 2 L
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 F
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Table of Contents) 467.8 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 2 F
+ 0 X
+ (T) 71.42 708.11 T
+ (able of Contents) 78.32 708.11 T
+ 4 F
+ (1) 71.42 674.11 T
+ (Introduction) 107.42 674.11 T
+ 0 F
+ (................................................................................................................................................) 167.41 674.11 T
+ (I-1) 527.77 674.11 T
+ 4 F
+ (2) 71.42 646.11 T
+ (About this release) 107.42 646.11 T
+ 0 F
+ (.....................................................................................................................................) 194.89 646.11 T
+ (I-2) 527.77 646.11 T
+ (2.1) 107.42 631.45 T
+ (Implementation status) 143.42 631.45 T
+ (......................................................................................................................) 232.37 631.45 T
+ (I-2) 527.77 631.45 T
+ (2.2) 107.42 615.45 T
+ (Major changes) 143.42 615.45 T
+ (.................................................................................................................................) 204.89 615.45 T
+ (I-2) 527.77 615.45 T
+ (2.3) 107.42 599.45 T
+ (Future implementation changes and known bugs) 143.42 599.45 T
+ (...........................................................................) 339.81 599.45 T
+ (I-2) 527.77 599.45 T
+ (2.4) 107.42 583.45 T
+ (Potential language changes) 143.42 583.45 T
+ (..............................................................................................................) 252.36 583.45 T
+ (I-3) 527.77 583.45 T
+ (2.5) 107.42 567.45 T
+ (Bug reports) 143.42 567.45 T
+ (......................................................................................................................................) 192.39 567.45 T
+ (I-3) 527.77 567.45 T
+ 4 F
+ (3) 71.42 540.11 T
+ (Overview of S) 107.42 540.11 T
+ 6 F
+ (ELF) 177.37 540.11 T
+ 0 F
+ (....................................................................................................................................) 197.39 540.11 T
+ (I-4) 527.77 540.11 T
+ (3.1) 107.42 525.45 T
+ (The system) 143.42 525.45 T
+ (.......................................................................................................................................) 189.9 525.45 T
+ (I-4) 527.77 525.45 T
+ (3.2) 107.42 509.45 T
+ (The translation process) 143.42 509.45 T
+ (....................................................................................................................) 237.37 509.45 T
+ (I-4) 527.77 509.45 T
+ 4 F
+ (4) 71.42 482.11 T
+ (Installing S) 107.42 482.11 T
+ 6 F
+ (ELF) 162.4 482.11 T
+ 0 F
+ (..........................................................................................................................................) 182.4 482.11 T
+ (I-6) 527.77 482.11 T
+ (4.1) 107.42 467.45 T
+ (Setting up the environment) 143.42 467.45 T
+ (..............................................................................................................) 252.36 467.45 T
+ (I-6) 527.77 467.45 T
+ (4.2) 107.42 451.45 T
+ (The primeval world of S) 143.42 451.45 T
+ 1 F
+ (ELF) 241.69 451.45 T
+ 0 F
+ ( objects) 257.67 451.45 T
+ (...............................................................................................) 289.84 451.45 T
+ (I-6) 527.77 451.45 T
+ (4.3) 107.42 435.45 T
+ (Creating the default world) 143.42 435.45 T
+ (...............................................................................................................) 249.86 435.45 T
+ (I-8) 527.77 435.45 T
+ 4 F
+ (5) 71.42 408.11 T
+ (Using S) 107.42 408.11 T
+ 6 F
+ (ELF) 145.74 408.11 T
+ 0 F
+ (..............................................................................................................................................) 167.41 408.11 T
+ (I-10) 522.77 408.11 T
+ (5.1) 107.42 393.45 T
+ (Elementary skills) 143.42 393.45 T
+ (...........................................................................................................................) 214.88 393.45 T
+ (I-10) 522.77 393.45 T
+ (5.2) 107.42 377.45 T
+ (Entering S) 143.42 377.45 T
+ 1 F
+ (ELF) 185.9 377.45 T
+ 0 F
+ ( expressions) 201.88 377.45 T
+ (............................................................................................................) 252.36 377.45 T
+ (I-1) 523.14 377.45 T
+ (1) 534.43 377.45 T
+ (5.3) 107.42 361.45 T
+ (Printing objects) 143.42 361.45 T
+ (..............................................................................................................................) 207.39 361.45 T
+ (I-12) 522.77 361.45 T
+ (5.4) 107.42 345.45 T
+ (Debugging) 143.42 345.45 T
+ (.....................................................................................................................................) 189.9 345.45 T
+ (I-16) 522.77 345.45 T
+ (5.5) 107.42 329.45 T
+ (Scripts) 143.42 329.45 T
+ (............................................................................................................................................) 172.4 329.45 T
+ (I-20) 522.77 329.45 T
+ (5.6) 107.42 313.45 T
+ (Editing objects) 143.42 313.45 T
+ (...............................................................................................................................) 204.89 313.45 T
+ (I-21) 522.77 313.45 T
+ (5.7) 107.42 297.45 T
+ (Option primitives) 143.42 297.45 T
+ (...........................................................................................................................) 214.88 297.45 T
+ (I-26) 522.77 297.45 T
+ (5.8) 107.42 281.45 T
+ (System-triggered messages) 143.42 281.45 T
+ (...........................................................................................................) 254.86 281.45 T
+ (I-27) 522.77 281.45 T
+ 4 F
+ (Appendix A) 71.42 246.11 T
+ (Run-time message lookup errors) 143.42 246.11 T
+ 0 F
+ (.........................................................................................) 299.83 246.11 T
+ (I-28) 522.77 246.11 T
+ 4 F
+ (Appendix B) 71.42 232.11 T
+ (The initial S) 143.42 232.11 T
+ 6 F
+ (ELF) 202.73 232.11 T
+ 4 F
+ ( world) 222.26 232.11 T
+ 0 F
+ (...........................................................................................................) 254.86 232.11 T
+ (I-29) 522.77 232.11 T
+ 4 F
+ (Appendix C) 71.42 218.11 T
+ (startup.self) 143.42 218.11 T
+ 0 F
+ (..................................................................................................................................) 197.39 218.11 T
+ (I-32) 522.77 218.11 T
+ 4 F
+ (Appendix D) 71.42 204.11 T
+ (VM configuration) 143.42 204.11 T
+ 0 F
+ (....................................................................................................................) 232.37 204.11 T
+ (I-34) 522.77 204.11 T
+ 4 F
+ (Appendix E) 71.42 190.11 T
+ (The system monitor) 143.42 190.11 T
+ 0 F
+ (.................................................................................................................) 239.87 190.11 T
+ (I-35) 522.77 190.11 T
+ 4 F
+ (Appendix F) 71.42 176.11 T
+ (Primitives) 143.42 176.11 T
+ 0 F
+ (...................................................................................................................................) 194.89 176.11 T
+ (I-37) 522.77 176.11 T
+ 4 F
+ (References) 71.42 154.11 T
+ 0 F
+ (...............................................................................................................................................................) 124.93 154.11 T
+ (I-51) 522.77 154.11 T
+ FMENDPAGE
+ %%EndPage: "1" 5
+ 9 16 /Times-Bold FMDEFINEFONT
+ 10 6 /Times-Roman FMDEFINEFONT
+ 11 8 /Times-Roman FMDEFINEFONT
+ %%Page: "1" 5
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-1) 300.17 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Introduction) 490.01 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (1  Intr) 71.42 705.45 T
+ (oduction) 114.66 705.45 T
+ 4 F
+ 0.82 (This document explains how to use the current \050W) 71.42 678.11 P
+ 0.82 (inter 1991\051 implementation of S) 320.02 678.11 P
+ 6 F
+ 0.75 (ELF) 477.22 678.11 P
+ 10 F
+ 0.41 (\252) 496.76 680.91 P
+ 4 F
+ 0.82 (, devel-) 502.63 678.11 P
+ -0.12 (oped at Stanford University) 71.42 664.11 P
+ -0.12 (. This is ) 203.2 664.11 P
+ 3 F
+ -0.12 (not) 244.16 664.11 P
+ 4 F
+ -0.12 ( a tutorial on the language\321we assume that you are some-) 259.49 664.11 P
+ 0.62 (what familiar with the language already \050see [US87] for an introduction to the language and the) 71.42 650.11 P
+ 0.09 (S) 71.42 636.11 P
+ 6 F
+ 0.08 (ELF) 78.09 636.11 P
+ 4 F
+ 0.09 ( Language Reference Manual for detailed information\051. Rather) 97.63 636.11 P
+ 0.09 (, this document explains how) 398.83 636.11 P
+ 0.21 (to get started, how to create objects and programs, and how to con\336gure S) 71.42 622.11 P
+ 6 F
+ 0.19 (ELF) 429.6 622.11 P
+ 4 F
+ 0.21 (. It also documents) 448.17 622.11 P
+ (the parts of S) 71.42 608.11 T
+ 6 F
+ (ELF) 135.05 608.11 T
+ 4 F
+ ( that are not part of the language de\336nition itself \050such as the S) 154.58 608.11 T
+ 6 F
+ (ELF) 455.38 608.11 T
+ 4 F
+ ( primitives\051.) 474.91 608.11 T
+ 0.63 (The \336rst version of the S) 71.42 582.11 P
+ 6 F
+ 0.58 (ELF) 193.5 582.11 P
+ 4 F
+ 0.63 ( language was designed in 1986 by David Ungar and Randy Smith) 213.04 582.11 P
+ -0.16 ([US87]. Since then, the language has evolved: we have streamlined the syntax, de\336ned S) 71.42 568.11 P
+ 6 F
+ -0.14 (ELF) 495.74 568.11 P
+ 4 F
+ -0.16 (\325) 515.27 568.11 P
+ -0.16 (s fa-) 518.6 568.11 P
+ -0.12 (cilities for multiple inheritance, and added the concept of private slots. The very \336rst implementa-) 71.42 554.11 P
+ -0.35 (tion of S) 71.42 540.11 P
+ 6 F
+ -0.32 (ELF) 112.04 540.11 P
+ 4 F
+ -0.35 ( was an experimental interpreter written in the Smalltalk-80) 131.57 540.11 P
+ 0 F
+ -0.29 (\240) 415.23 544.91 P
+ 4 F
+ -0.35 ( system [GR83] by Craig) 420.23 540.11 P
+ 0.07 (Chambers, Elgin Lee, and Martin Rinard in early 1987. The S) 71.42 526.11 P
+ 6 F
+ 0.06 (ELF) 368.92 526.11 P
+ 4 F
+ 0.07 ( project started in earnest in the) 388.45 526.11 P
+ 0.54 (summer of 1987 with the implementation of a custom memory system and a S) 71.42 512.11 P
+ 6 F
+ 0.49 (ELF) 453.85 512.11 P
+ 4 F
+ 0.54 ( compiler) 473.38 512.11 P
+ 0.54 (. By) 518.89 512.11 P
+ 0.32 (the summer of 1988, the \336rst ef) 71.42 498.11 P
+ 0.32 (\336cient implementation was completed [CU89] [CUL89] [Lee88].) 224.04 498.11 P
+ (Since then, new ideas have led to the development of a second-generation compiler [CU90]. ) 71.42 484.11 T
+ -0.2 (The S) 71.42 458.11 P
+ 6 F
+ -0.18 (ELF) 99.54 458.11 P
+ 4 F
+ -0.2 ( system is the result of an ongoing research project and therefore is an experimental sys-) 119.07 458.11 P
+ -0.13 (tem. W) 71.42 444.11 P
+ -0.13 (e believe, however) 105.64 444.11 P
+ -0.13 (, that the system is stable enough to be used by a lar) 195.15 444.11 P
+ -0.13 (ger community) 442.19 444.11 P
+ -0.13 (, giv-) 514.24 444.11 P
+ (ing people outside of the project a chance to experiment with S) 71.42 430.11 T
+ 6 F
+ (ELF) 374.21 430.11 T
+ 4 F
+ (. ) 392.78 430.11 T
+ 71.42 69.44 539.42 89.53 C
+ 71.42 77.43 203.4 77.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ (\240  ) 71.42 66.77 T
+ 0 F
+ (Smalltalk-80 is a trademark of ParcPlace Systems, Inc.) 79.42 62.77 T
+ FMENDPAGE
+ %%EndPage: "1" 6
+ 10 14 /Times-Bold FMDEFINEFONT
+ 12 11 /Courier FMDEFINEFONT
+ %%Page: "2" 6
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-2) 300.17 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (About this release) 467.25 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (2  About this r) 71.42 705.45 T
+ (elease) 169.75 705.45 T
+ 4 F
+ 0.59 (S) 71.42 678.11 P
+ 6 F
+ 0.54 (ELF) 78.09 678.11 P
+ 4 F
+ 0.59 ( is not a \336nished product, and it will continue to evolve. This chapter describes the current) 97.63 678.11 P
+ 0.12 (status of S) 71.42 664.11 P
+ 6 F
+ 0.11 (ELF) 121.64 664.11 P
+ 4 F
+ 0.12 ( and gives an overview of the major changes that have been made since the last re-) 141.17 664.11 P
+ (lease. It also brie\337y discusses some aspects of S) 71.42 650.11 T
+ 6 F
+ (ELF) 301.6 650.11 T
+ 4 F
+ ( that are likely to change in future. ) 321.14 650.11 T
+ 10 F
+ (2.1  Implementation status) 71.42 616.78 T
+ 4 F
+ 2.05 (S) 71.42 590.11 P
+ 6 F
+ 1.88 (ELF) 78.09 590.11 P
+ 4 F
+ 2.05 ( currently runs on Sun-3 and Sun-4 workstations using SunOS 4.0.3 or 4.1. The Sun-4) 97.63 590.11 P
+ 0.55 (\050SP) 71.42 576.11 P
+ 0.55 (ARC\051 version is the fastest and most reliable version. The Sun-3 version is considerably less) 87.65 576.11 P
+ -0.42 (ef) 71.42 562.11 P
+ -0.42 (\336cient \050compared to C on the same platform\051 and may be somewhat buggier due to less thorough) 80.53 562.11 P
+ (testing \050since we do not use the Sun-3 version daily\051. ) 71.42 548.11 T
+ 0.14 (T) 71.42 522.11 P
+ 0.14 (wo compilers are distributed with the S) 77.91 522.11 P
+ 6 F
+ 0.13 (ELF) 267.29 522.11 P
+ 4 F
+ 0.14 ( system: the \322old\323 compiler and the \322new\323 compiler) 286.83 522.11 P
+ 0.14 (.) 536.42 522.11 P
+ -0.07 (The old compiler supports both the Sun-3 and Sun-4 architectures whereas the new compiler only) 71.42 508.11 P
+ 0.21 (supports the Sun-4. Compile times are longer with the new compiler; however) 71.42 494.11 P
+ 0.21 (, the code it gener-) 449 494.11 P
+ 1.03 (ates is much better) 71.42 480.11 P
+ 1.03 (. The option primitive ) 163.45 480.11 P
+ 12 F
+ 2.26 (_UseNewCompiler) 275.84 480.11 P
+ 4 F
+ 1.03 (:) 374.71 480.11 P
+ 10 F
+ 1.2 ( ) 378.05 480.11 P
+ 4 F
+ 1.03 (controls which compiler is used) 382.74 480.11 P
+ (\050option primitives are described in section I-5.7\051.) 71.42 466.11 T
+ 10 F
+ (2.2  Major changes) 71.42 432.78 T
+ 4 F
+ 0.22 (Below is a list of changes and enhancements that have been made since the last release. Only the) 71.42 406.11 P
+ -0.4 (major changes are included. In addition to the changes listed, many small changes have been made) 71.42 392.11 P
+ (and bugs have been \336xed.) 71.42 378.11 T
+ (\245) 71.42 358.11 T
+ (Two compilers are now distributed with the system \050see section I-2.1\051.) 84.96 358.11 T
+ (\245) 71.42 338.11 T
+ 1.28 (The virtual machine now supports lightweight processes through a set of primitive methods) 84.96 338.11 P
+ (\050see Table 16 in Appendix F\051.) 84.96 324.11 T
+ (\245) 71.42 304.11 T
+ -0.09 (The programming primitives have been changed. ) 84.96 304.11 P
+ 12 F
+ -0.19 (_DefineSlots:) 323.27 304.11 P
+ 4 F
+ -0.09 ( has been removed and two) 408.96 304.11 P
+ -0.19 (new primitives introduced instead: ) 84.96 290.11 P
+ 12 F
+ -0.42 (_AddSlotsIfAbsent:) 253.42 290.11 P
+ 4 F
+ -0.19 ( and ) 372.08 290.11 P
+ 12 F
+ -0.42 (_Define:) 395.01 290.11 P
+ 4 F
+ -0.19 ( \050see section I-5.6\051.) 447.74 290.11 P
+ (\245) 71.42 270.11 T
+ (Byte and object vectors can now have user-defined slots.) 84.96 270.11 T
+ (\245) 71.42 250.11 T
+ (The representation of strings has been changed.) 84.96 250.11 T
+ (\245) 71.42 230.11 T
+ (Compiled code space has been divided into four areas \050see Appendix E\051.) 84.96 230.11 T
+ 10 F
+ (2.3  Futur) 71.42 196.78 T
+ (e implementation changes and known bugs) 130.64 196.78 T
+ 4 F
+ 0.82 (Currently) 71.42 170.11 P
+ 0.82 (, the S) 116.61 170.11 P
+ 6 F
+ 0.76 (ELF) 148.58 170.11 P
+ 4 F
+ 0.82 ( world is spartan\321there is no nice user interface, no editor) 168.12 170.11 P
+ 0.82 (, no debugger) 457.34 170.11 P
+ 0.82 (. A) 523.94 170.11 P
+ -0.06 (prototype implementation of a S) 71.42 156.11 P
+ 6 F
+ -0.05 (ELF) 226.43 156.11 P
+ 4 F
+ -0.06 ( object browser is included to help you explore the world and) 245.96 156.11 P
+ (to demonstrate some of S) 71.42 142.11 T
+ 6 F
+ (ELF) 193.35 142.11 T
+ 4 F
+ (\325) 212.88 142.11 T
+ (s possibilities. ) 216.22 142.11 T
+ 1.33 (Many parts of the implementation will change over time. Future versions are likely to include) 71.42 116.11 P
+ 0.85 (more complete programming and debugging support. On the S) 71.42 102.11 P
+ 6 F
+ 0.78 (ELF) 379.06 102.11 P
+ 4 F
+ 0.85 ( level, the user interface will) 398.6 102.11 P
+ (change considerably) 71.42 88.11 T
+ (, and collections may be redesigned.) 168.89 88.11 T
+ FMENDPAGE
+ %%EndPage: "2" 7
+ %%Page: "3" 7
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-3) 300.17 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (About this release) 467.25 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ (The known weaknesses and bugs in the current system are:) 71.42 708.11 T
+ (\245) 84.96 688.11 T
+ 1.26 (Floats have a very limited range since the exponent contains two bits less than the IEEE) 98.42 688.11 P
+ (standard. We may provide double-precision floats in future releases.) 98.42 674.11 T
+ (\245) 84.96 654.11 T
+ 1.57 (Immutability of the bytecodes of a method is not enforced; changing the bytecodes of a) 98.42 654.11 P
+ (method can crash the system.) 98.42 640.11 T
+ (\245) 84.96 620.11 T
+ 0.94 (Programs using dynamic inheritance \050DI\051 can be significantly slower than equivalent pro-) 98.42 620.11 P
+ 0.07 (grams not using DI, since the compiler does not inline lookups that proceed through assign-) 98.42 606.11 P
+ (able parents.) 98.42 592.11 T
+ (\245) 84.96 572.11 T
+ -0.14 (The compiler does not handle long methods well; such methods may take several seconds to) 98.42 572.11 P
+ 0.77 (compile, and the compiled code can be quite large. At worst, the compiler may run out of) 98.42 558.11 P
+ (memory and generate a fatal error.) 98.42 544.11 T
+ (\245) 84.96 524.11 T
+ 0.11 (Adding slots to the lobby, the global name spaces \050e.g. prototypes\051, or to common traits ob-) 98.42 524.11 P
+ 2.1 (jects \050like integer traits\051 may flush many compiled methods from the cache, leading to) 98.42 510.11 P
+ (lengthy recompilations.) 98.42 496.11 T
+ (\245) 84.96 476.11 T
+ 0.9 (Programming primitives like ) 98.42 476.11 P
+ 12 F
+ 1.98 (_AddSlots:) 242.72 476.11 P
+ 4 F
+ 0.9 ( terminate the currently running S) 308.64 476.11 P
+ 6 F
+ 0.82 (ELF) 475.36 476.11 P
+ 4 F
+ 0.9 ( program) 494.89 476.11 P
+ (and return the user to the prompt.) 98.42 462.11 T
+ 10 F
+ (2.4  Potential language changes) 71.42 428.78 T
+ 4 F
+ (This is a short list of possible language changes currently being discussed:) 71.42 402.11 T
+ (\245) 84.96 382.11 T
+ (Characters and strings could change; in particular, there may be character literals.) 98.42 382.11 T
+ (\245) 84.96 362.11 T
+ 0.05 (Comment syntax could change to provide \322comment to end of line\323 semantics. Periods sep-) 98.42 362.11 P
+ (arating slot descriptors and statements could become optional.) 98.42 348.11 T
+ (\245) 84.96 328.11 T
+ -0.03 (Ordered inheritance in its current form could be replaced by another mechanism; this would) 98.42 328.11 P
+ (especially affect the semantics of resends, which we would like to be simpler.) 98.42 314.11 T
+ (\245) 84.96 294.11 T
+ 1.05 (S) 98.42 294.11 P
+ 6 F
+ 0.96 (ELF) 105.09 294.11 P
+ 4 F
+ 1.05 ( might support multimethods, i.e. dispatching on the type of the receiver and one or) 124.63 294.11 P
+ (more arguments \050instead of dispatching just on the type of the receiver\051.) 98.42 280.11 T
+ 10 F
+ (2.5  Bug r) 71.42 246.78 T
+ (eports) 129.48 246.78 T
+ 4 F
+ 0.05 (Bug reports can be sent to self-bugs at self.stanford.edu. Please include an exact description of the) 71.42 220.11 P
+ (problem and a short S) 71.42 206.11 T
+ 6 F
+ (ELF) 176.69 206.11 T
+ 4 F
+ ( program reproducing the bug.) 196.22 206.11 T
+ FMENDPAGE
+ %%EndPage: "3" 8
+ 13 11 /Times-Italic FMDEFINEFONT
+ 14 10 /Helvetica FMDEFINEFONT
+ 15 9 /Helvetica FMDEFINEFONT
+ %%Page: "4" 8
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-4) 300.17 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Overview of SELF) 463.37 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (3  Overview of S) 71.42 705.45 T
+ 10 F
+ (ELF) 183.35 705.45 T
+ 4 F
+ 0.39 (This section contains an overview of the system and its implementation; it can be skipped if you) 71.42 678.11 P
+ (wish to get started as quickly as possible.) 71.42 664.11 T
+ 10 F
+ (3.1  The system) 71.42 630.78 T
+ 4 F
+ 0.16 (Although S) 71.42 604.11 P
+ 6 F
+ 0.15 (ELF) 126.56 604.11 P
+ 4 F
+ 0.16 ( runs as a single U) 146.1 604.11 P
+ 6 F
+ 0.15 (NIX) 235.17 604.11 P
+ 0 F
+ 0.13 (\240) 254.69 608.91 P
+ 4 F
+ 0.16 ( process, it really has two parts: the ) 259.69 604.11 P
+ 3 F
+ 0.16 (virtual machine) 433.18 604.11 P
+ 4 F
+ 0.16 ( \050VM\051) 508.96 604.11 P
+ (and the ) 71.42 590.11 T
+ 3 F
+ (S) 109.39 590.11 T
+ 13 F
+ (ELF) 115.39 590.11 T
+ 3 F
+ ( world) 134.93 590.11 T
+ 4 F
+ (, the collection of S) 165.92 590.11 T
+ 6 F
+ (ELF) 259.52 590.11 T
+ 4 F
+ ( objects that are the S) 279.06 590.11 T
+ 6 F
+ (ELF) 381.99 590.11 T
+ 4 F
+ ( prototypes and programs: ) 401.52 590.11 T
+ 0.95 (The VM executes S) 71.42 486.05 P
+ 6 F
+ 0.87 (ELF) 169.21 486.05 P
+ 4 F
+ 0.95 ( programs speci\336ed by objects in the S) 188.74 486.05 P
+ 6 F
+ 0.87 (ELF) 380.95 486.05 P
+ 4 F
+ 0.95 ( world and provides a set of) 400.48 486.05 P
+ 3 F
+ 1.12 (primitives) 71.42 472.05 P
+ 4 F
+ 1.12 ( \050which may be thought of as methods written in C++\051 that can be invoked by S) 119.4 472.05 P
+ 6 F
+ 1.02 (ELF) 519.89 472.05 P
+ 4 F
+ 0.46 (methods to carry out basic operations like integer arithmetic, object copying, and I/O. The S) 71.42 458.05 P
+ 6 F
+ 0.42 (ELF) 519.89 458.05 P
+ 4 F
+ -0.48 (world distributed with the VM is a collection of S) 71.42 444.05 P
+ 6 F
+ -0.44 (ELF) 305.99 444.05 P
+ 4 F
+ -0.48 ( objects implementing various ) 325.52 444.05 P
+ 3 F
+ -0.48 (traits) 471.52 444.05 P
+ 4 F
+ -0.48 ( and ) 496.85 444.05 P
+ 3 F
+ -0.48 (pr) 519.21 444.05 P
+ -0.48 (o-) 529.43 444.05 P
+ 0.48 (totypes ) 71.42 430.05 P
+ 4 F
+ 0.48 (like cloning traits and dictionaries. These objects can be used \050or changed\051 to implement) 108.88 430.05 P
+ (your own programs.) 71.42 416.05 T
+ 10 F
+ (3.2  The translation pr) 71.42 382.71 T
+ (ocess) 205.27 382.71 T
+ 4 F
+ 0.32 (S) 71.42 356.05 P
+ 6 F
+ 0.29 (ELF) 78.09 356.05 P
+ 4 F
+ 0.32 ( programs are translated to machine code in a two-stage process \050see Figure 2\051. Code typed) 97.63 356.05 P
+ 0.25 (in at the prompt or read in from a \336le is parsed into S) 71.42 342.05 P
+ 6 F
+ 0.23 (ELF) 329.58 342.05 P
+ 4 F
+ 0.25 ( objects. Some of these objects are data) 349.11 342.05 P
+ 1.21 (objects; others are methods. Methods have their own behavior which they represent with ) 71.42 328.05 P
+ 3 F
+ 1.21 (byte-) 515.45 328.05 P
+ 0.38 (codes) 71.42 314.05 P
+ 4 F
+ 0.38 (. The bytecodes are the instructions for a very simple virtual processor that understands in-) 98.73 314.05 P
+ 1.47 (structions like \322push receiver\323 or \322send the \324x\325 message.\323 In fact, S) 71.42 300.05 P
+ 6 F
+ 1.35 (ELF) 409.7 300.05 P
+ 4 F
+ 1.47 ( bytecodes correspond) 429.23 300.05 P
+ -0.45 (much more closely to source code than, say) 71.42 286.05 P
+ -0.45 (, Smalltalk-80 bytecodes. \050See [CUL89] for a list of the) 276.67 286.05 P
+ 0.39 (S) 71.42 272.05 P
+ 6 F
+ 0.36 (ELF) 78.09 272.05 P
+ 4 F
+ 0.39 ( byte codes.\051 The ) 97.63 272.05 P
+ 3 F
+ 0.39 (raison d\325\220tr) 184.78 272.05 P
+ 0.39 (e) 241.7 272.05 P
+ 4 F
+ 0.39 ( of the virtual machine is to pretend that these bytecodes are) 247.02 272.05 P
+ -0.15 (directly executed by the computer; the programmer can explore the S) 71.42 258.05 P
+ 6 F
+ -0.13 (ELF) 402.37 258.05 P
+ 4 F
+ -0.15 ( world down to the byte-) 421.9 258.05 P
+ -0.44 (code level, but no further) 71.42 244.05 P
+ -0.44 (. This pretense ensures that the behavior of a S) 189.9 244.05 P
+ 6 F
+ -0.41 (ELF) 409.76 244.05 P
+ 4 F
+ -0.44 ( program can be under-) 429.29 244.05 P
+ (stood by looking only at the S) 71.42 230.05 T
+ 6 F
+ (ELF) 215.36 230.05 T
+ 4 F
+ ( source code.) 234.89 230.05 T
+ -0.21 (The second stage of translation is the actual ) 71.42 204.05 P
+ 3 F
+ -0.21 (compilation) 282.26 204.05 P
+ 4 F
+ -0.21 ( of the bytecodes to machine code) 339.57 204.05 P
+ -0.21 (. This is) 501.52 204.05 P
+ -0.09 (how the \322execution\323 of bytecodes is implemented\321it is totally invisible on the S) 71.42 190.05 P
+ 6 F
+ -0.08 (ELF) 459.45 190.05 P
+ 4 F
+ -0.09 ( level except) 478.99 190.05 P
+ -0.14 (for side ef) 71.42 176.05 P
+ -0.14 (fects like execution speed and memory usage. The compilation takes place the \336rst time) 119.55 176.05 P
+ -0.45 (a message is actually sent; thus, the \336rst execution of a program will be slower than subsequent ex-) 71.42 162.05 P
+ (ecutions.) 71.42 148.05 T
+ 0 F
+ 0.47 (Actually) 71.42 126.38 P
+ 0.47 (, this explanation is not entirely accurate: the compiled method is specialized on the type of the receiver) 105.19 126.38 P
+ 0.47 (. If) 527.3 126.38 P
+ 0.58 (the same message is later sent to a receiver of dif) 71.42 114.38 P
+ 0.58 (ferent type \050e.g. \337oat instead of integer\051, a new compilation takes) 272.99 114.38 P
+ 71.42 69.44 539.42 89.53 C
+ 71.42 77.43 203.4 77.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ (\240  ) 71.42 66.77 T
+ 0 F
+ (U) 79.42 62.77 T
+ 1 F
+ (NIX) 86.64 62.77 T
+ 0 F
+ ( is a trademark of A) 102.61 62.77 T
+ (T&T Bell Laboratories.) 181.15 62.77 T
+ 71.42 55.44 539.42 716.11 C
+ 132.17 508.05 478.67 586.11 C
+ 132.17 508.05 478.67 586.11 R
+ 7 X
+ 0 K
+ V
+ 233.42 509.68 377.42 524.46 R
+ V
+ 2 F
+ 0 X
+ (Figur) 236.72 516.46 T
+ (e 1) 265.15 516.46 T
+ (The S) 285.47 516.46 T
+ 5 F
+ (ELF) 315.13 516.46 T
+ 2 F
+ ( system) 336.5 516.46 T
+ 242.42 532 368.42 550 R
+ 7 X
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 14 F
+ (S) 258.86 537.36 T
+ 15 F
+ (ELF) 265.52 537.36 T
+ 14 F
+ ( virtual machine) 282.01 537.36 T
+ 242.42 550 368.42 568 R
+ 7 X
+ V
+ 0 X
+ N
+ (S) 280.52 555.36 T
+ 15 F
+ (ELF) 287.19 555.36 T
+ 14 F
+ ( world) 303.67 555.36 T
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "4" 9
+ 16 10 /Times-Italic FMDEFINEFONT
+ 17 8 /Helvetica FMDEFINEFONT
+ 18 7 /Helvetica FMDEFINEFONT
+ %%Page: "5" 9
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-5) 300.17 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Overview of SELF) 463.37 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ 0.59 (place. This technique is called ) 71.42 709.45 P
+ 16 F
+ 0.59 (customization) 197.6 709.45 P
+ 0 F
+ 0.59 (; see [CU89] for details. Also, the compiled methods are placed into a) 253.13 709.45 P
+ (cache from which they can be \337ushed for various reasons; therefore, they might be recompiled from time to time.) 71.42 697.45 T
+ 0.56 (Don\325) 71.42 676.45 P
+ 0.56 (t be misled by the term \322compiled method\323 if you are familiar with Smalltalk: in Smalltalk terminology it de-) 91.78 676.45 P
+ 0.22 (notes a method in its bytecode form, but in) 71.42 664.45 P
+ 1 F
+ 0.19 ( ) 244.43 664.45 P
+ 0 F
+ 0.22 (S) 246.87 664.45 P
+ 1 F
+ 0.19 (ELF) 252.43 664.45 P
+ 0 F
+ 0.22 ( it denotes the native machine code form. In Smalltalk there is only) 268.41 664.45 P
+ 0.19 (one compiled method per source method, but in S) 71.42 652.45 P
+ 1 F
+ 0.17 (ELF) 271.96 652.45 P
+ 0 F
+ 0.19 ( there may be several dif) 287.94 652.45 P
+ 0.19 (ferent compiled methods for the same) 387.21 652.45 P
+ (source method \050because of customization\051.) 71.42 640.45 T
+ 71.42 55.44 539.42 716.11 C
+ 73.12 424.19 537.73 637.11 C
+ 73.12 424.19 537.73 637.11 R
+ 7 X
+ 0 K
+ V
+ 258.42 604.24 267.07 601.76 258.42 599.28 258.42 601.76 4 Y
+ 0 X
+ V
+ 173.32 601.76 259.42 601.76 2 L
+ 0.5 H
+ 2 Z
+ N
+ 83.62 592.7 173.62 611.68 9.49 RR
+ 7 X
+ V
+ 0 X
+ N
+ 178.82 442.05 430.82 455.44 R
+ 7 X
+ V
+ 2 F
+ 0 X
+ (Figur) 192.03 447.44 T
+ (e 2) 220.46 447.44 T
+ (How S) 240.78 447.44 T
+ 5 F
+ (ELF) 274.43 447.44 T
+ 2 F
+ ( pr) 295.8 447.44 T
+ (ograms ar) 310.58 447.44 T
+ (e compiled) 362.65 447.44 T
+ 17 F
+ (S) 97.85 599.63 T
+ 18 F
+ (ELF) 103.18 599.63 T
+ 17 F
+ ( Source Code) 116 599.63 T
+ (disk \336le) 118.04 584.15 T
+ (RunScript primitive) 187.14 593.56 T
+ 84.04 555.46 174.04 574.44 9.49 RR
+ 7 X
+ V
+ 0 X
+ N
+ (S) 97.78 562.39 T
+ 18 F
+ (ELF) 103.11 562.39 T
+ 17 F
+ ( Source Code) 115.93 562.39 T
+ (keyboard) 114.01 546.5 T
+ 258.42 567.53 267.07 565.05 258.42 562.57 258.42 565.05 4 Y
+ V
+ 173.32 565.05 259.42 565.05 2 L
+ N
+ 267.07 560.58 351.88 609.69 R
+ N
+ (parser) 301.15 584.15 T
+ 418.12 576.6 508.12 595.57 9.49 RR
+ 7 X
+ V
+ 0 X
+ N
+ (S) 441.64 583.52 T
+ 18 F
+ (ELF) 446.97 583.52 T
+ 17 F
+ ( Objects) 459.79 583.52 T
+ (S) 446.3 568.04 T
+ 18 F
+ (ELF) 451.63 568.04 T
+ 17 F
+ ( heap) 464.45 568.04 T
+ (when a method) 193.34 489.61 T
+ 258.42 500.95 267.07 498.47 258.42 495.99 258.42 498.47 4 Y
+ V
+ 186.72 498.47 259.42 498.47 2 L
+ N
+ 267.07 480.23 351.88 515.95 R
+ N
+ (compiler) 297.38 496.11 T
+ 387.87 500.47 396.52 497.99 387.87 495.51 387.87 497.99 4 Y
+ V
+ 351.88 497.99 388.87 497.99 2 L
+ N
+ 396.52 485.44 534.91 513.68 14.12 RR
+ 7 X
+ V
+ 0 X
+ N
+ (Compiled Method) 434.05 502.4 T
+ (Compiled method cache) 426.23 477.35 T
+ 410.19 588.64 418.84 586.16 410.19 583.68 410.19 586.16 4 Y
+ V
+ 351.88 586.16 411.19 586.16 2 L
+ N
+ 75.12 485.39 186.72 513.62 14.12 RR
+ 7 X
+ V
+ 0 X
+ N
+ (S) 105.12 502.34 T
+ 18 F
+ (ELF) 110.45 502.34 T
+ 17 F
+ ( Methods) 123.27 502.34 T
+ (S) 109.92 477.29 T
+ 18 F
+ (ELF) 115.25 477.29 T
+ 17 F
+ ( heap) 128.07 477.29 T
+ (\050objects with bytecodes\051) 87.76 492.31 T
+ (is called) 206.24 472.55 T
+ 135.9 522.55 133.15 514.01 130.95 522.71 133.43 522.63 4 Y
+ V
+ 351.88 586.16 M
+  387.6 586.16 387.6 586.16 387.6 562.63 D
+  387.6 539.1 387.6 539.1 260.37 539.1 D
+  149.8 539.1 135.33 539.1 133.43 522.62 D
+ 0 Z
+ N
+ (not in the cache) 192.45 481.08 T
+ (disk \336le) 118.04 584.15 T
+ (read-eval-print loop) 184.51 556.72 T
+ (parser) 301.15 584.15 T
+ (compiler) 297.38 496.11 T
+ (Compiled Method) 434.05 502.4 T
+ (\050machine code\051) 437.83 491.4 T
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "5" 10
+ 18 11 /Courier-Bold FMDEFINEFONT
+ 19 13 /Times-Bold FMDEFINEFONT
+ %%Page: "6" 10
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-6) 300.17 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Installing SELF) 475.84 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (4  Installing S) 71.42 705.45 T
+ 10 F
+ (ELF) 165.18 705.45 T
+ (4.1  Setting up the envir) 71.42 670.78 T
+ (onment) 213.43 670.78 T
+ 4 F
+ -0.03 (After the \336les have been copied to your machine, perform these steps to make sure that S) 71.42 644.11 P
+ 6 F
+ -0.03 (ELF) 498.26 644.11 P
+ 4 F
+ -0.03 ( will) 517.79 644.11 P
+ (run properly on your machine:) 71.42 630.11 T
+ (1.) 71.42 610.11 T
+ 0.51 (Set the U) 84.96 610.11 P
+ 6 F
+ 0.47 (NIX) 130.62 610.11 P
+ 4 F
+ 0.51 ( ) 150.14 610.11 P
+ 6 F
+ 0.47 (SELFDIR) 153.65 610.11 P
+ 4 F
+ 0.51 ( environment variable to the directory where the S) 198.21 610.11 P
+ 6 F
+ 0.47 (ELF) 443.43 610.11 P
+ 4 F
+ 0.51 ( source \336les are) 462.96 610.11 P
+ 1.07 (stored \050e.g. \322) 84.96 596.11 P
+ 12 F
+ 2.35 (setenv SELFDIR /usr/myname/self) 149.04 596.11 P
+ 4 F
+ 1.07 (\323\051. This de\336nition should be put into) 358.09 596.11 P
+ 0.26 (your \322.cshrc\323 \336le. If ) 84.96 582.11 P
+ 6 F
+ 0.24 (SELFDIR) 185.25 582.11 P
+ 4 F
+ 0.26 ( is unde\336ned, S) 229.81 582.11 P
+ 6 F
+ 0.24 (ELF) 304.56 582.11 P
+ 4 F
+ 0.26 ( will search the current directory when look-) 324.1 582.11 P
+ (ing for S) 84.96 568.11 T
+ 6 F
+ (ELF) 126.94 568.11 T
+ 4 F
+ ( source \336les.) 146.47 568.11 T
+ (2.) 71.42 548.11 T
+ 0.5 (Make sure that the directory where the S) 84.96 548.11 P
+ 6 F
+ 0.45 (ELF) 283.27 548.11 P
+ 4 F
+ 0.5 ( binaries are stored is in your search path. If it is) 302.81 548.11 P
+ 1.86 (not, put the directory in your search path. If the path is set correctly) 84.96 534.11 P
+ 1.86 (, the U) 431.72 534.11 P
+ 6 F
+ 1.7 (NIX) 467.74 534.11 P
+ 4 F
+ 1.86 ( command) 487.27 534.11 P
+ (\322) 84.96 520.11 T
+ 12 F
+ (which Self) 90.29 520.11 T
+ 4 F
+ (\323 should tell you where S) 156.2 520.11 T
+ 6 F
+ (ELF) 277.79 520.11 T
+ 4 F
+ ( is installed.) 297.33 520.11 T
+ (3.) 71.42 500.11 T
+ (Make sure that your machine has been con\336gured with enough swap space:) 84.96 500.11 T
+ (\245) 84.96 480.11 T
+ (Check the size of your machine\325s swap space:) 98.42 480.11 T
+ 12 F
+ (% ) 98.42 466.11 T
+ 18 F
+ (pstat -s) 111.61 466.11 T
+ 12 F
+ (30640k allocated + 11944k reserved = 42584k used, 47552k available) 98.42 452.11 T
+ 4 F
+ 1.6 (You should have at least 12000k of swap space available for ) 98.42 438.11 P
+ 1.6 (S) 409.48 438.11 P
+ 6 F
+ 1.47 (ELF) 416.15 438.11 P
+ 4 F
+ 1.6 ( \050the example output) 435.68 438.11 P
+ 1.46 (above shows 47552k available\051. If your machine does not have enough swap space, you) 98.42 424.11 P
+ (should add some as described next. Otherwise, you\325re done.) 98.42 410.11 T
+ (\245) 84.96 390.11 T
+ (To add swap space:) 98.42 390.11 T
+ (\245) 116.42 370.11 T
+ (Login as super user.) 125.42 370.11 T
+ (\245) 116.42 350.11 T
+ (Create a swap file of the desired size:) 125.42 350.11 T
+ 12 F
+ (# ) 125.42 336.11 T
+ 18 F
+ (mkfile 12m /mySwapFile) 138.61 336.11 T
+ 4 F
+ 0.67 (\050The example creates a 12MB file named \322/mySwapFile\323. Any name may be chosen) 125.42 322.11 P
+ (for the swap file.\051) 125.42 308.11 T
+ (\245) 116.42 288.11 T
+ (Edit /etc/fstab, adding the following line:) 125.42 288.11 T
+ 12 F
+ (/mySwapFile swap swap rw,noquota 0 0) 125.42 274.11 T
+ 4 F
+ (\050Assuming that your swap file is named /mySwapFile.\051) 125.42 260.11 T
+ (\245) 116.42 240.11 T
+ (Make the new swap file available to the system:) 125.42 240.11 T
+ 12 F
+ (# ) 125.42 226.11 T
+ 18 F
+ (swapon -a) 138.61 226.11 T
+ 4 F
+ -0.18 (Details about the con\336guration \050especially about the amount of memory required by S) 71.42 200.11 P
+ 6 F
+ -0.17 (ELF) 482.3 200.11 P
+ 4 F
+ -0.18 (\051 can be) 501.83 200.11 P
+ -0.19 (found in Appendix D. The default values will probably work reasonably well so you don\325) 71.42 186.11 P
+ -0.19 (t have to) 498.51 186.11 P
+ 0.14 (worry about these details right now) 71.42 172.11 P
+ 0.14 (, but we recommend that you read the appendix at a later time) 240.92 172.11 P
+ (to determine the best con\336guration for your system.) 71.42 158.11 T
+ 10 F
+ (4.2  The primeval world of S) 71.42 124.78 T
+ 19 F
+ (ELF) 241.28 124.78 T
+ 10 F
+ ( objects) 266.53 124.78 T
+ 4 F
+ 0.16 (Y) 71.42 98.11 P
+ 0.16 (ou are now ready to run S) 78.88 98.11 P
+ 6 F
+ 0.15 (ELF) 203.76 98.11 P
+ 4 F
+ 0.16 (. This section will explain what you\325ll encounter when starting up) 222.34 98.11 P
+ (the \322bare\323 S) 71.42 84.11 T
+ 6 F
+ (ELF) 130.04 84.11 T
+ 4 F
+ ( world) 149.57 84.11 T
+ 0 F
+ (; ) 180.55 84.11 T
+ 4 F
+ (the next section will tell you how to create the ) 185.83 84.11 T
+ 3 F
+ (default world) 410.34 84.11 T
+ 4 F
+ (. ) 474.65 84.11 T
+ FMENDPAGE
+ %%EndPage: "6" 11
+ %%Page: "7" 11
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-7) 300.17 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Installing SELF) 475.84 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 0.44 (Upon entering S) 71.42 708.11 P
+ 6 F
+ 0.41 (ELF) 150.93 708.11 P
+ 4 F
+ 0.44 ( you are greeted by the prompt, indicating that the system is ready to accept) 170.46 708.11 P
+ (input:) 71.42 694.11 T
+ 12 F
+ (% ) 93.02 674.78 T
+ 18 F
+ (Self) 106.21 674.78 T
+ 12 F
+ (Self Virtual Machine Version 1.1, Jan 23 1991 13:13:31) 93.02 661.78 T
+ (Copyright 1991: The Self Group) 93.02 648.78 T
+ (David Ungar, Craig Chambers, Bay-Wei Chang, and Urs Hoelzle) 93.02 635.78 T
+ (Stanford University, Stanford, CA) 93.02 622.78 T
+ (\050Type _Help for help\051) 93.02 596.78 T
+ (>) 93.02 570.78 T
+ 4 F
+ -0.47 (Y) 71.42 545.11 P
+ -0.47 (ou can now enter a S) 78.88 545.11 P
+ 6 F
+ -0.43 (ELF) 176.78 545.11 P
+ 4 F
+ -0.47 ( expression. This expression will be evaluated in the context of an object) 196.32 545.11 P
+ 0.04 (called the ) 71.42 531.11 P
+ 3 F
+ 0.04 (lobby) 120.8 531.11 P
+ 4 F
+ 0.04 ( \050sometimes called the ) 147.45 531.11 P
+ 3 F
+ 0.04 (r) 258.21 531.11 P
+ 0.04 (oot) 262.43 531.11 P
+ 4 F
+ 0.04 (\051) 277.76 531.11 P
+ 0.04 (, i.e., as if it were a method invoked with the lobby as) 281.75 531.11 P
+ (the receiver) 71.42 517.11 T
+ (.) 127.04 517.11 T
+ 0 F
+ (\240) 130.04 521.91 T
+ 4 F
+ ( S) 135.03 517.11 T
+ 6 F
+ (ELF) 144.7 517.11 T
+ 4 F
+ ( will evaluate the expression and print the result. ) 164.23 517.11 T
+ 0.07 (The system has only a very few prede\336ned objects, namely the ones that are absolutely necessary) 71.42 491.11 P
+ 0.14 (for bootstrapping the system \050like ) 71.42 477.11 P
+ 12 F
+ 0.3 (true) 237.01 477.11 P
+ 4 F
+ 0.14 ( and the prototypical string; see Appendix B\051. Thus, even) 263.37 477.11 P
+ (basic methods like integer \322+\323 are not de\336ned:) 71.42 463.11 T
+ 12 F
+ (> ) 93.02 437.78 T
+ 18 F
+ (3 + 4) 106.21 437.78 T
+ 12 F
+ (lookup failure: couldn\325t send undefinedSelector:Type:Delegatee:Met) 93.02 424.78 T
+ (hodHolder:Arguments: to 3.) 93.02 411.78 T
+ (#0: + = \050 | _ self* = 3. _ :arg1 = 4. | ... \051) 93.02 398.78 T
+ (#1 \050<stdin>:1\051: doIt = \050 | _ self* = lobby. | 3 + 4\051) 93.02 372.78 T
+ (#2 \050<predefined>:1\051: printIt = \050 | _ self* = lobby. | doIt _Print\051) 93.02 346.78 T
+ (>) 93.02 314.78 T
+ 0 F
+ -0.08 (Ignore the details of the error message for the moment; they will be described in section I-5.4.3. Y) 71.42 293.45 P
+ -0.08 (ou only need to un-) 462.03 293.45 P
+ (derstand that the \322+\323 message wasn\325) 71.42 281.45 T
+ (t found because it is not de\336ned at this point.) 217.04 281.45 T
+ 4 F
+ -0.04 (However) 71.42 256.11 P
+ -0.04 (, there are numerous primitives de\336ned by the system, such as ) 114.9 256.11 P
+ 12 F
+ -0.09 (_IntAdd:) 415.22 256.11 P
+ 4 F
+ -0.04 ( for integer ad-) 467.95 256.11 P
+ (dition:) 71.42 242.11 T
+ 12 F
+ (> ) 93.02 216.78 T
+ 18 F
+ (3 _IntAdd: 4) 106.21 216.78 T
+ 12 F
+ (7: \050 | ^ parent* = <0>. | \051) 93.02 203.78 T
+ (> ) 93.02 184.78 T
+ 4 F
+ -0.36 (Normally) 71.42 159.11 P
+ -0.36 (, you will not work with the system in its initial state; rather) 116.61 159.11 P
+ -0.36 (, you\325ll use more comfortable) 398.64 159.11 P
+ (worlds created with scripts and snapshots. The following section explains how to do this.) 71.42 145.11 T
+ 71.42 91.44 539.42 111.53 C
+ 71.42 99.43 203.4 99.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ 0.09 (\240  ) 71.42 88.77 P
+ 0 F
+ 0.11 (The lobby object\325) 79.6 84.77 P
+ 0.11 (s special status as the receiver of messages evaluated in the root context makes it desirable to put) 150.33 84.77 P
+ 0.14 (the lobby in a central place in the S) 71.42 73.77 P
+ 1 F
+ 0.12 (ELF) 213.54 73.77 P
+ 0 F
+ 0.14 ( world inheritance graph, and in fact most objects of the default world inherit) 229.52 73.77 P
+ (from the lobby) 71.42 62.77 T
+ (. See the S) 130.18 62.77 T
+ 1 F
+ (ELF) 172.38 62.77 T
+ 0 F
+ ( W) 188.36 62.77 T
+ (orld manual.) 199.49 62.77 T
+ FMENDPAGE
+ %%EndPage: "7" 12
+ %%Page: "8" 12
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-8) 300.17 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Installing SELF) 475.84 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 10 F
+ 0 X
+ (4.3  Cr) 71.42 706.78 T
+ (eating the default world) 111.97 706.78 T
+ 4 F
+ -0.05 (S) 71.42 680.11 P
+ 6 F
+ -0.05 (ELF) 78.09 680.11 P
+ 4 F
+ -0.05 ( comes with a set of objects \050a \322world\323\051 to use as a starting point for your explorations. Sub-) 97.63 680.11 P
+ (sequent examples will presume that you are using this world. T) 71.42 666.11 T
+ (o create the default world:) 374.05 666.11 T
+ (1.) 71.42 646.11 T
+ 0.68 (Make sure that the SELFDIR environment variable is set correctly \050see section I-4.1\051, or that) 84.96 646.11 P
+ (your S) 84.96 632.11 T
+ 6 F
+ (ELF) 116.61 632.11 T
+ 4 F
+ ( \336les are in the current directory) 136.14 632.11 T
+ (.) 289.24 632.11 T
+ (2.) 71.42 612.11 T
+ (Start S) 84.96 612.11 T
+ 6 F
+ (ELF) 117.28 612.11 T
+ 0 F
+ (:) 136.82 612.11 T
+ 12 F
+ (% ) 93.02 586.78 T
+ 18 F
+ (Self) 106.21 586.78 T
+ 12 F
+ (Self Virtual Machine Version 1.1, Jan 23 1991 13:13:31) 93.02 573.78 T
+ (Copyright 1991: The Self Group) 93.02 560.78 T
+ (David Ungar, Craig Chambers, Bay-Wei Chang, and Urs Hoelzle) 93.02 547.78 T
+ (Stanford University, Stanford, CA) 93.02 534.78 T
+ (\050Type _Help for help\051) 93.02 508.78 T
+ (>) 93.02 482.78 T
+ 4 F
+ (3.) 71.42 463.11 T
+ -0.3 (Read in the default world. This will take about a minute on a Sun-4. Y) 84.96 463.11 P
+ -0.3 (ou can keep track of what) 417.36 463.11 P
+ (\336les it is reading by \336rst typing in:) 84.96 449.11 T
+ 12 F
+ (> ) 93.02 423.78 T
+ 18 F
+ (_PrintScriptName: true) 106.21 423.78 T
+ 12 F
+ (false <0>: \050 | ^ parent* = lobby. | \051) 93.02 410.78 T
+ 0 F
+ (This line is printed by the system.) 395.42 410.78 T
+ 12 F
+ (>) 93.02 391.78 T
+ 4 F
+ 0.25 (This instructs the system to print the name of each \336le read in by) 84.96 372.11 P
+ 12 F
+ 0.55 ( _RunScript) 399 372.11 P
+ 4 F
+ 0.25 (. Then read in) 472.06 372.11 P
+ (the world with) 84.96 358.11 T
+ 12 F
+ (> ) 93.02 332.78 T
+ 18 F
+ (\325all\325 _RunScript) 106.21 332.78 T
+ 12 F
+ (reading all...) 93.02 319.78 T
+ (reading init...) 93.02 306.78 T
+ (reading defaults...) 93.02 293.78 T
+ 0 F
+ (et cetera.) 323.42 293.78 T
+ 4 F
+ -0.16 (Sending the primitive message ) 84.96 274.11 P
+ 12 F
+ -0.35 (_RunScript) 234.91 274.11 P
+ 4 F
+ -0.16 ( to the string ) 300.82 274.11 P
+ 12 F
+ -0.35 (\325all\325) 363.49 274.11 P
+ 4 F
+ -0.16 ( causes S) 396.45 274.11 P
+ 6 F
+ -0.14 (ELF) 440.1 274.11 P
+ 4 F
+ -0.16 ( to evaluate each) 459.64 274.11 P
+ 0.27 (expression in the \336le \322all.self\323 without echoing the result of the expression \050see section I-5.5\051.) 84.96 260.11 P
+ 0.56 (\322all.self\323 is simply a \336le of ) 84.96 246.11 P
+ 12 F
+ 1.23 (_RunScript) 220.55 246.11 P
+ 4 F
+ 0.56 ( messages sent to the names of each of the \336les that) 286.47 246.11 P
+ (create the objects of the default world.) 84.96 232.11 T
+ 0.87 (\050If you did not tell the system to print the names of the \336les being read, the lines \322) 84.96 214.11 P
+ 12 F
+ 1.9 (reading) 493.28 214.11 P
+ (all...) 84.96 200.11 T
+ 4 F
+ (\323, etc., will not be printed.\051) 124.51 200.11 T
+ (4.) 71.42 180.11 T
+ -0.17 ( Save the S) 84.96 180.11 P
+ 6 F
+ -0.16 (ELF) 138.08 180.11 P
+ 4 F
+ -0.17 ( objects in a snapshot \336le. This will create a \336le called \322Snapshot\323 in the current) 157.61 180.11 P
+ (directory) 84.96 166.11 T
+ (.) 127.48 166.11 T
+ 12 F
+ (> ) 93.02 140.78 T
+ 18 F
+ (\325Snapshot\325 _WriteSnapshot) 106.21 140.78 T
+ 12 F
+ (\324Snapshot\324) 93.02 127.78 T
+ (>) 93.02 108.78 T
+ FMENDPAGE
+ %%EndPage: "8" 13
+ %%Page: "9" 13
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-9) 300.17 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Installing SELF) 475.84 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 0.23 (From now on, you can start S) 71.42 708.11 P
+ 6 F
+ 0.21 (ELF) 214.37 708.11 P
+ 4 F
+ 0.23 ( using the snapshot rather than starting the bare S) 233.9 708.11 P
+ 6 F
+ 0.21 (ELF) 472.12 708.11 P
+ 4 F
+ 0.23 (; just type) 491.65 708.11 P
+ -0.41 (\322Snapshot\323 instead of \322Self\323 at the U) 71.42 694.11 P
+ 6 F
+ -0.37 (NIX) 247.52 694.11 P
+ 4 F
+ -0.41 ( prompt. This will invoke S) 267.04 694.11 P
+ 6 F
+ -0.37 (ELF) 396.94 694.11 P
+ 4 F
+ -0.41 ( and automatically read in) 416.48 694.11 P
+ (the snapshot \336le \322Snapshot.\323) 71.42 680.11 T
+ -0.3 (If there were any problems during these steps, S) 71.42 654.11 P
+ 6 F
+ -0.28 (ELF) 299.85 654.11 P
+ 4 F
+ -0.3 ( probably hasn\325) 319.38 654.11 P
+ -0.3 (t been installed correctly) 393.18 654.11 P
+ -0.3 (. Con-) 509.74 654.11 P
+ (sult section I-4.1. ) 71.42 640.11 T
+ 0 F
+ 0.18 (Snapshots can be quite lar) 71.42 618.45 P
+ 0.18 (ge \050several megabytes\051 depending on the size of your world. The default world consists of) 176.34 618.45 P
+ (about 2MBytes. ) 71.42 606.45 T
+ FMENDPAGE
+ %%EndPage: "9" 14
+ 20 10 /Courier FMDEFINEFONT
+ %%Page: "10" 14
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-10) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (5  Using S) 71.42 705.45 T
+ 10 F
+ (ELF) 139.4 705.45 T
+ 4 F
+ -0.45 (This chapter presents the basic skills needed to operate in the S) 71.42 678.11 P
+ 6 F
+ -0.41 (ELF) 369.3 678.11 P
+ 4 F
+ -0.45 ( world \050the S) 388.84 678.11 P
+ 6 F
+ -0.41 (ELF) 449.79 678.11 P
+ 4 F
+ -0.45 ( W) 469.33 678.11 P
+ -0.45 (orld manual) 482.24 678.11 P
+ 0.14 (describes the objects in the S) 71.42 664.11 P
+ 6 F
+ 0.13 (ELF) 211.04 664.11 P
+ 4 F
+ 0.14 ( world in more detail\051. W) 230.57 664.11 P
+ 0.14 (e assume that you are familiar with the) 352.23 664.11 P
+ 0.2 (language itself or at least have a rough knowledge of S) 71.42 650.11 P
+ 6 F
+ 0.19 (ELF) 336.58 650.11 P
+ 4 F
+ 0.2 (\325) 356.12 650.11 P
+ 0.2 (s syntax and semantics \050see the S) 359.45 650.11 P
+ 6 F
+ 0.19 (ELF) 519.89 650.11 P
+ 4 F
+ (Language Reference Manual\051.) 71.42 636.11 T
+ 10 F
+ (5.1  Elementary skills) 71.42 602.78 T
+ 2 F
+ 1.4 (Starting S) 71.42 576.11 P
+ 5 F
+ 1.28 (ELF) 124.46 576.11 P
+ 2 F
+ 1.4 (.) 144.73 576.11 P
+ 4 F
+ 1.4 ( T) 147.73 576.11 P
+ 1.4 (o start up S) 158.61 576.11 P
+ 6 F
+ 1.28 (ELF) 217.1 576.11 P
+ 4 F
+ 1.4 (, type \322Self\323 at the U) 235.68 576.11 P
+ 6 F
+ 1.28 (NIX) 343.24 576.11 P
+ 4 F
+ 1.4 ( prompt and read in the world with) 362.77 576.11 P
+ 12 F
+ -0.34 (\325all\325) 71.42 562.11 P
+ 4 F
+ -0.15 ( ) 104.38 562.11 P
+ 12 F
+ -0.34 (_RunScript) 107.23 562.11 P
+ 4 F
+ -0.15 (, as in section I-4.3; or simply start the snapshot created in an earlier session:) 173.15 562.11 P
+ 12 F
+ (% ) 93.02 536.78 T
+ 18 F
+ (Self) 106.21 536.78 T
+ 12 F
+ (Self Virtual Machine Version 1.1, Jan 23 1991 13:13:31) 93.02 523.78 T
+ (Copyright 1991: The Self Group) 93.02 510.78 T
+ (David Ungar, Craig Chambers, Bay-Wei Chang, and Urs Hoelzle) 93.02 497.78 T
+ (Stanford University, Stanford, CA) 93.02 484.78 T
+ (\050Type _Help for help\051) 93.02 458.78 T
+ (> ) 93.02 432.78 T
+ 18 F
+ (\325Snapshot\325 _ReadSnapshot) 106.21 432.78 T
+ 12 F
+ (>) 93.02 413.78 T
+ 4 F
+ 0.41 (Starting a snapshot from the U) 71.42 388.11 P
+ 6 F
+ 0.37 (NIX) 220.37 388.11 P
+ 4 F
+ 0.41 ( prompt is equivalent to starting S) 239.9 388.11 P
+ 6 F
+ 0.37 (ELF) 404.93 388.11 P
+ 4 F
+ 0.41 ( and then reading in the) 424.46 388.11 P
+ (snapshot with ) 71.42 374.11 T
+ 12 F
+ (_ReadSnapshot) 140.72 374.11 T
+ 4 F
+ (.) 226.41 374.11 T
+ 12 F
+ (% ) 93.02 348.78 T
+ 18 F
+ (Snapshot) 106.21 348.78 T
+ 12 F
+ (Self Virtual Machine Version 1.1, Jan 23 1991 13:13:31) 93.02 335.78 T
+ (Copyright 1991: The Self Group) 93.02 322.78 T
+ (David Ungar, Craig Chambers, Bay-Wei Chang, and Urs Hoelzle) 93.02 309.78 T
+ (Stanford University, Stanford, CA) 93.02 296.78 T
+ (\050Type _Help for help\051) 93.02 270.78 T
+ (>) 93.02 244.78 T
+ 0 F
+ 2.08 (When S) 71.42 223.45 P
+ 1 F
+ 1.87 (ELF) 105.43 223.45 P
+ 0 F
+ 2.08 ( is started, it looks for the script \336le \322startup.self\323 in the S) 121.4 223.45 P
+ 1 F
+ 1.87 (ELF) 376.77 223.45 P
+ 0 F
+ 2.08 ( directory \050scripts are discussed in) 392.74 223.45 P
+ -0.13 (section I-5.5\051. If it exists, the startup script is read in just before displaying the prompt \050after the snapshot is read in, if) 71.42 211.45 P
+ 0.05 (S) 71.42 199.45 P
+ 1 F
+ 0.05 (ELF) 76.98 199.45 P
+ 0 F
+ 0.05 ( was invoked by starting a snapshot\051. The startup script is useful for setting favorite options and de\336ning abbre-) 92.96 199.45 P
+ (viations for common messages. Appendix C contains an example startup script.) 71.42 187.45 T
+ 2 F
+ 0.08 (Snapshots.) 71.42 162.11 P
+ 4 F
+ 0.08 ( Snapshots are used to save your work and restart from where you left of) 126.41 162.11 P
+ 0.08 (f. A snapshot) 475.65 162.11 P
+ 0.49 (captures the state of the object world \050i.e. all objects and methods, but not the process state\051 and) 71.42 148.11 P
+ (writes it to a \336le. A snapshot is created with the ) 71.42 134.11 T
+ 12 F
+ (_WriteSnapshot) 302.61 134.11 T
+ 4 F
+ ( primitive:) 394.89 134.11 T
+ 12 F
+ (> ) 93.02 108.78 T
+ 18 F
+ (\325mySnapshot\325 _WriteSnapshot) 106.21 108.78 T
+ 20 F
+ ( ) 284.19 108.78 T
+ 0 F
+ (Creates a snapshot file called \324\324mySnapshot\325\325) 323.42 108.78 T
+ 12 F
+ (\324mySnapshot\324) 93.02 95.78 T
+ (>) 93.02 76.78 T
+ FMENDPAGE
+ %%EndPage: "10" 15
+ %%Page: "11" 15
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-11) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ -0.32 (A snapshot may be read with the ) 71.42 708.11 P
+ 12 F
+ -0.69 (_ReadSnapshot) 229.43 708.11 P
+ 4 F
+ -0.32 ( primitive. The current world will be complete-) 315.13 708.11 P
+ (ly overwritten by the world read from the snapshot.) 71.42 694.11 T
+ 0 F
+ 0.28 (Reading and writing snapshots trigger the system to send certain messages before and after the action. For example,) 71.42 672.45 P
+ 0.39 (the VM sends the message ) 71.42 660.45 P
+ 20 F
+ 0.94 (snapshotAction preWrite) 182.48 660.45 P
+ 0 F
+ 0.39 ( to the lobby before writing a snapshot, and in the de-) 321.35 660.45 P
+ 0.1 (fault world that message \336nds the slot ) 71.42 648.45 P
+ 20 F
+ 0.24 (preWrite) 226.2 648.45 P
+ 0 F
+ 0.1 ( containing a method that performs a garbage collection in memo-) 274.17 648.45 P
+ (ry) 71.42 636.45 T
+ (. See section I-5.8 for a full description of the messages that the system automatically sends on certain actions.) 79.1 636.45 T
+ 2 F
+ -0.56 (Quitting S) 71.42 611.11 P
+ 5 F
+ -0.52 (ELF) 123.85 611.11 P
+ 2 F
+ -0.56 (.) 144.11 611.11 P
+ 4 F
+ -0.56 ( Leave S) 147.11 611.11 P
+ 6 F
+ -0.52 (ELF) 187.94 611.11 P
+ 4 F
+ -0.56 ( by typing ) 207.48 611.11 P
+ 12 F
+ -1.24 (_Quit) 257.42 611.11 P
+ 4 F
+ -0.56 ( or by typing ) 290.38 611.11 P
+ 12 F
+ -1.24 (^D) 352.75 611.11 P
+ 4 F
+ -0.56 ( \050control-D\051 at the prompt. This does) 365.94 611.11 P
+ 3 F
+ (not) 71.42 597.11 T
+ 4 F
+ ( save the world in a snapshot.) 86.75 597.11 T
+ 10 F
+ (5.2  Entering S) 71.42 563.78 T
+ 19 F
+ (ELF) 160.05 563.78 T
+ 10 F
+ ( expr) 185.31 563.78 T
+ (essions) 215.76 563.78 T
+ 4 F
+ -0.11 (An arbitrary S) 71.42 537.11 P
+ 6 F
+ -0.1 (ELF) 139.82 537.11 P
+ 4 F
+ -0.11 ( ) 159.35 537.11 P
+ 3 F
+ -0.11 (expr) 162.24 537.11 P
+ -0.11 (ession) 183.11 537.11 P
+ 4 F
+ -0.11 ( can be entered at the S) 213.1 537.11 P
+ 6 F
+ -0.1 (ELF) 323.68 537.11 P
+ 4 F
+ -0.11 ( prompt. The expression is evaluated and) 343.22 537.11 P
+ (the result is printed \050like in the Lisp read-eval-print loop\051. ) 71.42 523.11 T
+ 0 F
+ 0.16 (The exact sequence of events is as follows: an expression is read from the standard input. The input is treated as if it) 71.42 501.45 P
+ 0.22 (were an expression in the body of the ) 71.42 489.45 P
+ 20 F
+ 0.53 (doIt) 225.31 489.45 P
+ 0 F
+ 0.22 ( slot of the lobby) 249.3 489.45 P
+ 0.22 (. If the input is syntactically correct, the system installs) 317.28 489.45 P
+ 0.04 (the generated bytecodes as the ) 71.42 477.45 P
+ 20 F
+ 0.09 (doIt) 195.67 477.45 P
+ 0 F
+ 0.04 ( method and sends ) 219.66 477.45 P
+ 20 F
+ 0.09 (printIt) 296.42 477.45 P
+ 0 F
+ 0.04 ( to the lobby) 338.4 477.45 P
+ 0.04 (. ) 388.11 477.45 P
+ 20 F
+ 0.09 (printIt) 393.15 477.45 P
+ 0 F
+ 0.04 ( is a SELF method \050modi-) 435.13 477.45 P
+ (\336able by the user\051 which calls ) 71.42 465.45 T
+ 20 F
+ (doIt) 193.56 465.45 T
+ 0 F
+ ( and then prints the result \050see section I-5.3.2\051.) 217.54 465.45 T
+ 4 F
+ (The following examples illustrate legal and illegal entries at the S) 71.42 440.11 T
+ 6 F
+ (ELF) 386.55 440.11 T
+ 4 F
+ ( prompt:) 406.08 440.11 T
+ 12 F
+ (% ) 93.02 414.78 T
+ 18 F
+ (Snapshot) 106.21 414.78 T
+ 12 F
+ (Self Virtual Machine Version 1.1, Jan 23 1991 13:13:31) 93.02 401.78 T
+ (Copyright 1991: The Self Group) 93.02 388.78 T
+ (David Ungar, Craig Chambers, Bay-Wei Chang, and Urs Hoelzle) 93.02 375.78 T
+ (Stanford University, Stanford, CA) 93.02 362.78 T
+ (\050Type _Help for help\051) 93.02 336.78 T
+ (> ) 93.02 310.78 T
+ 18 F
+ (3 + 4) 106.21 310.78 T
+ 12 F
+ (7) 93.02 297.78 T
+ 0 F
+ (The system reads the expression, evaluates it and prints the result.) 251.42 297.78 T
+ 12 F
+ (> ) 93.02 278.78 T
+ 18 F
+ (10 factorial) 106.21 278.78 T
+ 12 F
+ (3628800) 93.02 265.78 T
+ (> ) 93.02 246.78 T
+ 18 F
+ (10 do: [| :i | i print. \325 \325 print]) 106.21 246.78 T
+ 12 F
+ (0 1 2 3 4 5 6 7 8 9 nil) 93.02 233.78 T
+ (>) 93.02 214.78 T
+ 4 F
+ 0.06 (In the last example, ) 71.42 189.11 P
+ 12 F
+ 0.13 (nil) 168.59 189.11 P
+ 4 F
+ 0.06 ( is the result of the ) 188.37 189.11 P
+ 12 F
+ 0.13 (do:) 280.67 189.11 P
+ 4 F
+ 0.06 ( method and is printed by the read-eval-print loop) 300.44 189.11 P
+ (\050) 71.42 175.11 T
+ 12 F
+ (printIt) 75.42 175.11 T
+ 4 F
+ (\051.) 121.56 175.11 T
+ 12 F
+ (> ) 93.02 149.78 T
+ 18 F
+ (\325hello\325 print. \325 world\325 printLine) 106.21 149.78 T
+ 12 F
+ (^) 197.42 136.78 T
+ (error: ) 93.02 123.78 T
+ (unexpected token on line 1, column 17) 143.42 123.78 T
+ ( ) 93.02 110.78 T
+ ( found a \325.\325 token) 143.42 110.78 T
+ ( ) 93.02 97.78 T
+ ( expecting the end of the expression) 143.42 97.78 T
+ (>) 93.02 78.78 T
+ FMENDPAGE
+ %%EndPage: "11" 16
+ 21 12 /Courier-Bold FMDEFINEFONT
+ 22 12 /Times-BoldItalic FMDEFINEFONT
+ %%Page: "12" 16
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-12) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 0.38 (Only a single expression is allowed\321not a statement sequence. Enclose statement lists in paren-) 71.42 708.11 P
+ (theses to do evaluate a statement sequence:) 71.42 694.11 T
+ 12 F
+ (> ) 93.02 668.78 T
+ 18 F
+ (\050\325hello\325 print. \325 world\325 printLine\051) 106.21 668.78 T
+ 12 F
+ (hello world) 93.02 655.78 T
+ (\325 world\325) 93.02 642.78 T
+ (> ) 93.02 623.78 T
+ 4 F
+ (The next example shows how to enter a multi-line expression: ) 71.42 598.11 T
+ 12 F
+ (> ) 93.02 573.45 T
+ 18 F
+ (4 do: [ | :i |) 106.21 573.45 T
+ (\050i printString, \325! = \325, i factorial printString\051 printLine ]) 143.42 561.45 T
+ 12 F
+ (0! = 1) 93.02 549.45 T
+ (1! = 1) 93.02 537.45 T
+ (2! = 2) 93.02 525.45 T
+ (3! = 6) 93.02 513.45 T
+ 20 F
+ (nil) 93.02 501.45 T
+ 12 F
+ (>) 93.02 482.78 T
+ 20 F
+ ( ) 99.62 482.78 T
+ 4 F
+ -0.25 (Multi-line expressions need to have open \050unbalanced\051 parentheses or brackets \050in this case a \324) 71.42 457.11 P
+ 12 F
+ -0.56 ([) 521.51 457.11 P
+ 4 F
+ -0.25 (\325\051;) 528.1 457.11 P
+ -0.29 (when all parentheses are matched at the end of a line, the parser considers the input to be complete) 71.42 443.11 P
+ 0.67 (and evaluates it. The same convention applies to multi-line expressions in scripts \050see section I-) 71.42 429.11 P
+ (5.5\051.) 71.42 415.11 T
+ 10 F
+ (5.3  Printing objects) 71.42 381.78 T
+ 4 F
+ 0.75 (This section describes dif) 71.42 355.11 P
+ 0.75 (ferent ways that objects can be examined by printing some textual de-) 195.72 355.11 P
+ 0.11 (scription. These vary from very low-level descriptions to high-level and user) 71.42 341.11 P
+ 0.11 (-modi\336able methods) 440.37 341.11 P
+ (for printing objects.) 71.42 327.11 T
+ 2 F
+ (5.3.1  The ) 71.42 295.11 T
+ 21 F
+ (_Print) 124.4 295.11 T
+ 2 F
+ ( primitive and object r) 167.57 295.11 T
+ (efer) 282.62 295.11 T
+ (ence numbers) 302.37 295.11 T
+ 4 F
+ -0.02 (The) 71.42 269.11 P
+ 12 F
+ -0.04 ( _Print) 90.07 269.11 P
+ 4 F
+ -0.02 ( primitive is a low-level routine that prints out its receiver and returns ) 136.18 269.11 P
+ 12 F
+ -0.04 (nil) 472.74 269.11 P
+ 4 F
+ -0.02 ( as the re-) 492.52 269.11 P
+ 0.47 (sult. The output always lists the slots of the receiver) 71.42 255.11 P
+ 0.47 (, but may contain additional information de-) 324.38 255.11 P
+ (pending on the type of the receiver) 71.42 241.11 T
+ (.) 237.96 241.11 T
+ 3 F
+ 0.02 (Object r) 71.42 215.11 P
+ 0.02 (efer) 110.63 215.11 P
+ 0.02 (ence numbers) 128.84 215.11 P
+ 4 F
+ 0.02 ( are provided by t) 195.13 215.11 P
+ 0.02 (he virtual machine as a way) 279.8 215.11 P
+ 0.02 ( ) 413.43 215.11 P
+ 0.02 (to refer to objects that are) 416.45 215.11 P
+ -0.35 (displayed by ) 71.42 201.11 P
+ 12 F
+ -0.77 (_Print) 134.69 201.11 P
+ 4 F
+ -0.35 ( and in stack dumps \050see section I-5.4.3\051. Reference numbers are assigned by) 174.24 201.11 P
+ -0.1 (the system: it keeps track of the last ) 71.42 187.11 P
+ 3 F
+ -0.1 (n) 245.21 187.11 P
+ 4 F
+ -0.1 ( objects assigned reference numbers, where ) 251.2 187.11 P
+ 3 F
+ -0.1 (n) 462.1 187.11 P
+ 4 F
+ -0.1 ( is a con\336gura-) 468.1 187.11 P
+ 0.49 (tion parameter controlled by the ) 71.42 173.11 P
+ 12 F
+ 1.07 (_HistoryLength) 230.74 173.11 P
+ 4 F
+ 0.49 ( primitive \050the default is 1000; see section I-) 323.02 173.11 P
+ 0.21 (5.7\051. As long as an object\325) 71.42 159.11 P
+ 0.21 (s reference number is within the last ) 198.05 159.11 P
+ 3 F
+ 0.21 (n) 376.39 159.11 P
+ 4 F
+ 0.21 ( numbers assigned) 382.38 159.11 P
+ 0.21 (, references to) 471.41 159.11 P
+ -0.04 (the object by the VM will use the same reference number) 71.42 145.11 P
+ -0.04 (. A reference to an object is displayed as) 345.53 145.11 P
+ (a number surrounded by angle brackets.) 71.42 131.11 T
+ 2 F
+ -0.5 (Plain objects.) 71.42 105.11 P
+ 22 F
+ -0.5 ( ) 139.55 105.11 P
+ 4 F
+ -0.5 (Most objects respond to _) 142.05 105.11 P
+ 12 F
+ -1.1 (Print) 263.98 105.11 P
+ 4 F
+ -0.5 ( by printing their) 296.93 105.11 P
+ -0.5 ( reference number and ) 376.39 105.11 P
+ -0.5 (listing their) 484.95 105.11 P
+ -0.42 (slots. ) 71.42 91.11 P
+ 12 F
+ -0.93 (_Print) 99 91.11 P
+ 4 F
+ -0.42 ( is a \322shallow print\323: it does ) 138.55 91.11 P
+ 3 F
+ -0.42 (not) 272.51 91.11 P
+ 4 F
+ -0.42 ( follow references in the slots of its receiver and send) 287.84 91.11 P
+ 12 F
+ (_Print) 71.42 77.11 T
+ 4 F
+ ( to those objects as well. Instead, the contents of a slot print out in its \322short form\323:) 110.97 77.11 T
+ FMENDPAGE
+ %%EndPage: "12" 17
+ %%Page: "13" 17
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-13) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ (\245) 84.96 708.11 T
+ (its conventional form if it is an integer, a float, or a string,) 98.42 708.11 T
+ (\245) 84.96 688.11 T
+ (\324) 98.42 688.11 T
+ 12 F
+ (true) 102.42 688.11 T
+ 4 F
+ (\325, \324) 128.79 688.11 T
+ 12 F
+ (false) 142.77 688.11 T
+ 4 F
+ (\325, \324) 175.73 688.11 T
+ 12 F
+ (nil) 189.71 688.11 T
+ 4 F
+ (\325, or \324) 209.49 688.11 T
+ 12 F
+ (lobby) 236.46 688.11 T
+ 4 F
+ (\325 for the ) 269.42 688.11 T
+ 12 F
+ (true) 311.05 688.11 T
+ 4 F
+ (, ) 337.42 688.11 T
+ 12 F
+ (false) 343.41 688.11 T
+ 4 F
+ (, ) 376.37 688.11 T
+ 12 F
+ (nil) 382.37 688.11 T
+ 4 F
+ (, and ) 402.14 688.11 T
+ 12 F
+ (lobby) 428.46 688.11 T
+ 4 F
+ ( objects,) 461.42 688.11 T
+ (\245) 84.96 668.11 T
+ (\324) 98.42 668.11 T
+ 12 F
+ (<-) 102.42 668.11 T
+ 4 F
+ (\325 if the slot contains the assignment primitive,) 115.6 668.11 T
+ (\245) 84.96 648.11 T
+ (\324) 98.42 648.11 T
+ 12 F
+ (<a method>) 102.42 648.11 T
+ 4 F
+ (\325 if the slot contains an object that has code, or) 168.34 648.11 T
+ (\245) 84.96 628.11 T
+ (the reference number of the referenced object otherwise.) 98.42 628.11 T
+ -0.06 (The slot list is printed in normal S) 71.42 602.11 P
+ 6 F
+ -0.06 (ELF) 234.58 602.11 P
+ 4 F
+ -0.06 ( syntax. A private slot name is preceded by \324) 254.12 602.11 P
+ 12 F
+ -0.14 (_) 467.4 602.11 P
+ 4 F
+ -0.06 (\325 and a public) 473.99 602.11 P
+ (slot by \324) 71.42 588.11 T
+ 12 F
+ (^) 110.74 588.11 T
+ 4 F
+ (\325. Asterisks following the slot name indicate parent slots.) 117.33 588.11 T
+ (For example, sending ) 71.42 562.11 T
+ 12 F
+ (_Print) 178.02 562.11 T
+ 4 F
+ ( to ) 217.57 562.11 T
+ 12 F
+ (3 at 4) 232.9 562.11 T
+ 4 F
+ ( gives:) 252.68 562.11 T
+ 12 F
+ (> ) 93.02 536.78 T
+ 18 F
+ (\0503 @ 4\051 _Print) 106.21 536.78 T
+ 12 F
+ (<19>: \050 | _ parent* = <18>. _ thisObjectPrints = true. ^ x = 3. _ ) 93.02 523.78 T
+ (x: = <-. ^ y = 4. _ y: = <-. | \051) 93.02 510.78 T
+ (nil) 93.02 497.78 T
+ 0 F
+ (The result of ) 323.42 497.78 T
+ 20 F
+ (_Print) 376.99 497.78 T
+ 0 F
+ ( is ) 412.98 497.78 T
+ 20 F
+ (nil; ) 424.64 497.78 T
+ 0 F
+ (it is printed by) 454.62 497.78 T
+ ( ) 323.42 484.78 T
+ (the read-eval-print loop. ) 333 484.78 T
+ 12 F
+ (>) 93.02 465.78 T
+ 0.64 (<19>) 71.42 440.11 P
+ 4 F
+ 0.29 ( refers to the object ) 97.79 440.11 P
+ 12 F
+ 0.64 (3 at 4) 194.84 440.11 P
+ 4 F
+ 0.29 (; its reference number is 19. Similarly) 214.62 440.11 P
+ 0.29 (, the ) 397.14 440.11 P
+ 12 F
+ 0.64 (parent) 421.37 440.11 P
+ 4 F
+ 0.29 ( slot contains an) 460.92 440.11 P
+ 0.94 (object with reference number 18. The slots ) 71.42 426.11 P
+ 12 F
+ 2.07 (thisObjectPrints) 286.53 426.11 P
+ 4 F
+ 0.94 (, ) 392 426.11 P
+ 12 F
+ 2.07 (x) 398.94 426.11 P
+ 4 F
+ 0.94 (, and ) 405.53 426.11 P
+ 12 F
+ 2.07 (y) 433.73 426.11 P
+ 4 F
+ 0.94 ( contain objects that) 440.32 426.11 P
+ 0.47 (print out in their conventional forms: the boolean object true, and the integers 3 and 4. The slots) 71.42 412.11 P
+ 12 F
+ (x:) 71.42 398.11 T
+ 4 F
+ ( and ) 84.61 398.11 T
+ 12 F
+ (y:) 107.92 398.11 T
+ 4 F
+ ( contain the assignment primitive. ) 121.11 398.11 T
+ 0.35 (A reference number for an object will be valid as long as fewer than ) 71.42 372.11 P
+ 3 F
+ 0.35 (n) 406.11 372.11 P
+ 4 F
+ 0.35 (-1) 412.11 372.11 P
+ 0.35 ( other objects have been) 422.1 372.11 P
+ 1.54 (assigned reference numbers after its \336rst appearance \050where ) 71.42 358.11 P
+ 3 F
+ 1.54 (n) 374.16 358.11 P
+ 4 F
+ 1.54 ( is the parameter determined by) 380.16 358.11 P
+ 12 F
+ (_HistoryLength) 71.42 344.11 T
+ 4 F
+ (\051. This permits continuity between printings of the same object:) 163.71 344.11 T
+ 12 F
+ (> ) 93.02 318.78 T
+ 18 F
+ (\0505 @ 7\051 _Print) 106.21 318.78 T
+ 12 F
+ (<20>: \050 | _ parent* = <18>. _ thisObjectPrints = true. ^ x = 5. _ ) 93.02 305.78 T
+ (x: = <-. ^ y = 7. _ y: = <-. | \051) 93.02 292.78 T
+ (nil) 93.02 279.78 T
+ (>) 93.02 260.78 T
+ 4 F
+ -0.3 (Both ) 71.42 235.11 P
+ 12 F
+ -0.67 (3 at 4) 97.45 235.11 P
+ 4 F
+ -0.3 ( and ) 117.22 235.11 P
+ 12 F
+ -0.67 (5 at 7) 139.93 235.11 P
+ 4 F
+ -0.3 ( share the same parent, and thus both ) 159.7 235.11 P
+ 12 F
+ -0.67 (parent) 337.47 235.11 P
+ 4 F
+ -0.3 ( slots indicate the same object, the) 377.02 235.11 P
+ 0.01 (object with reference number 18 \050the point traits object\051. T) 71.42 221.11 P
+ 0.01 (o look at this object, we follow the ref-) 352.47 221.11 P
+ (erence explicitly by converting it to an object using the ) 71.42 207.11 T
+ 12 F
+ (_AsObject) 338.58 207.11 T
+ 4 F
+ ( primitive:) 397.9 207.11 T
+ 12 F
+ (> ) 93.02 181.78 T
+ 18 F
+ (18 _AsObject _Print) 106.21 181.78 T
+ 12 F
+ (<18>: \050 | _ parent* = <21>. ^ printString = <a method>. ^ xAxis ) 93.02 168.78 T
+ (Reflect = <a method>. ^ yAxisReflect = <a method>. ^ restrictTo: = ) 93.02 155.78 T
+ (<a method>. ^ alignToGrid: = <a method>. ^ # = <a method>. ^ ## = ) 93.02 142.78 T
+ (<a method>. | \051) 93.02 129.78 T
+ (nil) 93.02 116.78 T
+ (>) 93.02 97.78 T
+ FMENDPAGE
+ %%EndPage: "13" 18
+ %%Page: "14" 18
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-14) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ -0.37 (If the history length is 1000, this object will keep its reference number until the system assigns ref-) 71.42 708.11 P
+ 0.52 (erence number 1018. At that point, 18 is no longer a valid object reference number \050because the) 71.42 694.11 P
+ 0.42 (system is keeping only the last 1000 object references\051. The ) 71.42 680.11 P
+ 12 F
+ 0.92 (_AsObject) 365.73 680.11 P
+ 4 F
+ 0.42 ( primitive will fail if its) 425.05 680.11 P
+ (receiver is not a valid object reference.) 71.42 666.11 T
+ 2 F
+ -0.06 (V) 71.42 640.11 P
+ -0.06 (ectors.) 78.98 640.11 P
+ 4 F
+ -0.06 ( ) 112.61 640.11 P
+ -0.06 (Object vectors and byte vectors also display their array elements after their slots. The el-) 115.55 640.11 P
+ -0.03 (ements of the array are printed in the same manner as the contents of slots. The ) 71.42 626.11 P
+ 12 F
+ -0.05 (_VectorPrint-) 453.73 626.11 P
+ (Limit) 71.42 612.11 T
+ 4 F
+ ( primitive controls how many elements of a vector are printed; the default is 20.) 104.38 612.11 T
+ 12 F
+ (> ) 93.02 586.78 T
+ 18 F
+ (someVector _Print) 106.21 586.78 T
+ 12 F
+ (<49>: \050 | ^ parent* = <29>. | object array: {true, <50>, 2.45} \051) 93.02 573.78 T
+ (nil) 93.02 560.78 T
+ (>) 93.02 541.78 T
+ 2 F
+ -0.42 (Integers and \337oats.) 71.42 516.11 P
+ 4 F
+ -0.42 ( Integers and \337oats are not assigned history numbers since they can be directly) 168.19 516.11 P
+ 0.99 (referred to so easily) 71.42 502.11 P
+ 0.99 (. Consequently) 168.54 502.11 P
+ 0.99 (, integers and \337oats print their value in place of their history) 240.71 502.11 P
+ (number when sent ) 71.42 488.11 T
+ 12 F
+ (_Print) 162.36 488.11 T
+ 4 F
+ (.) 201.91 488.11 T
+ 12 F
+ (> ) 93.02 462.78 T
+ 18 F
+ (1.3 _Print) 106.21 462.78 T
+ 12 F
+ (1.3: \050 | ^ parent* = <0>. | \051) 93.02 449.78 T
+ 0 F
+ (The output of ) 297 449.78 T
+ 20 F
+ (_Print) 353.91 449.78 T
+ 0 F
+ (.) 389.89 449.78 T
+ 12 F
+ (nil) 93.02 436.78 T
+ (> ) 93.02 417.78 T
+ 18 F
+ (16r2f _Print) 106.21 417.78 T
+ 0 F
+ (A hexadecimal number \0502F radix 16\051.) 297 417.78 T
+ 12 F
+ (47: \050 | ^ parent* = <1>. | \051) 93.02 404.78 T
+ 0 F
+ (Integers always ) 297 404.78 T
+ 20 F
+ (_Print) 361.94 404.78 T
+ 0 F
+ ( in decimal.) 397.92 404.78 T
+ 12 F
+ (nil) 93.02 391.78 T
+ 2 F
+ -0.11 (Strings, special objects, pr) 71.42 366.11 P
+ -0.11 (ocesses, and mirr) 205.14 366.11 P
+ -0.11 (ors.) 292.98 366.11 P
+ 4 F
+ -0.11 ( Strings and the ) 311.96 366.11 P
+ 12 F
+ -0.24 (true) 389.49 366.11 P
+ 4 F
+ -0.11 (, ) 415.86 366.11 P
+ 12 F
+ -0.24 (false) 421.74 366.11 P
+ 4 F
+ -0.11 (, ) 454.7 366.11 P
+ 12 F
+ -0.24 (nil) 460.59 366.11 P
+ 4 F
+ -0.11 (, and ) 480.37 366.11 P
+ 12 F
+ -0.24 (lobby) 506.46 366.11 P
+ 4 F
+ 0.28 (objects) 71.42 352.11 P
+ 0.28 ( print their conventional form before their reference number and slot lists. Process objects) 105.4 352.11 P
+ 1.04 (print the special keyword ) 71.42 338.11 P
+ 12 F
+ 2.28 (process) 200.15 338.11 P
+ 4 F
+ 1.04 ( before their reference number and slot lists. Mirror objects) 246.3 338.11 P
+ 1.03 (\050see the S) 71.42 324.11 P
+ 6 F
+ 0.94 (ELF) 120.11 324.11 P
+ 4 F
+ 1.03 ( W) 139.64 324.11 P
+ 1.03 (orld manual\051 print the short form of their re\337ectee in addition to the reference) 154.03 324.11 P
+ (number and slots of the mirror) 71.42 310.11 T
+ (.) 217 310.11 T
+ 12 F
+ (> ) 93.02 290.78 T
+ 18 F
+ (\325tree\325 _Print) 106.21 290.78 T
+ 12 F
+ (\325tree\325 <2>: \050 | ^ parent* = <3>. | byte array: {116, 114, 101, ) 93.02 277.78 T
+ (101} \051) 93.02 264.78 T
+ 0 F
+ (Strings are surrounded by single quotes.) 323.42 264.78 T
+ 12 F
+ (nil) 93.02 251.78 T
+ (> ) 93.02 232.78 T
+ 18 F
+ (true _Print) 106.21 232.78 T
+ 12 F
+ (true <4>: \050 | _ parent* = <5>. _ thisObjectPrints = true. ^ ) 93.02 219.78 T
+ (printString = \324true\325. ^ ifTrue:False: = <a method>. ^ || = <a ) 93.02 206.78 T
+ (method>. ^ && = <a method>. ^ ^^ = <a method>. ^ not = false. | \051) 93.02 193.78 T
+ (nil) 93.02 180.78 T
+ (> ) 93.02 161.78 T
+ 18 F
+ (_ThisProcess _Print) 106.21 161.78 T
+ 20 F
+ (_ThisProcess) 323.42 161.78 T
+ 0 F
+ ( returns the current process object) 395.39 161.78 T
+ 12 F
+ (process <6>: \050 | ^ parent* = <7>. ^ queue = <8>. ^ queue: = <-. | \051) 93.02 148.78 T
+ (nil) 93.02 135.78 T
+ (> ) 93.02 110.78 T
+ 18 F
+ (\050reflect: 2 at 3\051 _Print) 106.21 110.78 T
+ 0 F
+ (This creates a mirror on ) 323.42 110.78 T
+ 20 F
+ (2 at 3) 421.4 110.78 T
+ 0 F
+ ( and sends ) 439.39 110.78 T
+ 20 F
+ (_Print) 483.53 110.78 T
+ 0 F
+ ( to it) 519.51 110.78 T
+ 12 F
+ (mirror <reflectee = <67>> <68>: \050 | ^ parent* = <48>. _ thisObjec ) 93.02 97.78 T
+ (tPrints = true. | \051) 93.02 84.78 T
+ (nil) 93.02 71.78 T
+ FMENDPAGE
+ %%EndPage: "14" 19
+ %%Page: "15" 19
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-15) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 12 F
+ 0 X
+ (>) 93.02 708.78 T
+ 2 F
+ (5.3.2  Printing in the default world) 71.42 677.11 T
+ 4 F
+ -0.34 (This subsection brie\337y discusses ways that objects print in the default world. For more detailed in-) 71.42 651.11 P
+ (formation, see the S) 71.42 637.11 T
+ 6 F
+ (ELF) 167.36 637.11 T
+ 4 F
+ ( W) 186.89 637.11 T
+ (orld manual.) 200.25 637.11 T
+ 2 F
+ 0.45 (Object-speci\336c printing. ) 71.42 611.11 P
+ 4 F
+ 0.45 (Objects may understand messages that cause them to print themselves) 199.25 611.11 P
+ -0.07 (in object-speci\336c manners. The convention in the default world is for such methods to be invoked) 71.42 597.11 P
+ (upon sending ) 71.42 583.11 T
+ 12 F
+ (print) 138.72 583.11 T
+ 4 F
+ ( to the object.) 171.68 583.11 T
+ 12 F
+ (> ) 93.02 557.78 T
+ 18 F
+ (\0503 @ 4\051 print) 106.21 557.78 T
+ 12 F
+ (3 at 43@4) 93.02 544.78 T
+ 0 F
+ (The first ) 251.42 544.78 T
+ 20 F
+ (3 at 4) 288.06 544.78 T
+ 0 F
+ ( is the output of the message send; the second ) 306.05 544.78 T
+ 20 F
+ (3 at 4) 490.93 544.78 T
+ 0 F
+ (is the result printed by the read-eval-print loop \050) 251.42 531.78 T
+ 20 F
+ (printIt) 443.51 531.78 T
+ 0 F
+ (\051.) 485.48 531.78 T
+ 12 F
+ (> ) 93.02 512.78 T
+ 18 F
+ (\0503 @ 4\051 printLine) 106.21 512.78 T
+ 12 F
+ (3 at 4) 93.02 499.78 T
+ (3 at 4) 93.02 486.78 T
+ (>) 93.02 467.78 T
+ 4 F
+ 0.48 (The default world uses the name ) 71.42 442.11 P
+ 12 F
+ 1.05 (printString) 233.51 442.11 P
+ 4 F
+ 0.48 ( \050and variants of ) 306.02 442.11 P
+ 12 F
+ 1.05 (printString) 389.21 442.11 P
+ 4 F
+ 0.48 (\051 as the conven-) 461.72 442.11 P
+ (tion for methods that return an object-speci\336c string. ) 71.42 428.11 T
+ 2 F
+ -0.44 (The r) 71.42 402.11 P
+ -0.44 (ead-eval-print loop. ) 99.08 402.11 P
+ 4 F
+ -0.44 (As mentioned in section I-5.2, S) 201.8 402.11 P
+ 6 F
+ -0.41 (ELF) 354.49 402.11 P
+ 4 F
+ -0.44 ( sends ) 374.02 402.11 P
+ 12 F
+ -0.98 (printIt) 405.78 402.11 P
+ 4 F
+ -0.44 ( to the lobby when) 451.92 402.11 P
+ 0.39 (an expression is typed at the prompt, after \336rst installing the expression into the ) 71.42 388.11 P
+ 12 F
+ 0.85 (doIt) 461.59 388.11 P
+ 4 F
+ 0.39 ( slot in the) 487.95 388.11 P
+ 0.66 (lobby) 71.42 374.11 P
+ 0.66 (. ) 97.96 374.11 P
+ 12 F
+ 1.46 (printIt) 104.63 374.11 P
+ 4 F
+ 0.66 ( in the bare world \050before the default world objects are read in\051 is prede\336ned to) 150.77 374.11 P
+ 0.3 (perform ) 71.42 360.11 P
+ 12 F
+ 0.65 (doIt) 113.35 360.11 P
+ 4 F
+ 0.3 ( and then send ) 139.72 360.11 P
+ 12 F
+ 0.65 (_Print) 212.86 360.11 P
+ 4 F
+ 0.3 ( to the result. So in the bare world the following can be ob-) 252.41 360.11 P
+ (served:) 71.42 346.11 T
+ 12 F
+ (> ) 93.02 320.78 T
+ 18 F
+ (14 _Print) 106.21 320.78 T
+ 12 F
+ (14: \050 | ^ parent* = <0>. | \051) 93.02 307.78 T
+ 0 F
+ (The output generated by ) 333 307.78 T
+ 20 F
+ (_Print) 432.92 307.78 T
+ 12 F
+ (.) 468.9 307.78 T
+ (nil <1>: \050 | ^ parent* = lobby. | \051) 93.02 294.78 T
+ 0 F
+ (The result of ) 333 294.78 T
+ 20 F
+ (_Print ) 386.57 294.78 T
+ 0 F
+ (is printed by the ) 428.55 294.78 T
+ (read-eval-print loop by sending) 342 281.78 T
+ 20 F
+ ( _Print) 467.74 281.78 T
+ 0 F
+ (.) 509.72 281.78 T
+ 12 F
+ (>) 93.02 262.78 T
+ 4 F
+ -0.14 (The default world replaces the prede\336ned ) 71.42 237.11 P
+ 12 F
+ -0.32 (printIt) 273.05 237.11 P
+ 4 F
+ -0.14 ( with a method that attempts to print the result) 319.19 237.11 P
+ -0.41 (of ) 71.42 223.11 P
+ 12 F
+ -0.89 (doIt) 84.01 223.11 P
+ 4 F
+ -0.41 ( in an intelligent manner) 110.37 223.11 P
+ -0.41 (. It does this by invoking the ) 225.35 223.11 P
+ 3 F
+ -0.41 (name infer) 362.42 223.11 P
+ -0.41 (encer) 413.21 223.11 P
+ 4 F
+ -0.41 (, a S) 439.84 223.11 P
+ 6 F
+ -0.37 (ELF) 460.02 223.11 P
+ 4 F
+ -0.41 (-level mech-) 479.55 223.11 P
+ -0.09 (anism that asks objects to print themselves if they know how, or tries to infer a name based on the) 71.42 209.11 P
+ 0.65 (object\325s location in the world otherwise. \050The inferred name uses the ) 71.42 195.11 P
+ 3 F
+ 0.65 (path cache) 411.69 195.11 P
+ 4 F
+ 0.65 (, a S) 464.63 195.11 P
+ 6 F
+ 0.6 (ELF) 486.93 195.11 P
+ 4 F
+ 0.65 ( object) 506.46 195.11 P
+ 0.08 (that caches paths from the lobby to objects in the world; see section II-1.3 for more details.\051 Here) 71.42 181.11 P
+ (are some examples illustrating the read-eval-print loop in the default world:) 71.42 167.11 T
+ 12 F
+ (> ) 93.02 141.78 T
+ 18 F
+ (14 _Print) 106.21 141.78 T
+ 12 F
+ (14: \050 | ^ parent* = <0>. | \051) 93.02 128.78 T
+ (nil) 93.02 115.78 T
+ 0 F
+ (The read-eval-print loop now gives a \322nicer\323 output.) 324 115.78 T
+ FMENDPAGE
+ %%EndPage: "15" 20
+ %%Page: "16" 20
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-16) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 12 F
+ 0 X
+ (> ) 93.02 708.78 T
+ 18 F
+ (\0503 @ 4\051 _Print) 106.21 708.78 T
+ 12 F
+ (<29>: \050 | _ parent* = <18>. _ thisObjectPrints = true. ^ x = 3. _ ) 93.02 695.78 T
+ (x: = <-. ^ y = 4. _ y: = <-. | \051) 93.02 682.78 T
+ (nil) 93.02 669.78 T
+ (> ) 93.02 650.78 T
+ 18 F
+ (3 @ 4) 106.21 650.78 T
+ 12 F
+ (3 at 4) 93.02 637.78 T
+ 0 F
+ (The ) 323.42 637.78 T
+ 20 F
+ (printString) 341.46 637.78 T
+ 0 F
+ ( method for points is invoked.) 407.43 637.78 T
+ 12 F
+ (> ) 93.02 618.78 T
+ 18 F
+ (18 _AsObject) 106.21 618.78 T
+ 12 F
+ (traits point) 93.02 605.78 T
+ 0 F
+ (A name is inferred for this object.) 323.42 605.78 T
+ 12 F
+ (>) 93.02 586.78 T
+ 2 F
+ -0.55 (Inspecting objects. ) 71.42 561.11 P
+ 4 F
+ -0.55 (The ) 168.61 561.11 P
+ 12 F
+ -1.2 (inspect:) 189.71 561.11 P
+ 4 F
+ -0.55 ( method, de\336ned in the default world, uses the name inferencer) 242.44 561.11 P
+ 0 (to print the contents of each slot in its ar) 71.42 547.11 P
+ 0 (gument. ) 264.12 547.11 P
+ 12 F
+ 0.01 (inspect:) 306.1 547.11 P
+ 4 F
+ 0 ( also prints the de\336nitions of methods) 358.83 547.11 P
+ (contained in slots of the inspected object.) 71.42 533.11 T
+ 12 F
+ (> ) 93.02 507.78 T
+ 18 F
+ (inspect: 3 at 4) 106.21 507.78 T
+ 12 F
+ (\050 |) 93.02 494.78 T
+ (_ parent* = traits point.) 119.42 494.78 T
+ (_ thisObjectPrints = true.) 119.42 481.78 T
+ (^_ x <- 3.) 119.42 468.78 T
+ (^_ y <- 4. | \051) 119.42 455.78 T
+ (3 at 4) 93.02 442.78 T
+ 0 F
+ (The result of ) 244.42 442.78 T
+ 20 F
+ (inspect:) 297.99 442.78 T
+ 0 F
+ (, printed by the read-eval-print loop.) 345.97 442.78 T
+ 12 F
+ (> ) 93.02 417.78 T
+ 18 F
+ (inspect: traits point) 106.21 417.78 T
+ 12 F
+ (\050 |) 93.02 404.78 T
+ (_ parent* = traits pair.) 119.42 404.78 T
+ (^ printString = \050 x printString, \325@\325, y printString \051.) 119.42 391.78 T
+ (^ copyX: x Y: y = \050 \050clone x: x\051 y: y \051.) 119.42 378.78 T
+ (^ xAxisReflect = \050 copy y: y negate \051.) 119.42 365.78 T
+ (^ yAxisReflect = \050 copy x: x negate \051.) 119.42 352.78 T
+ (^ alignToGrid: s =) 119.42 339.78 T
+ (\050) 238.08 339.78 T
+ ( ) 119.42 326.78 T
+ (\050\050x / s width \051 * s width \051 @) 144 326.78 T
+ ( ) 93.02 313.78 T
+ (\050\050y / s height\051 * s height\051 \051.) 144 313.78 T
+ (^ # pt = \050 rectangle copy from: self To: pt \051. | \051) 119.42 300.78 T
+ (traits point) 93.02 287.78 T
+ 0 F
+ (The result of ) 215.42 287.78 T
+ 20 F
+ (inspect:) 268.99 287.78 T
+ 0 F
+ (, printed by the read-eval-print loop.) 316.97 287.78 T
+ 12 F
+ (>) 93.02 268.78 T
+ 10 F
+ (5.4  Debugging) 71.42 235.78 T
+ 4 F
+ 0.31 (This section covers basic information on errors, stack dumps, and the rudimentary debugging fa-) 71.42 209.11 P
+ (cilities of the current S) 71.42 195.11 T
+ 6 F
+ (ELF) 180.68 195.11 T
+ 4 F
+ ( system.) 200.22 195.11 T
+ 2 F
+ (5.4.1  Err) 71.42 163.11 T
+ (ors) 119.84 163.11 T
+ 4 F
+ -0.09 (T) 71.42 137.11 P
+ -0.09 (wo types of errors can occur during the execution of S) 77.91 137.11 P
+ 6 F
+ -0.08 (ELF) 337.52 137.11 P
+ 4 F
+ -0.09 ( programs. The \336rst category is ) 357.06 137.11 P
+ 3 F
+ -0.09 (primi-) 509.44 137.11 P
+ -0.27 (tive failur) 71.42 123.11 P
+ -0.27 (es) 117.69 123.11 P
+ 4 F
+ -0.27 (. Primitive failures occur when a primitive cannot perform the requested operation, for) 127.68 123.11 P
+ -0.04 (example, because of invalid ar) 71.42 109.11 P
+ -0.04 (guments. Appendix F describes how primitive failures are handled.) 217.27 109.11 P
+ 0.67 (The second category is ) 71.42 83.11 P
+ 3 F
+ 0.67 (lookup err) 187.36 83.11 P
+ 0.67 (ors) 237.89 83.11 P
+ 4 F
+ 0.67 (. For example, a message could be sent to an object which) 253.22 83.11 P
+ 0.09 (doesn\325) 71.42 69.11 P
+ 0.09 (t understand that particular message. In such a case, the system sends a message indicating) 103.18 69.11 P
+ FMENDPAGE
+ %%EndPage: "16" 21
+ %%Page: "17" 21
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-17) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ -0.26 (the error situation to that object. For most objects \050which inherit from the lobby and the default er-) 71.42 708.11 P
+ 0.8 (ror handling object\051 this will result in an error report and a stack dump to be displayed \050see the) 71.42 694.11 P
+ 0.17 (S) 71.42 680.11 P
+ 6 F
+ 0.16 (ELF) 78.09 680.11 P
+ 4 F
+ 0.17 ( W) 97.63 680.11 P
+ 0.17 (orld manual\051. However) 111.16 680.11 P
+ 0.17 (, every object can handle these errors in its own way) 222.59 680.11 P
+ 0.17 (. If the object) 474.97 680.11 P
+ 0.07 (does not understand the lookup error) 71.42 666.11 P
+ 0.07 (, the system will force a stack trace and return to the prompt.) 247.49 666.11 P
+ (A typical error situation is shown in section I-5.4.3. For details, see Appendix A.) 71.42 652.11 T
+ -0.1 (The system will display a stack trace and abort the program if it runs out of stack space \050too much) 71.42 626.11 P
+ 1.22 (recursion\051 or if a block is invoked whose lexically-enclosing scope has already returned \050a so-) 71.42 612.11 P
+ -0.26 (called non-lifo block; see the S) 71.42 598.11 P
+ 6 F
+ -0.24 (ELF) 219.02 598.11 P
+ 4 F
+ -0.26 ( Language Reference Manual\051. Currently) 238.55 598.11 P
+ -0.26 (, these two errors can-) 434.23 598.11 P
+ (not be handled at the S) 71.42 584.11 T
+ 6 F
+ (ELF) 181.02 584.11 T
+ 4 F
+ ( level.) 200.55 584.11 T
+ 2 F
+ (5.4.2  Fatal err) 71.42 552.11 T
+ (ors) 146.82 552.11 T
+ 4 F
+ -0.03 (If the VM detects a fatal error \050e.g. a built-in hard limit is exceeded, or an internal error occurs\051, a) 71.42 526.11 P
+ (short menu is displayed:) 71.42 512.11 T
+ 12 F
+ (Internal error: signal 11 code 3 addr 4 pc 0x1ac768.) 93.02 486.78 T
+ (Do you want to:) 93.02 460.78 T
+ ( 1\051 Quit Self) 93.02 447.78 T
+ ( 2\051 Try to print the Self stack) 93.02 434.78 T
+ ( 3\051 Try to return to the Self prompt) 93.02 421.78 T
+ ( 4\051 Force a core dump) 93.02 408.78 T
+ (Your choice:) 93.02 395.78 T
+ 4 F
+ 0.12 (Attempting to print the S) 71.42 370.11 P
+ 6 F
+ 0.1 (ELF) 191.83 370.11 P
+ 4 F
+ 0.12 ( stack may provide more information about the problem but will not) 211.36 370.11 P
+ 0.03 (work in all situations. Attempting to return to the S) 71.42 356.11 P
+ 6 F
+ 0.02 (ELF) 316.86 356.11 P
+ 4 F
+ 0.03 ( prompt will usually be successful, though) 336.39 356.11 P
+ 0.09 (the system integrity may have been compromised if the memory system was corrupted as a result) 71.42 342.11 P
+ 0.17 (of the fatal error \050the primitive ) 71.42 328.11 P
+ 12 F
+ 0.37 (_Verify) 222.31 328.11 P
+ 4 F
+ 0.17 ( can be used to verify VM integrity; see T) 268.45 328.11 P
+ 0.17 (able 18 in Ap-) 469.97 328.11 P
+ (pendix F\051.) 71.42 314.11 T
+ (See section I-2.5 for information on where to send bug reports.) 71.42 288.11 T
+ 2 F
+ (5.4.3  Stack dumps) 71.42 256.11 T
+ 4 F
+ -0.28 (Since there is no debugger in the S) 71.42 230.11 P
+ 6 F
+ -0.25 (ELF) 236.36 230.11 P
+ 4 F
+ -0.28 ( system, the best thing to do when an error occurs is to print) 255.9 230.11 P
+ -0.31 (a stack trace. This is normally done explicitly \050e.g. in the S) 71.42 216.11 P
+ 6 F
+ -0.28 (ELF) 350.54 216.11 P
+ 4 F
+ -0.31 ( code handling lookup errors\051 using) 370.07 216.11 P
+ -0.29 (the ) 71.42 202.11 P
+ 12 F
+ -0.64 (_PrintProcessStack) 88.79 202.11 P
+ 4 F
+ -0.29 ( primitive, but in a few cases \050see Appendix A\051 the virtual machine it-) 207.44 202.11 P
+ (self prints the stack.) 71.42 188.11 T
+ -0.14 (Let\325) 71.42 162.11 P
+ -0.14 (s provoke a lookup error by sending ) 90.75 162.11 P
+ 12 F
+ -0.3 (glmpf) 266 162.11 P
+ 4 F
+ -0.14 ( to the lobby \050in the default world, ) 298.96 162.11 P
+ 12 F
+ -0.3 (glmpf) 465.43 162.11 P
+ 4 F
+ -0.14 ( is unde-) 498.39 162.11 P
+ (\336ned\051. This will produce the following:) 71.42 148.11 T
+ 12 F
+ (> ) 93.02 122.78 T
+ 18 F
+ (glmpf) 106.21 122.78 T
+ 12 F
+ (Message not understood) 93.02 103.78 T
+ (#0 \050process:24\051: stackTrace = \050 | _ self* = <10>. | ) 93.02 84.78 T
+ (_PrintProcessStack \051) 93.02 71.78 T
+ FMENDPAGE
+ %%EndPage: "17" 22
+ %%Page: "18" 22
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-18) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ (\050some lines omitted here for brevity\051) 93.02 708.78 T
+ 12 F
+ (#5 glmpf = \050 | _ self* = lobby. | ... \051) 93.02 689.78 T
+ (#6 \050<stdin>:1\051: doIt = \050 | _ self* = lobby. | glmpf\051) 93.02 670.78 T
+ (#7 \050printIt:8\051: \050...\051 = \050 reflect: doIt\051) 93.02 651.78 T
+ (#8 \050printIt:8\051: printIt = \050 | _ self* = lobby. | \050reflect: doIt\051 ) 93.02 632.78 T
+ (name printLine. self \051) 93.02 619.78 T
+ (Message not understood) 93.02 600.78 T
+ (Message type: implicitSelf) 179.42 587.78 T
+ (Receiver: <14>: lobby) 179.42 574.78 T
+ (Selector: \324glmpf\324) 179.42 561.78 T
+ (MethodHolder: <14>: lobby) 179.42 548.78 T
+ (>) 93.02 529.78 T
+ 0 F
+ 0.18 (If you try this on your system, you should get something very similar to the above except for some lines which have) 71.42 508.45 P
+ (been omitted here. The last ten lines or so should look the same, except for the actual reference numbers.) 71.42 496.45 T
+ 4 F
+ -0.11 (The lines of frame ) 71.42 471.11 P
+ 12 F
+ -0.25 (#8) 162.23 471.11 P
+ 4 F
+ -0.11 ( represent the top-level activation record \050the one called by the system\051. The) 175.41 471.11 P
+ (individual parts of that line are:) 71.42 457.11 T
+ (\245) 71.42 437.11 T
+ 12 F
+ (#8) 84.96 437.11 T
+ 4 F
+ 3.12 (the number of the frame. ) 143.42 437.11 P
+ 12 F
+ 6.87 (#0) 280.95 437.11 P
+ 4 F
+ 3.12 ( is the youngest frame, i.e. the one that called) 294.13 437.11 P
+ 12 F
+ 0.71 (_PrintProcessStack) 143.42 423.11 P
+ 4 F
+ 0.32 (; its frame is the first frame printed. The frames are num-) 262.08 423.11 P
+ -0.17 (bered for convenience; the number of the last frame indicates the stack depth at the) 143.42 409.11 P
+ (time of the error. ) 143.42 395.11 T
+ (\245) 71.42 375.11 T
+ 12 F
+ (\050printIt:8\051) 84.96 375.11 T
+ 4 F
+ 0.09 (The file name and line number of the source file where this method is defined \050the) 143.42 361.11 P
+ 0.94 (method in our example is defined in \322printIt.self\323 whose definition starts on line) 143.42 347.11 P
+ (8\051.) 143.42 333.11 T
+ (\245) 71.42 313.11 T
+ 12 F
+ (printIt) 84.96 313.11 T
+ 4 F
+ 1.3 (The method\325s selector \050name\051. ) 143.42 313.11 P
+ 12 F
+ 2.87 (\050...\051) 298.18 313.11 P
+ 4 F
+ 1.3 ( as in frame #7 indicates an inner method) 331.14 313.11 P
+ (\050parenthetical expression\051.) 143.42 299.11 T
+ (\245) 71.42 279.11 T
+ 12 F
+ (| _ self* = lobby. | ) 84.96 279.11 T
+ 4 F
+ 1 (The current values of the arguments and local slots in the activation record. The) 143.42 265.11 P
+ 1.12 (example method has only one slot called ) 143.42 251.11 P
+ 12 F
+ 2.45 (self) 349.45 251.11 P
+ 4 F
+ 1.12 ( denoting implicit self. If a slot\325s) 375.81 251.11 P
+ 0.61 (current value differs from its initial value, the initial value is displayed as a com-) 143.42 237.11 P
+ 0.33 (ment \050enclosed in double quotes\051 after the current value. Assignment slots are not) 143.42 223.11 P
+ (displayed.) 143.42 209.11 T
+ (For example, in the stack dump generated by) 143.42 191.11 T
+ 12 F
+ -0.18 (foo = \050 | a. b <- 3. c = 1. | b: 0. _PrintProcessStack\051) 179.42 177.11 P
+ (foo) 143.42 163.11 T
+ 4 F
+ (\325) 163.2 163.11 T
+ (s activation record might look like this:) 166.53 163.11 T
+ 12 F
+ (| _ self* = lobby. a = nil. b = 0 "3". c = 1. |) 179.42 149.11 T
+ 4 F
+ (\245) 71.42 129.11 T
+ 12 F
+ (\050reflect: doIt\051 name printLine. self) 84.96 129.11 T
+ 4 F
+ 0.9 (This is the source code of the method as it appears in the file \050or as typed at the) 143.42 115.11 P
+ 0.64 (prompt\051. Ellipses \050\324...\325 as in frame #5\051 indicate that there is no source code avail-) 143.42 101.11 P
+ (able \050the method wasn\325t found, thus causing the error\051.) 143.42 87.11 T
+ FMENDPAGE
+ %%EndPage: "18" 23
+ %%Page: "19" 23
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-19) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 0.02 (The last few lines before the next prompt are not part of the stack trace; they make up an error re-) 71.42 708.11 P
+ (port generated by the error handler in the default world:) 71.42 694.11 T
+ 12 F
+ (Message not understood) 93.02 668.78 T
+ (Message type: implicitSelf) 143.42 655.78 T
+ (Receiver: <14>: lobby) 143.42 642.78 T
+ (Selector: \324glmpf\324) 143.42 629.78 T
+ (MethodHolder: <14>: lobby) 143.42 616.78 T
+ (>) 93.02 603.78 T
+ 4 F
+ 0.54 (The \336rst line describes the particular problem \050\322message not understood\323\051. The follow lines dis-) 71.42 578.11 P
+ -0.13 (play details of the failed message: the receiver \050in our example: the ) 71.42 564.11 P
+ 12 F
+ -0.28 (lobby) 394.96 564.11 P
+ 4 F
+ -0.13 (\051, the selector \050) 427.92 564.11 P
+ 12 F
+ -0.28 (glmpf) 499.47 564.11 P
+ 4 F
+ -0.13 (\051,) 532.43 564.11 P
+ 0.17 (and the method holder) 71.42 550.11 P
+ 0 F
+ 0.14 (\240) 179.51 554.91 P
+ 4 F
+ 0.17 ( \050the ) 184.51 550.11 P
+ 12 F
+ 0.36 (lobby) 209.49 550.11 P
+ 4 F
+ 0.17 (\051. If the message has ar) 242.45 550.11 P
+ 0.17 (guments, an array containing the ar) 353.62 550.11 P
+ 0.17 (gu-) 523.44 550.11 P
+ -0.02 (ments also is printed. For directed resends and delegated performs, an additional line would show) 71.42 536.11 P
+ -0.37 (the name of the parent slot directed through or the delegatee. This error report was generated by an) 71.42 522.11 P
+ (ordinary S) 71.42 508.11 T
+ 6 F
+ (ELF) 121.72 508.11 T
+ 4 F
+ ( method.) 141.26 508.11 T
+ -0.49 (After you typed in ) 71.42 482.11 P
+ 12 F
+ -1.07 (glmpf) 160.74 482.11 P
+ 4 F
+ -0.49 (, the system called ) 193.7 482.11 P
+ 12 F
+ -1.07 (printIt) 283.36 482.11 P
+ 4 F
+ -0.49 ( \050frame #8\051 which has a nested inner method) 329.5 482.11 P
+ -0.2 (\050parenthetical expression\051 \050#7\051 which called ) 71.42 468.11 P
+ 12 F
+ -0.45 (doIt) 284.56 468.11 P
+ 4 F
+ -0.2 ( \050#6\051 which called ) 310.92 468.11 P
+ 12 F
+ -0.45 (glmpf) 400.04 468.11 P
+ 4 F
+ -0.2 ( \050#5\051 which was unde-) 432.99 468.11 P
+ 3.85 (\336ned. Therefore, the VM sent ) 71.42 454.11 P
+ 12 F
+ 8.45 (undefinedSelector:Type:Delegatee:Method) 236.2 454.11 P
+ 8.45 (Hol) 493.28 454.11 P
+ 8.45 (der:) 513.06 454.11 P
+ 0.98 (Argu) 71.42 440.11 P
+ 0.98 (ments:) 97.79 440.11 P
+ 4 F
+ 0.45 ( \050#4, see Appendix A\051 to the object that didn\325) 137.34 440.11 P
+ 0.45 (t understand ) 358.99 440.11 P
+ 12 F
+ 0.98 (glmpf) 421.84 440.11 P
+ 4 F
+ 0.45 ( \050the lobby\051. This) 454.8 440.11 P
+ 8.89 (method sent ) 71.42 426.11 P
+ 12 F
+ 19.55 (lookupError:Selector:Type:Delegatee:Method) 150.51 426.11 P
+ 19.55 (Holder:Arguments:) 427.36 426.11 P
+ 4 F
+ 1.75 (\050#3, #2, #1\051 which called ) 71.42 412.11 P
+ 12 F
+ 3.86 (stackTrace) 203.1 412.11 P
+ 4 F
+ 1.75 ( \050#0\051 which \336nally called the ) 269.02 412.11 P
+ 12 F
+ 3.86 (_PrintProcessStack) 420.77 412.11 P
+ 4 F
+ -0.42 (primitive, printing the stack trace. After the stack trace, the error handling method printed the error) 71.42 398.11 P
+ (report and aborted the running S) 71.42 384.11 T
+ 6 F
+ (ELF) 226.98 384.11 T
+ 4 F
+ ( program, returning to the prompt.) 246.51 384.11 T
+ -0.49 (The ) 71.42 358.11 P
+ 12 F
+ -1.07 (_StackPrintLimit:) 92.59 358.11 P
+ 4 F
+ -0.49 ( primitive controls how much of the stack is to be printed. The receiver) 204.65 358.11 P
+ 0.2 (of ) 71.42 344.11 P
+ 12 F
+ 0.45 (_StackPrintLimit:) 84.62 344.11 P
+ 4 F
+ 0.2 ( determines how many frames from the top and the bottom of the stack) 196.68 344.11 P
+ 1.52 (to printed on a stack trace. For example, ) 71.42 330.11 P
+ 12 F
+ 3.35 (_StackPrintLimit: 10) 279.46 330.11 P
+ 4 F
+ 1.52 ( will cause ) 414.64 330.11 P
+ 12 F
+ 3.35 (_PrintPro-) 473.51 330.11 P
+ -0.94 (cessStack) 71.42 316.11 P
+ 4 F
+ -0.43 ( to print only the \336rst 10 and the last 10 activation records; if the stack nesting is great-) 130.75 316.11 P
+ (er than 20, the activation records in the middle are skipped. The default limit is 10.) 71.42 302.11 T
+ 2 F
+ (5.4.4  Interrupting a S) 71.42 270.11 T
+ 5 F
+ (ELF) 184.7 270.11 T
+ 2 F
+ ( pr) 206.07 270.11 T
+ (ogram) 220.85 270.11 T
+ 4 F
+ 0.43 (Pressing ) 71.42 244.11 P
+ 12 F
+ 0.94 (^C) 115.49 244.11 P
+ 4 F
+ 0.43 ( \050control-C\051 at any time interrupts a program. If the current process is the initial pro-) 128.68 244.11 P
+ 0.11 (cess, a stack trace will be displayed and the process will be aborted \050S) 71.42 230.11 P
+ 6 F
+ 0.1 (ELF) 408.54 230.11 P
+ 4 F
+ 0.11 ( returns to the prompt\051.) 428.07 230.11 P
+ 1.98 (Otherwise, the current process will be interrupted and control will return to the caller of the) 71.42 216.11 P
+ 12 F
+ (_TWAINS) 71.42 202.11 T
+ 4 F
+ ( primitive \050see T) 117.57 202.11 T
+ (able 16 on page 43\051, indicating a \324sigint\325 signal.) 196.34 202.11 T
+ 0 F
+ -0.12 (Certain VM operations like garbage collection and compilation cannot be interrupted; the S) 71.42 180.45 P
+ 1 F
+ -0.11 (ELF) 435.82 180.45 P
+ 0 F
+ -0.12 ( process is interrupted) 451.8 180.45 P
+ (once these VM operations complete.) 71.42 168.45 T
+ 71.42 80.44 539.42 100.53 C
+ 71.42 88.43 203.4 88.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ -0.06 (\240  ) 71.42 77.77 P
+ 0 F
+ -0.07 (The method holder is the object whose slot contains the method that sent the message \050see the S) 79.3 73.77 P
+ 1 F
+ -0.07 (ELF) 461.42 73.77 P
+ 0 F
+ -0.07 ( Language Ref-) 477.4 73.77 P
+ (erence Manual for details\051.) 71.42 62.77 T
+ FMENDPAGE
+ %%EndPage: "19" 24
+ %%Page: "20" 24
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-20) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 2 F
+ 0 X
+ (5.4.5  T) 71.42 708.11 T
+ (racing) 108.52 708.11 T
+ 4 F
+ -0.11 (The system contains a rudimentary mechanism to trace the execution of a S) 71.42 682.11 P
+ 6 F
+ -0.1 (ELF) 432.5 682.11 P
+ 4 F
+ -0.11 ( program, printing) 452.03 682.11 P
+ 0.22 (a line for every non-inlined, non-inline-cached message send \050that is, for every send that actually) 71.42 668.11 P
+ 0.57 (requires a lookup at run-time\051. T) 71.42 654.11 P
+ 0.57 (racing is activated by sending the debugging primitive message) 230.4 654.11 P
+ 12 F
+ -1.3 (_Trace: true) 71.42 640.11 P
+ 4 F
+ -0.59 (. Because tracing generates a lot of output, you may want to insert ) 149.22 640.11 P
+ 12 F
+ -1.3 (_Trace: true) 461.62 640.11 P
+ 4 F
+ (and ) 71.42 626.11 T
+ 12 F
+ (_Trace: false) 91.74 626.11 T
+ 4 F
+ ( statements at appropriate points in your program.) 177.43 626.11 T
+ 1.86 (In order to see more sends, turn of) 71.42 600.11 P
+ 1.86 (f inline caching) 248.73 600.11 P
+ 0 F
+ 1.55 (\240) 327.05 604.91 P
+ 4 F
+ 1.86 ( while tracing. Sending ) 332.05 600.11 P
+ 12 F
+ 4.08 (_InlineCache:) 453.73 600.11 P
+ 2.49 (false) 71.42 586.11 P
+ 4 F
+ 1.13 ( turns it of) 104.38 586.11 P
+ 1.13 (f, and following that with ) 157.21 586.11 P
+ 12 F
+ 2.49 (_FlushInlineCache) 288.13 586.11 P
+ 4 F
+ 1.13 ( \337ushes entries that have al-) 400.19 586.11 P
+ -0.26 (ready been inline cached. T) 71.42 572.11 P
+ -0.26 (o see ) 201.74 572.11 P
+ 3 F
+ -0.26 (every) 228.53 572.11 P
+ 4 F
+ -0.26 ( send, turn of) 254.49 572.11 P
+ -0.26 (f inlining with ) 316.77 572.11 P
+ 12 F
+ -0.58 (_Inline: false) 387.62 572.11 P
+ 4 F
+ -0.26 ( followed by) 479.33 572.11 P
+ 12 F
+ (_Flush) 71.42 558.11 T
+ 4 F
+ ( to \337ush the code cache, eliminating previously inlined code.) 110.97 558.11 T
+ 0.9 (Inserting print statements and ) 71.42 532.11 P
+ 12 F
+ 1.98 (_PrintProcessStack) 220.26 532.11 P
+ 4 F
+ 0.9 ( calls into your programs is probably the) 338.92 532.11 P
+ (best way to debug in the current system.) 71.42 518.11 T
+ 10 F
+ (5.5  Scripts) 71.42 484.78 T
+ 4 F
+ -0.52 (A script is a text \336le containing a sequence of S) 71.42 458.11 P
+ 6 F
+ -0.48 (ELF) 294.7 458.11 P
+ 4 F
+ -0.52 ( expressions. The ) 314.23 458.11 P
+ 12 F
+ -1.15 (_RunScript) 399.27 458.11 P
+ 4 F
+ -0.52 ( primitive reads) 465.19 458.11 P
+ -0.12 (a script \336le and evaluates its expressions. Script \336les can be nested \050for an example see \322all.self\323\051.) 71.42 444.11 P
+ 0.44 (The receiver must be a string \050the \336le name; the suf) 71.42 430.11 P
+ 0.44 (\336x \322.self\323 may be omitted, but the actual \336le) 322.73 430.11 P
+ (name must end with \322.self\323\051.) 71.42 416.11 T
+ 1.53 (The expressions contained in the script \336le will be evaluated as if they had been typed at the) 71.42 390.11 P
+ 2.03 (prompt, e.g. unmatched parentheses are needed for multi-line expressions \050see section I-5.2\051.) 71.42 376.11 P
+ (However) 71.42 362.11 T
+ (, ) 114.9 362.11 T
+ 3 F
+ (unlike) 120.9 362.11 T
+ 4 F
+ ( typing them at the prompt, their results will not be printed. ) 150.21 362.11 T
+ (Suppose you created a text \336le called \322hello.self\323 containing these lines:) 71.42 336.11 T
+ 12 F
+ (\325hello world\325 printLine) 93.02 310.78 T
+ ("This is a comment") 93.02 297.78 T
+ (\32510 factorial is \325 print) 93.02 284.78 T
+ (10 factorial printLine) 93.02 271.78 T
+ 4 F
+ (Then this \336le can be read in \050\322run\323\051 with the ) 71.42 246.11 T
+ 12 F
+ (_RunScript) 287.26 246.11 T
+ 4 F
+ ( primitive:) 353.17 246.11 T
+ 12 F
+ (> ) 93.02 220.78 T
+ 18 F
+ (\325hello\325 _RunScript) 106.21 220.78 T
+ 12 F
+ (hello world) 93.02 207.78 T
+ (10 factorial is 3628800) 93.02 194.78 T
+ (>) 93.02 175.78 T
+ 0 F
+ 0.1 (Do not use ) 71.42 154.45 P
+ 12 F
+ 0.26 (_RunScript) 117.52 154.45 P
+ 0 F
+ 0.1 ( in programs; when the VM \336nishes evaluation of this primitive, it returns to the prompt,) 183.44 154.45 P
+ 0.3 (so any code following a ) 71.42 142.45 P
+ 12 F
+ 0.79 (_RunScript) 170.9 142.45 P
+ 0 F
+ 0.3 ( would never be executed. Therefore, ) 236.82 142.45 P
+ 12 F
+ 0.79 (_RunScript) 390.14 142.45 P
+ 0 F
+ 0.3 ( should only be used) 456.05 142.45 P
+ 0.47 (as the last message in an expression at the prompt \050or in a script as in the \336le \322all.self\323\051. This restriction will be re-) 71.42 130.45 P
+ (moved in a future release.) 71.42 118.45 T
+ 71.42 69.44 539.42 89.53 C
+ 71.42 77.43 203.4 77.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ (\240  ) 71.42 66.77 T
+ 0 F
+ (See T) 79.42 62.77 T
+ (able 18 in Appendix F.) 101.76 62.77 T
+ FMENDPAGE
+ %%EndPage: "20" 25
+ %%Page: "21" 25
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-21) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 10 F
+ 0 X
+ (5.6  Editing objects) 71.42 706.78 T
+ 4 F
+ 0.14 (This section explains how to change objects by adding, rede\336ning, and removing slots. These are) 71.42 680.11 P
+ 0.2 (the basic programming tasks in S) 71.42 666.11 P
+ 6 F
+ 0.18 (ELF) 232 666.11 P
+ 4 F
+ 0.2 (. They are accomplished using the primitives ) 250.58 666.11 P
+ 12 F
+ 0.44 (_AddSlots:) 470.51 666.11 P
+ 4 F
+ 0.2 (,) 536.42 666.11 P
+ 12 F
+ (_AddSlotsIfAbsent:) 71.42 652.11 T
+ 4 F
+ (, ) 190.08 652.11 T
+ 12 F
+ (_Define:) 196.07 652.11 T
+ 4 F
+ (, and ) 248.81 652.11 T
+ 12 F
+ (_RemoveSlot:) 275.12 652.11 T
+ 4 F
+ (.) 354.22 652.11 T
+ 0 F
+ -0.13 (The) 71.42 626.11 P
+ -0.13 ( ) 86.97 626.11 P
+ -0.13 (programming primitives ) 89.33 626.11 P
+ -0.13 (always return you to the prompt. They cannot be used within a S) 189.01 626.11 P
+ 1 F
+ -0.12 (ELF) 445.86 626.11 P
+ 0 F
+ -0.13 ( program \050any code) 461.83 626.11 P
+ (following them would never be executed\051. This restriction will be removed in a future release.) 71.42 612.11 T
+ -0.19 (The current implementation does not allow integers, floats, canonical strings, immutable strings, byte code objects, or) 71.42 590.45 P
+ (blocks as the receiver of or argument to the programming primitives. Of course, their parent objects may be used.) 71.42 578.45 T
+ 2 F
+ (5.6.1  Adding slots) 71.42 547.11 T
+ 4 F
+ 0.05 (The ) 71.42 521.11 P
+ 12 F
+ 0.12 (_AddSlots:) 93.12 521.11 P
+ 4 F
+ 0.05 ( primitive adds all of the ar) 159.04 521.11 P
+ 0.05 (gument\325) 289.05 521.11 P
+ 0.05 (s slots to the receiver) 328.37 521.11 P
+ 0.05 (. \050The ar) 429.18 521.11 P
+ 0.05 (gument is typ-) 470.02 521.11 P
+ -0.1 (ically an object literal.\051 If a slot already exists, ) 71.42 507.11 P
+ 12 F
+ -0.21 (_AddSlots:) 296.06 507.11 P
+ 4 F
+ -0.1 ( just assigns it a new value. In partic-) 361.98 507.11 P
+ (ular) 71.42 493.11 T
+ (, read-only slots can be changed in this way) 89.59 493.11 T
+ (. Other slots in the receiver remain unchanged.) 298.33 493.11 T
+ (Examples:) 71.42 467.11 T
+ 12 F
+ (> ) 93.02 441.78 T
+ 18 F
+ (_AddSlots: \050 | x = \050\051 | \051) 106.21 441.78 T
+ 0 F
+ (Add a slot called x to the lobby, containing) 323.42 441.78 T
+ (an empty object.) 332.42 428.78 T
+ 12 F
+ (> ) 93.02 409.78 T
+ 18 F
+ (x _Print) 106.21 409.78 T
+ 12 F
+ (<37>: \050 \051) 93.02 396.78 T
+ (nil) 93.02 383.78 T
+ (> ) 93.02 364.78 T
+ 18 F
+ (x _AddSlots: \050 |) 106.21 364.78 T
+ (a <- 17.8.) 116.42 351.78 T
+ 0 F
+ (An assignable slot initialized to 17.8.) 323.42 351.78 T
+ 18 F
+ (b.) 116.42 338.78 T
+ 0 F
+ (An assignable slot initialized to nil.) 323.42 338.78 T
+ 18 F
+ (c = 3.) 116.42 325.78 T
+ 0 F
+ (A constant slot.) 323.42 325.78 T
+ 18 F
+ (hello = \050 \325hello\325 print \051.) 116.42 312.78 T
+ 0 F
+ (A method.) 323.42 312.78 T
+ 18 F
+ (q = \050 | a. b <- \325b\325 | \051.) 116.42 299.78 T
+ 0 F
+ (Another object with slots.) 323.42 299.78 T
+ 18 F
+ (^_ p <- nil. ) 116.42 286.78 T
+ 0 F
+ (A public data slot with private assignment slot \050all) 323.42 286.78 T
+ 18 F
+ (| \051) 93.02 273.78 T
+ 6 F
+ ( ) 112.8 273.78 T
+ 0 F
+ (other slots in this example are \322undeclared\323 by) 332.42 273.78 T
+ (default, with public semantics\051.) 332.42 260.78 T
+ 12 F
+ (> ) 93.02 241.78 T
+ 18 F
+ (inspect: x) 106.21 241.78 T
+ 12 F
+ (\050 |) 93.02 228.78 T
+ (a <- 17.8.) 132.49 228.78 T
+ ( ) 93.02 215.78 T
+ (b <- nil.) 132.49 215.78 T
+ ( ) 93.02 202.78 T
+ (c = 3.) 132.49 202.78 T
+ ( ) 93.02 189.78 T
+ (hello = \050 \325hello\325 print \051.) 132.49 189.78 T
+ ( ) 93.02 176.78 T
+ (q = <an object>.) 132.49 176.78 T
+ (^_ p <- nil. | \051) 118.67 163.78 T
+ (x) 93.02 150.78 T
+ (>) 93.02 131.78 T
+ 4 F
+ -0.38 (There must be periods between slot de\336nitions. If the period after slot ) 71.42 106.11 P
+ 12 F
+ -0.82 (hello) 404.36 106.11 P
+ 4 F
+ -0.38 ( is omitted, for exam-) 437.32 106.11 P
+ 0.32 (ple, S) 71.42 92.11 P
+ 6 F
+ 0.29 (ELF) 99.07 92.11 P
+ 4 F
+ 0.32 ( will send the ) 118.6 92.11 P
+ 12 F
+ 0.7 (q) 187.18 92.11 P
+ 4 F
+ 0.32 ( message to the parenthetical expression ) 193.77 92.11 P
+ 12 F
+ 0.7 (\050\325hello\325 print\051) 391.55 92.11 P
+ 4 F
+ 0.32 (, resulting) 491.13 92.11 P
+ (in an \322unde\336ned selector\323 error \050see Appendix A\051.) 71.42 78.11 T
+ FMENDPAGE
+ %%EndPage: "21" 26
+ %%Page: "22" 26
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-22) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 0.02 (If a slot with the same name already exists in the receiver) 71.42 708.11 P
+ 0.02 (, the slot is rede\336ned to point to the new) 346.66 708.11 P
+ -0.17 (object; other references to the original object are unchanged. If the old slot was assignable and the) 71.42 694.11 P
+ (new slot isn\325) 71.42 680.11 T
+ (t, the assignment slot is removed:) 132.51 680.11 T
+ 12 F
+ (> ) 93.02 654.78 T
+ 18 F
+ (_AddSlots: \050 | referenceToA = x a | \051) 106.21 654.78 T
+ 0 F
+ (Use ) 395.42 654.78 T
+ 20 F
+ (x) 413.46 654.78 T
+ 0 F
+ ( from previous example.) 419.46 654.78 T
+ 12 F
+ (> ) 93.02 635.78 T
+ 18 F
+ (x _AddSlots: \050 | a = \325new a\325 | \051) 106.21 635.78 T
+ 12 F
+ (> ) 93.02 616.78 T
+ 18 F
+ (x _Print) 106.21 616.78 T
+ 12 F
+ (<37>: \050 | b = nil. c = 3. hello = <a method>. q = <38>. ^ p = nil.) 93.02 603.78 T
+ (b: = <-. _ p: = <-. a = \325new a\325. | \051) 93.02 590.78 T
+ 0 F
+ (The ) 395.42 590.78 T
+ 20 F
+ (a:) 413.46 590.78 T
+ 0 F
+ ( slot has also been) 425.46 590.78 T
+ (removed.) 405 577.78 T
+ 12 F
+ (nil) 93.02 564.78 T
+ (> ) 93.02 545.78 T
+ 18 F
+ (referenceToA _Print ) 106.21 545.78 T
+ 12 F
+ (17.8: \050 | ^ parent* <2>. | \051) 93.02 532.78 T
+ 0 F
+ (The old object is still there.) 395.42 532.78 T
+ 12 F
+ (nil) 93.02 519.78 T
+ (>) 93.02 500.78 T
+ 2 F
+ (5.6.2  Removing slots) 71.42 469.11 T
+ 4 F
+ 0.29 (The ) 71.42 443.11 P
+ 12 F
+ 0.64 (_RemoveSlot:) 93.36 443.11 P
+ 4 F
+ 0.29 ( primitive removes a single slot from the receiver; the ar) 172.46 443.11 P
+ 0.29 (gument is the name) 444.95 443.11 P
+ (of the slot to remove. If the slot has a corresponding assignment slot, it is removed as well. ) 71.42 429.11 T
+ (Example:) 71.42 403.11 T
+ 12 F
+ (> ) 93.02 377.78 T
+ 18 F
+ (_AddSlots: \050 | p = 3 at 4 | \051) 106.21 377.78 T
+ 0 F
+ (Create a point named ) 395.42 377.78 T
+ 20 F
+ (p) 483.14 377.78 T
+ 0 F
+ (.) 489.13 377.78 T
+ 12 F
+ (> ) 93.02 358.78 T
+ 18 F
+ (inspect: p) 106.21 358.78 T
+ 12 F
+ (\050 |) 93.02 345.78 T
+ (_ parent* = traits point.) 118.42 345.78 T
+ (_ thisObjectPrints = true.) 118.42 332.78 T
+ (^_ x <- 3.) 118.42 319.78 T
+ (^_ y <- 4. | \051) 118.42 306.78 T
+ (3 at 4) 93.02 293.78 T
+ (> ) 93.02 274.78 T
+ 18 F
+ (p _RemoveSlot: \325y:\325) 106.21 274.78 T
+ 0 F
+ (Remove ) 395.42 274.78 T
+ 20 F
+ (p) 431.23 274.78 T
+ 0 F
+ (\325s ) 437.23 274.78 T
+ 20 F
+ (y) 446.95 274.78 T
+ 0 F
+ (: slot.) 452.94 274.78 T
+ 12 F
+ (> ) 93.02 255.78 T
+ 18 F
+ (inspect: p) 106.21 255.78 T
+ 12 F
+ (\050 |) 93.02 242.78 T
+ (_ parent* = traits point.) 118.42 242.78 T
+ (_ thisObjectPrints = true.) 118.42 229.78 T
+ (^_ x <- 3.) 118.42 216.78 T
+ (^ y = 4. | \051) 118.42 203.78 T
+ (3 at 4) 93.02 190.78 T
+ (>) 93.02 171.78 T
+ 4 F
+ 3.65 (Primitives like ) 71.42 146.11 P
+ 12 F
+ 8.02 (_AddSlots:) 152.02 146.11 P
+ 4 F
+ 3.65 ( and ) 217.94 146.11 P
+ 12 F
+ 8.02 (_RemoveSlot:) 248.54 146.11 P
+ 4 F
+ 3.65 ( always manipulate individual objects in) 327.64 146.11 P
+ (S) 71.42 132.11 T
+ 6 F
+ (ELF) 78.09 132.11 T
+ 4 F
+ (\321the above example did not remove the ) 97.63 132.11 T
+ 12 F
+ (y) 295.82 132.11 T
+ 4 F
+ (: slot from ) 302.41 132.11 T
+ 3 F
+ (all) 355.38 132.11 T
+ 4 F
+ ( points, just from point ) 368.05 132.11 T
+ 12 F
+ (p) 480.67 132.11 T
+ 4 F
+ (.) 487.26 132.11 T
+ 2 F
+ (5.6.3  De\336ning objects) 71.42 100.11 T
+ 12 F
+ -1.22 (_AddSlots:) 71.42 74.11 P
+ 4 F
+ -0.56 ( and ) 137.34 74.11 P
+ 12 F
+ -1.22 (_RemoveSlot:) 159.54 74.11 P
+ 4 F
+ -0.56 ( change some of the slots in an object, but they do not af) 238.65 74.11 P
+ -0.56 (fect any) 501.68 74.11 P
+ -0.43 (other slots the object may have. These primitives incrementally modify objects. On the other hand,) 71.42 60.11 P
+ FMENDPAGE
+ %%EndPage: "22" 27
+ %%Page: "23" 27
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-23) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ -0.59 (a script in a \336le needs to completely de\336ne \050or rede\336ne\051 an object, so S) 71.42 708.11 P
+ 6 F
+ -0.54 (ELF) 403.96 708.11 P
+ 4 F
+ -0.59 ( provides the ) 423.49 708.11 P
+ 12 F
+ -1.29 (_Define:) 486.69 708.11 P
+ 4 F
+ 0.45 (primitive, which removes all extraneous slots. Like ) 71.42 694.11 P
+ 12 F
+ 1 (_AddSlots:) 323.44 694.11 P
+ 4 F
+ 0.45 (, the ar) 389.36 694.11 P
+ 0.45 (gument to ) 423.02 694.11 P
+ 12 F
+ 1 (_Define:) 475.24 694.11 P
+ 4 F
+ 0.45 ( is) 527.97 694.11 P
+ 0.82 (usually an object literal. ) 71.42 680.11 P
+ 12 F
+ 1.81 (_Define:) 192.97 680.11 P
+ 4 F
+ 0.82 ( \336rst removes all slots from the receiver) 245.71 680.11 P
+ 0.82 (, then adds the slots) 441.85 680.11 P
+ -0.23 (found in its ar) 71.42 666.11 P
+ -0.23 (gument to the receiver) 137.48 666.11 P
+ -0.23 (. Thus, after performing the ) 243.71 666.11 P
+ 12 F
+ -0.5 (_Define:) 378.13 666.11 P
+ 4 F
+ -0.23 ( primitive, the receiver) 430.86 666.11 P
+ -0.13 (object contains exactly the same slots with the same names, attributes, and contents as those spec-) 71.42 652.11 P
+ -0.58 (i\336ed in the primitive\325) 71.42 638.11 P
+ -0.58 (s ar) 171.3 638.11 P
+ -0.58 (gument. Like ) 187.49 638.11 P
+ 12 F
+ -1.27 (_AddSlots:) 253.29 638.11 P
+ 4 F
+ -0.58 ( and ) 319.21 638.11 P
+ 12 F
+ -1.27 (_RemoveSlot:) 341.36 638.11 P
+ 4 F
+ -0.58 (, ) 420.46 638.11 P
+ 12 F
+ -1.27 (_Define:) 425.88 638.11 P
+ 4 F
+ -0.58 ( modi\336es the) 478.61 638.11 P
+ 0.15 (receiver object in place, only af) 71.42 624.11 P
+ 0.15 (fects the single receiver object, and leaves any other references to) 223.17 624.11 P
+ (old contents of rede\336ned slots untouched.) 71.42 610.11 T
+ 12 F
+ (> ) 93.02 584.78 T
+ 18 F
+ (x _Print) 106.21 584.78 T
+ 0 F
+ (Just to show that the object x from the preceding) 342 584.78 T
+ ( ) 342 571.78 T
+ (example is still around.) 360 571.78 T
+ 12 F
+ (<37>: \050 | b = nil. c = 3. hello = <a method>. q = <4>. ^ p = nil. ) 93.02 558.78 T
+ (b: = <-. _ p: = <-. a = \325new a\325. | \051) 93.02 545.78 T
+ (nil) 93.02 532.78 T
+ (> ) 93.02 513.78 T
+ 18 F
+ (x _Define: \050 | ) 106.21 513.78 T
+ (a = 12.) 126 500.78 T
+ (j <- 2.) 126 487.78 T
+ (| \051) 93.02 474.78 T
+ 12 F
+ (> ) 93.02 455.78 T
+ 18 F
+ (x _Print) 106.21 455.78 T
+ 12 F
+ (<37>: \050 | a = 12. j = 2. j: = <-. | \051) 93.02 442.78 T
+ 0 F
+ ( Note that the object number is still the same,) 351 442.78 T
+ 12 F
+ (nil) 93.02 429.78 T
+ 0 F
+ ( ) 333 429.78 T
+ (but the slots have changed.) 360 429.78 T
+ 12 F
+ (>) 93.02 410.78 T
+ 2 F
+ (5.6.4  Pr) 71.42 379.11 T
+ (ogramming using script \336les) 113.85 379.11 T
+ 4 F
+ -0.48 (While some editing will be performed interactively) 71.42 353.11 P
+ -0.48 (, most programming will be performed by read-) 313.6 353.11 P
+ 0.04 (ing in script \336les containing object de\336nitions and programming primitives. The script \336le is read) 71.42 339.11 P
+ 0.41 (in the \336rst time to create the appropriate objects. As bugs are discovered and changes need to be) 71.42 325.11 P
+ 1.07 (made to objects, the script \336les are changed with a text editor and re-read in to install the new) 71.42 311.11 P
+ (changes.) 71.42 297.11 T
+ 0.23 (This mode of text-\336le-based programming is supported in S) 71.42 271.11 P
+ 6 F
+ 0.21 (ELF) 360.41 271.11 P
+ 4 F
+ 0.23 ( via the ) 379.94 271.11 P
+ 12 F
+ 0.5 (_Define:) 418.94 271.11 P
+ 4 F
+ 0.23 ( primitive and) 471.67 271.11 P
+ 1.63 (a special ) 71.42 257.11 P
+ 12 F
+ 3.59 (_AddSlotsIfAbsent) 119.32 257.11 P
+ 4 F
+ 1.63 (: primitive. ) 231.38 257.11 P
+ 12 F
+ 3.59 (_AddSlotsIfAbsent) 290.96 257.11 P
+ 4 F
+ 1.63 (: adds to the receiver those) 403.02 257.11 P
+ 0.37 (slots found in its ar) 71.42 243.11 P
+ 0.37 (gument that are not already in the receiver) 164.63 243.11 P
+ 0.37 (. Thus, after performing this primi-) 369.37 243.11 P
+ -0.52 (tive, the receiver may contain new slots; however) 71.42 229.11 P
+ -0.52 (, the slots that were already in the receiver are un-) 305.14 229.11 P
+ (af) 71.42 215.11 T
+ (fected. The ar) 80.53 215.11 T
+ (gument to ) 146.57 215.11 T
+ 12 F
+ (_AddSlotsIfAbsent:) 197.88 215.11 T
+ 4 F
+ ( is usually an object literal.) 316.54 215.11 T
+ -0.04 (Here is an example showing the typical use of ) 71.42 189.11 P
+ 12 F
+ -0.09 (_AddSlotsIfAbsent:) 295.24 189.11 P
+ 4 F
+ -0.04 ( and ) 413.89 189.11 P
+ 12 F
+ -0.09 (_Define:) 437.13 189.11 P
+ 4 F
+ -0.04 ( in scripts.) 489.86 189.11 P
+ (Suppose the following de\336nition of a simple point is found in the \336le \324) 71.42 175.11 T
+ (\324spoint.self) 408.69 175.11 T
+ (\325) 462.98 175.11 T
+ (\325:) 466.09 175.11 T
+ 12 F
+ (_AddSlotsIfAbsent) 93.02 149.78 T
+ 18 F
+ (: ) 205.09 149.78 T
+ 12 F
+ (\050 |) 218.27 149.78 T
+ 18 F
+ ( ) 238.04 149.78 T
+ 12 F
+ (^ pointTraits = \050\051 | \051) 244.63 149.78 T
+ 0 F
+ (Define the initial point traits.) 405 149.78 T
+ 18 F
+ ( ) 520.77 149.78 T
+ 12 F
+ (pointTraits _Define: \050 |) 93.02 136.78 T
+ (^ clone = \050 _Clone \051.) 126 123.78 T
+ (| \051) 93.02 110.78 T
+ FMENDPAGE
+ %%EndPage: "23" 28
+ 21 10 /Helvetica-Oblique FMDEFINEFONT
+ 23 11 /Helvetica FMDEFINEFONT
+ %%Page: "24" 28
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-24) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 12 F
+ 0 X
+ (_AddSlotsIfAbsent: \050 | ^ pointProto = \050\051 | \051) 93.02 708.78 T
+ 0 F
+ (Define the prototype.) 405 708.78 T
+ 12 F
+ (pointProto _Define: \050 |) 93.02 695.78 T
+ (_ parent* = pointTraits.) 126 682.78 T
+ (^ x <- 0.) 126 669.78 T
+ (^ y <- 0.) 126 656.78 T
+ (| \051) 93.02 643.78 T
+ 4 F
+ (Now the \336le can be read in and a point object can be created:) 71.42 618.11 T
+ 12 F
+ (> ) 93.02 592.78 T
+ 18 F
+ (\325spoint\325 _RunScript) 106.21 592.78 T
+ 12 F
+ (> ) 93.02 573.78 T
+ 18 F
+ (pointTraits _Print) 106.21 573.78 T
+ 0 F
+ (Just to make sure ...) 405 573.78 T
+ 12 F
+ (<5>: \050 | ^ clone = <a method>. | \051) 93.02 560.78 T
+ (nil) 93.02 547.78 T
+ (> ) 93.02 528.78 T
+ 18 F
+ (_AddSlots: \050 | p1 | \051) 106.21 528.78 T
+ 12 F
+ (> ) 93.02 509.78 T
+ 18 F
+ (p1: \050pointProto clone x: 5\051 y: 10) 106.21 509.78 T
+ 0 F
+ (Create a point object.) 405 509.78 T
+ 12 F
+ (lobby) 93.02 496.78 T
+ (> ) 93.02 477.78 T
+ 18 F
+ (p1 _Print) 106.21 477.78 T
+ 12 F
+ (<7>: \050 | _ parent* = <5>. ^ x = 5. ^ x: = <-. ^ y = 10.) 93.02 464.78 T
+ (^ y: = <-. | \051) 93.02 451.78 T
+ 0 F
+ (The ) 405 451.78 T
+ 20 F
+ (parent) 423.04 451.78 T
+ 0 F
+ ( slot points to) 459.02 451.78 T
+ 12 F
+ (nil) 93.02 438.78 T
+ 0 F
+ (the traits object.) 414 438.78 T
+ 12 F
+ (>) 93.02 419.78 T
+ 4 F
+ (The following picture illustrates the objects that have been created:) 71.42 394.11 T
+ 0.09 (The use of ) 71.42 193.95 P
+ 12 F
+ 0.19 (_AddSlotsIfAbsent:) 125.31 193.95 P
+ 4 F
+ 0.09 ( and ) 243.96 193.95 P
+ 12 F
+ 0.19 (_Define:) 267.45 193.95 P
+ 4 F
+ 0.09 ( to build objects in script \336les usually follows) 320.18 193.95 P
+ 0.6 (the above pattern. The ar) 71.42 179.95 P
+ 0.6 (gument to ) 193.17 179.95 P
+ 12 F
+ 1.32 (_AddSlotsIfAbsent:) 245.68 179.95 P
+ 4 F
+ 0.6 ( is an object literal containing a slot) 364.33 179.95 P
+ 1.16 (initialized to) 71.42 165.95 P
+ 1.16 ( an empty object. The) 132.88 165.95 P
+ 1.16 ( ) 241.77 165.95 P
+ 1.16 (succeeding ) 245.93 165.95 P
+ 12 F
+ 2.54 (_Define:) 303.37 165.95 P
+ 4 F
+ 1.16 ( modi\336es the newly-created object to) 356.1 165.95 P
+ -0.32 (contain the appropriate slots. The \336rst time the \336le is read in, the object to be de\336ned doesn\325) 71.42 151.95 P
+ -0.32 (t exist,) 507.76 151.95 P
+ 0.23 (and the ) 71.42 137.95 P
+ 12 F
+ 0.51 (_AddSlotsIfAbsent:) 109.86 137.95 P
+ 4 F
+ 0.23 ( creates a new empty object for ) 228.51 137.95 P
+ 12 F
+ 0.51 (_Define:) 383.01 137.95 P
+ 4 F
+ 0.23 ( to \336ll in. If the script) 435.75 137.95 P
+ -0.19 (\336le is read in again, the ) 71.42 123.95 P
+ 12 F
+ -0.42 (_AddSlotsIfAbsent:) 185.2 123.95 P
+ 4 F
+ -0.19 ( has no ef) 303.86 123.95 P
+ -0.19 (fect \050since the slot containing the object) 349.36 123.95 P
+ 1.65 (already exists\051 but the ) 71.42 109.95 P
+ 12 F
+ 3.63 (_Define:) 186.61 109.95 P
+ 4 F
+ 1.65 ( still edits the object in place. ) 239.35 109.95 P
+ 12 F
+ 3.63 (_Define:) 394.14 109.95 P
+ 4 F
+ 1.65 ( is used instead of) 446.88 109.95 P
+ 12 F
+ 0.06 (_AddSlots:) 71.42 95.95 P
+ 4 F
+ 0.03 ( so that unneeded slots can be removed by re-reading an edited script \336le. The com-) 137.34 95.95 P
+ 0.35 (bination of ) 71.42 81.95 P
+ 12 F
+ 0.76 (_AddSlotsIfAbsent:) 127.42 81.95 P
+ 4 F
+ 0.35 ( and ) 246.07 81.95 P
+ 12 F
+ 0.76 (_Define:) 270.08 81.95 P
+ 4 F
+ 0.35 ( is used instead of a single ) 322.82 81.95 P
+ 12 F
+ 0.76 (_AddSlots:) 454.17 81.95 P
+ 4 F
+ 0.35 ( op-) 520.09 81.95 P
+ 0.04 (eration so that the identity of the edited object is preserved when the script \336le is read in a second) 71.42 67.95 P
+ 71.42 55.44 539.42 716.11 C
+ 89.42 215.95 521.42 390.11 C
+ 89.42 215.95 521.42 390.11 R
+ 7 X
+ 0 K
+ V
+ 151.92 230.87 227.81 284.44 R
+ 3 X
+ V
+ 21 F
+ 0 X
+ (pointT) 232.27 360.51 T
+ (raits) 259.31 360.51 T
+ (pointProto) 126.57 298.01 T
+ 148.92 269.58 198.65 287.44 R
+ 7 X
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 148.92 251.73 198.65 269.58 R
+ 7 X
+ V
+ 0 X
+ N
+ 148.92 233.87 198.65 251.73 R
+ 7 X
+ V
+ 0 X
+ N
+ 23 F
+ (parent*) 156.17 275.45 T
+ (x) 171.13 257.6 T
+ (y) 171.13 239.74 T
+ 197.4 269.58 224.81 287.44 R
+ 7 X
+ V
+ 0 X
+ N
+ 197.4 251.73 224.81 269.58 R
+ 7 X
+ V
+ 0 X
+ N
+ 197.4 233.87 224.81 251.73 R
+ 7 X
+ V
+ 0 X
+ N
+ (0) 208.1 257.6 T
+ (0) 208.1 239.74 T
+ 364.73 229.41 440.62 282.98 R
+ 3 X
+ V
+ 361.73 268.12 411.46 285.98 R
+ 7 X
+ V
+ 0 X
+ N
+ 361.73 250.26 411.46 268.12 R
+ 7 X
+ V
+ 0 X
+ N
+ 361.73 232.41 411.46 250.26 R
+ 7 X
+ V
+ 0 X
+ N
+ (parent*) 368.98 273.99 T
+ (x) 383.94 256.13 T
+ (y) 383.94 238.28 T
+ 410.2 268.12 437.62 285.98 R
+ 7 X
+ V
+ 0 X
+ N
+ 410.2 250.26 437.62 268.12 R
+ 7 X
+ V
+ 0 X
+ N
+ 410.2 232.41 437.62 250.26 R
+ 7 X
+ V
+ 0 X
+ N
+ (5) 420.91 256.13 T
+ (10) 417.85 238.28 T
+ 262.06 327.62 337.94 348.47 R
+ 3 X
+ V
+ 259.06 330.62 308.79 348.47 R
+ 7 X
+ V
+ 0 X
+ N
+ (clone) 270.88 336.49 T
+ 307.53 330.62 334.94 348.47 R
+ 7 X
+ V
+ 0 X
+ N
+ (...) 316.71 336.49 T
+ 339.44 315.18 330.47 323.15 342.3 321.14 340.87 318.16 4 Y
+ V
+ 424.22 278.51 339.98 318.59 2 L
+ N
+ 265.6 319.14 276.9 323.15 269.44 313.76 267.52 316.45 4 Y
+ V
+ 209.95 275.76 268.34 317.03 2 L
+ N
+ 21 F
+ (p1) 346.15 293.55 T
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "24" 29
+ %%Page: "25" 29
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-25) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 66.96 59.9 534.96 720.58 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ -0.27 (time \050there frequently are references to the edited object that should refer to the new version of the) 66.96 712.58 P
+ (object rather than the old version\051.) 66.96 698.58 T
+ -0.44 (T) 66.96 672.58 P
+ -0.44 (o illustrate, suppose the de\336nition of the point traits in the \336le \324) 73.45 672.58 P
+ -0.44 (\324spoint.self) 370.07 672.58 P
+ -0.44 (\325) 424.37 672.58 P
+ -0.44 (\325 is changed to support) 427.47 672.58 P
+ (more behavior for simple points:) 66.96 658.58 T
+ 12 F
+ (_AddSlotsIfAbsent) 88.56 633.24 T
+ 18 F
+ (:) 200.62 633.24 T
+ 12 F
+ ( \050 |) 207.21 633.24 T
+ 18 F
+ ( ^ ) 233.58 633.24 T
+ 12 F
+ (pointTraits = \050\051 | \051) 253.35 633.24 T
+ (pointTraits _Define: \050 |) 88.56 620.24 T
+ 0 F
+ (Redefined point traits.) 400.54 620.24 T
+ 12 F
+ (^ clone = \050 _Clone \051.) 121.54 607.24 T
+ (^ print = \050 x print. \325@\325 print. y print. \051.) 121.54 594.24 T
+ (^ + p = \050 \050pointProto clone x: x + p x\051 y: y + p y \051.) 121.54 581.24 T
+ (| \051) 88.56 568.24 T
+ (_AddSlotsIfAbsent: \050 | ^ pointProto = \050\051 | \051) 88.56 549.24 T
+ 0 F
+ (Define the prototype.) 400.54 549.24 T
+ 12 F
+ (pointProto _Define: \050 |) 88.56 536.24 T
+ (_ parent* = pointTraits.) 121.54 523.24 T
+ (^ x <- 0.) 121.54 510.24 T
+ (^ y <- 0.) 121.54 497.24 T
+ (| \051) 88.56 484.24 T
+ 4 F
+ (Now let us read in the modi\336ed \336le:) 66.96 458.58 T
+ 12 F
+ (> ) 88.56 433.24 T
+ 18 F
+ (\325spoint\325 _RunScript) 101.74 433.24 T
+ 12 F
+ (>) 88.56 414.24 T
+ 4 F
+ (The changes that have resulted can be illustrated with the following picture:) 66.96 388.58 T
+ 1.43 (The edits have modi\336ed the original ) 66.96 151.29 P
+ 12 F
+ 3.16 (pointTraits) 252.13 151.29 P
+ 4 F
+ 1.43 ( object in place, instead of creating a new) 324.64 151.29 P
+ 12 F
+ -0.61 (pointTraits) 66.96 137.29 P
+ 4 F
+ -0.28 ( object. This allows the changes to apply to the existing clones of the ) 139.47 137.29 P
+ 12 F
+ -0.61 (pointProto) 469.04 137.29 P
+ 4 F
+ (object such as ) 66.96 123.29 T
+ 12 F
+ (p1) 137.24 123.29 T
+ 4 F
+ (. W) 150.43 123.29 T
+ (e can use ) 166.78 123.29 T
+ 12 F
+ (_Print:) 213.74 123.29 T
+ 4 F
+ ( to verify this:) 259.88 123.29 T
+ 66.96 59.9 534.96 720.58 C
+ 84.96 173.29 516.96 365.58 C
+ 84.96 173.29 516.96 365.58 R
+ 7 X
+ 0 K
+ V
+ 147.46 188.22 223.34 241.78 R
+ 3 X
+ V
+ 21 F
+ 0 X
+ (pointProto) 122.11 255.35 T
+ 144.46 226.93 194.19 244.78 R
+ 7 X
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 144.46 209.07 194.19 226.93 R
+ 7 X
+ V
+ 0 X
+ N
+ 144.46 191.22 194.19 209.07 R
+ 7 X
+ V
+ 0 X
+ N
+ 23 F
+ (parent*) 151.7 232.8 T
+ (x) 166.67 214.94 T
+ (y) 166.67 197.09 T
+ 192.93 226.93 220.34 244.78 R
+ 7 X
+ V
+ 0 X
+ N
+ 192.93 209.07 220.34 226.93 R
+ 7 X
+ V
+ 0 X
+ N
+ 192.93 191.22 220.34 209.07 R
+ 7 X
+ V
+ 0 X
+ N
+ (0) 203.63 214.94 T
+ (0) 203.63 197.09 T
+ 360.26 186.75 436.15 240.32 R
+ 3 X
+ V
+ 357.26 225.46 406.99 243.32 R
+ 7 X
+ V
+ 0 X
+ N
+ 357.26 207.61 406.99 225.47 R
+ 7 X
+ V
+ 0 X
+ N
+ 357.26 189.75 406.99 207.61 R
+ 7 X
+ V
+ 0 X
+ N
+ (parent*) 364.51 231.34 T
+ (x) 379.48 213.48 T
+ (y) 379.48 195.62 T
+ 405.74 225.46 433.15 243.32 R
+ 7 X
+ V
+ 0 X
+ N
+ 405.74 207.61 433.15 225.47 R
+ 7 X
+ V
+ 0 X
+ N
+ 405.74 189.75 433.15 207.61 R
+ 7 X
+ V
+ 0 X
+ N
+ (5) 416.44 213.48 T
+ (10) 413.39 195.62 T
+ 334.98 272.53 326.01 280.5 337.84 278.49 336.41 275.51 4 Y
+ V
+ 419.76 235.86 335.51 275.94 2 L
+ N
+ 269.81 277.25 281.36 280.5 273.29 271.62 271.55 274.44 4 Y
+ V
+ 203.91 233.1 272.42 274.96 2 L
+ N
+ 263.52 286.43 339.41 339.99 R
+ 3 X
+ V
+ 260.52 325.14 310.25 342.99 R
+ 7 X
+ V
+ 0 X
+ N
+ 260.52 307.28 310.25 325.14 R
+ 7 X
+ V
+ 0 X
+ N
+ 260.52 289.43 310.25 307.28 R
+ 7 X
+ V
+ 0 X
+ N
+ (clone) 272.35 331.01 T
+ (print) 274.79 313.15 T
+ (+) 282.27 295.3 T
+ 309 325.14 336.41 342.99 R
+ 7 X
+ V
+ 0 X
+ N
+ 309 307.28 336.41 325.14 R
+ 7 X
+ V
+ 0 X
+ N
+ 309 289.43 336.41 307.28 R
+ 7 X
+ V
+ 0 X
+ N
+ (...) 318.17 331.01 T
+ (...) 318.17 313.15 T
+ (...) 318.17 295.3 T
+ 21 F
+ (p1) 341.69 251.44 T
+ (pointT) 232.27 354.37 T
+ (raits) 259.31 354.37 T
+ 66.96 59.9 534.96 720.58 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "25" 30
+ 24 10 /Times-Bold FMDEFINEFONT
+ %%Page: "26" 30
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-26) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 12 F
+ 0 X
+ (> ) 93.02 708.78 T
+ 18 F
+ (pointTraits _Print) 106.21 708.78 T
+ 12 F
+ (<5>: \050 | ^ clone = <a method>. ^ print = <a method>. ^ + = <a ) 93.02 695.78 T
+ (method>. | \051) 93.02 682.78 T
+ (nil) 93.02 669.78 T
+ (> ) 93.02 650.78 T
+ 18 F
+ (p1 _Print) 106.21 650.78 T
+ 12 F
+ (<7>: \050 | _ parent* = <5>. ^ x = 5. ^ x: = <-. ^ y = 10. ^ y: = <-. ) 93.02 637.78 T
+ (| \051) 93.02 624.78 T
+ 0 F
+ (The ) 395.42 624.78 T
+ 20 F
+ (parent) 413.46 624.78 T
+ 0 F
+ ( slot still points to) 449.44 624.78 T
+ 12 F
+ (nil) 93.02 611.78 T
+ 0 F
+ ( the \050changed\051 point traits obj.) 395.42 611.78 T
+ 12 F
+ (>) 93.02 592.78 T
+ 10 F
+ (5.7  Option primitives) 71.42 559.78 T
+ 4 F
+ 1.22 (Option primitives control various aspects of the S) 71.42 533.11 P
+ 6 F
+ 1.12 (ELF) 318.14 533.11 P
+ 4 F
+ 1.22 ( system and its inner workings. Many of) 337.68 533.11 P
+ 0.2 (them are used to debug or instrument the S) 71.42 519.11 P
+ 6 F
+ 0.19 (ELF) 278.9 519.11 P
+ 4 F
+ 0.2 ( system and are probably of little interest to users.) 298.44 519.11 P
+ -0.27 (The options most useful for users are listed in T) 71.42 505.11 P
+ -0.27 (able 1; other option primitives can be found in Ap-) 297.68 505.11 P
+ -0.08 (pendix F, and a list of all option primitives and their current settings can be printed with the prim-) 71.42 491.11 P
+ (itive) 71.42 477.11 T
+ 12 F
+ ( _PrintOptionPrimitives) 92.75 477.11 T
+ 4 F
+ (.) 244.36 477.11 T
+ 71.42 432.12 539.42 440.11 C
+ 71.42 438.1 539.42 438.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 443.78 T
+ (able 1   Some useful option primitives) 77.74 443.78 T
+ 24 F
+ (Name) 71.42 421.45 T
+ (Description) 215.42 421.45 T
+ 0 F
+ (_PrintPeriod[:]) 71.42 404.45 T
+ 11 F
+ (\240) 131.39 408.45 T
+ 0 F
+ (Print a period when reading a script \336le with ) 215.42 404.45 T
+ 20 F
+ (_RunScript) 396.14 404.45 T
+ 0 F
+ (. Default: ) 456.1 404.45 T
+ 20 F
+ (false) 496.35 404.45 T
+ 0 F
+ (.) 526.33 404.45 T
+ (_PrintScriptName[:]) 71.42 388.45 T
+ (Print the \336le name when reading a script \336le. Default: ) 215.42 388.45 T
+ 20 F
+ (false) 432.77 388.45 T
+ 0 F
+ (.) 462.76 388.45 T
+ (_PrintScavenge[:]) 71.42 372.45 T
+ (Print a message at every scavenge. Default: ) 215.42 372.45 T
+ 20 F
+ (false) 391.95 372.45 T
+ 0 F
+ (.) 421.93 372.45 T
+ (_PrintGC[:]) 71.42 356.45 T
+ (Print a message at every full garbage collection. Default: ) 215.42 356.45 T
+ 20 F
+ (false) 445.25 356.45 T
+ 0 F
+ (.) 475.23 356.45 T
+ (_Spy[:]) 71.42 340.45 T
+ (Start the system monitor \050see Appendix E for details\051. Default: ) 215.42 340.45 T
+ 20 F
+ (false) 468.86 340.45 T
+ 0 F
+ (.) 498.85 340.45 T
+ (_StackPrintLimit[:]) 71.42 324.45 T
+ 0.5 (Controls the number of stack frames printed by ) 215.42 324.45 P
+ 20 F
+ 1.21 (_PrintProcessStack) 411 324.45 P
+ 0 F
+ 0.5 (. De-) 518.94 324.45 P
+ (fault: ) 215.42 312.45 T
+ 20 F
+ (10) 239.02 312.45 T
+ 0 F
+ (.) 251.01 312.45 T
+ (_V) 71.42 296.45 T
+ (ectorPrintLimit[:]) 82.53 296.45 T
+ (Controls the number of vector elements printed by ) 215.42 296.45 T
+ 20 F
+ (_Print) 419.73 296.45 T
+ 0 F
+ (. Default: ) 455.71 296.45 T
+ 20 F
+ (20) 495.96 296.45 T
+ 0 F
+ (.) 507.95 296.45 T
+ (_HistoryLength[:]) 71.42 280.45 T
+ 1.28 (Controls the number of object references remembered by the system. Default:) 215.42 280.45 P
+ 20 F
+ (1000) 215.42 268.45 T
+ 0 F
+ (.) 239.41 268.45 T
+ (_SourceDir[:]) 71.42 252.45 T
+ (The default directory for script \336les.) 215.42 252.45 T
+ 4 F
+ -0.17 (Each option primitive controls a variable within the virtual machine containing a boolean, integer) 71.42 227.12 P
+ -0.17 (,) 536.42 227.12 P
+ 0.67 (or string \050in fact, the option primitives can be thought of as \322primitive variables\323\051. Invoking the) 71.42 213.12 P
+ 0.12 (version of the primitive that doesn\325) 71.42 199.12 P
+ 0.12 (t take an ar) 240.68 199.12 P
+ 0.12 (gument returns the current setting; invoking it with) 293.76 199.12 P
+ (an ar) 71.42 185.12 T
+ (gument sets the variable to the new value and returns the old value.) 94.85 185.12 T
+ 0.02 (If you are at the console of your workstation, try running the system monitor with ) 71.42 159.12 P
+ 12 F
+ 0.05 (_Spy: true.) 466.86 159.12 P
+ 4 F
+ 1.08 (The system monitor will continuously display various information about the system\325) 71.42 145.12 P
+ 1.08 (s activities) 487.37 145.12 P
+ (and your memory usage.) 71.42 131.12 T
+ 71.42 80.44 539.42 100.53 C
+ 71.42 88.43 203.4 88.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ 0.04 (\240  ) 71.42 77.77 P
+ 0 F
+ 0.05 (The bracketed colon indicates that the ar) 79.51 73.77 P
+ 0.05 (gument is optional \050i.e., there are two versions of the primitive, one taking) 241.74 73.77 P
+ (an ar) 71.42 62.77 T
+ (gument and one not taking an ar) 90.94 62.77 T
+ (gument\051. The bracket is not part of the primitive name. See text for details.) 219.56 62.77 T
+ FMENDPAGE
+ %%EndPage: "26" 31
+ %%Page: "27" 31
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-27) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Using SELF) 489.72 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ -0.15 (Caution: the system monitor always writes to /dev/fb, the default frame buf) 71.42 709.45 P
+ -0.15 (fer which usually is the workstation\325) 370.46 709.45 P
+ -0.15 (s con-) 515.43 709.45 P
+ 0.27 (sole. If you run S) 71.42 697.45 P
+ 1 F
+ 0.25 (ELF) 141.64 697.45 P
+ 0 F
+ 0.27 ( on another machine \050e.g. via rlogin\051, the system monitor will write to the screen of the ) 157.62 697.45 P
+ 16 F
+ 0.27 (r) 512.04 697.45 P
+ 0.27 (emote) 515.56 697.45 P
+ 0 F
+ (machine, not your own screen.) 71.42 685.45 T
+ 10 F
+ (5.8  System-trigger) 71.42 652.78 T
+ (ed messages) 184.24 652.78 T
+ 4 F
+ 0.05 (Certain events cause the system to automatically send a message to the lobby) 71.42 626.11 P
+ 0.05 (. Section I-5.2 intro-) 441.67 626.11 P
+ 0.07 (duced ) 71.42 612.11 P
+ 12 F
+ 0.15 (printIt) 103.13 612.11 P
+ 4 F
+ 0.07 (, which is sent to the lobby after a full expression has been entered at the prompt.) 149.27 612.11 P
+ -0.54 (Reading and writing snapshots also trigger messages to be sent to the lobby) 71.42 598.11 P
+ -0.54 (. Before reading a snap-) 426.67 598.11 P
+ 0.62 (shot, the message ) 71.42 584.11 P
+ 12 F
+ 1.37 (snapshotAction preRead) 160.56 584.11 P
+ 4 F
+ 0.62 ( is sent; after reading the snapshot, the message) 306.95 584.11 P
+ 12 F
+ -0.15 (snapshotAction postRead) 71.42 570.11 P
+ 4 F
+ -0.07 ( is sent. The messages ) 222.89 570.11 P
+ 12 F
+ -0.15 (snapshotAction preWrite) 331.82 570.11 P
+ 4 F
+ -0.07 ( and ) 483.28 570.11 P
+ 12 F
+ -0.15 (snap-) 506.46 570.11 P
+ 1.17 (shotAction postWrite) 71.42 556.11 P
+ 4 F
+ 0.53 ( are similarly sent surrounding the writing of a snapshot. These mes-) 204.43 556.11 P
+ (sages allow the S) 71.42 542.11 T
+ 6 F
+ (ELF) 154.37 542.11 T
+ 4 F
+ ( world to cleanup and reinitialize itself\321for example, to open or close \336les.) 173.9 542.11 T
+ 0.94 (The following table summarizes the system-triggered messages described above. Note however) 71.42 516.11 P
+ (that there are other situations in which the system sends messages; see Appendix A.) 71.42 502.11 T
+ 71.42 457.12 539.42 465.11 C
+ 71.42 463.1 539.42 463.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 468.78 T
+ (able 2   Some system-trigger) 77.74 468.78 T
+ (ed messages) 209.65 468.78 T
+ 24 F
+ (Message) 71.42 446.45 T
+ (T) 197.42 446.45 T
+ (rigger event) 203.35 446.45 T
+ 0 F
+ (printIt) 71.42 429.45 T
+ 0.23 (After a full expression has been parsed at the prompt and inserted into the ) 197.42 429.45 P
+ 20 F
+ 0.56 (doIt) 498.26 429.45 P
+ 0 F
+ 0.23 ( slot) 522.25 429.45 P
+ (in the lobby) 197.42 417.45 T
+ (.) 244.53 417.45 T
+ (snapshotAction preRead) 71.42 401.45 T
+ (Upon invocation of ) 197.42 401.45 T
+ 20 F
+ (_ReadSnapshot) 277.65 401.45 T
+ 0 F
+ (, before the snapshot is read.) 355.61 401.45 T
+ (snapshotAction postRead) 71.42 385.45 T
+ (Upon invocation of ) 197.42 385.45 T
+ 20 F
+ (_ReadSnapshot) 277.65 385.45 T
+ 0 F
+ (, after the snapshot is read.) 355.61 385.45 T
+ (snapshotAction preW) 71.42 369.45 T
+ (rite) 157.91 369.45 T
+ (Upon invocation of ) 197.42 369.45 T
+ 20 F
+ (_WriteSnapshot) 277.65 369.45 T
+ 0 F
+ (, before the snapshot is written.) 361.6 369.45 T
+ (snapshotAction postW) 71.42 353.45 T
+ (rite) 161.8 353.45 T
+ (Upon invocation of ) 197.42 353.45 T
+ 20 F
+ (_WriteSnapshot) 277.65 353.45 T
+ 0 F
+ (, after the snapshot is written.) 361.6 353.45 T
+ FMENDPAGE
+ %%EndPage: "27" 32
+ 25 10.83 /Courier FMDEFINEFONT
+ %%Page: "28" 32
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-28) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Run-time message lookup errors) 409.24 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Appendix A) 71.42 705.45 T
+ (Run-time message lookup err) 170.42 705.45 T
+ (ors) 371.34 705.45 T
+ 4 F
+ 0.37 (If an error occurs during a message send, the system sends a message to the receiver of the mes-) 71.42 678.11 P
+ 0.29 (sage. Any object can handle these errors by de\336ning \050or inheriting\051 a slot with the corresponding) 71.42 664.11 P
+ -0.06 (selector) 71.42 650.11 P
+ -0.06 (. All messages sent by the system in response to a message lookup error have the same ar-) 108.06 650.11 P
+ -0.11 (guments. ) 71.42 636.11 P
+ -0.11 (The first argument is the offending message\325s selector; the additional arguments specify) 117.96 636.11 P
+ 1.42 (the message send type \050one of ) 71.42 622.11 P
+ 12 F
+ 3.12 (\325normal\325) 227.14 622.11 P
+ 4 F
+ 1.42 (, ) 279.88 622.11 P
+ 12 F
+ 3.12 (\325implicitSelf\325) 287.29 622.11 P
+ 4 F
+ 1.42 (, ) 379.58 622.11 P
+ 12 F
+ 3.12 (\325undirectedResend\325) 386.99 622.11 P
+ 4 F
+ 1.42 (, ) 505.64 622.11 P
+ 12 F
+ 3.12 (\325di-) 513.06 622.11 P
+ 1.21 (rectedResend\325) 71.42 608.11 P
+ 4 F
+ 0.55 (, or ) 157.12 608.11 P
+ 12 F
+ 1.21 (\325delegated\325) 177.2 608.11 P
+ 4 F
+ 0.55 (\051, the directed resend parent name or the delegatee \050) 249.71 608.11 P
+ 12 F
+ 1.21 (0) 503.08 608.11 P
+ 4 F
+ 0.55 ( if not) 509.68 608.11 P
+ -0.17 (applicable\051, the sending method holder, and an object vector containing the arguments to the mes-) 71.42 594.11 P
+ (sage, if any.) 71.42 580.11 T
+ (\245) 71.42 560.11 T
+ 12 F
+ (undefinedSelector:Type:Delegatee:MethodHolder:Arguments:) 84.96 560.11 T
+ 4 F
+ ( ) 454.1 560.11 T
+ 0.83 (The receiver does not understand the message: no slot matching the selector can be found in) 84.96 546.11 P
+ (the receiver or its ancestors.) 84.96 532.11 T
+ (\245) 71.42 512.11 T
+ 12 F
+ (noPublicSelector:Type:Delegatee:MethodHolder:Arguments:) 84.96 512.11 T
+ 4 F
+ ( ) 447.51 512.11 T
+ (Same as above, except that a private slot would have matched the message had it been public.) 84.96 498.11 T
+ (\245) 71.42 478.11 T
+ 12 F
+ (ambiguousSelector:Type:Delegatee:MethodHolder:Arguments:) 84.96 478.11 T
+ 4 F
+ ( ) 454.1 478.11 T
+ 0.28 (There is more than one slot matching the selector, and neither the parent slot priorities nor the) 84.96 464.11 P
+ (sender path tiebreaker are sufficient to disambiguate the lookup.) 84.96 450.11 T
+ (\245) 71.42 430.11 T
+ 12 F
+ (missingDelegateeSelector:Type:Delegatee:MethodHolder:Arguments:) 84.96 430.11 T
+ 4 F
+ ( ) 500.24 430.11 T
+ 0.01 (The parent slot through which the resend should have been directed was not found in the send-) 84.96 416.11 P
+ (ing method holder.) 84.96 402.11 T
+ (\245) 71.42 382.11 T
+ 25 F
+ (mismatchedArgumentCountSelector:Type:Delegatee:MethodHolder:Arguments:) 84.96 382.11 T
+ 4 F
+ 0.57 (The number of arguments supplied to the ) 84.96 368.11 P
+ 12 F
+ 1.25 (_Perform) 289.82 368.11 P
+ 4 F
+ 0.57 ( primitive does not match the number of) 342.55 368.11 P
+ (arguments required by the selector.) 84.96 354.11 T
+ (\245) 71.42 334.11 T
+ 12 F
+ (performTypeErrorSelector:Type:Delegatee:MethodHolder:Arguments:) 84.96 334.11 T
+ 4 F
+ ( ) 500.24 334.11 T
+ (The first argument to the ) 84.96 320.11 T
+ 12 F
+ (_Perform) 207.21 320.11 T
+ 4 F
+ ( primitive \050the selector\051 wasn\325t a canonical string.) 259.94 320.11 T
+ -0.27 (These error messages are just like any other message. Therefore, it is possible that the object caus-) 71.42 294.11 P
+ -0.56 (ing the error \050which is being sent the appropriate error message\051 does not understand the error mes-) 71.42 280.11 P
+ 0.15 (sage either) 71.42 266.11 P
+ 0.15 (. More generally) 122.54 266.11 P
+ 0.15 (, if the system experiences any of these run-time errors in the midst of) 201.67 266.11 P
+ 0.07 (sending one, it will report the error) 71.42 252.11 P
+ 0.07 (, print the stack, and abort the S) 238.94 252.11 P
+ 6 F
+ 0.07 (ELF) 391.68 252.11 P
+ 4 F
+ 0.07 ( program to avoid entering) 411.22 252.11 P
+ (an in\336nite loop of error messages.) 71.42 238.11 T
+ 2.03 (For example, sending the message ) 71.42 212.11 P
+ 12 F
+ 4.47 (boo) 249.47 212.11 P
+ 4 F
+ 2.03 ( to an empty object would cause the system to print:) 269.25 212.11 P
+ 12 F
+ 13.18 (lookup failure: couldn\325t send undefinedSelector:Type:Delegatee:) 71.42 198.11 P
+ 1.31 (MethodHolder:Arguments: to <0>) 71.42 184.11 P
+ 4 F
+ 0.6 (, because the empty object did not understand ) 271.8 184.11 P
+ 12 F
+ 1.31 (boo) 498.74 184.11 P
+ 4 F
+ 0.6 ( and) 518.51 184.11 P
+ (then did not understand ) 71.42 170.11 T
+ 12 F
+ (undefinedSelector:...) 187.35 170.11 T
+ 4 F
+ (. A stack dump would follow) 325.78 170.11 T
+ (.) 464.92 170.11 T
+ -0.1 (The system will also abort your program and display a stack trace if it runs out of stack space \050too) 71.42 144.11 P
+ 1.1 (much recursion\051 or if a block is invoked whose lexically-enclosing scope has already returned.) 71.42 130.11 P
+ (These errors currently cannot be caught on the S) 71.42 116.11 T
+ 6 F
+ (ELF) 303.9 116.11 T
+ 4 F
+ ( level.) 323.44 116.11 T
+ FMENDPAGE
+ %%EndPage: "28" 33
+ 25 15 /Times-Bold FMDEFINEFONT
+ 26 8 /Helvetica-Oblique FMDEFINEFONT
+ %%Page: "29" 33
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-29) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (The initial SELF world) 446.42 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Appendix B) 71.42 705.45 T
+ (The initial S) 170.42 705.45 T
+ 25 F
+ (ELF) 253.96 705.45 T
+ 9 F
+ ( world) 283.14 705.45 T
+ 4 F
+ 0.23 (The diagram below shows all objects in the \322bare\323 S) 71.42 678.11 P
+ 6 F
+ 0.21 (ELF) 325.64 678.11 P
+ 4 F
+ 0.23 ( world. In addition, literals like integers,) 345.17 678.11 P
+ -0.14 (\337oats, and strings are conceptually part of the initial S) 71.42 664.11 P
+ 6 F
+ -0.13 (ELF) 329.35 664.11 P
+ 4 F
+ -0.14 ( world; block and object literals are cre-) 348.88 664.11 P
+ -0.56 (ated by the programmer as needed. All the objects in the system are created by adding slots to these) 71.42 650.11 P
+ 0.14 (objects or by cloning them. T) 71.42 636.11 P
+ 0.14 (able 3 lists all the initial objects and provides a short description for) 212.55 636.11 P
+ (each.) 71.42 622.11 T
+ 71.42 55.44 539.42 716.11 C
+ 71.42 59.9 539.42 618.11 C
+ 71.42 59.9 539.42 618.11 R
+ 7 X
+ 0 K
+ V
+ 352.53 575.61 441.81 593.46 R
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 17 F
+ (^ preRead) 356.99 581.82 T
+ 424.14 593.46 424.14 575.61 2 L
+ N
+ 352.53 594.93 441.81 603.86 R
+ 7 X
+ V
+ 0 X
+ (snapshotAction) 369.83 598.52 T
+ 352.53 557.75 441.81 575.61 R
+ N
+ (^ postRead) 356.99 563.97 T
+ 424.14 575.61 424.14 557.75 2 L
+ N
+ 352.53 539.9 441.81 557.75 R
+ N
+ (^ preW) 356.99 546.11 T
+ (rite) 381.92 546.11 T
+ 424.14 557.75 424.14 539.9 2 L
+ N
+ 352.53 522.04 441.81 539.9 R
+ N
+ (^ postW) 356.99 528.26 T
+ (rite) 385.48 528.26 T
+ 424.14 539.9 424.14 522.04 2 L
+ N
+ 75.89 598.28 196.29 607.21 R
+ 7 X
+ V
+ 0 X
+ (lobby) 126.53 601.88 T
+ 75.89 578.61 196.29 596.46 R
+ N
+ (^ snapshotAction) 81.91 584.82 T
+ 178.62 596.46 178.62 578.61 2 L
+ N
+ 75.89 560.75 196.29 578.61 R
+ N
+ (_ doIt) 81.91 566.97 T
+ 178.62 578.61 178.62 560.75 2 L
+ N
+ 75.89 542.9 196.29 560.75 R
+ N
+ (_ printIt) 81.91 549.11 T
+ 178.62 560.75 178.62 542.9 2 L
+ N
+ 75.89 525.04 196.29 542.9 R
+ N
+ (^ systemObjects*) 81.91 531.26 T
+ 178.62 542.9 178.62 525.04 2 L
+ N
+ 89.15 424.23 182.9 442.09 R
+ N
+ (^ nil) 93.62 430.45 T
+ 165.04 442.09 165.04 424.23 2 L
+ N
+ 89.15 443.55 182.9 452.48 R
+ 7 X
+ V
+ 0 X
+ (systemObjects) 109.81 447.14 T
+ 89.15 406.37 182.9 424.23 R
+ N
+ (^ true) 93.62 412.59 T
+ 165.04 424.23 165.04 406.37 2 L
+ N
+ 89.15 388.52 182.9 406.37 R
+ N
+ (^ false) 93.62 394.73 T
+ 165.04 406.37 165.04 388.52 2 L
+ N
+ 89.15 370.66 182.9 388.52 R
+ N
+ (^ objV) 93.62 376.88 T
+ (ector) 115.15 376.88 T
+ 165.04 388.52 165.04 370.66 2 L
+ N
+ 89.15 352.81 182.9 370.66 R
+ N
+ (^ byteV) 93.62 359.02 T
+ (ector) 119.59 359.02 T
+ 165.04 370.66 165.04 352.81 2 L
+ N
+ 89.15 316.7 182.9 334.55 R
+ N
+ (^ assignmentMirror) 93.62 322.91 T
+ 165.04 334.55 165.04 316.7 2 L
+ N
+ 89.15 298.84 182.9 316.7 R
+ N
+ (^ blockMirror) 93.62 305.05 T
+ 165.04 316.7 165.04 298.84 2 L
+ N
+ 89.15 280.98 182.9 298.84 R
+ N
+ (^ byteCodeMirror) 93.62 287.2 T
+ 165.04 298.84 165.04 280.98 2 L
+ N
+ 89.15 263.13 182.9 280.98 R
+ N
+ (^ byteV) 93.62 269.34 T
+ (ectorMirror) 119.59 269.34 T
+ 165.04 280.98 165.04 263.13 2 L
+ N
+ 89.15 245.27 182.9 263.13 R
+ N
+ (^ codeSlotsMirror) 93.62 251.49 T
+ 165.04 263.13 165.04 245.27 2 L
+ N
+ 89.15 227.42 182.9 245.27 R
+ N
+ (^ \337oatMirror) 93.62 233.63 T
+ 165.04 245.27 165.04 227.42 2 L
+ N
+ 89.15 209.56 182.9 227.42 R
+ N
+ (^ mirrorMirror) 93.62 215.78 T
+ 165.04 227.42 165.04 209.56 2 L
+ N
+ 89.15 191.7 182.9 209.56 R
+ N
+ (^ objV) 93.62 197.92 T
+ (ectorMirror) 115.15 197.92 T
+ 165.04 209.56 165.04 191.7 2 L
+ N
+ 89.15 173.85 182.9 191.7 R
+ N
+ (^ processMirror) 93.62 180.06 T
+ 165.04 191.7 165.04 173.85 2 L
+ N
+ 89.15 155.99 182.9 173.85 R
+ N
+ (^ slotsMirror) 93.62 162.21 T
+ 165.04 173.85 165.04 155.99 2 L
+ N
+ 89.15 138.14 182.9 155.99 R
+ N
+ (^ smiMirror) 93.62 144.35 T
+ 165.04 155.99 165.04 138.14 2 L
+ N
+ 245.39 482.93 334.67 500.79 R
+ N
+ (^ parent*) 249.86 489.15 T
+ 317 500.79 317 482.93 2 L
+ N
+ 245.39 502.25 334.67 511.18 R
+ 7 X
+ V
+ 0 X
+ (nil) 286.03 505.85 T
+ 245.39 444.22 334.67 462.08 R
+ N
+ (^ parent*) 249.86 450.43 T
+ 317 462.08 317 444.22 2 L
+ N
+ 245.39 463.54 334.67 472.47 R
+ 7 X
+ V
+ 0 X
+ (true) 283.14 467.14 T
+ 245.39 404.04 334.67 421.9 R
+ N
+ (^ parent*) 249.86 410.26 T
+ 317 421.9 317 404.04 2 L
+ N
+ 245.39 423.36 334.67 432.29 R
+ 7 X
+ V
+ 0 X
+ (false) 281.59 426.96 T
+ 245.39 363.87 334.67 381.72 R
+ N
+ (^ parent*) 249.86 370.08 T
+ 317 381.72 317 363.87 2 L
+ N
+ 245.39 383.19 334.67 392.12 R
+ 7 X
+ V
+ 0 X
+ (objV) 273.36 386.78 T
+ (ector) 288.92 386.78 T
+ 245.39 325.23 334.67 343.08 R
+ N
+ (^ parent*) 249.86 331.44 T
+ 317 343.08 317 325.23 2 L
+ N
+ 245.39 344.55 334.67 353.48 R
+ 7 X
+ V
+ 0 X
+ (byteV) 271.14 348.14 T
+ (ector) 291.15 348.14 T
+ 379.23 364.37 468.51 382.22 R
+ N
+ (^ parent*) 383.7 370.58 T
+ 450.84 382.22 450.84 364.37 2 L
+ N
+ 379.23 383.69 468.51 392.62 R
+ 7 X
+ V
+ 0 X
+ (objV) 394.76 387.28 T
+ (ector parent) 410.32 387.28 T
+ 379.23 325.73 468.51 343.58 R
+ N
+ (^ parent*) 383.7 331.94 T
+ 450.84 343.58 450.84 325.73 2 L
+ N
+ 379.23 345.05 468.51 353.98 R
+ 7 X
+ V
+ 0 X
+ (byteV) 392.54 348.64 T
+ (ector parent) 412.55 348.64 T
+ 291.15 243.81 380.43 261.66 R
+ N
+ (^ parent*) 295.61 250.02 T
+ 362.76 261.66 362.76 243.81 2 L
+ N
+ 291.15 263.13 380.43 272.06 R
+ 7 X
+ V
+ 0 X
+ (assignmentMirror) 304.92 266.72 T
+ 291.15 203.63 380.43 221.49 R
+ N
+ (^ parent*) 295.61 209.85 T
+ 362.76 221.49 362.76 203.63 2 L
+ N
+ 291.15 222.95 380.43 231.88 R
+ 7 X
+ V
+ 0 X
+ (blockMirror) 316.02 226.55 T
+ 291.28 102.75 380.56 120.61 R
+ N
+ (^ parent*) 295.74 108.97 T
+ 362.89 120.61 362.89 102.75 2 L
+ N
+ 291.28 122.07 380.56 131 R
+ 7 X
+ V
+ 0 X
+ (immutableStringMirror) 296.6 125.67 T
+ 367.78 376.1 379.31 372.8 367.78 369.49 367.78 372.8 4 Y
+ V
+ 325.48 372.8 368.78 372.8 2 L
+ N
+ 367.78 337.6 379.31 334.3 367.78 330.99 367.78 334.3 4 Y
+ V
+ 325.48 334.3 368.78 334.3 2 L
+ N
+ 393.52 255.72 405.05 252.42 393.52 249.11 393.52 252.42 4 Y
+ V
+ 371.55 252.42 394.52 252.42 2 L
+ N
+ 14 F
+ (\050 \051) 410.05 249.92 T
+ 393.52 215.72 405.05 212.42 393.52 209.11 393.52 212.42 4 Y
+ V
+ 371.55 212.42 394.52 212.42 2 L
+ N
+ (\050 \051) 410.05 209.92 T
+ 393.65 114.84 405.18 111.53 393.65 108.22 393.65 111.53 4 Y
+ V
+ 371.68 111.53 394.65 111.53 2 L
+ N
+ (\050 \051) 410.18 109.03 T
+ 90 450 1.25 1.25 334.8 176.79 G
+ 90 450 1.25 1.25 334.8 176.79 A
+ 90 450 1.25 1.25 334.8 169.79 G
+ 90 450 1.25 1.25 334.8 169.79 A
+ 90 450 1.25 1.25 334.8 162.79 G
+ 90 450 1.25 1.25 334.8 162.79 A
+ 347.71 494.85 359.24 491.54 347.71 488.23 347.71 491.54 4 Y
+ V
+ 325.74 491.54 348.71 491.54 2 L
+ N
+ 26 F
+ (lobby) 364.24 489.04 T
+ 347.71 457.24 359.24 453.93 347.71 450.63 347.71 453.93 4 Y
+ V
+ 325.74 453.93 348.71 453.93 2 L
+ N
+ (lobby) 364.24 451.43 T
+ 347.71 416.6 359.24 413.3 347.71 409.99 347.71 413.3 4 Y
+ V
+ 325.74 413.3 348.71 413.3 2 L
+ N
+ (lobby) 364.24 410.8 T
+ 482.05 375.89 493.59 372.58 482.05 369.27 482.05 372.58 4 Y
+ V
+ 460.09 372.58 483.05 372.58 2 L
+ N
+ (lobby) 498.59 370.08 T
+ 481.55 338.21 493.09 334.91 481.55 331.6 481.55 334.91 4 Y
+ V
+ 459.59 334.91 482.55 334.91 2 L
+ N
+ (lobby) 498.09 332.41 T
+ 455.51 588.09 467.05 584.79 455.51 581.48 455.51 584.79 4 Y
+ V
+ 433.55 584.79 456.51 584.79 2 L
+ N
+ (nil) 472.05 582.29 T
+ 455.51 570.24 467.05 566.93 455.51 563.62 455.51 566.93 4 Y
+ V
+ 433.55 566.93 456.51 566.93 2 L
+ N
+ (nil) 472.05 564.43 T
+ 455.51 552.38 467.05 549.08 455.51 545.77 455.51 549.08 4 Y
+ V
+ 433.55 549.08 456.51 549.08 2 L
+ N
+ (nil) 472.05 546.58 T
+ 455.51 534.53 467.05 531.22 455.51 527.91 455.51 531.22 4 Y
+ V
+ 433.55 531.22 456.51 531.22 2 L
+ N
+ (nil) 472.05 528.72 T
+ 156.24 64.58 455.33 78.58 R
+ 7 X
+ V
+ 2 F
+ 0 X
+ (Figur) 201.92 70.58 T
+ (e 3) 230.36 70.58 T
+ (The initial S) 250.68 70.58 T
+ 5 F
+ (ELF) 313.33 70.58 T
+ 2 F
+ ( world \050part 1\051) 334.7 70.58 T
+ 340.76 589.8 352.3 586.49 340.76 583.18 340.76 586.49 4 Y
+ V
+ 186.8 586.49 341.76 586.49 2 L
+ N
+ 233.76 494.83 245.38 491.86 233.95 488.22 233.85 491.53 4 Y
+ V
+ 173.3 431.95 M
+  201.3 431.95 201.3 431.95 213.05 461.95 D
+  222.03 484.89 224.15 490.29 233.85 491.52 D
+ 0 Z
+ N
+ 233.8 456.25 245.39 453.15 233.92 449.64 233.86 452.95 4 Y
+ V
+ 173.3 413.95 M
+  200.8 413.95 200.8 413.95 212.3 433.55 D
+  221.25 448.8 223.23 452.18 233.85 452.93 D
+ N
+ 233.83 416.21 245.38 412.98 233.87 409.6 233.85 412.91 4 Y
+ V
+ 173.8 395.95 M
+  201.8 395.95 201.8 395.95 212.05 404.45 D
+  220.2 411.22 221.87 412.6 233.85 412.89 D
+ N
+ 233.82 375.97 245.39 372.8 233.9 369.36 233.86 372.66 4 Y
+ V
+ 173.8 378.45 M
+  197.8 378.45 198.8 378.45 211.55 375.45 D
+  221.4 373.14 223.64 372.61 233.87 372.65 D
+ N
+ 233.93 337.7 245.39 334.16 233.79 331.09 233.86 334.39 4 Y
+ V
+ 173.8 360.95 M
+  201.3 360.95 201.3 360.95 210.8 347.7 D
+  218.54 336.9 219.97 334.9 233.84 334.38 D
+ N
+ 190.8 450.81 182.89 441.78 184.82 453.63 187.81 452.22 4 Y
+ V
+ 187.8 533.99 M
+  206.8 533.57 206.8 533.57 214.55 530.85 D
+  222.3 528.13 222.3 528.13 226.05 522.69 D
+  229.8 517.25 229.8 517.25 230.3 510.97 D
+  230.8 504.69 230.8 504.69 227.3 499.25 D
+  223.8 493.81 223.8 493.81 216.8 488.58 D
+  209.8 483.35 209.8 483.35 201.55 473.72 D
+  194.85 465.9 193.59 464.43 187.79 452.23 D
+ N
+ 279.87 256.83 291.15 252.74 279.41 250.24 279.64 253.53 4 Y
+ V
+ 173.8 325.49 M
+  199.8 325.49 199.8 325.49 224.05 290.49 D
+  245.9 258.94 248.06 255.83 279.65 253.51 D
+ N
+ 280.32 217.76 291.14 212.57 279.22 211.23 279.77 214.49 4 Y
+ V
+ 173.8 307.49 M
+  198.8 307.49 198.8 307.49 225.05 263.24 D
+  248.52 223.67 251 219.49 279.77 214.44 D
+ N
+ 279.74 114.99 291.28 111.68 279.74 108.37 279.74 111.68 4 Y
+ V
+ 173.42 111.68 280.74 111.68 2 L
+ 2 Z
+ N
+ 209.32 573.24 220.86 569.93 209.32 566.62 209.32 569.93 4 Y
+ V
+ 187.36 569.93 210.32 569.93 2 L
+ N
+ 17 F
+ (the doIt method) 225.86 567.43 T
+ 209.32 555.38 220.86 552.08 209.32 548.77 209.32 552.08 4 Y
+ V
+ 187.36 552.08 210.32 552.08 2 L
+ N
+ 26 F
+ (\050 doIt _Print \051) 225.86 549.58 T
+ 89.15 120.34 182.9 138.19 R
+ N
+ 17 F
+ (^ canonicalStr) 93.62 126.55 T
+ (.M.) 143.14 126.55 T
+ 165.04 138.19 165.04 120.34 2 L
+ N
+ 89.24 102.54 182.85 120.39 R
+ N
+ (^ immutableStr) 93.27 109 T
+ (.M.) 145.9 109 T
+ 165.07 120.64 165.07 102.79 2 L
+ N
+ 89.15 334.99 182.9 352.85 R
+ N
+ (^ immutableString) 93.62 341.21 T
+ 165.04 352.85 165.04 334.99 2 L
+ N
+ 245.39 287.32 334.67 305.17 R
+ N
+ (^ parent*) 249.86 293.53 T
+ 317 305.17 317 287.32 2 L
+ N
+ 245.39 306.64 334.67 315.57 R
+ 7 X
+ V
+ 0 X
+ (immutableString) 261.15 310.23 T
+ 379.23 287.82 468.51 305.67 R
+ N
+ (^ parent*) 383.7 294.03 T
+ 450.84 305.67 450.84 287.82 2 L
+ N
+ 379.23 307.14 468.51 316.07 R
+ 7 X
+ V
+ 0 X
+ (immutableString parent) 382.55 310.73 T
+ 367.78 299.69 379.31 296.39 367.78 293.08 367.78 296.39 4 Y
+ V
+ 325.48 296.39 368.78 296.39 2 L
+ N
+ 481.55 300.3 493.09 297 481.55 293.69 481.55 297 4 Y
+ V
+ 459.59 297 482.55 297 2 L
+ N
+ 26 F
+ (lobby) 498.09 294.5 T
+ 233.87 299.68 245.18 295.66 233.46 293.07 233.67 296.38 4 Y
+ V
+ 173.8 343.68 M
+  201.33 343.68 201.33 343.68 214.95 319.66 D
+  224.37 303.06 227.28 297.94 233.66 296.36 D
+ 0 Z
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "29" 34
+ 27 10 /Times-BoldItalic FMDEFINEFONT
+ 28 10 /Courier-BoldOblique FMDEFINEFONT
+ %%Page: "30" 34
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-30) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (The initial SELF world) 446.42 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 71.42 420.35 539.42 428.34 C
+ 71.42 426.33 539.42 426.33 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 432.01 T
+ (able 3   Objects in the initial S) 77.74 432.01 T
+ 24 F
+ (ELF) 218.13 432.01 T
+ 5 F
+ ( world) 237.57 432.01 T
+ 24 F
+ (Object) 71.42 409.68 T
+ (Description) 170.42 409.68 T
+ 0 F
+ (lobby) 80.42 392.68 T
+ -0.08 (The center of the S) 170.42 392.68 P
+ 1 F
+ -0.08 (ELF) 246.14 392.68 P
+ 0 F
+ -0.08 ( object hierarchy) 262.12 392.68 P
+ -0.08 (, and the context in which expressions typed in at the) 328.46 392.68 P
+ (prompt, read in via ) 170.42 380.68 T
+ 20 F
+ (_RunScript) 248.98 380.68 T
+ 0 F
+ (, or used as the initializers of slots, are evaluated.) 308.95 380.68 T
+ 27 F
+ (Objects in the lobby) 71.42 364.68 T
+ 0 F
+ (doIt) 80.42 347.68 T
+ (A method synthesized from the expressions typed at the prompt \050see section I-5.2\051.) 170.42 347.68 T
+ (printIt) 80.42 331.68 T
+ 0.6 (The method invoked by the system after the user) 170.42 331.68 P
+ 0.6 (\325) 370.42 331.68 P
+ 0.6 (s input has been successfully parsed \050see) 373.2 331.68 P
+ (section I-5.2\051. Initially) 170.42 319.68 T
+ (, contains the method ) 259.71 319.68 T
+ 20 F
+ (\050 doIt _Print \051) 347.72 319.68 T
+ 0 F
+ (.) 437.67 319.68 T
+ (snapshotAction) 80.42 303.68 T
+ 0.29 (An object with slots for the four snapshot actions \050see section I-5.8\051. These slots are: ) 170.42 303.68 P
+ 20 F
+ 0.71 (pre-) 515.44 303.68 P
+ (Read) 170.42 291.68 T
+ 0 F
+ (, ) 194.41 291.68 T
+ 20 F
+ (preWrite) 199.41 291.68 T
+ 0 F
+ (, ) 247.38 291.68 T
+ 20 F
+ (postRead) 252.38 291.68 T
+ 0 F
+ (, and ) 300.35 291.68 T
+ 20 F
+ (postWrite) 322.28 291.68 T
+ 0 F
+ (. These slots initially contain ) 376.25 291.68 T
+ 20 F
+ (nil) 493.97 291.68 T
+ 0 F
+ (.) 511.96 291.68 T
+ (systemObjects) 80.42 275.68 T
+ 1.87 (This object contains slots containing the general system objects, including ) 170.42 275.68 P
+ 20 F
+ 4.48 (nil) 488.08 275.68 P
+ 0 F
+ 1.87 (, ) 506.07 275.68 P
+ 20 F
+ 4.48 (true) 512.94 275.68 P
+ 0 F
+ 1.87 (,) 536.92 275.68 P
+ 20 F
+ (false) 170.42 263.68 T
+ 0 F
+ (, and the prototypical vectors and mirrors.) 200.41 263.68 T
+ 27 F
+ (Objects in ) 71.42 247.68 T
+ 28 F
+ (systemObjects) 115.29 247.68 T
+ 0 F
+ (nil) 80.42 230.68 T
+ (The initializer for slots that are not explicitly initialized. Indicates \322not a useful object.\323) 170.42 230.68 T
+ (true) 80.42 214.68 T
+ (Boolean true. Ar) 170.42 214.68 T
+ (gument to and returned by some primitives.) 237.14 214.68 T
+ (false) 80.42 198.68 T
+ (Boolean false. Ar) 170.42 198.68 T
+ (gument to and returned by some primitives.) 240.47 198.68 T
+ (objV) 80.42 182.69 T
+ (ector) 99.3 182.69 T
+ (The prototype for object vectors.) 170.42 182.69 T
+ (byteV) 80.42 166.69 T
+ (ector) 103.74 166.69 T
+ (The prototype for byte vectors.) 170.42 166.69 T
+ (immutableString) 80.42 150.69 T
+ (The prototype for immutable \050but non canonical\051 strings.) 170.42 150.69 T
+ (objV) 80.42 134.69 T
+ (ector parent) 99.3 134.69 T
+ -0.08 (The object that ) 170.42 134.69 P
+ 20 F
+ -0.2 (objVector) 232.63 134.69 P
+ 0 F
+ -0.08 ( inherits from. Since all object vectors will inherit from this ob-) 286.6 134.69 P
+ 1.82 (ject \050because they are cloned from ) 170.42 122.69 P
+ 20 F
+ 4.36 (objVector) 321.18 122.69 P
+ 0 F
+ 1.82 (\051, this object will be the repository for) 375.15 122.69 P
+ (shared behavior \050a ) 170.42 110.69 T
+ 16 F
+ (traits object) 246.74 110.69 T
+ 0 F
+ (\051 for object vectors.) 294.78 110.69 T
+ (byteV) 80.42 94.69 T
+ (ector parent) 103.74 94.69 T
+ (Similar to ) 170.42 94.69 T
+ 20 F
+ (objVector parent) 212.63 94.69 T
+ 0 F
+ (: the byteV) 308.58 94.69 T
+ (ector traits object.) 351.88 94.69 T
+ 71.42 55.44 539.42 716.11 C
+ 72.83 439.34 538.02 716.11 C
+ 72.83 439.34 538.02 716.11 R
+ 7 X
+ 0 K
+ V
+ 139.79 456.88 470.12 470.27 R
+ V
+ 2 F
+ 0 X
+ (Figur) 201.1 462.27 T
+ (e 3) 229.53 462.27 T
+ (The initial S) 249.85 462.27 T
+ 5 F
+ (ELF) 312.5 462.27 T
+ 2 F
+ ( world \050part 2\051) 333.87 462.27 T
+ 314.38 675.62 403.66 693.47 R
+ 0.5 H
+ 2 Z
+ N
+ 17 F
+ (^ parent*) 318.85 681.83 T
+ 385.99 693.47 385.99 675.62 2 L
+ N
+ 314.38 694.94 403.66 703.86 R
+ 7 X
+ V
+ 0 X
+ (0 \050) 328.36 698.53 T
+ 26 F
+ (integer) 337.69 698.53 T
+ 17 F
+ (\051 parent) 362.13 698.53 T
+ 314.38 586.84 403.66 604.69 R
+ N
+ (^ parent*) 318.85 593.05 T
+ 385.99 604.69 385.99 586.84 2 L
+ N
+ 311.73 606.16 406.32 615.08 R
+ 7 X
+ V
+ 0 X
+ (\325\325) 313.26 609.75 T
+ ( \050) 316.81 609.75 T
+ 26 F
+ (canonical string) 321.69 609.75 T
+ 17 F
+ (\051 parent) 377.24 609.75 T
+ 314.38 545.02 403.66 562.87 R
+ N
+ (^ parent*) 318.85 551.23 T
+ 385.99 562.87 385.99 545.02 2 L
+ N
+ 314.38 564.34 403.66 573.26 R
+ 7 X
+ V
+ 0 X
+ ([ ] \050) 330.14 567.93 T
+ 26 F
+ (block) 341.69 567.93 T
+ 17 F
+ (\051 parent) 360.36 567.93 T
+ 314.38 632.09 403.66 649.95 R
+ N
+ (^ parent*) 318.85 638.31 T
+ 385.99 649.95 385.99 632.09 2 L
+ N
+ 314.38 651.42 403.66 660.34 R
+ 7 X
+ V
+ 0 X
+ (0.0 \050) 329.69 655.01 T
+ 26 F
+ (\337oat) 345.69 655.01 T
+ 17 F
+ (\051 parent) 360.8 655.01 T
+ 416.62 687.64 428.16 684.33 416.62 681.02 416.62 684.33 4 Y
+ V
+ 394.66 684.33 417.62 684.33 2 L
+ N
+ 26 F
+ (lobby) 433.16 681.83 T
+ 416.62 644.12 428.16 640.81 416.62 637.5 416.62 640.81 4 Y
+ V
+ 394.66 640.81 417.62 640.81 2 L
+ N
+ (lobby) 433.16 638.31 T
+ 416.62 598.86 428.16 595.55 416.62 592.24 416.62 595.55 4 Y
+ V
+ 394.66 595.55 417.62 595.55 2 L
+ N
+ (lobby) 433.16 593.05 T
+ 416.62 557.04 428.16 553.73 416.62 550.42 416.62 553.73 4 Y
+ V
+ 394.66 553.73 417.62 553.73 2 L
+ N
+ (lobby) 433.16 551.23 T
+ 162.11 545.02 251.39 562.87 R
+ N
+ 17 F
+ (^ parent*) 166.57 551.23 T
+ 233.72 562.87 233.72 545.02 2 L
+ N
+ 162.11 564.34 251.39 573.26 R
+ 7 X
+ V
+ 0 X
+ ([ ] \050) 188.31 567.93 T
+ 26 F
+ (blocks) 199.86 567.93 T
+ 17 F
+ (\051) 222.52 567.93 T
+ 162.11 527.16 251.39 545.02 R
+ N
+ (^ value[:{With:}]) 166.57 533.38 T
+ 233.72 545.02 233.72 527.16 2 L
+ N
+ 162.11 675.62 251.39 693.47 R
+ N
+ (^ parent*) 166.57 681.83 T
+ 233.72 693.47 233.72 675.62 2 L
+ N
+ 162.11 694.94 251.39 703.86 R
+ 7 X
+ V
+ 0 X
+ (0 \050) 186.53 698.53 T
+ 26 F
+ (integers) 195.86 698.53 T
+ 17 F
+ (\051) 224.3 698.53 T
+ 162.11 632.06 251.39 649.91 R
+ N
+ (^ parent*) 166.57 638.27 T
+ 233.72 649.91 233.72 632.06 2 L
+ N
+ 162.11 651.38 251.39 660.31 R
+ 7 X
+ V
+ 0 X
+ (0.0 \050) 187.86 654.97 T
+ 26 F
+ (\337oats) 203.86 654.97 T
+ 17 F
+ (\051) 222.97 654.97 T
+ 162.11 588.54 251.39 606.39 R
+ N
+ (^ parent*) 166.57 594.75 T
+ 233.72 606.39 233.72 588.54 2 L
+ N
+ 162.11 607.86 251.39 616.79 R
+ 7 X
+ V
+ 0 X
+ (\325\325 \050) 171.43 611.45 T
+ 26 F
+ (canonical strings) 179.86 611.45 T
+ 17 F
+ (\051) 239.41 611.45 T
+ 302.85 644.29 314.38 640.99 302.85 637.68 302.85 640.99 4 Y
+ V
+ 242.46 640.99 303.85 640.99 2 L
+ N
+ 302.85 688.32 314.38 685.01 302.85 681.7 302.85 685.01 4 Y
+ V
+ 242.46 685.01 303.85 685.01 2 L
+ N
+ 302.85 599.04 314.38 595.73 302.85 592.42 302.85 595.73 4 Y
+ V
+ 242.46 595.73 303.85 595.73 2 L
+ N
+ 302.85 557.25 314.38 553.94 302.85 550.64 302.85 553.94 4 Y
+ V
+ 242.46 553.94 303.85 553.94 2 L
+ N
+ 264.42 539.04 275.96 535.73 264.42 532.42 264.42 535.73 4 Y
+ V
+ 242.46 535.73 265.42 535.73 2 L
+ N
+ 26 F
+ (block method) 280.96 533.23 T
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "30" 35
+ %%Page: "31" 35
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-31) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (The initial SELF world) 446.42 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ (immutableString parent) 80.42 709.45 T
+ (Similar to ) 170.42 697.45 T
+ 20 F
+ (objVector parent) 212.63 697.45 T
+ 0 F
+ (: the immutableString traits object.) 308.58 697.45 T
+ 16 F
+ (mirr) 80.42 681.45 T
+ (ors) 97.82 681.45 T
+ 0 F
+ (See below) 170.42 681.45 T
+ (.) 211.13 681.45 T
+ 27 F
+ (Literals and their parents) 71.42 665.45 T
+ 16 F
+ (integers) 80.42 648.45 T
+ 0 F
+ -0.14 (Integers have one slot, a parent slot called ) 170.42 648.45 P
+ 20 F
+ -0.32 (parent) 339.49 648.45 P
+ 0 F
+ -0.14 (. All integers have the same parent: see ) 375.47 648.45 P
+ 20 F
+ -0.32 (0) 533.43 648.45 P
+ (parent) 170.42 636.45 T
+ 0 F
+ (, below) 206.4 636.45 T
+ (.) 235.18 636.45 T
+ (0 parent) 80.42 620.45 T
+ (All integers share this parent, the integer traits object.) 170.42 620.45 T
+ 16 F
+ (\337oats) 80.42 604.45 T
+ 0 F
+ 0.22 (Floats have one slot, a parent slot called ) 170.42 604.45 P
+ 20 F
+ 0.54 (parent) 334.61 604.45 P
+ 0 F
+ 0.22 (. All \337oats have the same parent: see ) 370.58 604.45 P
+ 20 F
+ 0.54 (0.0) 521.43 604.45 P
+ (parent) 170.42 592.45 T
+ 0 F
+ (, below) 206.4 592.45 T
+ (.) 235.18 592.45 T
+ (0.0 parent) 80.42 576.45 T
+ (All \337oats share this parent, the \337oat traits object.) 170.42 576.45 T
+ 16 F
+ (canonical strings) 80.42 560.45 T
+ 0 F
+ -0.01 (In addition to a byte vector part a canonical string object \050an immutable canonicalized string) 170.42 560.45 P
+ -0.03 (literal\051 has one slot, ) 170.42 548.45 P
+ 20 F
+ -0.06 (parent) 251.65 548.45 P
+ 0 F
+ -0.03 (, a parent slot containing the same object for all strings \050see ) 287.64 548.45 P
+ 20 F
+ -0.06 (\325\325) 527.43 548.45 P
+ (parent) 170.42 536.45 T
+ 0 F
+ ( below\051.) 206.4 536.45 T
+ (\325) 80.42 520.45 T
+ (\325 parent) 83.01 520.45 T
+ (All canonical strings share this parent, the canonical string traits object.) 170.42 520.45 T
+ 16 F
+ (blocks) 80.42 504.45 T
+ 0 F
+ 0.22 (Blocks have two slots: ) 170.42 504.45 P
+ 20 F
+ 0.52 (parent) 264.02 504.45 P
+ 0 F
+ 0.22 (, a parent slot containing the same object for all blocks \050see) 300 504.45 P
+ 20 F
+ 0.53 ([] parent) 170.42 492.45 P
+ 0 F
+ 0.22 (, below\051, and ) 224.93 492.45 P
+ 20 F
+ 0.53 (value) 280.27 492.45 P
+ 0 F
+ 0.22 ( \050or ) 310.25 492.45 P
+ 20 F
+ 0.53 (value:) 327.34 492.45 P
+ 0 F
+ 0.22 (, or ) 363.32 492.45 P
+ 20 F
+ 0.53 (value:With:) 379.59 492.45 P
+ 0 F
+ 0.22 (, etc., depending on the) 445.55 492.45 P
+ (number of ar) 170.42 480.45 T
+ (guments the block takes\051 which contains the block\325) 221.87 480.45 T
+ (s deferred method.) 426.45 480.45 T
+ ([ ] parent) 80.42 464.45 T
+ (All blocks share this parent, the block traits object.) 170.42 464.45 T
+ 27 F
+ (Prototypical mirrors) 71.42 448.45 T
+ 0 F
+ 1.05 (All of the prototypical mirrors consist of one slot, a parent slot named ) 170.42 431.45 P
+ 20 F
+ 2.52 (parent) 465.55 431.45 P
+ 0 F
+ 1.05 (. Each of) 501.53 431.45 P
+ -0.16 (these parent slots points to an empty object \050denoted in Figure 3 by \322) 170.42 419.45 P
+ 20 F
+ -0.38 (\050 \051) 444.04 419.45 P
+ 0 F
+ -0.16 (\323\051. See T) 461.65 419.45 P
+ -0.16 (able 14 for) 496.44 419.45 P
+ (a discussion of mirrors and their re\337ectees.) 170.42 407.45 T
+ (assignmentMirror) 80.42 391.45 T
+ (Mirror on the assignment primitive; the actual re\337ectee is an empty object.) 170.42 391.45 T
+ (blockMirror) 80.42 375.45 T
+ (Prototypical mirror on blocks.) 170.42 375.45 T
+ (byteCodeMirror) 80.42 359.45 T
+ (Prototypical mirror on byte code objects \050see section I-3.2\051.) 170.42 359.45 T
+ (byteV) 80.42 343.45 T
+ (ectorMirror) 103.74 343.45 T
+ (Prototypical mirror on byte vectors; the re\337ectee is the prototypical byte vector) 170.42 343.45 T
+ (.) 486.04 343.45 T
+ (codeSlotsMirror) 80.42 327.45 T
+ (Prototypical mirror on objects with code \050methods, block methods, and inner methods\051.) 170.42 327.45 T
+ (\337oatMirror) 80.42 311.45 T
+ (Prototypical mirror on \337oats; the re\337ectee is ) 170.42 311.45 T
+ 20 F
+ (0.0) 349.48 311.45 T
+ 0 F
+ (.) 367.47 311.45 T
+ (mirrorMirror) 80.42 295.45 T
+ (Prototypical mirror on mirrors; the re\337ectee is ) 170.42 295.45 T
+ 20 F
+ (slotsMirror) 357.24 295.45 T
+ 0 F
+ (.) 422.65 295.45 T
+ (objV) 80.42 279.45 T
+ (ectorMirror) 99.3 279.45 T
+ (Prototypical mirror on object vectors; the re\337ectee is the prototypical object vector) 170.42 279.45 T
+ (.) 500.47 279.45 T
+ (processMirror) 80.42 263.45 T
+ (Prototypical mirror on processes; the re\337ectee is the initial process.) 170.42 263.45 T
+ (slotsMirror) 80.42 247.45 T
+ (Prototypical mirror on plain objects without code; the re\337ectee is an empty object.) 170.42 247.45 T
+ (smiMirror) 80.42 231.45 T
+ (Prototypical mirror on integers; the re\337ectee is ) 170.42 231.45 T
+ 20 F
+ (0.) 359.46 231.45 T
+ 0 F
+ (canonicalStringMirror) 80.42 215.45 T
+ (Prototypical mirror on canonical strings; the re\337ectee is the empty canonical string \050) 170.42 203.45 T
+ 20 F
+ (\325\325) 506.86 203.45 T
+ 0 F
+ (\051.) 518.85 203.45 T
+ (immutableStringMirror) 80.42 187.45 T
+ (Prototypical mirror on immutable strings; the re\337ectee is the empty immutable string.) 170.42 175.45 T
+ FMENDPAGE
+ %%EndPage: "31" 36
+ %%Page: "32" 36
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-32) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (startup.self) 495.29 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Appendix C) 71.42 705.45 T
+ (startup.self) 170.42 705.45 T
+ 4 F
+ -0.54 (When S) 71.42 678.11 P
+ 6 F
+ -0.49 (ELF) 109.2 678.11 P
+ 4 F
+ -0.54 ( is started, it looks for the script \336le \322startup.self\323 in the S) 128.73 678.11 P
+ 6 F
+ -0.49 (ELF) 398.8 678.11 P
+ 4 F
+ -0.54 ( directory \050scripts are dis-) 418.33 678.11 P
+ 0.45 (cussed in section I-5.5\051. If it exists, the startup script is read in just before displaying the prompt) 71.42 664.11 P
+ -0.47 (\050after the snapshot is read in, if S) 71.42 650.11 P
+ 6 F
+ -0.44 (ELF) 226.65 650.11 P
+ 4 F
+ -0.47 ( was invoked by starting a snapshot\051. The startup script is use-) 246.18 650.11 P
+ 0.56 (ful for customizing the S) 71.42 636.11 P
+ 6 F
+ 0.51 (ELF) 192.93 636.11 P
+ 4 F
+ 0.56 ( environment by setting favorite options and de\336ning abbreviations) 212.47 636.11 P
+ (for common messages.) 71.42 622.11 T
+ (An example startup script:) 71.42 596.11 T
+ 12 F
+ (_PrintScriptName: true) 93.02 570.78 T
+ (_StackPrintLimit: 100) 93.02 557.78 T
+ (_AddSlots: \050 |) 93.02 531.78 T
+ (_ shortcuts* = \050 |) 108.42 518.78 T
+ (as = \050 _AsObject \051.) 124.42 505.78 T
+ (p = \050 _Print \051.) 124.42 492.78 T
+ (i = \050 inspect: self \051.) 124.42 479.78 T
+ (rs = \050 _ReadSnapshotIfFail: [ | :name. :err. |) 124.42 466.78 T
+ (\325Snapshot\325 _ReadSnapshot] \051.) 323.42 453.78 T
+ (ws = \050 _WriteSnapshotIfFail: [ | :name. :err. |) 124.42 440.78 T
+ (\325Snapshot\325 _WriteSnapshot] \051) 323.42 427.78 T
+ 0 F
+ (.) 507.99 427.78 T
+ 12 F
+ (run = \050 |) 124.42 401.78 T
+ (undefinedSelector: sel Type: msgType Delegatee: del) 153.42 388.78 T
+ (MethodHolder: mh Arguments: args = \050 sel _RunScript \051.) 179.42 375.78 T
+ (| \051) 124.42 362.78 T
+ (| \051) 108.42 349.78 T
+ (| \051) 93.02 336.78 T
+ 4 F
+ 0.58 (This startup script sets some options, de\336nes abbreviations, and uses a couple of clever tricks to) 71.42 311.11 P
+ -0.15 (de\336ne some shortcuts. The \336rst two lines set options: when reading in scripts, the script name will) 71.42 297.11 P
+ 0.12 (be printed; also, stack dumps will print up to 200 frames \050100 from the top and 100 from the bot-) 71.42 283.11 P
+ (tom\051.) 71.42 269.11 T
+ 0.76 (Next, a slot called \322shortcuts\323 is added to the lobby) 71.42 243.11 P
+ 0.76 (. Since this is a parent slot, a slot de\336ned in) 323.96 243.11 P
+ 12 F
+ 0.03 (shortcuts) 71.42 229.11 P
+ 4 F
+ 0.02 ( can be invoked simply by typing its name with the lobby as the \050usually implicit\051 re-) 130.75 229.11 P
+ 0.23 (ceiver) 71.42 215.11 P
+ 0.23 (, or sending it as a message to an object that inherits from the lobby) 100.24 215.11 P
+ 0.23 (. The slots ) 426.75 215.11 P
+ 12 F
+ 0.5 (as) 480.07 215.11 P
+ 4 F
+ 0.23 (, ) 493.25 215.11 P
+ 12 F
+ 0.5 (p) 499.47 215.11 P
+ 4 F
+ 0.23 (, and ) 506.07 215.11 P
+ 12 F
+ 0.5 (i) 532.83 215.11 P
+ 4 F
+ -0.47 (serve as abbreviations for common messages interactively sent to objects during programming and) 71.42 201.11 P
+ (debugging.) 71.42 187.11 T
+ 0.52 (The slots ) 71.42 161.11 P
+ 12 F
+ 1.14 (rs) 119.1 161.11 P
+ 4 F
+ 0.52 ( and ) 132.28 161.11 P
+ 12 F
+ 1.14 (ws) 156.63 161.11 P
+ 4 F
+ 0.52 ( are shortcuts for reading and writing snapshots. They use the failure blocks) 169.82 161.11 P
+ -0.25 (for primitives to provide a default name for snapshots. T) 71.42 147.11 P
+ -0.25 (yping ) 339.53 147.11 P
+ 12 F
+ -0.54 (\325snap\325 rs) 369.6 147.11 P
+ 4 F
+ -0.25 ( at the prompt will read) 428.39 147.11 P
+ (the snapshot \322snap,\323 while typing just ) 71.42 133.11 T
+ 12 F
+ (rs) 256.31 133.11 T
+ 4 F
+ ( will read the snapshot \322Snapshot.\323) 269.5 133.11 T
+ 0.28 (The \336nal slot, ) 71.42 107.11 P
+ 12 F
+ 0.63 (run) 141.58 107.11 P
+ 4 F
+ 0.28 (, uses the lookup error message sent by the system to provide a convenient in-) 161.35 107.11 P
+ 0.09 (terface for reading in scripts. ) 71.42 93.11 P
+ 12 F
+ 0.21 (run) 213.11 93.11 P
+ 4 F
+ 0.09 ( is an object that understands only one message, ) 232.88 93.11 P
+ 12 F
+ 0.21 (undefinedS-) 466.91 93.11 P
+ -0.15 (elector:...) 71.42 79.11 P
+ 4 F
+ -0.07 (. Thus, sending any other message to ) 143.93 79.11 P
+ 12 F
+ -0.15 (run) 323.66 79.11 P
+ 4 F
+ -0.07 ( causes the system to send it the message) 343.44 79.11 P
+ 12 F
+ 0.57 (undefinedSelector:...) 71.42 65.11 P
+ 4 F
+ 0.26 (. ) 209.85 65.11 P
+ 12 F
+ 0.57 (run) 216.11 65.11 P
+ 4 F
+ 0.26 ( takes the ar) 235.88 65.11 P
+ 0.26 (gument describing the unde\336ned selector \050a string\051) 294.05 65.11 P
+ FMENDPAGE
+ %%EndPage: "32" 37
+ %%Page: "33" 37
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-33) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (startup.self) 495.29 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ -0.24 (and sends ) 71.42 708.11 P
+ 12 F
+ -0.52 (_RunScript) 120.92 708.11 P
+ 4 F
+ -0.24 ( to it. T) 186.83 708.11 P
+ -0.24 (o read in the script \322all.self,\323 for example, simply type ) 220.6 708.11 P
+ 12 F
+ -0.52 (run all) 482.38 708.11 P
+ 4 F
+ -0.24 ( at) 528 708.11 P
+ (the prompt.) 71.42 694.11 T
+ FMENDPAGE
+ %%EndPage: "33" 38
+ %%Page: "34" 38
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-34) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (VM configuration) 466.97 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Appendix D) 71.42 705.45 T
+ (VM con\336guration) 170.42 705.45 T
+ 4 F
+ -0.05 (The S) 71.42 678.11 P
+ 6 F
+ -0.05 (ELF) 99.69 678.11 P
+ 4 F
+ -0.05 ( system uses U) 119.22 678.11 P
+ 6 F
+ -0.05 (NIX) 190.69 678.11 P
+ 4 F
+ -0.05 ( environment variables to con\336gure itself when it starts up. The vari-) 210.22 678.11 P
+ -0.5 (ables and their meanings are listed in the table below; all sizes are in bytes. If you do not de\336ne one) 71.42 664.11 P
+ (of these environment variables, its default value is used.) 71.42 650.11 T
+ 71.42 605.12 539.42 613.11 C
+ 71.42 611.1 539.42 611.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 616.78 T
+ (able 4   Con\336guration variables) 77.74 616.78 T
+ 24 F
+ (Name) 71.42 594.45 T
+ (Default value) 143.42 594.45 T
+ (Description) 224.42 594.45 T
+ 0 F
+ (SELFDIR) 71.42 577.45 T
+ (current directory) 143.42 577.45 T
+ 1.67 (Directory containing the S) 224.42 577.45 P
+ 1 F
+ 1.51 (ELF) 335.21 577.45 P
+ 0 F
+ 1.67 ( sources, e.g. \322/usr/name/self/self\323. Initializes) 351.19 577.45 P
+ (the option primitive ) 225 565.45 T
+ 20 F
+ (_SelfDir) 306.9 565.45 T
+ 0 F
+ (.) 354.33 565.45 T
+ (OLDSIZE) 71.42 549.45 T
+ (5,000,000) 143.42 549.45 T
+ -0.23 (Size of old space, the area of memory where long-lived S) 224.42 549.45 P
+ 1 F
+ -0.2 (ELF) 451.69 549.45 P
+ 0 F
+ -0.23 ( objects are stored) 467.67 549.45 P
+ 0.35 (\050see [Ung84], [Ung86]\051. This is the primary parameter to adjust depending on) 224.42 537.45 P
+ 0.36 (the size of your S) 224.42 525.45 P
+ 1 F
+ 0.33 (ELF) 295.83 525.45 P
+ 0 F
+ 0.36 ( world. It is generally safe to overestimate the size since) 311.8 525.45 P
+ 0.34 (the unused portions will not occupy real memory) 224.42 513.45 P
+ 0.34 (. However) 422.39 513.45 P
+ 0.34 (, this may result in) 463.95 513.45 P
+ 1.56 (excessive paging or long garbage collection pauses if too much memory is) 224.42 501.45 P
+ 0.21 (allocated for old space, because a lot of garbage may accumulate in old space,) 224.42 489.45 P
+ (causing internal fragmentation and eventually a very long garbage collection. ) 224.42 477.45 T
+ -0.13 (T) 224.42 465.45 P
+ -0.13 (oo small of an OLDSIZE may cause the system to run out of space \050and S) 229.83 465.45 P
+ 1 F
+ -0.12 (ELF) 523.44 465.45 P
+ 0 F
+ 2.05 (will terminate\051. A typical warning symptom for this situation are frequent) 224.42 453.45 P
+ (garbage collections that do not free much space.) 224.42 441.45 T
+ -0.06 (As a rule of thumb, old space should only be about 50-75% full after a garbage) 224.42 429.45 P
+ (collection.) 224.42 417.45 T
+ (EDENSIZE) 71.42 401.45 T
+ (100,000) 143.42 401.45 T
+ 2.36 (Size of eden space, the area containing the most recently allocated S) 224.42 401.45 P
+ 1 F
+ 2.12 (ELF) 523.44 401.45 P
+ 0 F
+ (objects. ) 224.42 389.45 T
+ (SUR) 71.42 373.45 T
+ (VSIZE) 90.06 373.45 T
+ (200,000) 143.42 373.45 T
+ 1.71 (Size of each of the \322survivor spaces\323 \050young objects\051. This size should be) 224.42 373.45 P
+ (about 2*EDENSIZE to avoid premature tenuring.) 224.42 361.45 T
+ (CODESIZE) 71.42 345.45 T
+ (1,800,000) 143.42 345.45 T
+ 0.89 (Amount of memory reserved to cache compiled code \050machine instructions\051.) 224.42 345.45 P
+ -0.17 (By varying this parameter \050and the next three\051 you can trade space for \050re\051com-) 224.42 333.45 P
+ 3.32 (pilation overhead. Set CODESIZE to the desired value and then adjust) 224.42 321.45 P
+ 0.69 (PICSIZE, DEPSIZE, and DEBUGSIZE accordingly so that none of the latter) 224.42 309.45 P
+ -0.19 (memory areas over\337ows before the code cache is full. \050The exact ratio between) 224.42 297.45 P
+ 1.06 (CODESIZE, PICSIZE, DEPSIZE, and DEBUGSIZE varies from application) 224.42 285.45 P
+ (to application.\051) 224.42 273.45 T
+ (PICSIZE) 71.42 257.45 T
+ (200,000) 143.42 257.45 T
+ 0.43 (Amount of memory reserved for ) 224.42 257.45 P
+ 16 F
+ 0.43 (polymorphic inline caches) 358.95 257.45 P
+ 0 F
+ 0.43 (, a special form of) 465.28 257.45 P
+ (inline caches designed to speed up polymorphic sends.) 224.42 245.45 T
+ (DEPSIZE) 71.42 229.45 T
+ (1,500,00) 143.42 229.45 T
+ 1.75 (Amount of memory used to record dependencies between source code and) 224.42 229.45 P
+ (compiled code.) 224.42 217.45 T
+ (DEBUGSIZE) 71.42 201.45 T
+ (3,400,00) 143.42 201.45 T
+ -0.23 (Amount of memory used to hold debugging information for the compiled code.) 224.42 201.45 P
+ 4 F
+ -0.12 (As a rule of thumb, your machine should have at least 3 MB + ) 71.42 176.12 P
+ 6 F
+ -0.11 (CODESIZE) 371.91 176.12 P
+ 4 F
+ -0.12 ( + ) 425.01 176.12 P
+ 6 F
+ -0.11 (PICSIZE) 437.52 176.12 P
+ 4 F
+ -0.12 ( + ) 477.81 176.12 P
+ 6 F
+ -0.11 (OLDSIZE) 490.32 176.12 P
+ 4 F
+ -0.12 (/) 536.09 176.12 P
+ -0.19 (2 + ) 71.42 162.12 P
+ 6 F
+ -0.17 (EDENSIZE) 89.81 162.12 P
+ 4 F
+ -0.19 ( + ) 142.29 162.12 P
+ 6 F
+ -0.17 (SUR) 154.68 162.12 P
+ -0.17 (VSIZE) 175.17 162.12 P
+ 4 F
+ -0.19 ( of ) 206.29 162.12 P
+ 3 F
+ -0.19 (r) 221.9 162.12 P
+ -0.19 (eal) 226.13 162.12 P
+ 4 F
+ -0.19 ( memory available to S) 240.78 162.12 P
+ 6 F
+ -0.17 (ELF) 351.3 162.12 P
+ 4 F
+ -0.19 ( for good performance \050i.e. roughly) 370.83 162.12 P
+ 0.38 (8 MB for the default values shown above\051. Running under the new compiler may required a few) 71.42 148.12 P
+ 0.14 (more megabytes. More is better) 71.42 134.12 P
+ 0.14 (, of course. T) 223.71 134.12 P
+ 0.14 (urn on the system monitor while using the system to) 287.32 134.12 P
+ -0.46 (determine the correct sizes and to detect problems \050see Appendix E for details\051. The amount of ) 71.42 120.12 P
+ 3 F
+ -0.46 (vir-) 522.1 120.12 P
+ 0.15 (tual) 71.42 106.12 P
+ 4 F
+ 0.15 ( memory used by S) 90.09 106.12 P
+ 6 F
+ 0.14 (ELF) 183.31 106.12 P
+ 4 F
+ 0.15 ( is at least 4 MB + ) 202.85 106.12 P
+ 6 F
+ 0.14 (CODESIZE) 294.97 106.12 P
+ 4 F
+ 0.15 ( + ) 348.07 106.12 P
+ 6 F
+ 0.14 (PICSIZE + DEPSIZE + DEBUGSIZE +) 361.14 106.12 P
+ 1.62 (OLDSIZE) 71.42 92.12 P
+ 4 F
+ 1.77 ( + ) 117.19 92.12 P
+ 6 F
+ 1.62 (EDENSIZE) 133.5 92.12 P
+ 4 F
+ 1.77 ( + 2*) 185.98 92.12 P
+ 6 F
+ 1.62 (SUR) 214.27 92.12 P
+ 1.62 (VSIZE) 234.76 92.12 P
+ 4 F
+ 1.77 (; be sure to con\336gure your system accordingly) 265.89 92.12 P
+ 1.77 (. \050Many) 499.68 92.12 P
+ (U) 71.42 78.12 T
+ 6 F
+ (NIX) 80.08 78.12 T
+ 4 F
+ ( systems are precon\336gured with relatively little swap space; see section I-4.1.\051) 99.61 78.12 T
+ FMENDPAGE
+ %%EndPage: "34" 39
+ 17 7 /Courier FMDEFINEFONT
+ %%Page: "35" 39
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-35) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (The system monitor) 459.47 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Appendix E) 71.42 705.45 T
+ (The system monitor) 170.42 705.45 T
+ 4 F
+ -0.14 (The S) 71.42 678.11 P
+ 6 F
+ -0.13 (ELF) 99.6 678.11 P
+ 4 F
+ -0.14 ( system contains a system monitor to display information about the internal workings of) 119.14 678.11 P
+ -0.17 (the system such as memory management and compilation. It is invoked with ) 71.42 664.11 P
+ 12 F
+ -0.38 (_Spy: true) 439.43 664.11 P
+ 4 F
+ -0.17 (. When) 504.96 664.11 P
+ (it is active, the system monitor takes over the bottom portion of your screen:) 71.42 650.11 T
+ 0 F
+ -0.17 (Caution: the system monitor always writes to /dev/fb, the console\325) 71.42 534.57 P
+ -0.17 (s frame buf) 334.74 534.57 P
+ -0.17 (fer) 379.74 534.57 P
+ -0.17 (. If you run S) 390.28 534.57 P
+ 1 F
+ -0.15 (ELF) 442.63 534.57 P
+ 0 F
+ -0.17 ( on another machine) 458.61 534.57 P
+ (\050e.g. via rlogin\051, the system monitor will write to the screen of the ) 71.42 522.57 T
+ 16 F
+ (r) 337.36 522.57 T
+ (emote) 340.88 522.57 T
+ 0 F
+ ( machine, not your own screen.) 364.74 522.57 T
+ 4 F
+ (The display can be divided roughly into two regions: the indicators and the memory status.) 71.42 497.24 T
+ 0.51 (The indicators on the left of the display correspond to various internal activities and events. The) 71.42 471.24 P
+ 0.03 (indicators are arranged in three rows: compiler \050top row\051, virtual machine \050middle row\051, and low-) 71.42 457.24 P
+ 0.62 (level system events \050bottom row\051. The following table lists the individual indicators from top to) 71.42 443.24 P
+ (bottom and left to right:) 71.42 429.24 T
+ 71.42 384.24 539.42 392.24 C
+ 71.42 390.22 539.42 390.22 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 395.9 T
+ (able 5   The system monitor display: indicators) 77.74 395.9 T
+ 24 F
+ (T) 71.42 373.58 T
+ (op Row) 77.17 373.58 T
+ (What it indicates) 143.42 373.58 T
+ 0 F
+ (compiling ) 71.42 356.58 T
+ 16 F
+ (xxxx) 114.46 356.58 T
+ 0 F
+ (The compiler is compiling a method \050named ) 143.42 356.58 T
+ 16 F
+ (xxxx) 323.58 356.58 T
+ 0 F
+ (\051 into machine code. ) 341.33 356.58 T
+ 24 F
+ (Middle Row) 71.42 324.58 T
+ (What it indicates) 143.42 324.58 T
+ 0 F
+ (Self) 71.42 307.58 T
+ (S) 143.42 307.58 T
+ 1 F
+ (ELF) 148.98 307.58 T
+ 0 F
+ ( is executing compiled S) 164.96 307.58 T
+ 1 F
+ (ELF) 263.24 307.58 T
+ 0 F
+ ( code \050not primitives\051.) 279.22 307.58 T
+ (scavenge) 71.42 291.58 T
+ 0.41 (The S) 143.42 291.58 P
+ 1 F
+ 0.37 (ELF) 167.43 291.58 P
+ 0 F
+ 0.41 ( object memory is being scavenged. A scavenge is a fast, partial garbage collection \050see) 183.41 291.58 P
+ ([Ung84], [Ung86], [Lee88]\051.) 143.42 279.58 T
+ (GC) 71.42 263.58 T
+ (The S) 143.42 263.58 T
+ 1 F
+ (ELF) 167.02 263.58 T
+ 0 F
+ ( object memory is being fully garbage-collected.) 183 263.58 T
+ (\337ushing) 71.42 247.58 T
+ (S) 143.42 247.58 T
+ 1 F
+ (ELF) 148.98 247.58 T
+ 0 F
+ ( is \337ushing the code cache.) 164.96 247.58 T
+ (compacting) 71.42 231.58 T
+ (S) 143.42 231.58 T
+ 1 F
+ (ELF) 148.98 231.58 T
+ 0 F
+ ( is compacting the code cache.) 164.96 231.58 T
+ (reclaiming) 71.42 215.58 T
+ (S) 143.42 215.58 T
+ 1 F
+ (ELF) 148.98 215.58 T
+ 0 F
+ ( is reclaiming space in the code cache to make room for a new method.) 164.96 215.58 T
+ (sec \337ush) 71.42 199.58 T
+ 0.54 (S) 143.42 199.58 P
+ 1 F
+ 0.49 (ELF) 148.98 199.58 P
+ 0 F
+ 0.54 ( is \337ushing some methods in the code cache because there is not enough room in one of the) 164.96 199.58 P
+ (secondary caches \050the caches holding the debugging and dependency information\051.) 143.42 187.58 T
+ (ic \337ush) 71.42 171.58 T
+ (S) 143.42 171.58 T
+ 1 F
+ (ELF) 148.98 171.58 T
+ 0 F
+ ( is \337ushing all inline caches.) 164.96 171.58 T
+ (LRU sweep) 71.42 155.58 T
+ (S) 143.42 155.58 T
+ 1 F
+ (ELF) 148.98 155.58 T
+ 0 F
+ ( is examining methods in the code cache to determine whether they have been used recently) 164.96 155.58 T
+ (.) 531.53 155.58 T
+ (VM) 71.42 139.58 T
+ (S) 143.42 139.58 T
+ 1 F
+ (ELF) 148.98 139.58 T
+ 0 F
+ ( is executing VM code \050i.e. a primitive other than those listed above\051.) 164.96 139.58 T
+ 24 F
+ (Bottom Row ) 71.42 107.58 T
+ (What it indicates) 143.42 107.58 T
+ 0 F
+ (CPU ) 71.42 90.58 T
+ -0.23 (This bar displays the percentage of the CPU that the S) 143.42 90.58 P
+ 1 F
+ -0.21 (ELF) 357.66 90.58 P
+ 0 F
+ -0.23 ( process is getting \050a completely \336lled bar) 373.64 90.58 P
+ (equals 100% CPU utilization by S) 143.42 78.58 T
+ 1 F
+ (ELF\051) 280.3 78.58 T
+ 0 F
+ (.) 299.27 78.58 T
+ (Dot) 71.42 62.58 T
+ (A small dot below the CPU bar moves whenever a process switch takes place.) 144 62.58 T
+ 71.42 55.44 539.42 716.11 C
+ 87.74 552.24 523.11 646.11 C
+ 87.74 552.24 523.11 646.11 R
+ 7 X
+ 0 K
+ V
+ 100.68 598.76 118.54 603.76 R
+ V
+ 17 F
+ 0 X
+ (CPU) 100.68 599.09 T
+ 280.88 598.76 384.38 612.26 R
+ 7 X
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 280.88 612.26 303.38 616.76 R
+ 7 X
+ V
+ 0 X
+ N
+ 280.88 616.76 303.38 621.26 R
+ 7 X
+ V
+ 0 X
+ N
+ 280.88 621.26 294.38 625.76 R
+ 7 X
+ V
+ 0 X
+ N
+ 280.88 598.76 285.38 612.26 R
+ 3 X
+ V
+ 0 X
+ N
+ 285.38 598.76 334.88 612.26 R
+ V
+ N
+ 370.88 598.76 379.88 612.26 R
+ V
+ N
+ 280.88 621.26 289.88 625.76 R
+ V
+ N
+ 280.88 612.26 285.38 616.76 R
+ V
+ N
+ 300 610.01 303.38 616.76 R
+ V
+ N
+ 379.88 598.76 384.38 612.26 R
+ 3 X
+ V
+ 0 X
+ N
+ 397.88 598.76 426.75 612.26 R
+ 7 X
+ V
+ 0 X
+ N
+ 397.77 598.76 422.17 612.26 R
+ V
+ N
+ 397.88 598.76 398.51 612.26 R
+ 3 X
+ V
+ 0 X
+ N
+ 100.88 620.83 212.48 625.83 R
+ 7 X
+ V
+ 0 X
+ (compiling at:Put:IfAbsent) 100.88 621.16 T
+ (:) 205.7 621.16 T
+ 190.88 612.26 276.38 616.76 R
+ 7 X
+ V
+ 0 X
+ (RSRC:768K \050 0K used\051) 190.88 612.09 T
+ 190.88 598.76 276.38 603.26 R
+ 7 X
+ V
+ 0 X
+ (C-Heap: ) 190.88 598.59 T
+ (60,760) 241.19 598.59 T
+ 123.73 566.55 167.73 576.05 R
+ 7 X
+ V
+ 14 F
+ 0 X
+ (indicators) 123.73 569.38 T
+ 299.07 566.19 365.57 576.19 R
+ 7 X
+ V
+ 0 X
+ (object memory) 299.07 569.53 T
+ 426.29 567.55 479.82 576.05 R
+ 7 X
+ V
+ 0 X
+ (code cache) 426.29 569.38 T
+ 188.12 564.19 277.83 576.19 R
+ 7 X
+ V
+ 0 X
+ (VM memory display) 188.12 569.53 T
+ 115.96 598.5 138.46 603 R
+ 7 X
+ V
+ 0 X
+ N
+ 433.59 598.76 462.46 612.26 R
+ 7 X
+ V
+ 0 X
+ N
+ 442.22 598.76 444.61 612.26 R
+ V
+ N
+ 433.59 598.76 434.22 612.26 R
+ 3 X
+ V
+ 0 X
+ N
+ 469.3 598.76 507.1 612.26 R
+ 7 X
+ V
+ 0 X
+ N
+ 469.3 598.76 484.78 612.26 R
+ 3 X
+ V
+ 0 X
+ N
+ 469.3 598.76 470.12 612.26 R
+ 3 X
+ V
+ 0 X
+ N
+ 433.3 598.76 442.22 612.26 R
+ 3 X
+ V
+ 0 X
+ N
+ 116.27 598.79 131.88 603.26 R
+ V
+ 280.92 589.5 M
+  282.71 586.5 282.71 586.5 284.25 585.5 D
+  285.78 584.5 285.78 584.5 289.61 583.75 D
+  293.45 583 293.45 583 297.43 582.91 D
+  301.42 582.81 301.42 582.81 305.15 583.04 D
+  308.88 583.26 308.88 583.26 312.91 583.93 D
+  316.95 584.6 316.95 584.6 319.59 585.04 D
+  322.23 585.49 322.23 585.49 324.25 585.27 D
+  326.27 585.04 326.27 585.04 328.98 584.04 D
+  331.7 583.04 331.7 583.04 332.48 582.37 D
+ N
+ 384.11 589.5 M
+  382.31 586.5 382.31 586.5 380.78 585.5 D
+  379.25 584.5 379.25 584.5 375.41 583.75 D
+  371.58 583 371.58 583 367.59 582.91 D
+  363.61 582.81 363.61 582.81 359.88 583.04 D
+  356.15 583.26 356.15 583.26 352.11 583.93 D
+  348.08 584.6 348.08 584.6 345.44 585.04 D
+  342.8 585.49 342.8 585.49 340.78 585.27 D
+  338.76 585.04 338.76 585.04 336.04 584.04 D
+  333.33 583.04 333.33 583.04 332.55 582.37 D
+ N
+ 397.92 589.5 M
+  399.81 586.5 399.81 586.5 401.42 585.5 D
+  403.04 584.5 403.04 584.5 407.08 583.75 D
+  411.11 583 411.11 583 415.32 582.91 D
+  419.52 582.81 419.52 582.81 423.44 583.04 D
+  427.36 583.26 427.36 583.26 431.62 583.93 D
+  435.87 584.6 435.87 584.6 438.65 585.04 D
+  441.43 585.49 441.43 585.49 443.56 585.27 D
+  445.68 585.04 445.68 585.04 448.55 584.04 D
+  451.41 583.04 451.41 583.04 452.23 582.37 D
+ N
+ 506.61 589.5 M
+  504.72 586.5 504.72 586.5 503.1 585.5 D
+  501.49 584.5 501.49 584.5 497.45 583.75 D
+  493.41 583 493.41 583 489.21 582.91 D
+  485.01 582.81 485.01 582.81 481.09 583.04 D
+  477.16 583.26 477.16 583.26 472.91 583.93 D
+  468.66 584.6 468.66 584.6 465.88 585.04 D
+  463.1 585.49 463.1 585.49 460.97 585.27 D
+  458.84 585.04 458.84 585.04 455.98 584.04 D
+  453.12 583.04 453.12 583.04 452.3 582.37 D
+ N
+ 189.42 589.5 M
+  190.91 586.5 190.91 586.5 192.18 585.5 D
+  193.46 584.5 193.46 584.5 196.64 583.75 D
+  199.82 583 199.82 583 203.13 582.91 D
+  206.45 582.81 206.45 582.81 209.54 583.04 D
+  212.63 583.26 212.63 583.26 215.99 583.93 D
+  219.34 584.6 219.34 584.6 221.53 585.04 D
+  223.72 585.49 223.72 585.49 225.4 585.27 D
+  227.08 585.04 227.08 585.04 229.33 584.04 D
+  231.59 583.04 231.59 583.04 232.23 582.37 D
+ N
+ 275.11 589.5 M
+  273.62 586.5 273.62 586.5 272.34 585.5 D
+  271.07 584.5 271.07 584.5 267.89 583.75 D
+  264.7 583 264.7 583 261.39 582.91 D
+  258.08 582.81 258.08 582.81 254.99 583.04 D
+  251.89 583.26 251.89 583.26 248.54 583.93 D
+  245.19 584.6 245.19 584.6 242.99 585.04 D
+  240.8 585.49 240.8 585.49 239.13 585.27 D
+  237.45 585.04 237.45 585.04 235.19 584.04 D
+  232.94 583.04 232.94 583.04 232.29 582.37 D
+ N
+ 100.92 589.5 M
+  102.41 586.5 102.41 586.5 103.68 585.5 D
+  104.96 584.5 104.96 584.5 108.14 583.75 D
+  111.32 583 111.32 583 114.63 582.91 D
+  117.94 582.81 117.94 582.81 121.04 583.04 D
+  124.14 583.26 124.14 583.26 127.49 583.93 D
+  130.84 584.6 130.84 584.6 133.03 585.04 D
+  135.22 585.49 135.22 585.49 136.9 585.27 D
+  138.58 585.04 138.58 585.04 140.83 584.04 D
+  143.09 583.04 143.09 583.04 143.73 582.37 D
+ N
+ 186.6 589.5 M
+  185.12 586.5 185.12 586.5 183.84 585.5 D
+  182.57 584.5 182.57 584.5 179.39 583.75 D
+  176.2 583 176.2 583 172.89 582.91 D
+  169.58 582.81 169.58 582.81 166.49 583.04 D
+  163.39 583.26 163.39 583.26 160.04 583.93 D
+  156.69 584.6 156.69 584.6 154.49 585.04 D
+  152.3 585.49 152.3 585.49 150.63 585.27 D
+  148.95 585.04 148.95 585.04 146.69 584.04 D
+  144.44 583.04 144.44 583.04 143.79 582.37 D
+ N
+ 12 F
+ (.) 101.13 592.54 T
+ 397.77 612.2 411.27 616.7 R
+ 7 X
+ V
+ 0 X
+ N
+ 397.77 612.2 400.49 616.7 R
+ V
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "35" 40
+ %%Page: "36" 40
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-36) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (The system monitor) 459.47 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ (page ) 71.42 709.45 T
+ 16 F
+ (N) 92.79 709.45 T
+ 0.56 (N) 143.42 709.45 P
+ 0 F
+ 0.56 ( page faults occurred during the last time interval \050) 150.09 709.45 P
+ 16 F
+ 0.56 (N) 357.47 709.45 P
+ 0 F
+ 0.56 ( is not displayed if ) 364.14 709.45 P
+ 16 F
+ 0.56 (N) 443.28 709.45 P
+ 0 F
+ 0.56 (=1\051. The time interval) 449.95 709.45 P
+ (currently is 1/25 of a second.) 143.42 697.45 T
+ (read) 71.42 681.45 T
+ (S) 143.42 681.45 T
+ 1 F
+ (ELF) 148.98 681.45 T
+ 0 F
+ ( is blocked reading from a \322slow\323 device, e.g. the keyboard or mouse.) 164.96 681.45 T
+ (write) 71.42 665.45 T
+ (S) 143.42 665.45 T
+ 1 F
+ (ELF) 148.98 665.45 T
+ 0 F
+ ( is blocked writing to a \322slow\323 device, e.g. the screen.) 164.96 665.45 T
+ (disk in/out) 71.42 649.45 T
+ (S) 143.42 649.45 T
+ 1 F
+ (ELF) 148.98 649.45 T
+ 0 F
+ ( is doing disk I/O.) 164.96 649.45 T
+ (UNIX) 71.42 633.45 T
+ (S) 143.42 633.45 T
+ 1 F
+ (ELF) 148.98 633.45 T
+ 0 F
+ ( is blocked in some U) 164.96 633.45 T
+ 1 F
+ (NIX) 251.85 633.45 T
+ 0 F
+ ( system call other than read or write.) 267.82 633.45 T
+ 4 F
+ -0.09 (The middle part of the display contains some information on VM memory usage displayed in tex-) 71.42 608.11 P
+ (tual form, as described below:) 71.42 594.11 T
+ 71.42 549.12 539.42 557.11 C
+ 71.42 555.1 539.42 555.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 560.78 T
+ (able 6   VM memory status information) 77.74 560.78 T
+ 24 F
+ (Name) 71.42 538.45 T
+ (Description) 143.42 538.45 T
+ 0 F
+ (RSRC) 71.42 521.45 T
+ 1.23 (Size and utilization of the resource area \050an area of memory used for temporary storage by the) 143.42 521.45 P
+ (compiler and by primitives\051.) 143.42 509.45 T
+ (C-Heap) 71.42 493.45 T
+ 0.1 (Number of bytes allocated on the C heap by S) 143.42 493.45 P
+ 1 F
+ 0.09 (ELF) 328.36 493.45 P
+ 0 F
+ 0.1 ( \050excluding the memory and code spaces and the) 344.34 493.45 P
+ (resource area\051. Bitmaps used by the pixrect primitives, for example, are allocated on the C heap. ) 143.42 481.45 T
+ 4 F
+ -0.45 (The memory status portion of the system monitor consists of bars representing memory spaces and) 71.42 456.12 P
+ 0.37 (their utilization; all bars are drawn to scale relative to one another) 71.42 442.12 P
+ 0.37 (, their areas being proportional) 390.4 442.12 P
+ -0.12 (to the actual sizes of the memory spaces. The next table explains the details of this part of the sys-) 71.42 428.12 P
+ (tem monitor) 71.42 414.12 T
+ (\325) 130.84 414.12 T
+ (s display) 134.17 414.12 T
+ (. \050Appendix D explains how to change the size of these memory spaces.\051) 175.71 414.12 T
+ 71.42 369.13 539.42 377.12 C
+ 71.42 375.1 539.42 375.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 380.79 T
+ (able 7   The system monitor display: memory status) 77.74 380.79 T
+ 24 F
+ (Space) 71.42 358.46 T
+ (Description) 143.42 358.46 T
+ 0 F
+ (object memory) 71.42 342.46 T
+ 0.04 (The four bars represent \050from top to bottom\051 ) 143.42 342.46 P
+ 16 F
+ 0.04 (eden) 324.19 342.46 P
+ 0 F
+ 0.04 (, the two ) 343.06 342.46 P
+ 16 F
+ 0.04 (survivor spaces) 380.39 342.46 P
+ 0 F
+ 0.04 (, and ) 442.89 342.46 P
+ 16 F
+ 0.04 (old space) 464.9 342.46 P
+ 0 F
+ 0.04 (. The left) 502.98 342.46 P
+ -0.23 (and right parts of the bar represent the space used by \322plain\323 objects and byte vectors, respectively) 143.42 330.46 P
+ -0.23 (.) 532.93 330.46 P
+ 11 F
+ -0.19 (\240) 535.43 334.46 P
+ 0 F
+ -0.05 (The above picture shows a situation in which about half of old space is \336lled with plain objects and) 143.42 318.46 P
+ 1.14 (about 15% is \336lled with byte vectors. A small fraction of old space\325) 143.42 306.46 P
+ 1.14 (s used portions is currently) 427.17 306.46 P
+ (paged out \050gray areas\051.) 143.42 294.46 T
+ (code cache) 71.42 278.46 T
+ -0.05 (These four bars represent the cache holding compiled methods with their associated debugging and) 143.42 278.46 P
+ 1.1 (dependency information. The cache represented by the leftmost bar contains the actual machine) 143.42 266.46 P
+ 0.87 (code for methods \050including some headers and relocation information\051, the cache represented by) 143.42 254.46 P
+ 0.91 (the middle bar contains dependency information for the compiled methods, and the cache repre-) 143.42 242.46 P
+ 0.91 (sented by the rightmost bar contains the debugging information. The three-way split reduces the) 143.42 230.46 P
+ -0.11 (working set size of the code cache. The cache represented by the small bar sitting on top of the left-) 143.42 218.46 P
+ (most bar contains polymorphic inline caches.) 143.42 206.46 T
+ 24 F
+ (Color) 71.42 190.46 T
+ (Meaning) 143.42 190.46 T
+ 0 F
+ (black) 71.42 173.46 T
+ (Allocated, residing in real memory) 143.42 173.46 T
+ (.) 282.4 173.46 T
+ (gray) 71.42 157.46 T
+ (Allocated, paged out.) 143.42 157.46 T
+ 11 F
+ (\340) 228.92 161.46 T
+ 0 F
+ (white) 71.42 141.46 T
+ (Unallocated memory) 143.42 141.46 T
+ (.) 226.88 141.46 T
+ 71.42 105.44 539.42 125.53 C
+ 71.42 113.43 203.4 113.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ 0.41 (\240  ) 71.42 102.77 P
+ 0 F
+ 0.51 (The segregation of \050the vector of bytes in\051 byte vectors from other objects is an implementation detail improving) 80.24 98.77 P
+ (scavenging and scanning performance \050see [Lee88] and [CUL89] for details\051.) 71.42 87.77 T
+ 11 F
+ 0.55 (\340  ) 71.42 77.77 P
+ 0 F
+ 0.69 (The residency information is updated only once a second for ef) 80.53 73.77 P
+ 0.69 (\336ciency reasons; all other information is updated) 339.85 73.77 P
+ (continuously) 71.42 62.77 T
+ (.) 122.42 62.77 T
+ FMENDPAGE
+ %%EndPage: "36" 41
+ %%Page: "37" 41
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-37) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Appendix F) 71.42 705.45 T
+ (Primitives) 170.42 705.45 T
+ 4 F
+ 0.32 (Primitives are S) 71.42 678.11 P
+ 6 F
+ 0.29 (ELF) 148.68 678.11 P
+ 4 F
+ 0.32 ( methods implemented by the virtual machine. The \336rst character of a primi-) 168.22 678.11 P
+ 0.97 (tive\325) 71.42 664.11 P
+ 0.97 (s selector is an underscore \050\324) 92.75 664.11 P
+ 12 F
+ 2.14 (_) 234.49 664.11 P
+ 4 F
+ 0.97 (\325\051. Y) 241.08 664.11 P
+ 0.97 (ou cannot de\336ne primitives yourself, nor can you de\336ne) 263.5 664.11 P
+ (slots beginning with an underscore. ) 71.42 650.11 T
+ 10 F
+ (F) 71.42 616.78 T
+ (.1  Primitive failur) 78.69 616.78 T
+ (es) 188.81 616.78 T
+ 4 F
+ 0.01 (Every primitive call can take an optional ar) 71.42 590.11 P
+ 0.01 (gument de\336ning how errors should be handled for this) 278.82 590.11 P
+ 0.32 (call. T) 71.42 576.11 P
+ 0.32 (o do this, the primitive is extended with an ) 101.55 576.11 P
+ 12 F
+ 0.7 (IfFail:) 312.31 576.11 P
+ 4 F
+ 0.32 ( ar) 358.45 576.11 P
+ 0.32 (gument. For example, ) 370.87 576.11 P
+ 12 F
+ 0.7 (_AsObject) 480.1 576.11 P
+ 4 F
+ (becomes ) 71.42 562.11 T
+ 12 F
+ (_AsObjectIfFail:) 116.39 562.11 T
+ 4 F
+ (, and ) 221.86 562.11 T
+ 12 F
+ (_IntAdd:) 248.17 562.11 T
+ 4 F
+ ( becomes ) 300.9 562.11 T
+ 12 F
+ (_IntAdd:IfFail:) 348.87 562.11 T
+ 4 F
+ (.) 447.74 562.11 T
+ 12 F
+ (> ) 93.02 536.78 T
+ 18 F
+ (3 _IntAdd: \325a\325 IfFail: [ | :name. :err | ) 106.21 536.78 T
+ (\050\325failed! op=\325, name, \325 err=\325, err\051 printLine. 0 ]) 125.42 523.78 T
+ 12 F
+ (failed! op=_IntAdd: err=badTypeError) 93.02 510.78 T
+ (0) 93.02 497.78 T
+ (> ) 93.02 484.78 T
+ 4 F
+ -0.13 (If a primitive fails and the primitive call ) 71.42 459.11 P
+ 3 F
+ -0.13 (has) 265.59 459.11 P
+ 4 F
+ -0.13 ( an ) 282.25 459.11 P
+ 12 F
+ -0.29 (IfFail:) 299.3 459.11 P
+ 4 F
+ -0.13 ( part, the message ) 345.45 459.11 P
+ 12 F
+ -0.29 (value:With:) 433.86 459.11 P
+ 4 F
+ -0.13 ( is sent) 506.37 459.11 P
+ 0.08 (to the ) 71.42 445.11 P
+ 12 F
+ 0.19 (IfFail:) 101.58 445.11 P
+ 4 F
+ 0.08 ( ar) 147.72 445.11 P
+ 0.08 (gument, passing two strings: the name of the primitive and an error string indi-) 159.9 445.11 P
+ 0.07 (cating the reason for failure. If the failing primitive call ) 71.42 431.11 P
+ 3 F
+ 0.07 (does) 340.91 431.11 P
+ 4 F
+ 0.07 ( ) 362.9 431.11 P
+ 3 F
+ 0.07 (not) 365.96 431.11 P
+ 4 F
+ 0.07 ( have an ) 381.29 431.11 P
+ 12 F
+ 0.15 (IfFail:) 424.46 431.11 P
+ 4 F
+ 0.07 ( part, the mes-) 470.6 431.11 P
+ 0.84 (sage ) 71.42 417.11 P
+ 12 F
+ 1.85 (primitive:FailedWith:) 96.58 417.11 P
+ 4 F
+ 0.84 ( is sent to the receiver of the primitive call with the same two) 235.01 417.11 P
+ (strings as ar) 71.42 403.11 T
+ (guments.) 128.5 403.11 T
+ 0 F
+ 1.1 (The old compiler handles ) 71.42 381.45 P
+ 20 F
+ 2.65 (IfFail:) 180.21 381.45 P
+ 0 F
+ 1.1 ( ar) 222.19 381.45 P
+ 1.1 (guments slightly dif) 233.38 381.45 P
+ 1.1 (ferently than other ar) 315.37 381.45 P
+ 1.1 (guments: it does not evaluate the) 402.6 381.45 P
+ 20 F
+ 2.25 (IfFail:) 71.42 369.45 P
+ 0 F
+ 0.94 ( ar) 113.4 369.45 P
+ 0.94 (gument until the error condition actually occurs. This is in contrast to the new compiler which treats) 124.42 369.45 P
+ 20 F
+ 1.82 (IfFail:) 71.42 357.45 P
+ 0 F
+ 0.76 ( ar) 113.4 357.45 P
+ 0.76 (guments just like other ar) 124.25 357.45 P
+ 0.76 (guments, always evaluating them before the primitive call takes place. Note) 228.71 357.45 P
+ 0.02 (that this dif) 71.42 345.45 P
+ 0.02 (ference can be ignored in the common case where the ) 116.81 345.45 P
+ 20 F
+ 0.04 (IfFail:) 334.02 345.45 P
+ 0 F
+ 0.02 ( ar) 375.99 345.45 P
+ 0.02 (gument is a block \050since blocks evalu-) 386.1 345.45 P
+ (ate to themselves without side ef) 71.42 333.45 T
+ (fects\051.) 201.99 333.45 T
+ 4 F
+ -0.15 (The result returned by the error handler becomes the result of the primitive operation \050) 71.42 308.11 P
+ 12 F
+ -0.33 (0) 483.66 308.11 P
+ 4 F
+ -0.15 ( in our ex-) 490.25 308.11 P
+ -0.1 (ample\051; execution then continues normally) 71.42 294.11 P
+ -0.1 (. If you want the program to be aborted, you have to do) 275.45 294.11 P
+ 0.78 (this explicitly within the error handler) 71.42 280.11 P
+ 0.78 (, for example by calling the standard ) 257.05 280.11 P
+ 12 F
+ 1.71 (error:) 441.02 280.11 P
+ 4 F
+ 0.78 ( method de-) 480.58 280.11 P
+ (\336ned in the default world.) 71.42 266.11 T
+ 0.1 (The following table lists the error strings passed by primitives to indicate the reason of the primi-) 71.42 240.11 P
+ (tive failure.) 71.42 226.11 T
+ 71.42 181.12 539.42 189.11 C
+ 71.42 187.1 539.42 187.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 192.78 T
+ (able 8   Primitive failur) 77.74 192.78 T
+ (es) 186.48 192.78 T
+ 24 F
+ (Name) 71.42 170.45 T
+ (Description) 215.42 170.45 T
+ 0 F
+ (primitiveNotDe\336nedError) 71.42 153.45 T
+ (Primitive not de\336ned.) 215.42 153.45 T
+ (primitiveFailedError) 71.42 137.45 T
+ (General primitive failure \050for example, an ar) 215.42 137.45 T
+ (gument has an invalid value\051.) 393.15 137.45 T
+ (badT) 71.42 121.45 T
+ (ypeError) 91.26 121.45 T
+ (The receiver or an ar) 215.42 121.45 T
+ (gument is of the wrong type.) 298.49 121.45 T
+ (divisionByZeroError) 71.42 105.45 T
+ (Division by zero.) 215.42 105.45 T
+ (over\337owError) 71.42 89.45 T
+ 0.86 (Integer over\337ow) 215.42 89.45 P
+ 0.86 (. This can occur in integer arithmetic primitives or in U) 281.96 89.45 P
+ 1 F
+ 0.77 (NIX) 511.77 89.45 P
+ 0 F
+ 0.86 ( or) 527.74 89.45 P
+ (pixrect primitives \050when the result is too lar) 215.42 77.45 T
+ (ge to be represented as an integer\051.) 390.41 77.45 T
+ (badIndexError) 71.42 61.45 T
+ (The vector index \050e.g. in ) 215.42 61.45 T
+ 20 F
+ (_At:) 316.18 61.45 T
+ 0 F
+ (\051 is out of bounds \050too lar) 340.17 61.45 T
+ (ge or negative\051.) 441.59 61.45 T
+ FMENDPAGE
+ %%EndPage: "37" 42
+ %%Page: "38" 42
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-38) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ (badSizeError) 71.42 709.45 T
+ 0.1 (An invalid size of a vector was speci\336ed, e.g. attempting to clone a vector with a) 215.42 709.45 P
+ (negative size \050see ) 215.42 697.45 T
+ 20 F
+ (_Clone:Filler:) 288.41 697.45 T
+ 0 F
+ ( and ) 372.37 697.45 T
+ 20 F
+ (_CloneBytes:Filler:) 391.8 697.45 T
+ 0 F
+ ( below\051.) 505.73 697.45 T
+ (re\337ectT) 71.42 681.45 T
+ (ypeError) 101.81 681.45 T
+ 7.2 (A mirror primitive was applied to the wrong kind of slot, e.g.) 215.42 681.45 P
+ 20 F
+ (_MirrorParentGroupAt:) 215.42 669.45 T
+ 0 F
+ ( to a slot that isn\325) 341.36 669.45 T
+ (t a parent slot.) 410.31 669.45 T
+ (outOfMemoryError) 71.42 653.45 T
+ (The result of an enumeration primitive was too lar) 215.42 653.45 T
+ (ge and could not be allocated. ) 416.21 653.45 T
+ (EPERM, ENOENT) 71.42 637.45 T
+ (, ...) 148.97 637.45 T
+ 0.05 (These errors are returned by a U) 215.42 637.45 P
+ 1 F
+ 0.04 (NIX) 345.01 637.45 P
+ 0 F
+ 0.05 ( primitive if a U) 360.98 637.45 P
+ 1 F
+ 0.04 (NIX) 425.57 637.45 P
+ 0 F
+ 0.05 ( system call executed by) 441.54 637.45 P
+ 3.02 (the primitive fails. The U) 215.42 625.45 P
+ 1 F
+ 2.71 (NIX) 328.82 625.45 P
+ 0 F
+ 3.02 ( error codes are de\336ned in \322/usr/include/sys/) 344.79 625.45 P
+ (errno.h\323; see this \336le for details on the roughly 90 dif) 215.42 613.45 T
+ (ferent U) 428.16 613.45 T
+ 1 F
+ (NIX) 461.18 613.45 T
+ 0 F
+ ( error codes.) 477.15 613.45 T
+ 4 F
+ 0.33 (The ) 71.42 588.11 P
+ 12 F
+ 0.72 (_ErrorMessage) 93.4 588.11 P
+ 4 F
+ 0.33 ( primitive, sent to an error string returned by any primitive, returns a more) 179.09 588.11 P
+ (descriptive version of the error message; this is especially useful for UNIX errors.) 71.42 574.11 T
+ 10 F
+ (F) 71.42 540.78 T
+ (.2  A) 78.69 540.78 T
+ (vailable primitives) 105.24 540.78 T
+ 4 F
+ -0.45 (The following tables list the primitives currently de\336ned in the S) 71.42 514.11 P
+ 6 F
+ -0.41 (ELF) 377.43 514.11 P
+ 4 F
+ -0.45 ( system. Most primitives have) 396.96 514.11 P
+ (wrappers written in S) 71.42 500.11 T
+ 6 F
+ (ELF) 174.35 500.11 T
+ 4 F
+ (, so programs do not normally call them directly) 192.93 500.11 T
+ (. ) 423.67 500.11 T
+ 71.42 455.12 539.42 463.11 C
+ 71.42 461.1 539.42 461.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 466.78 T
+ (able 9   Cloning primitives) 77.74 466.78 T
+ 24 F
+ (Name) 71.42 444.45 T
+ (Description) 224.42 444.45 T
+ 0 F
+ (_Clone) 71.42 427.45 T
+ 1.23 (Return a clone \050a shallow copy\051 of the receiver) 224.42 427.45 P
+ 1.23 (. Cloning is the only way to) 421.29 427.45 P
+ 0.02 (create new objects in S) 224.42 415.45 P
+ 1 F
+ 0.02 (ELF) 316.67 415.45 P
+ 0 F
+ 0.02 (. Returns its receiver \050not a copy\051 when sent to inte-) 331.85 415.45 P
+ (gers, \337oats, canonical strings, and immutable strings.) 224.42 403.45 T
+ (_Clone:Filler:) 71.42 387.45 T
+ 0.79 (Return a clone \050shallow copy\051 of the receiver object vector) 224.42 387.45 P
+ 0.79 (, possibly resized.) 466.22 387.45 P
+ 0.06 (The receiver must be an object vector) 224.42 375.45 P
+ 0.06 (. The \336rst ar) 374.65 375.45 P
+ 0.06 (gument \050an integer\051 speci\336es) 423.5 375.45 P
+ -0.19 (the length of the new vector) 224.42 363.45 P
+ -0.19 (, and the second ar) 334.91 363.45 P
+ -0.19 (gument speci\336es the initial value) 408.61 363.45 P
+ 1 (of extra elements if the result vector is longer than the receiver vector) 224.42 351.45 P
+ 1 (. Fails) 513.99 351.45 P
+ (with badSizeError if the \336rst ar) 224.42 339.45 T
+ (gument is negative.) 348.88 339.45 T
+ 20 F
+ -0.59 (_Clone:Filler:) 224.42 327.45 P
+ 0 F
+ -0.25 ( is identical to ) 308.38 327.45 P
+ 20 F
+ -0.59 (_Clone) 366.25 327.45 P
+ 0 F
+ -0.25 ( if the \336rst ar) 402.23 327.45 P
+ -0.25 (gument is the same as) 452.69 327.45 P
+ (the length of the receiver) 224.42 315.45 T
+ (.) 323.79 315.45 T
+ (_CloneBytes:Filler:) 71.42 299.45 T
+ 0.21 (Analogous to ) 224.42 299.45 P
+ 20 F
+ 0.51 (_Clone:Filler) 280.93 299.45 P
+ 0 F
+ 0.21 (, but for byte vectors. The receiver must be a) 358.49 299.45 P
+ -0.08 (byte vector) 224.42 287.45 P
+ -0.08 (, and the second ar) 268.63 287.45 P
+ -0.08 (gument must be an integer \050only the lowest 8 bits) 342.78 287.45 P
+ -0.23 (are used to initialize new elements\051. Fails with badT) 224.42 275.45 P
+ -0.23 (ypeError if sent to a canon-) 430.93 275.45 P
+ (ical or immutable string.) 224.42 263.45 T
+ 71.42 219.13 539.42 227.12 C
+ 71.42 225.1 539.42 225.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 230.79 T
+ (able 10   V) 77.74 230.79 T
+ (ector primitives) 126.17 230.79 T
+ 24 F
+ (Name) 71.42 208.46 T
+ (Description) 224.42 208.46 T
+ 0 F
+ (_At:) 71.42 191.46 T
+ 0.36 (Return the element of the receiver \050an object vector\051 indexed by the ar) 224.42 191.46 P
+ 0.36 (gument) 509.44 191.46 P
+ (\050an integer\051. V) 224.42 179.46 T
+ (ectors are indexed beginning with 0. ) 281.87 179.46 T
+ (_At:Put:) 71.42 163.46 T
+ 0.54 (Store into an object vector element. The receiver is the object vector) 224.42 163.46 P
+ 0.54 (, the \336rst) 503.08 163.46 P
+ 1.62 (ar) 224.42 151.46 P
+ 1.62 (gument is the integer index, and the second ar) 232.01 151.46 P
+ 1.62 (gument is the object to be) 428.31 151.46 P
+ (stored. Returns the receiver) 224.42 139.46 T
+ (.) 333.78 139.46 T
+ (_Size) 71.42 123.46 T
+ (Returns an integer) 224.42 123.46 T
+ (, the number of elements in the receiver object vector) 297.3 123.46 T
+ (.) 509.92 123.46 T
+ FMENDPAGE
+ %%EndPage: "38" 43
+ 17 9 /Times-Bold FMDEFINEFONT
+ 18 10 /Symbol FMDEFINEFONT
+ %%Page: "39" 43
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-39) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ (_ByteAt:) 71.42 709.45 T
+ 1.66 (Analogous to ) 224.42 709.45 P
+ 20 F
+ 4 (_At:) 283.83 709.45 P
+ 0 F
+ 1.66 (, but for byte vectors.) 307.82 709.45 P
+ 11 F
+ 1.33 (\240) 399.97 713.45 P
+ 0 F
+ 1.66 ( Returns an integer in the range) 403.97 709.45 P
+ ([0..255].) 224.42 697.45 T
+ (_ByteAt:Put:) 71.42 681.45 T
+ 1.18 (Store into a byte vector element; analogous to ) 224.42 681.45 P
+ 20 F
+ 2.83 (_At:Put:) 419.84 681.45 P
+ 0 F
+ 1.18 (. The value to be) 467.82 681.45 P
+ -0.21 (stored must be an integer; only the lowest 8 bits are used. Fails if the receiver is) 224.42 669.45 P
+ (a canonical string or an immutable string.) 224.42 657.45 T
+ (_ByteSize) 71.42 641.45 T
+ (Analogous to ) 224.42 641.45 T
+ 20 F
+ (_Size) 280.5 641.45 T
+ 0 F
+ (, but for byte vectors.) 310.49 641.45 T
+ 71.42 597.12 539.42 605.11 C
+ 71.42 603.1 539.42 603.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 608.78 T
+ (able 1) 77.74 608.78 T
+ (1   Arithmetic primitives) 104.91 608.78 T
+ 17 F
+ (\340) 220.24 613.18 T
+ 24 F
+ (Name) 71.42 586.45 T
+ (Description) 224.42 586.45 T
+ 0 F
+ (_IntAdd:) 71.42 569.45 T
+ 0.32 (Integer addition. Returns sum of receiver and ar) 224.42 569.45 P
+ 0.32 (gument. The range of integers) 417.97 569.45 P
+ -0.02 (is [-2) 224.42 557.45 P
+ 11 F
+ -0.02 (29) 245.22 561.45 P
+ 0 F
+ -0.02 (..2) 253.22 557.45 P
+ 11 F
+ -0.02 (29) 263.21 561.45 P
+ 0 F
+ -0.02 (-1], i.e. roughly ) 271.21 557.45 P
+ 18 F
+ -0.02 (\261) 336.09 557.45 P
+ 0 F
+ -0.02 (536,000,000 \050standard 30-bit two\325) 341.58 557.45 P
+ -0.02 (s complement\051.) 477.82 557.45 P
+ (May fail because of over\337ow) 224.42 545.45 T
+ (.) 340.9 545.45 T
+ (_IntSub:) 71.42 529.45 T
+ 1.99 (Integer subtraction. Returns receiver minus ar) 224.42 529.45 P
+ 1.99 (gument. May fail because of) 417.39 529.45 P
+ (over\337ow) 224.42 517.45 T
+ (.) 259.3 517.45 T
+ (_IntMul:) 71.42 501.45 T
+ 1.93 (Integer multiplication. Returns product of receiver and ar) 224.42 501.45 P
+ 1.93 (gument. May fail) 466.45 501.45 P
+ (because of over\337ow) 224.42 489.45 T
+ (.) 304.26 489.45 T
+ (_IntDiv:) 71.42 473.45 T
+ -0.19 (Integer division. Returns integer part of receiver divided by ar) 224.42 473.45 P
+ -0.19 (gument. May fail) 470.68 473.45 P
+ (because of over\337ow or division by zero.) 224.42 461.45 T
+ (_IntMod:) 71.42 445.45 T
+ 2.63 (Integer modulus. Returns receiver modulo ar) 224.42 445.45 P
+ 2.63 (gument, with range 0 <= \050n) 416.72 445.45 P
+ (_IntMod: m\051 < abs\050m\051. May fail because of division by zero.) 224.42 433.45 T
+ (_IntComplement ) 71.42 417.45 T
+ (Returns bitwise complement \050i.e. invert all bits\051 of receiver) 224.42 417.45 T
+ (.) 460.37 417.45 T
+ (_IntAnd:) 71.42 401.45 T
+ (Returns bitwise AND of receiver and ar) 224.42 401.45 T
+ (gument.) 383.56 401.45 T
+ (_IntXor:) 71.42 385.45 T
+ (Returns bitwise exclusive OR of receiver and ar) 224.42 385.45 T
+ (gument.) 416.04 385.45 T
+ (_IntOr:) 71.42 369.45 T
+ (Returns bitwise inclusive OR of receiver and ar) 224.42 369.45 T
+ (gument.) 414.38 369.45 T
+ (_IntArithmeticShiftLeft:) 71.42 353.45 T
+ -0.05 (Shift receiver left by the number of bits indicated by the ar) 224.42 353.45 P
+ -0.05 (gument \050an integer\051.) 458.2 353.45 P
+ 1.02 (W) 224.42 341.45 P
+ 1.02 (ill fail with over\337owError if the resulting number is too lar) 233.46 341.45 P
+ 1.02 (ge to be repre-) 478.36 341.45 P
+ (sented as an integer \050equivalent to multiplying by a power of 2\051.) 224.42 329.45 T
+ (_IntLogicalShiftLeft:) 71.42 313.45 T
+ 0.31 (Bitwise shift receiver left by the number of bits indicated by the ar) 224.42 313.45 P
+ 0.31 (gument \050an) 493.87 313.45 P
+ (integer\051. No over\337ow will occur) 224.42 301.45 T
+ (.) 352.94 301.45 T
+ (_IntArithmeticShiftRight:) 71.42 285.45 T
+ 0.52 (Arithmetic right shift of receiver by the number of bits indicated by the ar) 224.42 285.45 P
+ 0.52 (gu-) 526.1 285.45 P
+ (ment \050an integer\051. The sign bit is preserved.) 224.42 273.45 T
+ (_IntLogicalShiftRight:) 71.42 257.45 T
+ 0.22 (Logical right shift of receiver by the number of bits indicated by the ar) 224.42 257.45 P
+ 0.22 (gument) 509.44 257.45 P
+ (\050an integer\051. 0 is shifted into the most signi\336cant bit.) 224.42 245.45 T
+ (_IntAsFloat) 71.42 229.45 T
+ (Return the integer receiver converted to a \337oat.) 224.42 229.45 T
+ (_FloatAdd:) 71.42 213.45 T
+ 2.71 (Floating-point add. Returns sum of receiver and ar) 224.42 213.45 P
+ 2.71 (gument. The range of) 445.26 213.45 P
+ 1.6 (\337oating-point numbers currently is approximately ) 224.42 201.45 P
+ 18 F
+ 1.6 (\261) 434.24 201.45 P
+ 0 F
+ 1.6 ([-) 439.73 201.45 P
+ 1.6 (4.3*10) 446.38 201.45 P
+ 11 F
+ 1.28 (-9) 473.87 205.45 P
+ 0 F
+ 1.6 (..4.3*10) 480.53 201.45 P
+ 11 F
+ 1.28 (9) 513.01 205.45 P
+ 0 F
+ 1.6 (]; the) 517.01 201.45 P
+ 0.82 (precision is 6 decimal digits \050this is IEEE standard 32-bit \337oat, but with two) 224.42 189.45 P
+ 0.17 (fewer exponent bits\051. Does not over\337ow or under\337ow \050but may go to ) 224.42 177.45 P
+ 18 F
+ 0.17 (\261) 504.95 177.45 P
+ 20 F
+ 0.42 (0.0) 510.43 177.45 P
+ 0 F
+ 0.17 ( or) 528.42 177.45 P
+ 18 F
+ (\261) 224.42 165.45 T
+ 20 F
+ (Inf) 229.91 165.45 T
+ 0 F
+ (, IEEE \337oating-point in\336nity\051.) 247.9 165.45 T
+ (_FloatSub:) 71.42 149.45 T
+ 1.09 (Floating-point subtraction. Returns receiver minus ar) 224.42 149.45 P
+ 1.09 (gument. Does not over-) 441.78 149.45 P
+ (\337ow or under\337ow) 224.42 137.45 T
+ (.) 295.39 137.45 T
+ 71.42 105.44 539.42 125.53 C
+ 71.42 113.43 203.4 113.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ 0.06 (\240  ) 71.42 102.77 P
+ 0 F
+ 0.08 (Note that strings are special kinds of byte vectors, and so primitives taking byte vectors as ar) 79.54 98.77 P
+ 0.08 (guments can also take) 451.2 98.77 P
+ (strings.) 71.42 87.77 T
+ 11 F
+ 0.49 (\340  ) 71.42 77.77 P
+ 0 F
+ 0.61 (Integer arithmetic primitives take integer receivers and ar) 80.39 73.77 P
+ 0.61 (guments; \337oating-point arithmetic primitives take \337oat-) 314.01 73.77 P
+ (ing-point receivers and ar) 71.42 62.77 T
+ (guments.) 173.66 62.77 T
+ FMENDPAGE
+ %%EndPage: "39" 44
+ %%Page: "40" 44
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-40) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ (_FloatMul:) 71.42 709.45 T
+ 0.26 (Floating-point multiplication. Returns product of receiver and ar) 224.42 709.45 P
+ 0.26 (gument. Does) 483.65 709.45 P
+ (not over\337ow or under\337ow) 224.42 697.45 T
+ (.) 328.43 697.45 T
+ (_FloatDiv:) 71.42 681.45 T
+ 3.52 (Floating-point division. Returns receiver divided by ar) 224.42 681.45 P
+ 3.52 (gument. May fail) 463.27 681.45 P
+ (because of division by zero.) 224.42 669.45 T
+ (_FloatMod:) 71.42 653.45 T
+ 4.39 (Floating-point modulus. Returns receiver modulo ar) 224.42 653.45 P
+ 4.39 (gument. If r is \050x) 454.41 653.45 P
+ 0.87 (_FloatMod: y\051, then 0 <= r < abs\050y\051, and ) 224.42 641.45 P
+ 0.87 (\050) 397.13 641.45 P
+ 0.87 (x-) 400.46 641.45 P
+ 0.87 (r) 408.78 641.45 P
+ 0.87 (\051) 412.11 641.45 P
+ 0.87 (/) 415.44 641.45 P
+ 0.87 (y is an integral number \050even) 418.22 641.45 P
+ 0.84 (though it might not be representable as a S) 224.42 629.45 P
+ 1 F
+ 0.75 (ELF) 401.58 629.45 P
+ 0 F
+ 0.84 ( integer\051. May fail because of) 417.56 629.45 P
+ (division by zero.) 224.42 617.45 T
+ (_FloatFloor) 71.42 601.45 T
+ 2.57 (Return the greatest integral value less than or equal to the \337oating-point) 224.42 601.45 P
+ 0.27 (receiver \050i.e. rounding towards negative in\336nity\051. The result is a \337oating-point) 224.42 589.45 P
+ (number) 224.42 577.45 T
+ (.) 254.41 577.45 T
+ (_FloatCeil) 71.42 561.45 T
+ 1.64 (Return the greatest integral value greater than or equal to the receiver \050i.e.) 224.42 561.45 P
+ (rounding towards positive in\336nity\051. The result is a \337oating-point number) 224.42 549.45 T
+ (.) 514.27 549.45 T
+ (_FloatT) 71.42 533.45 T
+ (runcate) 102.73 533.45 T
+ 2.66 (Return the receiver truncated towards zero. The result is a \337oating-point) 224.42 533.45 P
+ (number) 224.42 521.45 T
+ (.) 254.41 521.45 T
+ (_FloatRound) 71.42 505.45 T
+ 0.49 (Return the receiver rounded to the nearest integer) 224.42 505.45 P
+ 0.49 (. \322.5\323 is rounded to even, so) 425.18 505.45 P
+ (1.5 rounds to 2, and 2.5 also rounds to 2. The result is a \337oating-point number) 224.42 493.45 T
+ (.) 535.63 493.45 T
+ (_FloatAsInt) 71.42 477.45 T
+ 0.23 (Return the \337oating-point receiver rounded as in ) 224.42 477.45 P
+ 20 F
+ 0.54 (_FloatRound) 418.37 477.45 P
+ 0 F
+ 0.23 (. The result is) 484.33 477.45 P
+ (an integer) 224.42 465.45 T
+ (. May over\337ow) 263.56 465.45 T
+ (.) 324.26 465.45 T
+ 71.42 421.12 539.42 429.11 C
+ 71.42 427.1 539.42 427.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 432.78 T
+ (able 12   Comparison primitives) 77.74 432.78 T
+ 17 F
+ (\240) 227.58 437.18 T
+ 24 F
+ (Name) 71.42 410.45 T
+ (Description) 224.42 410.45 T
+ 0 F
+ (_Eq:) 71.42 393.45 T
+ (Identity: test if the receiver and the ar) 224.42 393.45 T
+ (gument are the same object.) 374.4 393.45 T
+ (_IntEQ:) 71.42 377.45 T
+ (Integer equality) 224.42 377.45 T
+ (. If two integers are ) 286.78 377.45 T
+ 20 F
+ (_IntEQ:) 367.27 377.45 T
+ 0 F
+ ( then they are ) 409.24 377.45 T
+ 20 F
+ (_Eq:) 465.86 377.45 T
+ 0 F
+ (.) 489.85 377.45 T
+ (_IntNE:) 71.42 361.45 T
+ (Integer inequality) 224.42 361.45 T
+ (.) 294.56 361.45 T
+ (_IntL) 71.42 345.45 T
+ (T) 92.71 345.45 T
+ (:) 98.32 345.45 T
+ (Integer less than.) 224.42 345.45 T
+ (_IntLE:) 71.42 329.45 T
+ (Integer less than or equal.) 224.42 329.45 T
+ (_IntGT) 71.42 313.45 T
+ (:) 100.35 313.45 T
+ (Integer greater than.) 224.42 313.45 T
+ (_IntGE:) 71.42 297.45 T
+ (Integer greater than or equal.) 224.42 297.45 T
+ (_FloatEQ:) 71.42 281.45 T
+ 0.53 (Floating-point equality) 224.42 281.45 P
+ 0.53 (. T) 316.2 281.45 P
+ 0.53 (wo \337oating point numbers may be ) 327.13 281.45 P
+ 20 F
+ 1.26 (_FloatEQ:) 469.65 281.45 P
+ 0 F
+ 0.53 ( but) 523.63 281.45 P
+ (not ) 224.42 269.45 T
+ 20 F
+ (_Eq:) 239.7 269.45 T
+ 0 F
+ ( \050e.g. ) 263.68 269.45 T
+ 20 F
+ (0.0) 286.44 269.45 T
+ 0 F
+ ( and ) 304.43 269.45 T
+ 20 F
+ (-0.0) 323.86 269.45 T
+ 0 F
+ (\051.) 347.85 269.45 T
+ (_FloatNE:) 71.42 253.45 T
+ (Floating-point inequality) 224.42 253.45 T
+ (.) 323.45 253.45 T
+ (_FloatL) 71.42 237.45 T
+ (T) 102.16 237.45 T
+ (:) 107.76 237.45 T
+ (Floating-point less than.) 224.42 237.45 T
+ (_FloatLE:) 71.42 221.45 T
+ (Floating-point less than or equal.) 224.42 221.45 T
+ (_FloatGT) 71.42 205.45 T
+ (:) 109.79 205.45 T
+ (Floating-point greater than.) 224.42 205.45 T
+ (_FloatGE:) 71.42 189.45 T
+ (Floating-point greater than or equal.) 224.42 189.45 T
+ 71.42 145.13 539.42 153.12 C
+ 71.42 151.1 539.42 151.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 156.79 T
+ (able 13   ) 77.74 156.79 T
+ (String-r) 119.25 156.79 T
+ (elated primitives) 156.89 156.79 T
+ 24 F
+ (Name) 71.42 134.46 T
+ (Description) 224.42 134.46 T
+ 0 F
+ (_StringCanonicalize) 71.42 117.46 T
+ 0.54 (Return the canonical version of the receiver \050a byte vector) 224.42 117.46 P
+ 11 F
+ 0.44 (\340) 461.62 121.46 P
+ 0 F
+ 0.54 (\051. All byte vectors) 465.62 117.46 P
+ -0.14 (containing the same sequence of bytes map to the same canonical string object,) 224.42 105.46 P
+ 71.42 80.44 539.42 100.53 C
+ 71.42 88.43 203.4 88.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ 0.17 (\240  ) 71.42 77.77 P
+ 0 F
+ 0.21 (All comparison primitives return either ) 79.76 73.77 P
+ 20 F
+ 0.5 (true) 239.87 73.77 P
+ 0 F
+ 0.21 ( or ) 263.86 73.77 P
+ 20 F
+ 0.5 (false) 277.6 73.77 P
+ 0 F
+ 0.21 (. Integer comparison primitives take integer receivers and) 307.58 73.77 P
+ (ar) 71.42 62.77 T
+ (guments; \337oating-point comparison primitives take \337oating-point receivers and ar) 79.01 62.77 T
+ (guments.) 406.4 62.77 T
+ FMENDPAGE
+ %%EndPage: "40" 45
+ %%Page: "41" 45
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-41) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ 0.76 (and only one canonical string object with a particular sequence of bytes ever) 224.42 709.45 P
+ -0.03 (exists in the system. Therefore, two canonical strings can be tested for equality) 224.42 697.45 P
+ 2.68 (ef) 224.42 685.45 P
+ 2.68 (\336ciently using ) 232.01 685.45 P
+ 20 F
+ 6.44 (_Eq:) 296.79 685.45 P
+ 0 F
+ 2.68 ( rather than by comparing byte-by-byte. All string) 320.78 685.45 P
+ (literals are canonical strings.) 224.42 673.45 T
+ (_StringPrint) 71.42 657.45 T
+ 2.42 (Print the characters of the receiver) 224.42 657.45 P
+ 2.42 (, a byte vector) 373.51 657.45 P
+ 2.42 (, on stdout. Returns the) 437 657.45 P
+ (receiver) 225 645.45 T
+ (.) 256.63 645.45 T
+ (_FloatPrintString) 71.42 629.45 T
+ 2.3 (Return the receiver) 224.42 629.45 P
+ 2.3 (, a \337oating-point number) 305.23 629.45 P
+ 2.3 (, formatted into an immutable) 411.12 629.45 P
+ (string \050similar to C\325) 223.42 617.45 T
+ (s ) 302 617.45 T
+ 20 F
+ (sprintf\050"%g"\051) 308.39 617.45 T
+ 0 F
+ ( format\051.) 386.35 617.45 T
+ (_FloatPrintStringPrecision:) 71.42 601.45 T
+ 2.05 (Analogous to ) 224.42 601.45 P
+ 20 F
+ 4.93 (_FloatPrintString) 284.61 601.45 P
+ 0 F
+ 2.05 (, but takes an integer ar) 386.55 601.45 P
+ 2.05 (gument that) 489.9 601.45 P
+ (speci\336es the number of digits after the decimal point.) 223.42 589.45 T
+ 71.42 545.12 539.42 553.11 C
+ 71.42 551.1 539.42 551.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 556.78 T
+ (able 14   Mirr) 77.74 556.78 T
+ (or primitives) 142.23 556.78 T
+ 17 F
+ (\240) 202.95 561.18 T
+ 24 F
+ (Name) 71.42 534.45 T
+ (Description) 224.42 534.45 T
+ 0 F
+ (_Mirror) 71.42 517.45 T
+ 1.45 (Returns a mirror on the receiver \050any object\051. A ) 224.42 517.45 P
+ 16 F
+ 1.45 (mirr) 430.66 517.45 P
+ 1.45 (or) 448.06 517.45 P
+ 0 F
+ 1.45 ( gives a view of an) 456.95 517.45 P
+ 0.53 (object that looks like a vector of slots. Mirrors are used to obtain information) 224.42 505.45 P
+ 0.28 (about aspects of objects that are not directly observable on the S) 224.42 493.45 P
+ 1 F
+ 0.25 (ELF) 484.3 493.45 P
+ 0 F
+ 0.28 ( level) 500.28 493.45 P
+ 0.28 (, for) 522.49 493.45 P
+ (example, the names of an object\325) 224.42 481.45 T
+ (s slots or the source code of a method.) 355.99 481.45 T
+ 1.97 (The object on which a mirror is created is called its ) 224.42 465.45 P
+ 16 F
+ 1.97 (r) 453.43 465.45 P
+ 1.97 (e\337ectee) 456.95 465.45 P
+ 0 F
+ 1.97 (. The mirror) 486.91 465.45 P
+ 0.34 (answers all questions by inspecting its re\337ectee. There are a dif) 224.42 453.45 P
+ 0.34 (ferent kinds of) 480.46 453.45 P
+ 0.5 (mirrors for dif) 224.42 441.45 P
+ 0.5 (ferent kinds of objects \050see Appendix B\051, but all respond to the) 282.42 441.45 P
+ 1.57 (same set of primitives described below \050with a few exceptions\051. ) 224.42 429.45 P
+ 20 F
+ 3.77 (_Mirror) 497.45 429.45 P
+ 0 F
+ -0.25 (operates by cloning the mirror prototype appropriate for the type of its receiver) 224.42 417.45 P
+ -0.25 (,) 536.92 417.45 P
+ 0.91 (installing the receiver as the re\337ectee of the cloned mirror) 224.42 405.45 P
+ 0.91 (, and returning the) 463.42 405.45 P
+ (new cloned mirror) 224.42 393.45 T
+ (.) 297.7 393.45 T
+ (_MirrorRe\337ectee) 71.42 377.45 T
+ (Return this mirror) 224.42 377.45 T
+ (\325) 296.97 377.45 T
+ (s re\337ectee. Fails if invoked on a mirror on a method.) 299.75 377.45 T
+ (_MirrorRe\337ecteeIdentityHash) 71.42 361.45 T
+ -0.2 (Return the identity hash of the re\337ectee of the receiver) 224.42 361.45 P
+ -0.2 (. See ) 439.94 361.45 P
+ 20 F
+ -0.48 (_IdentityHash) 461.47 361.45 P
+ 0 F
+ (in T) 224.42 349.45 T
+ (able 19.) 240.1 349.45 T
+ (_MirrorRe\337ecteeEq:) 71.42 333.45 T
+ 0.25 (T) 224.42 333.45 P
+ 0.25 (est if the receiver and ar) 229.83 333.45 P
+ 0.25 (gument are mirrors on the same object. See ) 327.2 333.45 P
+ 20 F
+ 0.6 (_Eq:) 504.91 333.45 P
+ 0 F
+ 0.25 ( in) 528.9 333.45 P
+ (T) 224.42 321.45 T
+ (able 12.) 229.83 321.45 T
+ (_MirrorSize) 71.42 305.45 T
+ (Return the number \050an integer\051 of slots in the re\337ectee.) 224.42 305.45 T
+ (_MirrorNameAt:) 71.42 289.45 T
+ -0.06 (Return the name of the speci\336ed slot of the re\337ectee. The ar) 224.42 289.45 P
+ -0.06 (gument, an integer) 462.79 289.45 P
+ -0.06 (,) 536.92 289.45 P
+ (speci\336es the zero-origin index of the slot.) 224.42 277.45 T
+ (_MirrorContentsAt:) 71.42 261.45 T
+ 0.25 (Return a mirror on the contents of the speci\336ed slot of the re\337ectee. The ar) 224.42 261.45 P
+ 0.25 (gu-) 526.1 261.45 P
+ (ment, an integer) 224.42 249.45 T
+ (, speci\336es the zero-origin index of the slot.) 288.7 249.45 T
+ (_MirrorIsParentAt:) 71.42 233.45 T
+ 0.05 (T) 224.42 233.45 P
+ 0.05 (est if the speci\336ed slot is a parent slot. The ar) 229.83 233.45 P
+ 0.05 (gument, an integer) 410.83 233.45 P
+ 0.05 (, speci\336es the) 485.2 233.45 P
+ (zero-origin index of the slot.) 224.42 221.45 T
+ (_MirrorParentGroupAt:) 71.42 205.45 T
+ 1.94 (Return the parent group \050priority\051 of the speci\336ed parent slot. \050The parent) 224.42 205.45 P
+ 2.21 (priority is a positive integer equalling the number of asterisks used when) 224.42 193.45 P
+ 0.53 (de\336ning the slot\051. The ar) 224.42 181.45 P
+ 0.53 (gument, an integer) 324.9 181.45 P
+ 0.53 (, speci\336es the zero-origin index of) 400.22 181.45 P
+ (the slot. Fails if the slot isn\325) 224.42 169.45 T
+ (t a parent slot.) 335.58 169.45 T
+ (_MirrorIsAssignableAt:) 71.42 153.45 T
+ 0.66 (T) 224.42 153.45 P
+ 0.66 (est if the speci\336ed slot is assignable. The ar) 229.83 153.45 P
+ 0.66 (gument, an integer) 408.4 153.45 P
+ 0.66 (, speci\336es the) 483.98 153.45 P
+ (zero-origin index of the slot.) 224.42 141.45 T
+ (_MirrorIsAr) 71.42 125.45 T
+ (gumentAt) 120.65 125.45 T
+ (:) 160.62 125.45 T
+ -0.17 (T) 224.42 125.45 P
+ -0.17 (est if the speci\336ed slot is an ar) 229.83 125.45 P
+ -0.17 (gument slot. The ar) 349.21 125.45 P
+ -0.17 (gument, an integer) 426.25 125.45 P
+ -0.17 (, speci\336es) 500.18 125.45 P
+ (the zero-origin index of the slot.) 224.42 113.45 T
+ 71.42 83.44 539.42 103.53 C
+ 71.42 91.43 203.4 91.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ (\340  ) 71.42 80.77 T
+ 0 F
+ (Remember that strings are special kinds of byte vectors.) 79.42 76.77 T
+ 11 F
+ (\240  ) 71.42 66.77 T
+ 0 F
+ (Unless otherwise noted, the receiver of a mirror primitive must be a mirror) 79.42 62.77 T
+ (.) 377.82 62.77 T
+ FMENDPAGE
+ %%EndPage: "41" 46
+ %%Page: "42" 46
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-42) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ (_MirrorV) 71.42 709.45 T
+ (isibilityAt:IfPrivate:IfPublic:IfUndeclared:) 109.68 709.45 T
+ 0.12 (Return the one of the three last ar) 224.42 693.45 P
+ 0.12 (guments corresponding to the slot\325) 358.61 693.45 P
+ 0.12 (s visibility) 497.36 693.45 P
+ (\050privacy declaration\051.) 224.42 681.45 T
+ (_MirrorCode) 71.42 665.45 T
+ 0.1 (Sent to a mirror on a method, this returns a mirror on a byte code object repre-) 224.42 665.45 P
+ (senting the source code of the method. Fails if the re\337ectee isn\325) 224.42 653.45 T
+ (t a method.) 477.39 653.45 T
+ (_MirrorReferencesLimit:) 71.42 637.45 T
+ 3.22 (Return a vector containing mirrors on objects referencing the receiver) 224.42 637.45 P
+ 3.22 (\325) 532.76 637.45 P
+ 3.22 (s) 535.54 637.45 P
+ -0.01 (re\337ectee. The limit \050either a positive integer or \337oating-point in\336nity\051 speci\336es) 224.42 625.45 P
+ 0.21 (the maximum size of the result vector \050to avoid running out of space inadvert-) 224.42 613.45 P
+ 1.49 (ently\051. An ar) 224.42 601.45 P
+ 1.49 (gument of \337oating-point in\336nity can be used to get all objects) 278.01 601.45 P
+ (referencing the re\337ectee.) 224.42 589.45 T
+ 1.35 (This and the following enumeration primitives will fail with ) 224.42 573.45 P
+ 20 F
+ 3.23 (primitive-) 479.46 573.45 P
+ -0.04 (FailedError) 224.42 561.45 P
+ 0 F
+ -0.02 ( if the limit is negative and with ) 290.39 561.45 P
+ 20 F
+ -0.04 (outOfMemoryError) 420.19 561.45 P
+ 0 F
+ -0.02 ( if the) 516.14 561.45 P
+ (result vector is too big to be allocated.) 224.42 549.45 T
+ (_MirrorAssignmentSlotsLimit:) 71.42 533.45 T
+ 0.46 (Return a vector containing mirrors on objects containing assignment slots \050all) 224.42 533.45 P
+ 0.96 (references to the assignment primitive\051 up to the limit speci\336ed by the ar) 224.42 521.45 P
+ 0.96 (gu-) 526.1 521.45 P
+ 0.09 (ment. The receiver must be a mirror) 224.42 509.45 P
+ 0.09 (, but its re\337ectee is ignored. This primitive) 368.62 509.45 P
+ -0.09 (may be removed in a future release in favor of an explicit assignment primitive) 224.42 497.45 P
+ (mirror which can be used with ) 224.42 485.45 T
+ 20 F
+ (_MirrorReferencesLimit:) 348.78 485.45 T
+ 0 F
+ (.) 486.7 485.45 T
+ (_MirrorImplementorsLimit:) 71.42 469.45 T
+ 0.44 (Sent to a mirror on a canonical string, this returns a vector containing mirrors) 224.42 469.45 P
+ 0.78 (on objects having a slot with this name up to the limit speci\336ed by the ar) 224.42 457.45 P
+ 0.78 (gu-) 526.1 457.45 P
+ (ment.) 224.42 445.45 T
+ (_MirrorAllLimit:) 71.42 429.45 T
+ 1.49 (Return a vector containing mirrors on objects in the system up to the limit) 224.42 429.45 P
+ 0.34 (speci\336ed by the \336rst ar) 224.42 417.45 P
+ 0.34 (gument. The receiver must be a mirror) 316.65 417.45 P
+ 0.34 (, but its re\337ectee) 472.34 417.45 P
+ (is ignored.) 224.42 405.45 T
+ 71.42 361.12 539.42 369.11 C
+ 71.42 367.1 539.42 367.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 372.78 T
+ (able 15   Perform primitives) 77.74 372.78 T
+ 24 F
+ (Name) 71.42 350.45 T
+ (Description) 224.42 350.45 T
+ 0 F
+ (_Perform:{W) 71.42 333.45 T
+ (ith:}) 125.78 333.45 T
+ 11 F
+ (\240) 143.91 337.45 T
+ 0 F
+ 0.77 (This group of ) 224.42 333.45 P
+ 16 F
+ 0.77 (perform) 283.65 333.45 P
+ 0 F
+ 0.77 ( primitives sends the message named by the \336rst ar) 315.85 333.45 P
+ 0.77 (gu-) 526.1 333.45 P
+ 1.06 (ment \050a canonical string\051 to the receiver) 224.42 321.45 P
+ 1.06 (, using the ) 389.71 321.45 P
+ 20 F
+ 2.55 (With:) 436.76 321.45 P
+ 0 F
+ 1.06 ( ar) 466.74 321.45 P
+ 1.06 (guments as the) 477.89 321.45 P
+ 1.27 (ar) 224.42 309.45 P
+ 1.27 (guments of the performed message, and returns the result. The number of) 232.01 309.45 P
+ 20 F
+ 3.54 (With:) 224.42 297.45 P
+ 0 F
+ 1.48 ( parts must correspond to the number of ar) 254.41 297.45 P
+ 1.48 (guments expected by the) 435.9 297.45 P
+ (message named by the \336rst ar) 224.42 285.45 T
+ (gument. ) 342.77 285.45 T
+ 1.22 (Example:) 224.42 269.45 P
+ 20 F
+ 2.94 ( x _Perform: \325foo:Bar:\325 With: 3 With: 4 ) 262.73 269.45 P
+ 0 F
+ 1.22 (has) 526.1 269.45 P
+ (exactly the same semantics as) 224.42 257.45 T
+ 20 F
+ ( x foo: 3 Bar: 4) 343.78 257.45 T
+ 0 F
+ (.) 439.73 257.45 T
+ 1.37 (V) 224.42 241.45 P
+ 1.37 (ariants of ) 230.53 241.45 P
+ 20 F
+ 3.29 (_Perform) 273.24 241.45 P
+ 0 F
+ 1.37 ( do not ever evaluate their ) 321.21 241.45 P
+ 20 F
+ 3.29 (IfFail:) 436.02 241.45 P
+ 0 F
+ 1.37 (ar) 478 241.45 P
+ 1.37 (gument upon) 485.58 241.45 P
+ 0.66 (failure \050in the case where the ) 224.42 229.45 P
+ 20 F
+ 1.59 (IfFail:) 346.63 229.45 P
+ 0 F
+ 0.66 ( extension is used\051; instead, the error) 388.61 229.45 P
+ 0.1 (messages described in Appendix A will be sent if the selector isn\325) 224.42 217.45 P
+ 0.1 (t a canonical) 488.72 217.45 P
+ 0.25 (string or if the wrong number of ar) 224.42 205.45 P
+ 0.25 (guments is passed. This may be changed in) 365.03 205.45 P
+ (a future release.) 224.42 193.45 T
+ (_PerformResend:{W) 71.42 177.45 T
+ (ith:}) 155.21 177.45 T
+ 1.46 (This group of primitives performs an undirected resend. The ar) 224.42 177.45 P
+ 1.46 (guments are) 489.39 177.45 P
+ (identical to ) 224.42 165.45 T
+ 20 F
+ (_Perform:) 271.62 165.45 T
+ 0 F
+ (. A directed resend cannot currently be ) 325.59 165.45 T
+ 16 F
+ (perform) 483.23 165.45 T
+ 0 F
+ (ed.) 515.43 165.45 T
+ (_Perform:DelegatingT) 71.42 149.45 T
+ (o:{W) 161.21 149.45 T
+ (ith:}) 182.82 149.45 T
+ 1.22 (This group of primitives performs a delegated send: the lookup starts at the) 224.42 149.45 P
+ 2.42 (object passed as the second ar) 224.42 137.45 P
+ 2.42 (gument. The \336rst ar) 355.99 137.45 P
+ 2.42 (gument is the message) 441.93 137.45 P
+ 0.95 (selector) 224.42 125.45 P
+ 0.95 (, as above. The sender path tiebreaker rule is not applied. This is the) 255.11 125.45 P
+ 71.42 80.44 539.42 100.53 C
+ 71.42 88.43 203.4 88.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ 0.01 (\240  ) 71.42 77.77 P
+ 0 F
+ 0.01 (The curly braces indicate that \324W) 79.43 73.77 P
+ 0.01 (ith:\325 can occur any number of times or not at all: possible selectors are ) 212.58 73.77 P
+ 0.01 (_Perform:,) 496.4 73.77 P
+ (_Perform:W) 71.42 62.77 T
+ (ith:, _Perform:W) 120.99 62.77 T
+ (ith:W) 188.88 62.77 T
+ (ith:, and so on.) 211.25 62.77 T
+ FMENDPAGE
+ %%EndPage: "42" 47
+ %%Page: "43" 47
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-43) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ 1.78 (only variant of ) 224.42 709.45 P
+ 20 F
+ 4.26 (_Perform) 291.1 709.45 P
+ 0 F
+ 1.78 ( that cannot be executed using normal message) 339.07 709.45 P
+ (send syntax.) 224.42 697.45 T
+ 71.42 653.12 539.42 661.11 C
+ 71.42 659.1 539.42 659.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 664.78 T
+ (able 16   Pr) 77.74 664.78 T
+ (ocess primitives) 130.64 664.78 T
+ 24 F
+ (Name) 71.42 642.45 T
+ (Description) 224.42 642.45 T
+ 0 F
+ (_NewProcessSize:Selector:Ar) 71.42 625.45 T
+ (guments:) 191.71 625.45 T
+ ( ) 228.36 625.45 T
+ 0.2 (Returns a new process object which is obtained by cloning the current process) 224.42 613.45 P
+ -0.01 (object. The new process is not started. The \336rst ar) 224.42 601.45 P
+ -0.01 (gument is an integer giving a) 423.16 601.45 P
+ -0.14 (minimal stack size in bytes; the system may actually allocate more stack space.) 224.42 589.45 P
+ 0.77 (The right size depends on the future behavior of the process so some experi-) 224.42 577.45 P
+ 1.17 (mentation may be necessary) 224.42 565.45 P
+ 1.17 (. A good \336rst try could be 64 KB. The last two) 340.26 565.45 P
+ -0.19 (ar) 224.42 553.45 P
+ -0.19 (guments are analogous to the ar) 232.01 553.45 P
+ -0.19 (guments of ) 357.71 553.45 P
+ 20 F
+ -0.47 (_Perform:With:) 404.52 553.45 P
+ 0 F
+ -0.19 (. They deter-) 488.47 553.45 P
+ -0 (mine the \336rst message that the process sends when it is started. The receiver of) 224.42 541.45 P
+ 20 F
+ 0.93 (_NewProcessSize:Selector:Arguments) 224.42 529.45 P
+ 0 F
+ 0.38 ( will also be the receiver of) 428.31 529.45 P
+ (the \336rst message send of the new process.) 224.42 517.45 T
+ (_ThisProcess) 71.42 501.45 T
+ (Return process object of current process. Ignores receiver) 224.42 501.45 T
+ (.) 454.23 501.45 T
+ (_AbortProcess) 71.42 485.45 T
+ (The receiver is a process object. The associated process will be terminated.) 224.42 485.45 T
+ (_PrintProcessStack) 71.42 469.45 T
+ 0.92 (Print the stack of the process associated with the receiver \050a process object\051.) 224.42 469.45 P
+ 0.22 (The number of stack frames printed is determined by ) 224.42 457.45 P
+ 20 F
+ 0.53 (_StackPrintLimit) 440.98 457.45 P
+ 0 F
+ 0.22 (.) 536.92 457.45 P
+ (See also section I-5.4.3.) 224.42 445.45 T
+ (_TW) 71.42 429.45 T
+ (AINS:ResultV) 90.85 429.45 T
+ (ector:) 148.6 429.45 T
+ 224.42 427.87 230.53 428.36 R
+ V
+ 1.55 (T) 224.42 429.45 P
+ 1.55 (ransfer and ) 230.18 429.45 P
+ 280.46 427.87 294.89 428.36 R
+ V
+ 1.55 (wai) 280.46 429.45 P
+ 1.55 (t for ) 294.89 429.45 P
+ 317.43 427.87 322.43 428.36 R
+ V
+ 1.55 (n) 317.43 429.45 P
+ 1.55 (ext ) 322.43 429.45 P
+ 338.69 427.87 342.58 428.36 R
+ V
+ 1.55 (s) 338.69 429.45 P
+ 1.55 (ignal. The \336rst ar) 342.58 429.45 P
+ 1.55 (gument is a process object to) 415.9 429.45 P
+ 2.08 (transfer to, the second ar) 224.42 417.45 P
+ 2.08 (gument must be an object vector of size at least) 331.1 417.45 P
+ 20 F
+ 2.13 (_TWAINSResultSize) 224.42 405.45 P
+ 0 F
+ 0.89 (. Ignores receiver) 326.37 405.45 P
+ 0.89 (. Control is transferred to the indi-) 397.24 405.45 P
+ 0.68 (cated process. When control is transferred back the return value indicates the) 224.42 393.45 P
+ 0.41 (cause of the transfer: \325aborted\325, \325) 224.42 381.45 P
+ 0.41 (stackOver\337ow\325, \325nonLifoBlock\325, \325yielded\325 or) 356.93 381.45 P
+ 1.86 (\325) 224.42 369.45 P
+ 1.86 (signal\325. The result vector is used to provide additional information. If the) 227.2 369.45 P
+ -0 (cause is \325) 224.42 357.45 P
+ -0 (signal\325, the \336rst element of the result vector is modi\336ed to contain the) 261.05 357.45 P
+ 0.4 (number of signals and the rest of the result vector is modi\336ed to contain a list) 224.42 345.45 P
+ 2.72 (of the signals that accumulated in between returns from ) 224.42 333.45 P
+ 20 F
+ 6.53 (_TWAINS:Re-) 473.46 333.45 P
+ 12.76 (sultVector:) 224.42 321.45 P
+ 0 F
+ 5.32 (. The possible signals are: \325) 290.39 321.45 P
+ 5.32 (sigint\325, \325) 425.79 321.45 P
+ 5.32 (sigio\325, \325) 464.43 321.45 P
+ 5.32 (siguser1\325,) 500.29 321.45 P
+ 0.71 (\325) 224.42 309.45 P
+ 0.71 (siguser2\325, \325) 227.2 309.45 P
+ 0.71 (sigpipe\325, \325) 272.33 309.45 P
+ 0.71 (sigterm\325, \325) 313.02 309.45 P
+ 0.71 (sigur) 354.83 309.45 P
+ 0.71 (g\325, \325) 374.64 309.45 P
+ 0.71 (sigchild\325, \325) 391.45 309.45 P
+ 0.71 (sigrealtimer) 434.92 309.45 P
+ 0.71 (\325 and \325) 483.04 309.45 P
+ 0.71 (sigcpu-) 510 309.45 P
+ (timer) 224.42 297.45 T
+ (\325.) 245.89 297.45 T
+ (_TW) 71.42 281.45 T
+ (AINSResultSize) 90.85 281.45 T
+ 5.55 (Maximum size required of the second ar) 224.42 281.45 P
+ 5.55 (gument of ) 419.06 281.45 P
+ 20 F
+ 13.31 (_TWAINS:Re-) 473.46 281.45 P
+ (sultVector:) 224.42 269.45 T
+ 0 F
+ (.) 290.39 269.45 T
+ (_Y) 71.42 253.45 T
+ (ield) 83.09 253.45 T
+ 2.67 (Gives up the CPU. Control is returned to the TW) 224.42 253.45 P
+ 2.67 (AINS process. Ignores) 443.33 253.45 P
+ (receiver) 224.42 241.45 T
+ (.) 256.06 241.45 T
+ (_BlockSignals) 71.42 225.45 T
+ (Sent to true or false. Enables/disables signals.) 224.42 225.45 T
+ (_SetRealT) 71.42 209.45 T
+ (imer) 113.27 209.45 T
+ 0.41 (Set real-time interval timer) 224.42 209.45 P
+ 0.41 (. The receiver is an integer denoting the number of) 333.09 209.45 P
+ (milliseconds per interval.) 224.42 197.45 T
+ (_SetCPUT) 71.42 181.45 T
+ (imer) 114.39 181.45 T
+ (Similar to ) 224.42 181.45 T
+ 20 F
+ (_SetRealTimer) 266.63 181.45 T
+ 0 F
+ (, but sets the CPU timer) 344.19 181.45 T
+ (.) 439.15 181.45 T
+ 71.42 137.13 539.42 145.12 C
+ 71.42 143.1 539.42 143.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 148.79 T
+ (able 17   Pr) 77.74 148.79 T
+ (ogramming primitives) 130.64 148.79 T
+ 24 F
+ (Name) 71.42 126.46 T
+ (Description) 224.42 126.46 T
+ 0 F
+ (_Print) 71.42 109.46 T
+ (Print the receiver in a low-level format and return ) 224.42 109.46 T
+ 20 F
+ (nil) 425.65 109.46 T
+ 0 F
+ ( \050see section I-5.3.1\051.) 443.64 109.46 T
+ (_V) 71.42 93.46 T
+ (ectorPrintLimit[:]) 82.53 93.46 T
+ 11 F
+ (\240) 153.6 97.46 T
+ 0 F
+ (Controls the number of vector elements printed by ) 224.42 93.46 T
+ 20 F
+ (_Print) 428.73 93.46 T
+ 0 F
+ (. Default: ) 464.71 93.46 T
+ 20 F
+ (20) 504.96 93.46 T
+ 0 F
+ (.) 516.95 93.46 T
+ (_RunScript) 71.42 77.46 T
+ 0.35 (Read in the \336le containing a list of S) 224.42 77.46 P
+ 1 F
+ 0.31 (ELF) 373.22 77.46 P
+ 0 F
+ 0.35 ( expressions and evaluate the expres-) 389.2 77.46 P
+ 1.19 (sions \050see section I-5.5\051. The receiver is a string naming the \336le to be read.) 224.42 65.46 P
+ FMENDPAGE
+ %%EndPage: "43" 48
+ %%Page: "44" 48
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-44) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 20 F
+ 0 X
+ 3.59 (_RunScript) 224.42 709.45 P
+ 0 F
+ 1.5 ( always returns to the prompt \050even if it is invoked within a) 284.39 709.45 P
+ (program\051. This will be changed in a later release.) 224.42 697.45 T
+ (_PrintPeriod[:]) 71.42 681.45 T
+ (Print a period when reading a script \336le with ) 224.42 681.45 T
+ 20 F
+ (_RunScript) 405.14 681.45 T
+ 0 F
+ (. Default: ) 465.1 681.45 T
+ 20 F
+ (false) 505.35 681.45 T
+ 0 F
+ (.) 535.33 681.45 T
+ (_PrintScriptName[:]) 71.42 665.45 T
+ 1.58 (Print the \336le name when reading a script \336le with ) 224.42 665.45 P
+ 20 F
+ 3.8 (_RunScript) 440.12 665.45 P
+ 0 F
+ 1.58 (. Default:) 500.09 665.45 P
+ 20 F
+ (false) 224.42 653.45 T
+ 0 F
+ (.) 254.41 653.45 T
+ (_SourceDir[:]) 71.42 637.45 T
+ 2.64 (Controls the directory where ) 224.42 637.45 P
+ 20 F
+ 6.34 (_RunScript) 352.13 637.45 P
+ 0 F
+ 2.64 ( reads its \336les. Default: ) 412.1 637.45 P
+ 12 F
+ 6.97 (\325) 520.24 637.45 P
+ 20 F
+ 6.34 (.) 526.84 637.45 P
+ 12 F
+ 6.97 (\325) 532.83 637.45 P
+ 0 F
+ 1.69 (\050current directory\051 or the value of the SELFDIR environment variable \050see) 224.42 625.45 P
+ (Appendix D\051.) 224.42 613.45 T
+ (_ReadSnapshot) 71.42 597.45 T
+ -0.13 (Read in the snapshot named by the receiver) 224.42 597.45 P
+ -0.13 (, a byte vector \050see section I-5.1\051. A) 397.14 597.45 P
+ 0.15 (snapshot may also be started from the U) 224.42 585.45 P
+ 1 F
+ 0.14 (NIX) 386.2 585.45 P
+ 0 F
+ 0.15 ( prompt. ) 402.17 585.45 P
+ 20 F
+ 0.36 (_ReadSnapshot) 438.84 585.45 P
+ 0 F
+ 0.15 ( eval-) 516.8 585.45 P
+ 3.19 (uates certain expressions before and after it executes; see section I-5.8.) 224.42 573.45 P
+ 20 F
+ 1.63 (_ReadSnapshot) 224.42 561.45 P
+ 0 F
+ 0.68 ( necessarily always returns to the prompt, even if invoked) 302.38 561.45 P
+ (within a program.) 224.42 549.45 T
+ (_W) 71.42 533.45 T
+ (riteSnapshot) 85.46 533.45 T
+ 0.14 (W) 224.42 533.45 P
+ 0.14 (rite a snapshot to the \336le named by the receiver) 233.46 533.45 P
+ 0.14 (, a byte vector \050see section I-) 423.38 533.45 P
+ 0.97 (5.1\051. Returns the receiver) 224.42 521.45 P
+ 0.97 (. ) 328.08 521.45 P
+ 20 F
+ 2.32 (_WriteSnapshot) 334.05 521.45 P
+ 0 F
+ 0.97 ( evaluates certain expressions) 418 521.45 P
+ (before and after it executes; see section I-5.8.) 224.42 509.45 T
+ (_SnapshotCode[:]) 71.42 493.45 T
+ (Save compiled code with snapshot. Default: ) 224.42 493.45 T
+ 12 F
+ (false.) 402.92 493.45 T
+ 0 F
+ (_De\336ne:) 71.42 477.45 T
+ 0.15 (De\336ne slots of the receiver \050see section I-5.6.3\051. ) 224.42 477.45 P
+ 20 F
+ 0.37 (_Define:) 420.21 477.45 P
+ 0 F
+ 0.15 ( always returns to) 468.18 477.45 P
+ 0.38 (the prompt \050even if it is invoked within a program\051. This will be changed in a) 224.42 465.45 P
+ (later release.) 224.42 453.45 T
+ (_AddSlots:) 71.42 437.45 T
+ 4.98 (Add all slots of the ar) 224.42 437.45 P
+ 4.98 (gument to the receiver \050see section I-5.6.1\051.) 335.5 437.45 P
+ 20 F
+ 3.59 (_AddSlots:) 224.42 425.45 P
+ 0 F
+ 1.5 ( always returns to the prompt \050even if it is invoked within a) 284.39 425.45 P
+ (program\051. This will be changed in a later release.) 224.42 413.45 T
+ (_AddSlotsIfAbsent:) 71.42 397.45 T
+ 2.22 (Same as ) 224.42 397.45 P
+ 20 F
+ 5.32 (_AddSlots:) 264.39 397.45 P
+ 0 F
+ 2.22 (, except that existing slots are never changed \050see) 324.35 397.45 P
+ (section I-5.6.3\051.) 224.42 385.45 T
+ (_RemoveSlot:) 71.42 369.45 T
+ 1.4 (Remove the designated slot from the receiver \050the ar) 224.42 369.45 P
+ 1.4 (gument is a string, the) 445.27 369.45 P
+ 0.17 (name of the slot\051. See also section I-5.6.2. ) 224.42 357.45 P
+ 20 F
+ 0.4 (_RemoveSlot:) 396.18 357.45 P
+ 0 F
+ 0.17 ( always returns to) 468.15 357.45 P
+ 0.38 (the prompt \050even if it is invoked within a program\051. This will be changed in a) 224.42 345.45 P
+ (later release.) 224.42 333.45 T
+ (_AsObject) 71.42 317.45 T
+ -0 (Returns the receiver \050an integer\051 converted to an object. The integer receiver is) 224.42 317.45 P
+ 0.17 (an object reference number displayed by ) 224.42 305.45 P
+ 20 F
+ 0.41 (_Print) 390.3 305.45 P
+ 0 F
+ 0.17 ( or a stack trace \050see section) 426.29 305.45 P
+ (I-5.3.1\051.) 224.42 293.45 T
+ (_HistoryLength[:]) 71.42 277.45 T
+ 0.38 (Controls the number of object references remembered by the system. Default:) 224.42 277.45 P
+ 20 F
+ (1000) 224.42 265.45 T
+ 0 F
+ (.) 248.41 265.45 T
+ (_CurrentHistoryNumber[:]) 71.42 249.45 T
+ 0.46 (Controls the reference number of the next object reference to be printed. This) 224.42 249.45 P
+ (primitive is usually used to reset the object reference numbering.) 224.42 237.45 T
+ (_HistoryNumber) 71.42 221.45 T
+ (Returns the history number of the receiver) 224.42 221.45 T
+ (, assigning one if necessary) 393.34 221.45 T
+ (.) 502.33 221.45 T
+ (_AddressAsObject) 71.42 205.45 T
+ 0.22 (Returns the receiver \050an integer denoting an address\051 converted into an object.) 224.42 205.45 P
+ 1.24 (This primitive is used for low-level debugging \050addresses of objects change) 224.42 193.45 P
+ (upon scavenges and garbage collections\051.) 224.42 181.45 T
+ (_StackPrintLimit[:]) 71.42 165.45 T
+ 1.63 (Controls the number of stack frames printed by ) 224.42 165.45 P
+ 20 F
+ 3.91 (_PrintProcessStack) 428.98 165.45 P
+ 0 F
+ 1.63 (.) 536.92 165.45 P
+ (Default: ) 224.42 153.45 T
+ 20 F
+ (10) 259.67 153.45 T
+ 0 F
+ (.) 271.67 153.45 T
+ (_UseNewCompiler[:]) 71.42 137.45 T
+ -0.2 (Controls whether to use the new compiler \050see section I-2.1\051. Default: ) 224.42 137.45 P
+ 12 F
+ -0.53 (false) 503.97 137.45 P
+ 0 F
+ -0.2 (.) 536.92 137.45 P
+ 71.42 102.44 539.42 122.53 C
+ 71.42 110.43 203.4 110.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ 0.12 (\240  ) 71.42 99.77 P
+ 0 F
+ 0.15 (Bracketed colons indicate option primitives. The ar) 79.67 95.77 P
+ 0.15 (gument is optional \050there are two versions of the primitive, one) 285.55 95.77 P
+ 0.3 (taking an ar) 71.42 84.77 P
+ 0.3 (gument and one not taking an ar) 119.02 84.77 P
+ 0.3 (gument\051. The brackets are not part of the primitive name. Option primi-) 249.42 84.77 P
+ 0.7 (tives ignore their receiver and return their current value \050for the no ar) 71.42 73.77 P
+ 0.7 (gument version that queries its state\051 or their) 356.05 73.77 P
+ (previous value \050for the one ar) 71.42 62.77 T
+ (gument version that sets its state\051. See section I-5.7.) 189.2 62.77 T
+ FMENDPAGE
+ %%EndPage: "44" 49
+ %%Page: "45" 49
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-45) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 71.42 697.12 539.42 705.11 C
+ 71.42 703.1 539.42 703.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 708.78 T
+ (able 18   System primitives) 77.74 708.78 T
+ 17 F
+ (\240) 203.16 713.18 T
+ 24 F
+ (Name) 71.42 686.45 T
+ (Description) 224.42 686.45 T
+ 0 F
+ (_Scavenge) 71.42 669.45 T
+ 1.66 (Force a scavenge \050a fast, partial garbage collection; see [Ung84], [Ung86],) 224.42 669.45 P
+ ([Lee88]\051.) 224.42 657.45 T
+ (_PrintScavenge[:]) 71.42 641.45 T
+ 11 F
+ (\340) 143.59 645.45 T
+ 0 F
+ (Print a message at every scavenge. Default: ) 224.42 641.45 T
+ 20 F
+ (false) 400.95 641.45 T
+ 0 F
+ (.) 430.93 641.45 T
+ (_GarbageCollect) 71.42 625.45 T
+ 1.11 (Force a full garbage collection \050this may take several seconds depending on) 224.42 625.45 P
+ (your hardware and the size of old space\051.) 224.42 613.45 T
+ (_PrintGC[:]) 71.42 597.45 T
+ (Print a message at every full garbage collection. Default: ) 224.42 597.45 T
+ 20 F
+ (false) 454.25 597.45 T
+ 0 F
+ (.) 484.23 597.45 T
+ (_Compact) 71.42 581.45 T
+ (Compact the compiled code cache.) 224.42 581.45 T
+ (_Flush) 71.42 565.45 T
+ (Flush all compiled methods from the compiled code cache.) 224.42 565.45 T
+ (_FlushInlineCache) 71.42 549.45 T
+ -0.15 (Flush all ) 224.42 549.45 P
+ 16 F
+ -0.15 (inline caches) 261.33 549.45 P
+ 0 F
+ -0.15 (. An inline cache caches the result of message lookups at) 313.63 549.45 P
+ 0.41 (the site of a message send. Inline caching speeds up subsequent executions of) 224.42 537.45 P
+ 0.4 (the particular send if the type of the receiver does not change. See [DS84] for) 224.42 525.45 P
+ (details.) 224.42 513.45 T
+ (_InlineCache[:]) 71.42 497.45 T
+ 1.26 (Disable/enable inline caching. Disabling inline caching can slow the system) 224.42 497.45 P
+ (considerably \050see ) 224.42 485.45 T
+ 20 F
+ (_FlushInlineCache) 296.58 485.45 T
+ 0 F
+ (\051. Default: ) 398.53 485.45 T
+ 20 F
+ (true) 442.1 485.45 T
+ 0 F
+ (.) 466.09 485.45 T
+ (_Inline[:]) 71.42 469.45 T
+ 0.04 (Disable/enable ) 224.42 469.45 P
+ 16 F
+ 0.04 (inlining) 286.36 469.45 P
+ 0 F
+ 0.04 (. Inlining is the process of inserting a copy of the callee) 317.46 469.45 P
+ 0.94 (in the caller) 224.42 457.45 P
+ 0.94 (\325) 273.85 457.45 P
+ 0.94 (s code during compilation in order to avoid message sends. See) 276.63 457.45 P
+ -0.11 ([CUL89] for details. Disabling inlining will slow the system by a few orders of) 224.42 445.45 P
+ (magnitude. Default: ) 224.42 433.45 T
+ 20 F
+ (true) 306.87 433.45 T
+ 0 F
+ (.) 330.86 433.45 T
+ (_T) 71.42 417.45 T
+ (race[:]) 82.18 417.45 T
+ 1.98 (T) 224.42 417.45 P
+ 1.98 (urn on/of) 230.18 417.45 P
+ 1.98 (f tracing of message sends. Only sends that actually result in a) 268.9 417.45 P
+ 0.16 (lookup \050those sends that are not inlined or inline cached\051 are displayed. T) 224.42 405.45 P
+ 0.16 (o see) 519.01 405.45 P
+ 0.93 (all sends, disable inlining and inline caching and \337ush all compiled methods) 224.42 393.45 P
+ (and inline caches \050see section I-5.4.5\051. Default: ) 224.42 381.45 T
+ 20 F
+ (false) 415.38 381.45 T
+ 0 F
+ (.) 445.36 381.45 T
+ (_Spy[:]) 71.42 365.45 T
+ 2.74 (T) 224.42 365.45 P
+ 2.74 (urn on/of) 230.18 365.45 P
+ 2.74 (f the system monitor) 269.66 365.45 P
+ 2.74 (, which continuously displays information) 359.94 365.45 P
+ 0.37 (about the state of the S) 224.42 353.45 P
+ 1 F
+ 0.33 (ELF) 317.58 353.45 P
+ 0 F
+ 0.37 ( system \050see Appendix E\051. Spying incurs little run-) 333.57 353.45 P
+ (time overhead. Default: ) 224.42 341.45 T
+ 20 F
+ (false) 321.57 341.45 T
+ 0 F
+ (.) 351.55 341.45 T
+ (_MonitorHeight) 71.42 325.45 T
+ (Return the height \050in pixels\051 of the screen area used by the system monitor) 224.42 325.45 T
+ (.) 521.72 325.45 T
+ (_SelfPro\336ling[:]) 71.42 309.45 T
+ 0.59 (Activate/deactivate the pro\336ling of S) 224.42 309.45 P
+ 1 F
+ 0.53 (ELF) 374.46 309.45 P
+ 0 F
+ 0.59 ( code. Pro\336ling incurs little run-time) 390.44 309.45 P
+ (overhead. Default: ) 224.42 297.45 T
+ 20 F
+ (false) 301.3 297.45 T
+ 0 F
+ (.) 331.29 297.45 T
+ (_ResetSelfPro\336le) 71.42 281.45 T
+ (Reset the pro\336le counters in order to start new measurements.) 224.42 281.45 T
+ (_PrintSelfPro\336le:) 71.42 265.45 T
+ 0.35 (Print the pro\336le; the ar) 224.42 265.45 P
+ 0.35 (gument is an integer specifying how many lines should) 316.17 265.45 P
+ 1.33 (be printed. The pro\336le shows the time consumed by each compiled method) 224.42 253.45 P
+ 2.74 (\050including the time consumed by any methods inlined into the compiled) 224.42 241.45 P
+ (method, but not including any time spent in the VM\051.) 224.42 229.45 T
+ (_GenerateCountCode[:]) 71.42 213.45 T
+ 1.51 (Generate/do not generate code to count the number of actual \050real\051 method) 224.42 213.45 P
+ 0.34 (invocations performed. Generating count code incurs some run-time overhead) 224.42 201.45 P
+ 0.9 (when enabled. Changing this setting only af) 224.42 189.45 P
+ 0.9 (fects methods compiled after the) 405.37 189.45 P
+ (change \050see ) 224.42 177.45 T
+ 20 F
+ (_Flush) 273.82 177.45 T
+ 0 F
+ (, earlier in this table\051. Default: ) 309.8 177.45 T
+ 20 F
+ (false) 433.04 177.45 T
+ 0 F
+ (.) 463.02 177.45 T
+ (_NumberOfMethodCalls) 71.42 161.45 T
+ 0.38 (Returns the number of method calls that were not mere data accesses made in) 224.42 161.45 P
+ 2.52 (methods that are instrumented to measure this \050see ) 224.42 149.45 P
+ 20 F
+ 6.06 (_GenerateCount-) 449.47 149.45 P
+ (Code:) 224.42 137.45 T
+ 0 F
+ (\051.) 254.41 137.45 T
+ 71.42 94.44 539.42 114.53 C
+ 71.42 102.43 203.4 102.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ -0.01 (\240  ) 71.42 91.77 P
+ 0 F
+ -0.01 (All system primitives other than option primitives \050indicated in this table by [:] after their names\051 return \050but other-) 79.4 87.77 P
+ (wise ignore\051 their receivers. Option primitives return their previous value.) 71.42 76.77 T
+ 11 F
+ (\340  ) 71.42 66.77 T
+ 0 F
+ (Bracketed colons indicate option primitives. See footnote on page 44.) 79.42 62.77 T
+ FMENDPAGE
+ %%EndPage: "45" 50
+ %%Page: "46" 50
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-46) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ (_NumberOfAccessMethodCalls) 71.42 709.45 T
+ 0.85 (Returns the number of actual data access method calls made in methods that) 224.42 709.45 P
+ (are instrumented to measure this \050see ) 224.42 697.45 T
+ 20 F
+ (_GenerateCountCode:) 375.42 697.45 T
+ 0 F
+ (\051.) 489.36 697.45 T
+ (_PrintMemory) 71.42 681.45 T
+ (Print low-level debugging information about the memory system.) 224.42 681.45 T
+ (_V) 71.42 665.45 T
+ (erify) 82.53 665.45 T
+ (V) 224.42 665.45 T
+ (erify the integrity of the S) 230.53 665.45 T
+ 1 F
+ (ELF) 334.07 665.45 T
+ 0 F
+ ( virtual machine.) 350.05 665.45 T
+ 71.42 621.12 539.42 629.11 C
+ 71.42 627.1 539.42 627.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 632.78 T
+ (able 19   Miscellaneous primitives) 77.74 632.78 T
+ 17 F
+ (\240) 235.52 637.18 T
+ 24 F
+ (Name) 71.42 610.45 T
+ (Description) 224.42 610.45 T
+ 0 F
+ (_IdentityHash) 71.42 593.45 T
+ -0.12 (Return an integer hash value for the receiver) 224.42 593.45 P
+ -0.12 (. The hash for a particular object is) 400.93 593.45 P
+ (constant, but it is not unique \050several objects might have the same hash value\051.) 224.42 581.45 T
+ (_Eval) 71.42 565.45 T
+ 2.37 (Evaluate the receiver) 224.42 565.45 P
+ 2.37 (, a byte vector containing a S) 313.12 565.45 P
+ 1 F
+ 2.13 (ELF) 443.62 565.45 P
+ 0 F
+ 2.37 ( expression, in the) 459.6 565.45 P
+ 0 (context of the lobby and return the result. Example: ) 224.42 553.45 P
+ 20 F
+ 0.01 (\3253+4\325) 433.2 553.45 P
+ 0.01 (_Eval) 469.18 553.45 P
+ 0 F
+ 0 ( returns 7.) 499.17 553.45 P
+ 20 F
+ 2.7 (_Eval) 224.42 541.45 P
+ 0 F
+ 1.13 (s can be nested. ) 254.41 541.45 P
+ 20 F
+ 2.7 (_Eval) 324.14 541.45 P
+ 0 F
+ 1.13 ( fails if the string is not a syntactically valid) 354.12 541.45 P
+ (S) 224.42 529.45 T
+ 1 F
+ (ELF) 229.98 529.45 T
+ 0 F
+ ( expression.) 245.96 529.45 T
+ (_Restart) 71.42 513.45 T
+ 0.55 (Restart the current method, i.e. jump to the beginning of the method. Used to) 224.42 513.45 P
+ (implement looping in blocks.) 224.42 501.45 T
+ (_ErrorMessage) 71.42 485.45 T
+ 0.12 (Return a short description \050a canonical string\051 of the receiver) 224.42 485.45 P
+ 0.12 (, which should be) 468.55 485.45 P
+ 2 (an error string returned by a primitive failure. Especially useful for U) 224.42 473.45 P
+ 1 F
+ 1.8 (NIX) 523.45 473.45 P
+ 0 F
+ (errors. ) 224.42 461.45 T
+ -0.07 (Example: ) 224.42 445.45 P
+ 20 F
+ -0.18 (\325E2BIG\325 _ErrorMessage) 265.16 445.45 P
+ 0 F
+ -0.07 ( returns ) 390.91 445.45 P
+ 20 F
+ -0.18 (\325Arg list too long\325) 423.52 445.45 P
+ 0 F
+ -0.07 (.) 536.92 445.45 P
+ (_Manufacturer) 71.42 429.45 T
+ (Return the name \050a canonical string\051 of the manufacturer of the host computer) 224.42 429.45 T
+ (.) 535.85 429.45 T
+ (_Help) 71.42 413.45 T
+ (Print a list of useful primitives.) 224.42 413.45 T
+ (_PrintOptionPrimitives) 71.42 397.45 T
+ 0.63 (Print a list of the available option primitives with a short explanation of their) 224.42 397.45 P
+ (function and their current settings \050see section I-5.7\051.) 224.42 385.45 T
+ (_Quit) 71.42 369.45 T
+ 1.06 (Leave the S) 224.42 369.45 P
+ 1 F
+ 0.95 (ELF) 273.73 369.45 P
+ 0 F
+ 1.06 ( system \050equivalent to typing ) 289.71 369.45 P
+ 20 F
+ 2.54 (^D) 413.55 369.45 P
+ 0 F
+ 1.06 ( \050control-D\051 at the prompt\051.) 425.55 369.45 P
+ (The state of the world is ) 224.42 357.45 T
+ 16 F
+ (not) 323.8 357.45 T
+ 0 F
+ ( saved.) 336.57 357.45 T
+ 71.42 313.13 539.42 321.12 C
+ 71.42 319.1 539.42 319.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 324.79 T
+ (able 20   U) 77.74 324.79 T
+ 24 F
+ (NIX) 127.18 324.79 T
+ 5 F
+ ( primitives) 145.5 324.79 T
+ 24 F
+ (Name) 71.42 302.46 T
+ (Corr) 224.42 302.46 T
+ (esponding U) 245.33 302.46 T
+ 17 F
+ (NIX) 298.37 302.46 T
+ 24 F
+ ( call) 314.85 302.46 T
+ 0 F
+ (_HostName) 71.42 285.46 T
+ (gethostname\050\051. Ignores receiver) 224.42 285.46 T
+ (.) 350.7 285.46 T
+ (_HostID) 71.42 269.46 T
+ 0.11 (gethostid\050\051; returns a four) 224.42 269.46 P
+ 0.11 (-element byte vector) 326.98 269.46 P
+ 0.11 (, corresponding to the four bytes) 408.96 269.46 P
+ 3.05 (returned by gethostid\050\051; the \336rst element is the high-order byte. Ignores) 224.42 257.46 P
+ (receiver) 224.42 245.46 T
+ (.) 256.06 245.46 T
+ (_OpenMode:) 71.42 229.46 T
+ 1.09 (open\050receiver) 224.42 229.46 P
+ 1.09 (, mode\051; the receiver is the \336le name \050a byte vector\051, the ar) 278.96 229.46 P
+ 1.09 (gu-) 526.1 229.46 P
+ -0.08 (ment mode is an integer) 224.42 217.46 P
+ -0.08 (. Returns the \336le descriptor \050an integer\051 if the \336le could) 319.58 217.46 P
+ (be successfully opened.) 224.42 205.46 T
+ (_OpenMode:Permission:) 71.42 189.46 T
+ -0.09 (open\050receiver) 224.42 189.46 P
+ -0.09 (, mode, permission\051. The receiver is the \336le name \050a byte vector\051;) 278.96 189.46 P
+ -0.17 (the ar) 224.42 177.46 P
+ -0.17 (guments mode and permission are integers. Returns the \336le descriptor \050an) 246.56 177.46 P
+ (integer\051 if the \336le could be successfully opened.) 224.42 165.46 T
+ (_Close) 71.42 149.46 T
+ (close\050receiver\051. The receiver should be an integer \336le descriptor) 224.42 149.46 T
+ (.) 479.48 149.46 T
+ (_ReadInto:Of) 71.42 133.46 T
+ (fset:Count:) 126.2 133.46 T
+ 2.34 (read\050receiver) 224.42 133.46 P
+ 2.34 (, toByteV) 276.73 133.46 P
+ 2.34 (ector) 316.83 133.46 P
+ 2.34 (, count\051. The receiver should be an integer \336le) 336.41 133.46 P
+ 1.46 (descriptor) 224.42 121.46 P
+ 1.46 (, the \336rst ar) 263.99 121.46 P
+ 1.46 (gument is the byte vector to be read into, of) 313.71 121.46 P
+ 1.46 (fset is an) 500.98 121.46 P
+ -0.19 (integer specifying the starting of) 224.42 109.46 P
+ -0.19 (fset in the byte vector or string, and count is an) 353.39 109.46 P
+ 3.85 (integer) 224.42 97.46 P
+ 3.85 (. Fails with over\337owError if the buf) 251.63 97.46 P
+ 3.85 (fer is too short. Fails with) 417.48 97.46 P
+ 71.42 69.44 539.42 89.53 C
+ 71.42 77.43 203.4 77.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ (\240  ) 71.42 66.77 T
+ 0 F
+ (Unless otherwise noted, all of the miscellaneous primitives return \050but otherwise ignore\051 their receivers.) 79.42 62.77 T
+ FMENDPAGE
+ %%EndPage: "46" 51
+ %%Page: "47" 51
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-47) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ 0.68 (badT) 224.42 709.45 P
+ 0.68 (ypeError if toByteV) 244.26 709.45 P
+ 0.68 (ector is a canonical or immutable string. Returns the) 325 709.45 P
+ (number of bytes actually read.) 224.42 697.45 T
+ (_W) 71.42 681.45 T
+ (riteFrom:Of) 85.46 681.45 T
+ (fset:Count:) 133.58 681.45 T
+ 0.67 (write\050receiver) 224.42 681.45 P
+ 0.67 (, fromByteV) 280.07 681.45 P
+ 0.67 (ector) 330.16 681.45 P
+ 0.67 (, count\051. The receiver should be an integer \336le) 349.74 681.45 P
+ 0.39 (descriptor) 224.42 669.45 P
+ 0.39 (, the \336rst ar) 263.99 669.45 P
+ 0.39 (gument is the byte vector to be written from, of) 310.5 669.45 P
+ 0.39 (fset is an) 503.12 669.45 P
+ 0.13 (integer specifying the starting of) 224.42 657.45 P
+ 0.13 (fset in the byte vector) 354.65 657.45 P
+ 0.13 (, and count is an integer) 441.36 657.45 P
+ 0.13 (.) 536.92 657.45 P
+ 0.07 (Fails with over\337owError if the buf) 224.42 645.45 P
+ 0.07 (fer is too short. Returns the number of bytes) 362.57 645.45 P
+ (actually written.) 224.42 633.45 T
+ (_LseekT) 71.42 617.45 T
+ (o:Mode:) 105.69 617.45 T
+ -0.02 (lseek\050receiver) 224.42 617.45 P
+ -0.02 (, to, mode\051. The receiver should be an integer \336le descriptor) 280.07 617.45 P
+ -0.02 (. The) 518.9 617.45 P
+ -0 (two ar) 224.42 605.45 P
+ -0 (guments should be integers; the result is an integer) 249.5 605.45 P
+ -0 (, the absolute position) 451.71 605.45 P
+ (seeked to.) 224.42 593.45 T
+ (_NumberCharsInFile) 71.42 577.45 T
+ 1.73 (Return the size of the \336le denoted by the receiver \050in bytes\051. The receiver) 224.42 577.45 P
+ (should be an integer \336le descriptor) 224.42 565.45 T
+ (.) 362.39 565.45 T
+ (_SelectInto:Size:) 71.42 549.45 T
+ 0.22 (select\050\051. The \336rst ar) 224.42 549.45 P
+ 0.22 (gument is an object vector in which the \336le descriptors, on) 303.18 549.45 P
+ -0.13 (which I/O is possible, are stored; the second ar) 224.42 537.45 P
+ -0.13 (gument is the maximum number) 410.01 537.45 P
+ 2.47 (of \336le descriptors to store. Returns the number of \336le descriptors stored.) 224.42 525.45 P
+ (Ignores receiver) 224.42 513.45 T
+ (.) 288.53 513.45 T
+ (_CBreak:) 71.42 497.45 T
+ 0.7 (Enter/exit cbreak mode for stdin. The ar) 224.42 497.45 P
+ 0.7 (gument is one of the boolean objects) 388.62 497.45 P
+ 20 F
+ 0.94 (true) 224.42 485.45 P
+ 0 F
+ 0.39 ( or ) 248.41 485.45 P
+ 20 F
+ 0.94 (false) 262.52 485.45 P
+ 0 F
+ 0.39 (. The primitive returns the previous state of cbreak \050) 292.5 485.45 P
+ 20 F
+ 0.94 (true) 504.22 485.45 P
+ 0 F
+ 0.39 ( or) 528.21 485.45 P
+ 20 F
+ 6.56 (false) 224.42 473.45 P
+ 0 F
+ 2.73 (\051. In cbreak mode, ICRNL, ICANON, and ECHO are turned of) 254.41 473.45 P
+ 2.73 (f.) 533.6 473.45 P
+ 0.81 (Cbreak mode is always exited before reading at the prompt; it is temporarily) 224.42 461.45 P
+ (exited on ) 224.42 449.45 T
+ 20 F
+ (^Z) 263.84 449.45 T
+ 0 F
+ ( \050control-Z\051. Ignores receiver) 275.84 449.45 T
+ (. ) 391.84 449.45 T
+ (_System) 71.42 433.45 T
+ 2.05 (system\050receiver\051; the receiver should be a byte vector) 224.42 433.45 P
+ 2.05 (. Returns the integer) 452.21 433.45 P
+ (termination status that system\050\051 returns.) 224.42 421.45 T
+ (_T) 71.42 405.45 T
+ (imeUser) 82.18 405.45 T
+ 1.59 (Return the \322user\323 time \050in milliseconds\051 used by the S) 224.42 405.45 P
+ 1 F
+ 1.43 (ELF) 455.02 405.45 P
+ 0 F
+ 1.59 ( system. Ignores) 471 405.45 P
+ (receiver) 224.42 393.45 T
+ (.) 256.06 393.45 T
+ (_T) 71.42 377.45 T
+ (imeSystem) 82.18 377.45 T
+ 0.58 (Return the \322system\323 time \050in milliseconds\051 used by the S) 224.42 377.45 P
+ 1 F
+ 0.52 (ELF) 457.04 377.45 P
+ 0 F
+ 0.58 ( system. Ignores) 473.02 377.45 P
+ (receiver) 224.42 365.45 T
+ (.) 256.06 365.45 T
+ (_T) 71.42 349.45 T
+ (imeCPU) 82.18 349.45 T
+ -0.16 (Return the total CPU time \050in milliseconds\051 used by the S) 224.42 349.45 P
+ 1 F
+ -0.14 (ELF) 453.25 349.45 P
+ 0 F
+ -0.16 ( system \050identical) 469.23 349.45 P
+ (to ) 224.42 337.45 T
+ 20 F
+ (_TimeUser + _TimeSystem) 234.7 337.45 T
+ 0 F
+ (\051. Ignores receiver) 372.62 337.45 T
+ (.) 445.05 337.45 T
+ (_T) 71.42 321.45 T
+ (imeReal) 82.18 321.45 T
+ (Real time \050in milliseconds\051 since starting up S) 224.42 321.45 T
+ 1 F
+ (ELF) 409.04 321.45 T
+ 0 F
+ (. Ignores receiver) 424.22 321.45 T
+ (.) 493.33 321.45 T
+ (_DateT) 71.42 305.45 T
+ (ime) 101.05 305.45 T
+ 2.16 (Returns a vector containing the current date and time as 7 integers: year) 224.42 305.45 P
+ 2.16 (,) 536.92 305.45 P
+ -0.14 (month, day) 224.42 293.45 P
+ -0.14 (, weekday \0500 = Sunday\051, hour) 268.61 293.45 P
+ -0.14 (, minute, and second. Ignores receiver) 386.1 293.45 P
+ -0.14 (.) 536.92 293.45 P
+ (_TCPConnectT) 71.42 277.45 T
+ (oHost:Port:) 133.47 277.45 T
+ 0.57 (Opens a TCP connection and returns an integer \336le descriptor) 224.42 277.45 P
+ 0.57 (. The \336rst ar) 475.73 277.45 P
+ 0.57 (gu-) 526.1 277.45 P
+ -0.13 (ment should be a byte vector whose \336rst four bytes contain the Internet address) 224.42 265.45 P
+ 0.96 (of the host; the second ar) 224.42 253.45 P
+ 0.96 (gument should be an integer specifying the desired) 329.24 253.45 P
+ (port number) 224.42 241.45 T
+ (. Ignores receiver) 273.01 241.45 T
+ (.) 342.11 241.45 T
+ 71.42 197.12 539.42 205.11 C
+ 71.42 203.1 539.42 203.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 5 F
+ 0 X
+ 0 K
+ (T) 71.42 208.78 T
+ (able 21   Pixr) 77.74 208.78 T
+ (ect primitives) 139.19 208.78 T
+ 17 F
+ (\240) 202.95 213.18 T
+ 24 F
+ (Name) 71.42 186.45 T
+ (Description or corr) 224.42 186.45 T
+ (esponding Sun ) 306.4 186.45 T
+ 27 F
+ (Pixrect) 371.39 186.45 T
+ 24 F
+ ( graphics library call) 400.82 186.45 T
+ 0 F
+ (_PrOpen) 71.42 169.45 T
+ 1.89 (pr_open\050\051; the receiver must be a byte vector \336le name. Returns a pixrect) 224.42 169.45 P
+ (handle.) 224.42 157.45 T
+ (_MemCreateW) 71.42 141.45 T
+ (idthHeight:Depth:) 132.64 141.45 T
+ (mem_create\050\051; the receiver can be any object. Returns a pixrect handle.) 224.42 141.45 T
+ (_GetPixrectPrW) 71.42 125.45 T
+ (idth) 137.09 125.45 T
+ (Return the width of the receiver) 224.42 125.45 T
+ (.) 351.27 125.45 T
+ (_GetPixrectPrHeight) 71.42 109.45 T
+ (Return the height of the receiver) 224.42 109.45 T
+ (.) 353.49 109.45 T
+ (_GetPixrectPrDepth) 71.42 93.45 T
+ (Return the depth of the receiver) 224.42 93.45 T
+ (.) 350.71 93.45 T
+ 71.42 69.44 539.42 89.53 C
+ 71.42 77.43 203.4 77.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ (\240  ) 71.42 66.77 T
+ 0 F
+ (If not explicitly described otherwise, the receiver of these primitives must be a pixrect handle.) 79.42 62.77 T
+ FMENDPAGE
+ %%EndPage: "47" 52
+ %%Page: "48" 52
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-48) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ (_PrRegionX:Y) 71.42 709.45 T
+ (:W) 130.47 709.45 T
+ (:H:) 142.32 709.45 T
+ (pr_region\050\051) 224.42 709.45 T
+ (_PrClose) 71.42 693.45 T
+ (pr_close\050\051) 224.42 693.45 T
+ (_PrGetX:Y) 71.42 677.45 T
+ (:) 116.03 677.45 T
+ (pr_get\050\051) 224.42 677.45 T
+ (_PrPutX:Y) 71.42 661.45 T
+ (:V) 114.93 661.45 T
+ (alue:) 123.82 661.45 T
+ (pr_put\050\051) 224.42 661.45 T
+ (_PrRopDestDX:DY) 71.42 645.45 T
+ (:DW) 151.01 645.45 T
+ (:DH:Op:Source:SX:SY) 170.07 645.45 T
+ (:) 262.99 645.45 T
+ (pr_rop\050\051) 224.42 633.45 T
+ (_PrStencilDestDX:DY) 71.42 617.45 T
+ (:DW) 162.11 617.45 T
+ (:DH:Op:Stencil:StX:StY) 181.17 617.45 T
+ (:Source:SX:SY) 279.66 617.45 T
+ (:) 340.38 617.45 T
+ (pr_stencil\050\051) 224.42 605.45 T
+ (_PrReplropDestDX:DY) 71.42 589.45 T
+ (:DW) 166.55 589.45 T
+ (:DH:Op:Source:SX:SY) 185.61 589.45 T
+ (:) 278.53 589.45 T
+ (pr_replrop\050\051) 224.42 577.45 T
+ (_PrV) 71.42 561.45 T
+ (ectorX0:Y0:X1:Y1:Op:V) 91.41 561.45 T
+ (alue:) 192.46 561.45 T
+ (pr_vector\050\051) 224.42 561.45 T
+ (_PrPolygon2DestDX:DY) 71.42 545.45 T
+ (:NBnds:NPts:XList:YList:Op:Source:SX:SY) 172.67 545.45 T
+ (:) 352.23 545.45 T
+ 0.85 (pr_polygon_2\050\051; ) 224.42 529.45 P
+ 20 F
+ 2.05 (XList) 293.29 529.45 P
+ 0 F
+ 0.85 ( and ) 323.27 529.45 P
+ 20 F
+ 2.05 (YList) 344.41 529.45 P
+ 0 F
+ 0.85 ( must be vectors of the x- and y-coordi-) 374.39 529.45 P
+ 4.48 (nates of the polygon vertices; these replace the ) 224.42 517.45 P
+ 20 F
+ 10.76 (vlist) 449.58 517.45 P
+ 0 F
+ 4.48 ( ar) 479.57 517.45 P
+ 4.48 (gument of) 494.13 517.45 P
+ (pr_polygon_2.) 224.42 505.45 T
+ (_PrLineX0:Y0:X1:Y1:Brush:T) 71.42 489.45 T
+ (exture:Op:) 195.66 489.45 T
+ 0.71 (pr_line\050\051; ) 224.42 477.45 P
+ 20 F
+ 1.7 (Brush) 265.38 477.45 P
+ 0 F
+ 0.71 (  and ) 295.36 477.45 P
+ 20 F
+ 1.7 (Texture) 319.42 477.45 P
+ 0 F
+ 0.71 ( must be pr_brush and pr_texture structures) 361.4 477.45 P
+ (\050see below\051, or ) 224.42 465.45 T
+ 20 F
+ (0) 286.59 465.45 T
+ 0 F
+ ( \050corresponding to ) 292.59 465.45 T
+ 20 F
+ (NULL) 368.36 465.45 T
+ 0 F
+ (\051.) 392.35 465.45 T
+ (_PrPolylineDX:DY) 71.42 449.45 T
+ (:NPts:PtList:MvList:Brush:T) 149.35 449.45 T
+ (exture:Op:) 265.29 449.45 T
+ 11 F
+ (\240) 308.03 453.45 T
+ 0 F
+ 0.88 (pr_polyline\050\051; ) 224.42 437.45 P
+ 20 F
+ 2.11 (Brush) 283.32 437.45 P
+ 0 F
+ 0.88 ( and ) 313.31 437.45 P
+ 20 F
+ 2.11 (Texture) 334.5 437.45 P
+ 0 F
+ 0.88 ( must be pr_brush and pr_texture struc-) 376.48 437.45 P
+ (tures \050see below\051, or ) 224.42 425.45 T
+ 20 F
+ (0) 308.52 425.45 T
+ 0 F
+ ( \050corresponding to ) 314.52 425.45 T
+ 20 F
+ (NULL) 390.29 425.45 T
+ 0 F
+ (\051.) 414.28 425.45 T
+ (_PrGetcolormapIndex:Count:Red:Green:Blue:) 71.42 409.45 T
+ 0.38 (pr_getcolormap\050\051; ) 224.42 397.45 P
+ 20 F
+ 0.9 (Red) 300.02 397.45 P
+ 0 F
+ 0.38 (, ) 318.01 397.45 P
+ 20 F
+ 0.9 (Green) 323.38 397.45 P
+ 0 F
+ 0.38 (, and ) 353.36 397.45 P
+ 20 F
+ 0.9 (Blue) 376.04 397.45 P
+ 0 F
+ 0.38 ( must be byte vectors of minimum) 400.03 397.45 P
+ (size ) 224.42 385.45 T
+ 20 F
+ (Index) 242.46 385.45 T
+ 0 F
+ ( + ) 272.45 385.45 T
+ 20 F
+ (Count) 283.08 385.45 T
+ 0 F
+ (.) 313.07 385.45 T
+ (_PrPutcolormapIndex:Count:Red:Green:Blue:) 71.42 369.45 T
+ 0.32 (pr_putcolormap\050\051; ) 224.42 357.45 P
+ 20 F
+ 0.77 (Red) 300.52 357.45 P
+ 0 F
+ 0.32 (, ) 318.51 357.45 P
+ 20 F
+ 0.77 (Green) 323.83 357.45 P
+ 0 F
+ 0.32 (, and ) 353.81 357.45 P
+ 20 F
+ 0.77 (Blue) 376.38 357.45 P
+ 0 F
+ 0.32 ( must be byte vectors of minimum) 400.36 357.45 P
+ (size ) 224.42 345.45 T
+ 20 F
+ (Index) 242.46 345.45 T
+ 0 F
+ ( + ) 272.45 345.45 T
+ 20 F
+ (Count) 283.08 345.45 T
+ 0 F
+ (.) 313.07 345.45 T
+ (_GetBitplaneMask) 71.42 329.45 T
+ (pr_getattributes\050\051; returns the integer mask.) 224.42 329.45 T
+ (_PrPutattributesPlanes:) 71.42 313.45 T
+ 0.87 (pr_putattributes\050\051; ) 224.42 313.45 P
+ 20 F
+ 2.09 (Planes) 300.52 313.45 P
+ 0 F
+ 0.87 ( must be a one-long vector containing the integer) 336.5 313.45 P
+ (mask.) 224.42 301.45 T
+ (_PrDblGetAttribute:) 71.42 285.45 T
+ (pr_dbl_get\050\051) 224.42 285.45 T
+ (_PrDblSetAttributes:) 71.42 269.45 T
+ 11 F
+ (\240) 155.83 273.45 T
+ 0 F
+ (pr_dbl_set\050\051; ) 224.42 269.45 T
+ 20 F
+ (Attributes) 278.55 269.45 T
+ 0 F
+ ( must be a vector of pairs of integers.) 338.52 269.45 T
+ 27 F
+ (T) 71.42 237.45 T
+ (ext operations) 76.61 237.45 T
+ 0 F
+ (_PfOpen) 71.42 220.45 T
+ (pf_open\050\051; the receiver must be a string. Returns a pixfont handle.) 224.42 220.45 T
+ (_PfOpenPrivate) 71.42 204.45 T
+ (pf_open_private\050\051; the receiver must be a string. Returns a pixfont handle.) 224.42 204.45 T
+ (_PfDefault) 71.42 188.45 T
+ (pf_default\050\051; the receiver must be a string. Returns a pixfont handle.) 224.42 188.45 T
+ (_PfClose) 71.42 172.45 T
+ (pf_close\050\051; the receiver must be a pixfont handle.) 224.42 172.45 T
+ (_PfT) 71.42 156.45 T
+ (extboundLen:Font:T) 90.71 156.45 T
+ (ext:) 172.75 156.45 T
+ 11 F
+ (\240) 187.74 160.45 T
+ 0 F
+ -0.12 (pf_textbound\050\051; the receiver must be a pr_subregion, ) 224.42 156.45 P
+ 20 F
+ -0.28 (Font) 436.79 156.45 P
+ 0 F
+ -0.12 ( is a pixfont handle,) 460.77 156.45 P
+ (and ) 224.42 144.45 T
+ 20 F
+ (Text) 241.35 144.45 T
+ 0 F
+ ( is a string \050or byte vector\051.) 265.34 144.45 T
+ (_PrT) 71.42 128.45 T
+ (extX:Y) 90.71 128.45 T
+ (:Op:Font:T) 119.22 128.45 T
+ (ext:) 163.5 128.45 T
+ 0.06 (pr_text\050\051; the receiver is a pixrect handle, ) 224.42 128.45 P
+ 20 F
+ 0.16 (Font) 392.52 128.45 P
+ 0 F
+ 0.06 ( is a pixfont handle, and ) 416.5 128.45 P
+ 20 F
+ 0.16 (Text) 515.44 128.45 P
+ 0 F
+ (is a string \050or byte vector\051.) 224.42 116.45 T
+ 71.42 69.44 539.42 89.53 C
+ 71.42 77.43 203.4 77.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ (\240  ) 71.42 66.77 T
+ 0 F
+ (This pixrect primitive is untested at this date.) 79.42 62.77 T
+ FMENDPAGE
+ %%EndPage: "48" 53
+ %%Page: "49" 53
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-49) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ (_PrTtextX:Y) 71.42 709.45 T
+ (:Op:Font:T) 122.7 709.45 T
+ (ext:) 166.98 709.45 T
+ -0.15 (pr_ttext\050\051; the receiver is a pixrect handle, ) 224.42 709.45 P
+ 20 F
+ -0.36 (Font) 393.8 709.45 P
+ 0 F
+ -0.15 ( is a pixfont handle, and ) 417.79 709.45 P
+ 20 F
+ -0.36 (Text) 515.44 709.45 P
+ 0 F
+ (is a string \050or byte vector\051.) 224.42 697.45 T
+ 27 F
+ (pr_pos structure) 71.42 665.45 T
+ 0 F
+ (_NewPrPos) 71.42 648.45 T
+ (Return a new pr_pos structure; the receiver can be any object.) 224.42 648.45 T
+ (_DeletePrPos) 71.42 632.45 T
+ (Delete \050deallocate\051 a pr_pos structure.) 224.42 632.45 T
+ (_GetPrPosX) 71.42 616.45 T
+ (Return the x \336eld of the receiver \050which must be a pr_pos structure\051.) 224.42 616.45 T
+ (_SetPrPosX:) 71.42 600.45 T
+ (Set the x \336eld of the receiver \050which must be a pr_pos structure\051.) 224.42 600.45 T
+ (_GetPrPosY) 71.42 584.45 T
+ (Return the y \336eld of the receiver \050which must be a pr_pos structure\051.) 224.42 584.45 T
+ (_SetPrPosY) 71.42 568.45 T
+ (:) 118.82 568.45 T
+ (Set the y \336eld of the receiver \050which must be a pr_pos structure\051.) 224.42 568.45 T
+ 27 F
+ (pr_size structure) 71.42 536.45 T
+ 0 F
+ (_NewPrSize) 71.42 519.45 T
+ (Return a new pr_size structure; the receiver can be any object.) 224.42 519.45 T
+ (_DeletePrSize) 71.42 503.45 T
+ (Delete \050deallocate\051 a pr_size structure.) 224.42 503.45 T
+ (_GetPrSizeX) 71.42 487.45 T
+ (Return the x \336eld of the receiver \050which must be a pr_size structure\051.) 224.42 487.45 T
+ (_SetPrSizeX:) 71.42 471.45 T
+ (Set the x \336eld of the receiver \050which must be a pr_size structure\051.) 224.42 471.45 T
+ (_GetPrSizeY) 71.42 455.45 T
+ (Return the y \336eld of the receiver \050which must be a pr_size structure\051.) 224.42 455.45 T
+ (_SetPrSizeY) 71.42 439.45 T
+ (:) 121.59 439.45 T
+ (Set the y \336eld of the receiver \050which must be a pr_size structure\051.) 224.42 439.45 T
+ 27 F
+ (pr_subregion structure) 71.42 407.45 T
+ 0 F
+ (_NewPrSubregion) 71.42 390.45 T
+ (Return a new pr_subregion structure; the receiver can be any object.) 224.42 390.45 T
+ (_DeletePrSubregion) 71.42 374.45 T
+ (Delete \050deallocate\051 a pr_subregion structure.) 224.42 374.45 T
+ (_GetPrSubregionPr) 71.42 358.45 T
+ (Return the pr \336eld of the receiver \050which must be a pr_subregion structure\051.) 224.42 358.45 T
+ (_SetPrSubregionPr:) 71.42 342.45 T
+ (Set the pr \336eld of the receiver \050which must be a pr_subregion structure\051.) 224.42 342.45 T
+ (_SetPrSubregionPos:) 71.42 326.45 T
+ (Set the pos \336eld of the receiver \050which must be a pr_subregion structure\051.) 224.42 326.45 T
+ (_SetPrSubregionSize:) 71.42 310.45 T
+ (Set the size \336eld of the receiver \050which must be a pr_subregion structure\051.) 224.42 310.45 T
+ 27 F
+ (pr_brush structure) 71.42 278.45 T
+ 0 F
+ (_NewPrBrush) 71.42 261.45 T
+ (Return a new pr_brush structure; the receiver can be any object.) 224.42 261.45 T
+ (_DeletePrBrush) 71.42 245.45 T
+ (Delete \050deallocate\051 a pr_brush structure.) 224.42 245.45 T
+ (_GetPrBrushW) 71.42 229.45 T
+ (idth) 132.65 229.45 T
+ (Return the width \336eld of the receiver \050which must be a pr_brush structure\051.) 224.42 229.45 T
+ (_SetPrBrushW) 71.42 213.45 T
+ (idth:) 130.99 213.45 T
+ (Set the width \336eld of the receiver \050which must be a pr_brush structure\051.) 224.42 213.45 T
+ 27 F
+ (pr_texture structure) 71.42 181.45 T
+ 0 F
+ (_NewPrT) 71.42 164.45 T
+ (exture) 109.58 164.45 T
+ (Return a new pr_texture structure; the receiver can be any object.) 224.42 164.45 T
+ (_DeletePrT) 71.42 148.45 T
+ (exture) 116.8 148.45 T
+ (Delete \050deallocate\051 a pr_texture structure.) 224.42 148.45 T
+ 27 F
+ (Pixrect extensions) 71.42 116.45 T
+ 0 F
+ (_FontHeight) 71.42 99.45 T
+ (Height of \322A\323 in the font denoted by the receiver) 224.42 99.45 T
+ (.) 420.11 99.45 T
+ (_FontW) 71.42 83.45 T
+ (idth) 103.79 83.45 T
+ (W) 224.42 83.45 T
+ (idth of \322A\323 in the font denoted by the receiver) 233.46 83.45 T
+ (.) 417.49 83.45 T
+ FMENDPAGE
+ %%EndPage: "49" 54
+ %%Page: "50" 54
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-50) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (Primitives) 498.33 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 0 X
+ (_MemT) 71.42 709.45 T
+ (oMemCopySource:Height:) 102.93 709.45 T
+ 0.58 (Fast bit copy from memory pixrect to memory pixrect. The receiver \050destina-) 224.42 709.45 P
+ 0.36 (tion pixrect\051 and the \336rst ar) 224.42 697.45 P
+ 0.36 (gument \050source pixrect\051 must have the same width) 335.12 697.45 P
+ (and depth, and the area to be copied must represent an even number of words. ) 224.42 685.45 T
+ (This primitive is faster than the \050more general\051 pixrect call pr_rop\050\051.) 224.42 673.45 T
+ (Do not use this primitive to blit to the screen.) 224.42 661.45 T
+ (_MemT) 71.42 645.45 T
+ (oScreenCopySource:Height:) 102.93 645.45 T
+ (Same as above, but the destination may be the screen.) 224.42 645.45 T
+ (_LineSaveUnderDestX1:Y1:X2:Y2:Color:Saveunder:) 71.42 629.45 T
+ 0.97 (Fast and undoable line drawing. Draws a line of width two from \050) 224.42 613.45 P
+ 20 F
+ 2.33 (X1) 498.37 613.45 P
+ 0 F
+ 0.97 (,) 510.36 613.45 P
+ 20 F
+ 2.33 (Y1) 512.86 613.45 P
+ 0 F
+ 0.97 (\051 to) 524.85 613.45 P
+ -0.08 (\050) 224.42 601.45 P
+ 20 F
+ -0.2 (X2) 227.75 601.45 P
+ 0 F
+ -0.08 (,) 239.75 601.45 P
+ 20 F
+ -0.2 (Y2) 242.24 601.45 P
+ 0 F
+ -0.08 (\051 in the speci\336ed color; the receiver is the destination pixrect. The over-) 254.24 601.45 P
+ 0.5 (written screen pixels are saved in the byte vector passed as the last ar) 224.42 589.45 P
+ 0.5 (gument.) 506.94 589.45 P
+ 1.1 (The screen can be restored by sending ) 224.42 577.45 P
+ 20 F
+ 2.64 (_LineRestoreUnder) 387.26 577.45 P
+ 0 F
+ 1.1 ( to this byte) 489.2 577.45 P
+ (vector) 224.42 565.45 T
+ (.) 248.85 565.45 T
+ (_LineSaveUnderMaxBytesXSizeYSize:) 71.42 549.45 T
+ 0.45 (Returns the maximum number of bytes needed for the SaveUnder array when) 224.42 537.45 P
+ (drawing vector \050) 224.42 525.45 T
+ 20 F
+ (XSize) 290.48 525.45 T
+ 0 F
+ (, ) 320.46 525.45 T
+ 20 F
+ (YSize) 325.46 525.45 T
+ 0 F
+ (\051.) 355.44 525.45 T
+ (_LineRestoreUnder) 71.42 509.45 T
+ 0.47 (Remove a line previously drawn with ) 224.42 509.45 P
+ 20 F
+ 1.14 (_LineSaveUnder) 379.94 509.45 P
+ 0 F
+ 0.47 (... from the screen,) 463.35 509.45 P
+ 1.62 (restoring the pixels that were under the line at the time it was drawn. The) 224.42 497.45 P
+ 0.4 (receiver must be the byte vector passed as the ) 224.42 485.45 P
+ 20 F
+ 0.97 (SaveUnder:) 413.19 485.45 P
+ 0 F
+ 0.4 ( ar) 473.16 485.45 P
+ 0.4 (gument to the) 483.64 485.45 P
+ (drawing primitive.) 224.42 473.45 T
+ (_ColorShift:Mask:) 71.42 457.45 T
+ 0.44 (A special primitive used by the user interface. Performs arcane manipulations) 224.42 457.45 P
+ (of the color map.) 224.42 445.45 T
+ FMENDPAGE
+ %%EndPage: "50" 55
+ %%Page: "51" 55
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (I-51) 297.67 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( System Manual) 92.96 749.62 T
+ (References) 495.03 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Refer) 71.42 705.45 T
+ (ences) 109.31 705.45 T
+ 4 F
+ ([CU89]) 71.42 678.11 T
+ 0.07 (Craig Chambers and David Ungar. Customization: Optimizing Compiler Technol-) 143.42 678.11 P
+ 0.59 (ogy for ) 143.42 664.11 P
+ 0.59 (S) 182.58 664.11 P
+ 6 F
+ 0.54 (ELF) 189.25 664.11 P
+ 4 F
+ 0.59 (, a Dynamically-Typed Object-Oriented Programming Language. In) 208.78 664.11 P
+ 3 F
+ 0.51 (Proceedings of the SIGPLAN \32589 Conference on Programming Language Design) 143.42 650.11 P
+ 1.8 (and Implementation) 143.42 636.11 P
+ 4 F
+ 1.8 (, Portland, OR, June, 1989. Published as ) 241.5 636.11 P
+ 3 F
+ 1.8 (SIGPLAN Notices) 450.67 636.11 P
+ (24\0507\051) 143.42 622.11 T
+ 4 F
+ (, July, 1989.) 169.4 622.11 T
+ ([CU90]) 71.42 596.11 T
+ 0.08 (Craig Chambers and David Ungar. ) 143.42 596.11 P
+ 0.08 (Iterative T) 313.7 596.11 P
+ 0.08 (ype Analysis and Extended Message) 363.23 596.11 P
+ 0.35 (Splitting: Optimizing Dynamically-T) 143.42 582.11 P
+ 0.35 (yped Object-Oriented Programs. In ) 321.87 582.11 P
+ 3 F
+ 0.35 (Proceed-) 495.47 582.11 P
+ 0.36 (ings of the SIGPLAN \32590 Conference on Programming Language Design and Im-) 143.42 568.11 P
+ 3.13 (plementation) 143.42 554.11 P
+ 4 F
+ 3.13 (, White Plains, NY, June, 1990. Published as ) 206.05 554.11 P
+ 3 F
+ 3.13 (SIGPLAN Notices) 449.34 554.11 P
+ 0.96 (25\0506\051) 143.42 540.11 P
+ 4 F
+ 0.96 (, June, 1990. Also to be published in ) 169.4 540.11 P
+ 3 F
+ 0.96 (Lisp and Symbolic Computation 4\0503\051) 355.34 540.11 P
+ 4 F
+ 0.96 (,) 536.43 540.11 P
+ (June, 1991.) 143.42 526.11 T
+ ([CUL89]) 71.42 500.11 T
+ 1.86 (Craig Chambers, David Ungar, and Elgin Lee. An Efficient Implementation of) 143.42 500.11 P
+ 1.26 (S) 143.42 486.11 P
+ 6 F
+ 1.15 (ELF) 150.09 486.11 P
+ 4 F
+ 1.26 (, a Dynamically-Typed Object-Oriented Language Based on Prototypes. In) 169.63 486.11 P
+ 3 F
+ 1.88 (OOPSLA \32589 Conference Proceedings) 143.42 472.11 P
+ 4 F
+ 1.88 (, New Orleans, LA, October, 1989. Pub-) 333.94 472.11 P
+ 1.16 (lished as ) 143.42 458.11 P
+ 3 F
+ 1.16 (SIGPLAN Notices 24\05010\051) 190.38 458.11 P
+ 4 F
+ 1.16 (, October, 1989. Also to be published in ) 314.62 458.11 P
+ 3 F
+ 1.16 (Lisp) 518.76 458.11 P
+ (and Symbolic Computation 4\0503\051) 143.42 444.11 T
+ 4 F
+ (, June, 1991.) 297 444.11 T
+ ([DS84]) 71.42 418.11 T
+ 0.33 (L. Peter Deutsch and Allan M. Schiffman. Efficient Implementation of the Small-) 143.42 418.11 P
+ -0.23 (talk-80 System. In ) 143.42 404.11 P
+ 3 F
+ -0.23 (Proceedings of the 11th Annual ACM Symposium on the Princi-) 234.02 404.11 P
+ (ples of Programming Languages) 143.42 390.11 T
+ 4 F
+ (, Salt Lake City, UT, 1984.) 301.01 390.11 T
+ ([GR83]) 71.42 364.11 T
+ 1.33 (Adele Goldberg and David Robson. ) 143.42 364.11 P
+ 3 F
+ 1.33 (Smalltalk-80: The Language and Its Imple-) 325.26 364.11 P
+ (mentation) 143.42 350.11 T
+ 4 F
+ (. Addison-Wesley, Reading, MA, 1983) 191.4 350.11 T
+ (.) 379.27 350.11 T
+ ([Lee88]) 71.42 324.11 T
+ 1.13 (Elgin Lee. ) 143.42 324.11 P
+ 3 F
+ 1.13 (Object Storage and Inheritance for S) 198.65 324.11 P
+ 13 F
+ 1.04 (ELF) 381.88 324.11 P
+ 4 F
+ 1.13 (. ) 400.45 324.11 P
+ 1.13 (Engineer\325s thesis, Stanford) 407.58 324.11 P
+ (University, 1988) 143.42 310.11 T
+ (.) 224.04 310.11 T
+ ([Ung84]) 71.42 284.11 T
+ 0.58 (David Ungar) 143.42 284.11 P
+ 0.58 (. Generation Scavenging: A Non-Disruptive High Performance Stor-) 205.62 284.11 P
+ -0.14 (age Reclamation Algorithm. In ) 143.42 270.11 P
+ 3 F
+ -0.14 (Pr) 295.08 270.11 P
+ -0.14 (oceedings of the ACM SIGSOFT/SIGPLAN Soft-) 306.63 270.11 P
+ 0.89 (war) 143.42 256.11 P
+ 0.89 (e Engineering Symposium on Practical Softwar) 161.64 256.11 P
+ 0.89 (e Development Envir) 393.86 256.11 P
+ 0.89 (onments) 496.45 256.11 P
+ 4 F
+ 0.89 (,) 536.43 256.11 P
+ 1.32 (Pittsbur) 143.42 242.11 P
+ 1.32 (gh, P) 180.53 242.11 P
+ 1.32 (A, April, 1984, pp. 157-167. Published as ) 205.41 242.11 P
+ 3 F
+ 1.32 (SIGPLAN Notices 19\0505\051) 417.86 242.11 P
+ 4 F
+ 1.32 (,) 536.42 242.11 P
+ (May) 143.42 228.11 T
+ (, 1984 and ) 164.63 228.11 T
+ 3 F
+ (Softwar) 217.93 228.11 T
+ (e Engineering Notes 9\0503\051) 254.81 228.11 T
+ 4 F
+ (, May) 375.72 228.11 T
+ (, 1984.) 402.92 228.11 T
+ ([Ung86]) 71.42 202.11 T
+ 1.05 (David Ungar) 143.42 202.11 P
+ 1.05 (. ) 206.1 202.11 P
+ 3 F
+ 1.05 (The Design and Evaluation of a High Performance Smalltalk Sys-) 213.15 202.11 P
+ (tem.) 143.42 188.11 T
+ 4 F
+ ( MIT Press, Cambridge, MA, 1987.) 163.74 188.11 T
+ ([US87]) 71.42 162.11 T
+ 4.97 (David Ungar and Randall B. Smith. ) 143.42 162.11 P
+ 4.97 (S) 347.8 162.11 P
+ 6 F
+ 4.55 (ELF) 354.46 162.11 P
+ 4 F
+ 4.97 (: The Power of Simplicity. In) 374 162.11 P
+ 3 F
+ -0.18 (OOPSLA) 143.42 148.11 P
+ -0.18 (\32587 Conference Proceedings) 191.06 148.11 P
+ 4 F
+ -0.18 (, Orlando, FL, 1987. Published as ) 327.94 148.11 P
+ 3 F
+ -0.18 (SIGPLAN) 491.45 148.11 P
+ 0.1 (Notices 22\05012\051) 143.42 134.11 P
+ 4 F
+ 0.1 (, December, 1987. Also to be published in ) 214.48 134.11 P
+ 3 F
+ 0.1 (Lisp and Symbolic Com-) 420.84 134.11 P
+ (putation 4\0503\051) 143.42 120.11 T
+ 4 F
+ (, June, 1991.) 206.39 120.11 T
+ FMENDPAGE
+ %%EndPage: "51" 56
+ %%Page: "1" 56
+ 612 792 0 FMBEGINPAGE
+ 72 63 540 747.36 R
+ 7 X
+ 0 K
+ V
+ 7 F
+ 0 X
+ (Part II) 275.69 641.36 T
+ (The S) 226.34 591.36 T
+ 8 F
+ (ELF) 282.97 591.36 T
+ 7 F
+ ( W) 320.3 591.36 T
+ (orld) 347.02 591.36 T
+ FMENDPAGE
+ %%EndPage: "1" 57
+ %%Page: "2" 57
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 71.42 742.9 539.42 742.9 2 L
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 F
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Table of Contents) 467.8 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 2 F
+ 0 X
+ (T) 71.42 708.11 T
+ (able of Contents) 78.32 708.11 T
+ 4 F
+ (1) 71.42 674.11 T
+ (Organizing the world) 107.42 674.11 T
+ 0 F
+ (............................................................................................................................) 212.38 674.11 T
+ (II-1) 524.44 674.11 T
+ (1.1) 107.42 657.45 T
+ (T) 143.42 657.45 T
+ (raits objects) 149.18 657.45 T
+ (..................................................................................................................................) 197.39 657.45 T
+ (II-1) 524.44 657.45 T
+ (1.2) 107.42 641.45 T
+ (Name spaces) 143.42 641.45 T
+ (..................................................................................................................................) 197.39 641.45 T
+ (II-3) 524.44 641.45 T
+ (1.3) 107.42 625.45 T
+ (The name inferencer) 143.42 625.45 T
+ (......................................................................................................................) 227.38 625.45 T
+ (II-4) 524.44 625.45 T
+ 4 F
+ (2) 71.42 598.11 T
+ (Map of the world) 107.42 598.11 T
+ 0 F
+ (....................................................................................................................................) 192.39 598.11 T
+ (II-5) 524.44 598.11 T
+ (2.1) 107.42 583.45 T
+ (The lobby) 143.42 583.45 T
+ (.......................................................................................................................................) 184.9 583.45 T
+ (II-5) 524.44 583.45 T
+ (2.2) 107.42 567.45 T
+ (Default behaviors) 143.42 567.45 T
+ (...........................................................................................................................) 214.88 567.45 T
+ (II-6) 524.44 567.45 T
+ (2.3) 107.42 551.45 T
+ (W) 143.42 551.45 T
+ (ell-known objects) 152.06 551.45 T
+ (.......................................................................................................................) 224.88 551.45 T
+ (II-6) 524.44 551.45 T
+ (2.4) 107.42 535.45 T
+ (General system objects) 143.42 535.45 T
+ (..................................................................................................................) 237.37 535.45 T
+ (II-8) 524.44 535.45 T
+ (2.5) 107.42 519.45 T
+ (Miscellaneous system objects) 143.42 519.45 T
+ (........................................................................................................) 262.36 519.45 T
+ (II-9) 524.44 519.45 T
+ (2.6) 107.42 503.45 T
+ (Collections) 143.42 503.45 T
+ (...................................................................................................................................) 189.9 503.45 T
+ (II-10) 519.45 503.45 T
+ (2.7) 107.42 487.45 T
+ (Name inferencer) 143.42 487.45 T
+ (..........................................................................................................................) 212.38 487.45 T
+ (II-14) 519.45 487.45 T
+ (2.8) 107.42 471.45 T
+ (Host-speci\336c attributes) 143.42 471.45 T
+ (................................................................................................................) 237.37 471.45 T
+ (II-15) 519.45 471.45 T
+ 4 F
+ (Appendix A) 71.42 436.11 T
+ (Mirrors) 143.42 436.11 T
+ 0 F
+ (......................................................................................................................................) 182.4 436.11 T
+ (II-16) 519.45 436.11 T
+ 4 F
+ (Appendix B) 71.42 422.11 T
+ (Strings) 143.42 422.11 T
+ 0 F
+ (.......................................................................................................................................) 179.9 422.11 T
+ (II-18) 519.45 422.11 T
+ 4 F
+ (Appendix C) 71.42 408.11 T
+ (Other objects in the S) 143.42 408.11 T
+ 6 F
+ (ELF) 247.36 408.11 T
+ 4 F
+ ( world) 266.89 408.11 T
+ 0 F
+ (.......................................................................................) 299.83 408.11 T
+ (II-20) 519.45 408.11 T
+ 4 F
+ (Appendix D) 71.42 394.11 T
+ (The S) 143.42 394.11 T
+ 6 F
+ (ELF) 171.74 394.11 T
+ 4 F
+ ( prototype user interface) 191.27 394.11 T
+ 0 F
+ (...................................................................................) 309.83 394.11 T
+ (II-21) 519.45 394.11 T
+ 4 F
+ (Appendix E) 71.42 380.11 T
+ (Selector glossary) 143.42 380.11 T
+ 0 F
+ (....................................................................................................................) 227.38 380.11 T
+ (II-23) 519.45 380.11 T
+ 4 F
+ (References) 71.42 358.11 T
+ 0 F
+ (.....................................................................................................................................................) 144.92 358.11 T
+ (II-31) 519.45 358.11 T
+ FMENDPAGE
+ %%EndPage: "2" 58
+ %%Page: "1" 58
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-1) 298.51 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Organizing the world) 453.93 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 0.27 (The S) 71.42 708.11 P
+ 6 F
+ 0.25 (ELF) 100.01 708.11 P
+ 4 F
+ 0.27 ( world that is included with the S) 119.54 708.11 P
+ 6 F
+ 0.25 (ELF) 280.35 708.11 P
+ 4 F
+ 0.27 ( system is a base set of useful objects. In addition) 299.88 708.11 P
+ -0.29 (to objects like integers, strings, and points, the S) 71.42 694.11 P
+ 6 F
+ -0.27 (ELF) 301.3 694.11 P
+ 4 F
+ -0.29 ( world includes objects that serve in or) 320.84 694.11 P
+ -0.29 (ganiza-) 504.13 694.11 P
+ -0.51 (tional roles. This document explains the basic or) 71.42 680.11 P
+ -0.51 (ganizing principles of the S) 300.14 680.11 P
+ 6 F
+ -0.47 (ELF) 430 680.11 P
+ 4 F
+ -0.51 ( world and lays out) 449.53 680.11 P
+ -0.14 (a map of the base world. See [UCC91] for a more thorough discussion of how S) 71.42 666.11 P
+ 6 F
+ -0.13 (ELF) 453.77 666.11 P
+ 4 F
+ -0.14 ( or) 473.3 666.11 P
+ -0.14 (ganizes the) 485.94 666.11 P
+ (world.) 71.42 652.11 T
+ 9 F
+ (1  Organizing the world) 71.42 611.45 T
+ 10 F
+ (1.1) 71.42 576.78 T
+ (T) 98.42 576.78 T
+ (raits objects) 106.72 576.78 T
+ 4 F
+ 0.93 (S) 71.42 550.11 P
+ 6 F
+ 0.85 (ELF) 78.09 550.11 P
+ 4 F
+ 0.93 ( uses object inheritance to share behavior) 97.63 550.11 P
+ 0.93 (. Behavior shared by multiple objects is factored) 300.4 550.11 P
+ 0.4 (into an inherited object called a ) 71.42 536.11 P
+ 3 F
+ 0.4 (traits object) 227.74 536.11 P
+ 4 F
+ 0.4 (. For example, cartesian points might be represented) 285.78 536.11 P
+ 0.51 (as objects with an x slot, a y slot, and a parent slot pointing to a cartesian point traits object that) 71.42 522.11 P
+ -0.54 (holds methods for adding two points, drawing a point on the screen, etc. All cartesian points inherit) 71.42 508.11 P
+ 0.56 (this same object through their parent slot, because we want them to share those behaviors rather) 71.42 312.11 P
+ -0.14 (than replicating them in each point object. T) 71.42 298.11 P
+ -0.14 (raits objects play the same role as classes in centraliz-) 282.55 298.11 P
+ (ing shared behavior) 71.42 284.11 T
+ (.) 165.36 284.11 T
+ -0.29 (T) 71.42 258.11 P
+ -0.29 (raits objects themselves share common behavior) 78.33 258.11 P
+ -0.29 (, and this behavior is factored out as well, result-) 308.56 258.11 P
+ 0.01 (ing in a hierarchy of traits objects. For example, polar points have slightly dif) 71.42 244.11 P
+ 0.01 (ferent behavior than) 442.81 244.11 P
+ 71.42 55.44 539.42 716.11 C
+ 89.42 329.95 521.42 504.11 C
+ 89.42 329.95 521.42 504.11 R
+ 7 X
+ 0 K
+ V
+ 151.92 344.87 227.81 398.44 R
+ 3 X
+ V
+ 21 F
+ 0 X
+ (cartesian point traits) 191.95 475.05 T
+ (cartesian points) 126.57 412.01 T
+ 148.92 383.58 198.65 401.44 R
+ 7 X
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 148.92 365.73 198.65 383.58 R
+ 7 X
+ V
+ 0 X
+ N
+ 148.92 347.87 198.65 365.73 R
+ 7 X
+ V
+ 0 X
+ N
+ 23 F
+ (parent*) 156.17 389.45 T
+ (x) 171.13 371.6 T
+ (y) 171.13 353.74 T
+ 197.4 383.58 224.81 401.44 R
+ 7 X
+ V
+ 0 X
+ N
+ 197.4 365.73 224.81 383.58 R
+ 7 X
+ V
+ 0 X
+ N
+ 197.4 347.87 224.81 365.73 R
+ 7 X
+ V
+ 0 X
+ N
+ (3) 208.1 371.6 T
+ (7) 208.1 353.74 T
+ 267.98 343.41 343.87 396.98 R
+ 3 X
+ V
+ 264.98 382.12 314.71 399.98 R
+ 7 X
+ V
+ 0 X
+ N
+ 264.98 364.26 314.71 382.12 R
+ 7 X
+ V
+ 0 X
+ N
+ 264.98 346.41 314.71 364.26 R
+ 7 X
+ V
+ 0 X
+ N
+ (parent*) 272.23 387.99 T
+ (x) 287.2 370.13 T
+ (y) 287.2 352.28 T
+ 313.46 382.12 340.87 399.98 R
+ 7 X
+ V
+ 0 X
+ N
+ 313.46 364.26 340.87 382.12 R
+ 7 X
+ V
+ 0 X
+ N
+ 313.46 346.41 340.87 364.26 R
+ 7 X
+ V
+ 0 X
+ N
+ (5) 324.16 370.13 T
+ (1) 324.16 352.28 T
+ 364.73 343.41 440.62 396.98 R
+ 3 X
+ V
+ 361.73 382.12 411.46 399.98 R
+ 7 X
+ V
+ 0 X
+ N
+ 361.73 364.26 411.46 382.12 R
+ 7 X
+ V
+ 0 X
+ N
+ 361.73 346.41 411.46 364.26 R
+ 7 X
+ V
+ 0 X
+ N
+ (parent*) 368.98 387.99 T
+ (x) 383.94 370.13 T
+ (y) 383.94 352.28 T
+ 410.2 382.12 437.62 399.98 R
+ 7 X
+ V
+ 0 X
+ N
+ 410.2 364.26 437.62 382.12 R
+ 7 X
+ V
+ 0 X
+ N
+ 410.2 346.41 437.62 364.26 R
+ 7 X
+ V
+ 0 X
+ N
+ (18) 417.85 370.13 T
+ (12) 417.85 352.28 T
+ 294.77 438.62 370.66 492.18 R
+ 3 X
+ V
+ 291.77 477.33 341.5 495.18 R
+ 7 X
+ V
+ 0 X
+ N
+ 291.77 459.47 341.5 477.33 R
+ 7 X
+ V
+ 0 X
+ N
+ 291.77 441.62 341.5 459.47 R
+ 7 X
+ V
+ 0 X
+ N
+ (print) 306.04 483.2 T
+ (+) 313.52 465.34 T
+ (draw) 304.82 447.49 T
+ 340.24 477.33 367.66 495.18 R
+ 7 X
+ V
+ 0 X
+ N
+ 340.24 459.47 367.66 477.33 R
+ 7 X
+ V
+ 0 X
+ N
+ 340.24 441.62 367.66 459.47 R
+ 7 X
+ V
+ 0 X
+ N
+ (...) 349.42 483.2 T
+ (...) 349.42 465.34 T
+ (...) 349.42 447.49 T
+ 376.93 431.39 370.65 441.62 381.39 436.27 379.16 433.83 4 Y
+ V
+ 424.22 392.51 378.43 434.5 2 L
+ N
+ 283.08 434.46 294.77 437.15 286.28 428.67 284.68 431.56 4 Y
+ V
+ 208.38 389.76 285.55 432.05 2 L
+ N
+ 332.96 427.03 339.4 437.15 339.31 425.15 336.14 426.09 4 Y
+ V
+ 326.02 390.54 336.42 427.05 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "1" 59
+ 5 11 /Helvetica-Oblique FMDEFINEFONT
+ %%Page: "2" 59
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-2) 298.51 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Organizing the world) 453.93 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ -0.43 (cartesian points, and thus inherit from their own traits object, the polar point traits object. Y) 71.42 708.11 P
+ -0.43 (et polar) 503.55 708.11 P
+ -0.38 (points and cartesian points have much behavior in common, so these behaviors are in turn factored) 71.42 400.11 P
+ -0.41 (into a general point traits object, which is inherited by both the polar point traits object and the car-) 71.42 386.11 P
+ -0.01 (tesian point traits object. T) 71.42 372.11 P
+ -0.01 (raits objects play the same role as classes in forming hierarchies for re-) 199.2 372.11 P
+ (use of behavior and dif) 71.42 358.11 T
+ (ferential programming.) 181.79 358.11 T
+ 0.05 (Lar) 71.42 332.11 P
+ 0.05 (ge traits objects can be or) 87.86 332.11 P
+ 0.05 (ganized into smaller chunks by using multiple inheritance to ) 210.15 332.11 P
+ 3 F
+ 0.05 (catego-) 503.45 332.11 P
+ 0.21 (rize) 71.42 318.11 P
+ 4 F
+ 0.21 ( them. This is achieved by grouping related methods together into parent objects. These ) 89.41 318.11 P
+ 3 F
+ 0.21 (com-) 515.45 318.11 P
+ 0.39 (posite traits objects) 71.42 304.11 P
+ 4 F
+ 0.39 ( behave in the same way as a single, monolithic traits object would, but have) 166.17 304.11 P
+ -0.56 (the bene\336t of breaking up lar) 71.42 290.11 P
+ -0.56 (ge objects into understandable chunks. The integer traits object shown) 207.33 290.11 P
+ 0.28 (below has been categorized in this manner) 71.42 276.11 P
+ 0.28 (. Note that the ) 276.26 276.11 P
+ 12 F
+ 0.61 (parent) 348.31 276.11 P
+ 4 F
+ 0.28 ( slot has lower priority than the) 387.86 276.11 P
+ 1.07 (slots holding the method category objects; the category objects will all be searched \336rst before) 71.42 80.11 P
+ (searching the object pointed to by ) 71.42 66.11 T
+ 12 F
+ (parent) 236.65 66.11 T
+ 4 F
+ (.) 276.2 66.11 T
+ 71.42 55.44 539.42 716.11 C
+ 88.42 418.71 522.42 704.11 C
+ 88.42 418.71 522.42 704.11 R
+ 7 X
+ 0 K
+ V
+ 225.34 623.76 435.15 677.33 R
+ 3 X
+ V
+ 360.73 513.62 490.18 585.05 R
+ V
+ 189.63 549.34 265.52 585.05 R
+ V
+ 21 F
+ 0 X
+ (cartesian point traits) 128.45 596.62 T
+ (polar point traits) 320.92 595.62 T
+ (cartesian points) 92.92 507.62 T
+ (polar points) 313.92 493.62 T
+ (general point traits) 182.92 687.62 T
+ 115.21 442.2 191.1 495.77 R
+ 3 X
+ V
+ 112.21 480.91 161.94 498.77 R
+ 7 X
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 112.21 463.06 161.94 480.91 R
+ 7 X
+ V
+ 0 X
+ N
+ 112.21 445.2 161.94 463.06 R
+ 7 X
+ V
+ 0 X
+ N
+ 23 F
+ (parent*) 119.46 486.78 T
+ (x) 134.42 468.93 T
+ (y) 134.42 451.07 T
+ 160.68 480.91 188.1 498.77 R
+ 7 X
+ V
+ 0 X
+ N
+ 160.68 463.06 188.1 480.91 R
+ 7 X
+ V
+ 0 X
+ N
+ 160.68 445.2 188.1 463.06 R
+ 7 X
+ V
+ 0 X
+ N
+ (3) 171.39 468.93 T
+ (7) 171.39 451.07 T
+ 213.42 442.2 289.3 495.77 R
+ 3 X
+ V
+ 210.42 480.91 260.15 498.77 R
+ 7 X
+ V
+ 0 X
+ N
+ 210.42 463.06 260.15 480.91 R
+ 7 X
+ V
+ 0 X
+ N
+ 210.42 445.2 260.15 463.06 R
+ 7 X
+ V
+ 0 X
+ N
+ (parent*) 217.66 486.78 T
+ (x) 232.63 468.93 T
+ (y) 232.63 451.07 T
+ 258.89 480.91 286.3 498.77 R
+ 7 X
+ V
+ 0 X
+ N
+ 258.89 463.06 286.3 480.91 R
+ 7 X
+ V
+ 0 X
+ N
+ 258.89 445.2 286.3 463.06 R
+ 7 X
+ V
+ 0 X
+ N
+ (5) 269.6 468.93 T
+ (1) 269.6 451.07 T
+ 328.02 427.34 403.9 480.91 R
+ 3 X
+ V
+ 325.02 466.06 374.75 483.91 R
+ 7 X
+ V
+ 0 X
+ N
+ 325.02 448.2 374.75 466.06 R
+ 7 X
+ V
+ 0 X
+ N
+ 325.02 430.34 374.75 448.2 R
+ 7 X
+ V
+ 0 X
+ N
+ (parent*) 332.26 471.93 T
+ (r) 348.14 454.07 T
+ (theta) 337.76 436.21 T
+ 373.49 466.06 400.9 483.91 R
+ 7 X
+ V
+ 0 X
+ N
+ 373.49 448.2 400.9 466.06 R
+ 7 X
+ V
+ 0 X
+ N
+ 373.49 430.34 400.9 448.2 R
+ 7 X
+ V
+ 0 X
+ N
+ (3) 384.2 454.07 T
+ (45) 381.14 436.21 T
+ 426.22 427.34 502.11 480.91 R
+ 3 X
+ V
+ 423.22 466.06 472.95 483.91 R
+ 7 X
+ V
+ 0 X
+ N
+ 423.22 448.2 472.95 466.06 R
+ 7 X
+ V
+ 0 X
+ N
+ 423.22 430.34 472.95 448.2 R
+ 7 X
+ V
+ 0 X
+ N
+ (parent*) 430.47 471.93 T
+ (r) 446.35 454.07 T
+ (theta) 435.96 436.21 T
+ 471.7 466.06 499.11 483.91 R
+ 7 X
+ V
+ 0 X
+ N
+ 471.7 448.2 499.11 466.06 R
+ 7 X
+ V
+ 0 X
+ N
+ 471.7 430.34 499.11 448.2 R
+ 7 X
+ V
+ 0 X
+ N
+ (7) 482.4 454.07 T
+ (60) 479.35 436.21 T
+ 186.63 570.19 236.36 588.05 R
+ 7 X
+ V
+ 0 X
+ N
+ 186.63 552.34 236.36 570.19 R
+ 7 X
+ V
+ 0 X
+ N
+ (parent*) 193.88 576.06 T
+ (print) 200.9 558.21 T
+ 235.11 570.19 262.52 588.05 R
+ 7 X
+ V
+ 0 X
+ N
+ 235.11 552.34 262.52 570.19 R
+ 7 X
+ V
+ 0 X
+ N
+ (...) 244.28 558.21 T
+ 357.73 570.19 407.46 588.05 R
+ 7 X
+ V
+ 0 X
+ N
+ 357.73 552.34 407.46 570.19 R
+ 7 X
+ V
+ 0 X
+ N
+ 357.73 534.48 407.46 552.34 R
+ 7 X
+ V
+ 0 X
+ N
+ (parent*) 364.98 576.06 T
+ (x) 379.94 558.21 T
+ (y) 379.94 540.35 T
+ 406.2 570.19 487.18 588.05 R
+ 7 X
+ V
+ 0 X
+ N
+ 406.2 552.34 487.18 570.19 R
+ 7 X
+ V
+ 0 X
+ N
+ 406.2 534.48 487.18 552.34 R
+ 7 X
+ V
+ 0 X
+ N
+ (\050r * theta cos\051) 413.87 558.21 T
+ (\050r * theta sin\051) 415.4 540.35 T
+ 357.73 516.62 407.46 534.48 R
+ 7 X
+ V
+ 0 X
+ N
+ (print) 372 522.49 T
+ 406.2 516.62 487.18 534.48 R
+ 7 X
+ V
+ 0 X
+ N
+ (...) 442.26 522.49 T
+ 222.34 662.47 272.07 680.33 R
+ 7 X
+ V
+ 0 X
+ N
+ 222.34 644.62 272.07 662.47 R
+ 7 X
+ V
+ 0 X
+ N
+ 222.34 626.76 272.07 644.62 R
+ 7 X
+ V
+ 0 X
+ N
+ (parent*) 229.59 668.34 T
+ (+ pt) 237.99 650.49 T
+ (draw) 235.4 632.63 T
+ 270.82 662.47 432.15 680.33 R
+ 7 X
+ V
+ 0 X
+ N
+ 270.82 644.62 432.15 662.47 R
+ 7 X
+ V
+ 0 X
+ N
+ 270.82 626.76 432.15 644.62 R
+ 7 X
+ V
+ 0 X
+ N
+ (...) 347.2 668.34 T
+ (\050 \050clone x: x + pt x\051 y: y + pt y \051) 277.9 650.49 T
+ (...) 347.2 632.63 T
+ 208.2 540.79 217.88 547.88 213.42 536.73 210.81 538.76 4 Y
+ V
+ 173.24 489.84 211.43 539.55 2 L
+ N
+ 250.2 535.92 249.12 547.88 256.37 538.31 253.29 537.12 4 Y
+ V
+ 271.45 489.84 252.93 538.05 2 L
+ N
+ 394.1 506.74 400.9 516.62 400.37 504.64 397.24 505.69 4 Y
+ V
+ 387.51 476.45 397.56 506.63 2 L
+ N
+ 466.14 504.95 463.38 516.63 471.91 508.19 469.03 506.57 4 Y
+ V
+ 485.72 476.45 468.55 507.44 2 L
+ N
+ 410.62 612.98 405.36 623.76 415.54 617.4 413.08 615.19 4 Y
+ V
+ 445.54 579.12 412.42 615.93 2 L
+ N
+ 271.01 616.25 280.37 623.76 276.41 612.43 273.71 614.34 4 Y
+ V
+ 249.13 579.12 274.3 615.16 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ 71.42 55.44 539.42 716.11 C
+ 167.65 101.87 443.2 272.11 C
+ 167.65 101.87 443.2 272.11 R
+ 7 X
+ 0 K
+ V
+ 338.94 207.23 374.65 260.79 R
+ 3 X
+ V
+ 396.97 158.12 432.68 211.69 R
+ V
+ 338.94 109.02 410.36 144.73 R
+ V
+ 200.56 140.27 289.84 211.69 R
+ V
+ 197.56 196.83 268.98 214.69 R
+ 7 X
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (parent**) 213.55 202.7 T
+ 197.56 178.98 268.98 196.83 R
+ 7 X
+ V
+ 0 X
+ N
+ (arithmetic*) 207.46 184.85 T
+ 197.56 161.12 268.98 178.98 R
+ 7 X
+ V
+ 0 X
+ N
+ (comparing*) 205.62 166.99 T
+ 197.56 143.26 268.98 161.12 R
+ 7 X
+ V
+ 0 X
+ N
+ (functions*) 209.28 149.14 T
+ 268.98 196.83 286.84 214.69 R
+ 7 X
+ V
+ 0 X
+ N
+ 268.98 178.98 286.84 196.83 R
+ 7 X
+ V
+ 0 X
+ N
+ 268.98 161.12 286.84 178.98 R
+ 7 X
+ V
+ 0 X
+ N
+ 268.98 143.26 286.84 161.12 R
+ 7 X
+ V
+ 0 X
+ N
+ 393.97 196.83 411.83 214.69 R
+ 7 X
+ V
+ 0 X
+ N
+ (=) 399.73 202.7 T
+ 393.97 178.98 411.83 196.83 R
+ 7 X
+ V
+ 0 X
+ N
+ (<) 399.73 184.85 T
+ 393.97 161.12 411.83 178.98 R
+ 7 X
+ V
+ 0 X
+ N
+ (>) 399.73 166.99 T
+ 335.94 129.87 389.51 147.73 R
+ 7 X
+ V
+ 0 X
+ N
+ (factorial) 343.59 135.74 T
+ 335.94 112.02 389.51 129.87 R
+ 7 X
+ V
+ 0 X
+ N
+ (\336bonacci) 341.15 117.89 T
+ 322.76 216.55 334.48 219.15 325.92 210.74 324.34 213.65 4 Y
+ V
+ 276.44 187.91 325.22 214.12 2 L
+ N
+ 380.97 173.36 392.51 170.05 380.97 166.74 380.97 170.05 4 Y
+ V
+ 276.44 170.05 381.97 170.05 2 L
+ N
+ 324.43 140.91 334.47 134.34 322.47 134.59 323.45 137.75 4 Y
+ V
+ 276.44 152.19 324.41 137.45 2 L
+ N
+ 5 F
+ (integer traits) 173.77 220.95 T
+ 389.39 129.79 407.24 147.65 R
+ 7 X
+ V
+ 0 X
+ N
+ 389.39 111.94 407.24 129.79 R
+ 7 X
+ V
+ 0 X
+ N
+ 23 F
+ (...) 393.73 137.72 T
+ (...) 393.73 119.86 T
+ 335.78 246.11 353.64 263.97 R
+ 7 X
+ V
+ 0 X
+ N
+ (+) 341.54 251.98 T
+ 335.78 228.26 353.64 246.11 R
+ 7 X
+ V
+ 0 X
+ N
+ (-) 342.92 234.13 T
+ 335.78 210.4 353.64 228.26 R
+ 7 X
+ V
+ 0 X
+ N
+ (/) 343.22 216.27 T
+ 353.77 246.11 371.63 263.97 R
+ 7 X
+ V
+ 0 X
+ N
+ 353.77 228.26 371.63 246.11 R
+ 7 X
+ V
+ 0 X
+ N
+ 353.77 210.4 371.63 228.26 R
+ 7 X
+ V
+ 0 X
+ N
+ (...) 358.12 254.04 T
+ (...) 358.12 236.18 T
+ (...) 358.12 218.33 T
+ 411.97 196.83 429.83 214.69 R
+ 7 X
+ V
+ 0 X
+ N
+ (...) 416.32 204.76 T
+ 411.97 178.98 429.83 196.83 R
+ 7 X
+ V
+ 0 X
+ N
+ (...) 416.32 186.9 T
+ 411.97 161.12 429.83 178.98 R
+ 7 X
+ V
+ 0 X
+ N
+ (...) 416.32 169.04 T
+ (...) 273.33 204.76 T
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "2" 60
+ %%Page: "3" 60
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-3) 298.51 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Organizing the world) 453.93 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 10 F
+ 0 X
+ (1.2) 71.42 706.78 T
+ (Name spaces) 98.42 706.78 T
+ 4 F
+ 0.01 (The ) 71.42 680.11 P
+ 3 F
+ 0.01 (lobby) 93.08 680.11 P
+ 4 F
+ 0.01 ( object is the context in which the S) 119.73 680.11 P
+ 6 F
+ 0 (ELF) 291 680.11 P
+ 4 F
+ 0.01 ( shell evaluates expressions typed at the prompt) 310.54 680.11 P
+ 0.5 (or used as slot initializers; that is, such expressions are evaluated with ) 71.42 666.11 P
+ 12 F
+ 1.1 (self) 415.55 666.11 P
+ 4 F
+ 0.5 ( bound to the lobby) 441.91 666.11 P
+ 0.5 (.) 536.42 666.11 P
+ -0.54 (The lobby object occupies a central position in the inheritance hierarchy) 71.42 652.11 P
+ -0.54 (, so that most objects in the) 411.7 652.11 P
+ 0.34 (world inherit from it. Thus, the S) 71.42 638.11 P
+ 6 F
+ 0.31 (ELF) 232.03 638.11 P
+ 4 F
+ 0.34 ( world can use the lobby as a global name space by placing) 251.57 638.11 P
+ 0.48 (well-known objects in slots in the lobby) 71.42 624.11 P
+ 0.48 (. An object can simply send the name of such a slot as a) 265.4 624.11 P
+ (message to itself, and the appropriate object will be returned.) 71.42 610.11 T
+ -0.06 (However) 71.42 584.11 P
+ -0.06 (, instead of using the lobby as the only object serving as the name space, the S) 114.9 584.11 P
+ 6 F
+ -0.06 (ELF) 488.97 584.11 P
+ 4 F
+ -0.06 ( world) 508.51 584.11 P
+ 1.69 (employs unordered multiple inheritance to cluster well-known objects into logical groups and) 71.42 570.11 P
+ 0.93 (place them in parents of the lobby) 71.42 556.11 P
+ 0.93 (. The sole function of these ) 239.43 556.11 P
+ 3 F
+ 0.93 (name space objects) 378.56 556.11 P
+ 4 F
+ 0.93 ( is to provide) 473.68 556.11 P
+ 0.31 (names for well-known objects. Since the lobby inherits from these name space objects, an object) 71.42 542.11 P
+ 0.05 (can still be accessed by simply invoking the name of the slot it is in, as long as the receiver of the) 71.42 528.11 P
+ (message inherits from the lobby) 71.42 514.11 T
+ (.) 224.54 514.11 T
+ 0.46 (The same categorization technique used to break up lar) 71.42 488.11 P
+ 0.46 (ge traits objects can be extended to name) 339.35 488.11 P
+ 0.49 (space objects as well, resulting in a hierarchy of name space objects. However) 71.42 474.11 P
+ 0.49 (, all the objects in) 452.52 474.11 P
+ 0.69 (this hierarchy are part of a single, global name space; breaking name spaces into categories and) 71.42 460.11 P
+ (placing them in parent slots results in ) 71.42 446.11 T
+ 3 F
+ (composite name spaces) 253.65 446.11 T
+ 4 F
+ ( that make up one name space.) 366.23 446.11 T
+ 0.45 (Multiple, distinct name spaces can be created by placing name space objects in ) 71.42 420.11 P
+ 3 F
+ 0.45 (non) 459.02 420.11 P
+ 4 F
+ 0.45 (-parent slots.) 477.01 420.11 P
+ 0.96 (For example, in the portion of the S) 71.42 406.11 P
+ 6 F
+ 0.88 (ELF) 249.41 406.11 P
+ 4 F
+ 0.96 ( world shown below) 268.94 406.11 P
+ 0.96 (, sending ) 368.66 406.11 P
+ 12 F
+ 2.12 (rectangle) 416.9 406.11 P
+ 4 F
+ 0.96 ( to the lobby) 476.23 406.11 P
+ 0.23 (yields the prototypical rectangle object found in the prototypes name space object, while sending) 71.42 392.11 P
+ 12 F
+ -0.39 (traits rectangle) 71.42 378.11 P
+ 4 F
+ -0.18 ( would yield the rectangle traits object in the traits name space object. In the) 176.5 378.11 P
+ 0.84 (\336rst case, the only slot named \324rectangle\325 found in an ancestor of the lobby is in the prototypes) 71.42 140.11 P
+ 0.57 (name space object; in the second case, sending ) 71.42 126.11 P
+ 12 F
+ 1.25 (traits) 303.46 126.11 P
+ 4 F
+ 0.57 ( to the lobby gives the traits name space) 343.01 126.11 P
+ (object, and sending ) 71.42 112.11 T
+ 12 F
+ (rectangle) 167.36 112.11 T
+ 4 F
+ ( to that object gives the rectangle traits object.) 226.69 112.11 T
+ 71.42 55.44 539.42 716.11 C
+ 113.79 155.17 497.06 374.11 C
+ 113.79 155.17 497.06 374.11 R
+ 7 X
+ 0 K
+ V
+ 412.87 283.08 479.83 336.65 R
+ 3 X
+ V
+ 287.88 161.09 368.23 196.8 R
+ V
+ 286.42 256.3 362.31 309.87 R
+ V
+ 166.45 205.73 255.73 259.3 R
+ V
+ 135.12 295.61 215.47 349.18 R
+ V
+ 283.42 295.01 341.45 312.87 R
+ 7 X
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 283.42 277.15 341.45 295.01 R
+ 7 X
+ V
+ 0 X
+ N
+ 283.42 259.3 341.45 277.15 R
+ 7 X
+ V
+ 0 X
+ N
+ 284.88 164.09 347.38 181.95 R
+ 7 X
+ V
+ 0 X
+ N
+ 284.88 181.95 347.38 199.8 R
+ 7 X
+ V
+ 0 X
+ N
+ 163.45 244.44 234.87 262.3 R
+ 7 X
+ V
+ 0 X
+ N
+ 163.45 226.58 234.87 244.44 R
+ 7 X
+ V
+ 0 X
+ N
+ 163.45 208.73 234.87 226.59 R
+ 7 X
+ V
+ 0 X
+ N
+ 132.12 334.32 194.61 352.18 R
+ 7 X
+ V
+ 0 X
+ N
+ 132.12 316.47 194.61 334.32 R
+ 7 X
+ V
+ 0 X
+ N
+ 132.12 298.61 194.61 316.47 R
+ 7 X
+ V
+ 0 X
+ N
+ 23 F
+ (lobby) 150.35 340.19 T
+ (defaults*) 142.11 322.34 T
+ 194.61 334.32 212.47 352.18 R
+ 7 X
+ V
+ 0 X
+ N
+ 194.61 316.47 212.47 334.32 R
+ 7 X
+ V
+ 0 X
+ N
+ 194.61 298.61 212.47 316.47 R
+ 7 X
+ V
+ 0 X
+ N
+ (list) 309.53 169.96 T
+ (rectangle) 293.65 187.82 T
+ 347.38 164.09 365.23 181.95 R
+ 7 X
+ V
+ 0 X
+ N
+ 347.38 181.95 365.23 199.8 R
+ 7 X
+ V
+ 0 X
+ N
+ (traits) 187.39 250.31 T
+ (oddballs*) 176.7 232.46 T
+ (prototypes*) 171.51 214.6 T
+ 234.87 226.58 252.73 244.44 R
+ 7 X
+ V
+ 0 X
+ N
+ 234.87 208.73 252.73 226.59 R
+ 7 X
+ V
+ 0 X
+ N
+ 234.87 244.44 252.73 262.3 R
+ 7 X
+ V
+ 0 X
+ N
+ (rectangle) 289.95 300.88 T
+ (list) 305.83 283.02 T
+ (integer) 295.75 265.17 T
+ 341.45 277.15 359.31 295.01 R
+ 7 X
+ V
+ 0 X
+ N
+ 341.45 259.3 359.31 277.15 R
+ 7 X
+ V
+ 0 X
+ N
+ 341.45 295.01 359.31 312.87 R
+ 7 X
+ V
+ 0 X
+ N
+ (globals*) 143.94 304.48 T
+ 212.94 275.73 211.99 263.76 206.46 274.41 209.7 275.07 4 Y
+ V
+ 203.07 308.4 209.9 274.09 2 L
+ N
+ 271.44 267.37 283.41 268.23 273.72 261.16 272.58 264.26 4 Y
+ V
+ 243.24 253.58 273.53 264.6 2 L
+ N
+ 274.89 205.25 283.42 196.8 271.71 199.45 273.3 202.35 4 Y
+ V
+ 242.33 219.12 274.18 201.87 2 L
+ N
+ 5 F
+ (lobby) 122.71 358.42 T
+ (globals) 153.96 269.14 T
+ (prototypes) 286.07 228.97 T
+ (traits) 272.68 341.74 T
+ 396.88 307.24 408.41 303.94 396.88 300.63 396.88 303.94 4 Y
+ V
+ 350.38 303.94 397.88 303.94 2 L
+ N
+ (prototypical) 401.34 242.36 T
+ (rectangle) 401.34 231.36 T
+ (object) 401.34 220.36 T
+ (rectangle) 387.95 358.42 T
+ (traits object) 387.95 347.42 T
+ 409.87 321.79 459.6 339.65 R
+ 7 X
+ V
+ 0 X
+ N
+ 409.87 303.94 459.6 321.79 R
+ 7 X
+ V
+ 0 X
+ N
+ 409.87 286.08 459.6 303.94 R
+ 7 X
+ V
+ 0 X
+ N
+ 23 F
+ (parent*) 417.12 327.66 T
+ (draw) 422.93 309.81 T
+ (size) 425.06 291.95 T
+ 458.98 303.94 476.83 321.79 R
+ 7 X
+ V
+ 0 X
+ N
+ 458.98 286.08 476.83 303.94 R
+ 7 X
+ V
+ 0 X
+ N
+ 458.98 321.79 476.83 339.65 R
+ 7 X
+ V
+ 0 X
+ N
+ 421.8 158.09 488.76 211.66 R
+ 3 X
+ V
+ 418.8 196.8 468.53 214.66 R
+ 7 X
+ V
+ 0 X
+ N
+ 418.8 178.95 468.53 196.8 R
+ 7 X
+ V
+ 0 X
+ N
+ 418.8 161.09 468.53 178.95 R
+ 7 X
+ V
+ 0 X
+ N
+ (parent*) 426.05 202.67 T
+ (width) 430.94 184.82 T
+ (height) 428.8 166.96 T
+ 467.91 178.95 485.76 196.8 R
+ 7 X
+ V
+ 0 X
+ N
+ 467.91 161.09 485.76 178.95 R
+ 7 X
+ V
+ 0 X
+ N
+ 467.91 196.8 485.76 214.66 R
+ 7 X
+ V
+ 0 X
+ N
+ 405.8 194.4 417.34 191.09 405.8 187.78 405.8 191.09 4 Y
+ V
+ 359.31 191.09 406.8 191.09 2 L
+ N
+ 464.5 269.78 466.43 281.62 471.07 270.55 467.78 270.17 4 Y
+ V
+ 475.37 205.73 467.68 271.16 2 L
+ N
+ 5 F
+ (name space) 272.68 330.74 T
+ (object) 272.68 319.74 T
+ (name space) 286.07 217.97 T
+ (object) 286.07 206.97 T
+ 208.49 359.84 198.6 353.04 203.38 364.05 205.93 361.95 4 Y
+ V
+ 202.01 342.67 M
+  210.8 342.41 233.5 339.65 226.27 356.65 D
+  220.62 370.06 212.69 368.26 205.9 361.95 D
+ 0 Z
+ N
+ 23 F
+ (...) 198.96 324.39 T
+ (...) 239.22 234.51 T
+ (...) 351.72 172.01 T
+ (...) 345.8 285.08 T
+ (...) 345.8 267.22 T
+ (...) 463.32 329.72 T
+ (...) 463.32 311.86 T
+ (...) 463.32 294.01 T
+ (...) 472.25 186.87 T
+ (...) 472.25 169.01 T
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "3" 61
+ %%Page: "4" 61
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-4) 298.51 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Organizing the world) 453.93 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 10 F
+ 0 X
+ (1.3) 71.42 706.78 T
+ (The name infer) 98.42 706.78 T
+ (encer) 189.89 706.78 T
+ 4 F
+ -0.38 (Some of the parts of the S) 71.42 680.11 P
+ 6 F
+ -0.35 (ELF) 193.72 680.11 P
+ 4 F
+ -0.38 ( world make use of the fact that well-known objects have names. For) 213.25 680.11 P
+ -0.33 (example, if the result of an expression at the prompt is an object which does not know how to print) 71.42 666.11 P
+ 0.12 (itself, the name of the object is printed, if there is one. Similarly) 71.42 652.11 P
+ 0.12 (, the prototype user interface \050see) 378.94 652.11 P
+ (Appendix D\051 uses the name of an object to label the object on the screen.) 71.42 638.11 T
+ 0.34 (The name inferencer is a S) 71.42 612.11 P
+ 6 F
+ 0.31 (ELF) 201.35 612.11 P
+ 4 F
+ 0.34 (-level mechanism that returns a name for an object if the object is) 220.89 612.11 P
+ -0.09 (\322well-known.\323 There are two types of names returned by the name inferencer) 71.42 598.11 P
+ -0.09 (. If the object knows) 441.5 598.11 P
+ 0.47 (how to print itself in some special way \050as, for example, integers do\051, that string is returned. For) 71.42 584.11 P
+ (example, the point object representing \0503, 4\051 prints as \324) 71.42 570.11 T
+ 12 F
+ (3 at 4) 334.24 570.11 T
+ 4 F
+ (\325.) 354.01 570.11 T
+ 0.62 (If the object does not know how to print itself, the system tries to infer a name for the object. It) 71.42 544.11 P
+ -0.28 (does this by scanning the S) 71.42 530.11 P
+ 6 F
+ -0.26 (ELF) 200.28 530.11 P
+ 4 F
+ -0.28 ( world starting at the lobby) 219.82 530.11 P
+ -0.28 (, following public, read-only slots; if the) 347.22 530.11 P
+ 0.71 (object is found, the sequence of slots to reach the object from the lobby is returned. Any parent) 71.42 516.11 P
+ 0.14 (slots on this path are omitted \050though the last slot is never omitted, even if it is a parent\051, because) 71.42 502.11 P
+ -0.42 (this sort of name is essentially a message that when sent to the lobby \050or a descendant of the lobby\051) 71.42 488.11 P
+ 0.43 (will return the object. Thus, the point traits object prints out as \324) 71.42 474.11 P
+ 12 F
+ 0.95 (traits point) 383.12 474.11 P
+ 4 F
+ 0.43 (\325: the path from) 463.17 474.11 P
+ -0.17 (the lobby is ) 71.42 460.11 P
+ 12 F
+ -0.38 (globals traits graphics point) 129.88 460.11 P
+ 4 F
+ -0.17 (, and omitting the parent slot names ) 319.92 460.11 P
+ 12 F
+ -0.38 (globals) 493.28 460.11 P
+ 4 F
+ -0.57 (and ) 71.42 446.11 P
+ 12 F
+ -1.24 (graphics) 91.18 446.11 P
+ 4 F
+ -0.57 ( gives ) 143.91 446.11 P
+ 12 F
+ -1.24 (traits point) 174.09 446.11 P
+ 4 F
+ -0.57 (. This kind of name is ) 251.95 446.11 P
+ 3 F
+ -0.57 (extensional) 356.16 446.11 P
+ 4 F
+ -0.57 (, derived from the structure) 410.79 446.11 P
+ (of the system rather than relying solely on a name given it by the programmer) 71.42 432.11 T
+ (.) 444.5 432.11 T
+ 0.33 (Not all objects have names; objects that cannot be reached from the lobby may not have a name.) 71.42 406.11 P
+ (Many objects created during the execution of a program, for example, will not have names.) 71.42 392.11 T
+ (Section II-2.7 discusses the name inferencer in more detail.) 71.42 366.11 T
+ FMENDPAGE
+ %%EndPage: "4" 62
+ %%Page: "5" 62
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-5) 298.51 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Map of the world) 469.75 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (2  Map of the world) 71.42 705.45 T
+ 4 F
+ 0.78 (This section tours the S) 71.42 678.11 P
+ 6 F
+ 0.72 (ELF) 187.16 678.11 P
+ 4 F
+ 0.78 ( world, examining default behaviors, oddball objects, mixin objects,) 206.7 678.11 P
+ -0.52 (prototype objects, and the traits hierarchy) 71.42 664.11 P
+ -0.52 (. The names that would be returned by the name inferenc-) 267.21 664.11 P
+ (er are used to identify objects.) 71.42 650.11 T
+ 10 F
+ (2.1  The lobby) 71.42 616.78 T
+ 4 F
+ 0.47 (The lobby \050\322) 71.42 466.27 P
+ 12 F
+ 1.02 (lobby) 133.64 466.27 P
+ 4 F
+ 0.47 (\323\051 is the object in whose context slot initializers and expressions typed at the) 166.6 466.27 P
+ (prompt are evaluated\321) 71.42 452.27 T
+ 12 F
+ (self) 184.67 452.27 T
+ 4 F
+ ( is bound to the lobby during evaluation of these expressions.) 211.03 452.27 T
+ 1.1 (Most objects inherit from the lobby) 71.42 426.27 P
+ 1.1 (. All clonable objects inherit from the clonable traits object) 246.38 426.27 P
+ 1.89 (\050) 71.42 412.27 P
+ 12 F
+ 4.15 (traits clonable) 75.42 412.27 P
+ 4 F
+ 1.89 (\051, which inherits from the lobby; similarly) 178.45 412.27 P
+ 1.89 (, one-of-a-kind objects \050\322odd-) 390.55 412.27 P
+ -0.21 (balls\323\051 inherit from ) 71.42 398.27 P
+ 12 F
+ -0.47 (traits oddball) 166.38 398.27 P
+ 4 F
+ -0.21 (, which inherits from the lobby) 258.2 398.27 P
+ -0.21 (. The lobby has two parents,) 404.92 398.27 P
+ 12 F
+ 0.86 (globals) 71.42 384.27 P
+ 4 F
+ 0.39 ( and ) 117.57 384.27 P
+ 12 F
+ 0.86 (defaults) 141.67 384.27 P
+ 4 F
+ 0.39 (. The ) 194.4 384.27 P
+ 12 F
+ 0.86 (globals) 222.83 384.27 P
+ 4 F
+ 0.39 ( object is the root object of the hierarchy of name space) 268.98 384.27 P
+ -0.25 (objects, giving objects that inherit from the lobby the ability to name well-known objects \050see sec-) 71.42 370.27 P
+ -0.36 (tion II-1.2\051. Default behavior of objects that inherit from the lobby is found in ) 71.42 356.27 P
+ 12 F
+ -0.79 (defaults) 442.79 356.27 P
+ 4 F
+ -0.36 ( \050see sec-) 495.53 356.27 P
+ (tion II-2.2\051.) 71.42 342.27 T
+ 0.63 (In addition, the lobby holds the ) 71.42 316.27 P
+ 12 F
+ 1.38 (doIt) 228.1 316.27 P
+ 4 F
+ 0.63 ( and the ) 254.47 316.27 P
+ 12 F
+ 1.38 (printIt) 297.32 316.27 P
+ 4 F
+ 0.63 ( methods, the methods that evaluate and) 343.46 316.27 P
+ -0.02 (print expressions typed at the prompt or read in via ) 71.42 302.27 P
+ 12 F
+ -0.04 (_RunScript) 319.07 302.27 P
+ 4 F
+ -0.02 (, and a slot named ) 384.99 302.27 P
+ 12 F
+ -0.04 (lobby) 474.83 302.27 P
+ 4 F
+ -0.02 ( point-) 507.79 302.27 P
+ (ing to itself to provide a name for the lobby) 71.42 288.27 T
+ (.) 279.51 288.27 T
+ 71.42 55.44 539.42 716.11 C
+ 111.61 488.27 499.24 612.11 C
+ 111.61 488.27 499.24 612.11 R
+ 7 X
+ 0 K
+ V
+ 143.34 494.41 223.69 583.69 R
+ 3 X
+ V
+ 140.34 550.98 202.83 568.83 R
+ 7 X
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (defaults*) 146.34 556.33 T
+ 140.34 533.12 202.83 550.98 R
+ 7 X
+ V
+ 0 X
+ N
+ (globals*) 146.34 538.47 T
+ 140.34 515.27 202.83 533.12 R
+ 7 X
+ V
+ 0 X
+ N
+ (doIt) 146.34 520.61 T
+ 140.34 497.41 202.83 515.27 R
+ 7 X
+ V
+ 0 X
+ N
+ (printIt) 146.34 502.76 T
+ 140.34 568.83 202.83 586.69 R
+ 7 X
+ V
+ 0 X
+ N
+ (lobby) 146.34 574.18 T
+ 202.83 568.83 220.69 586.69 R
+ 7 X
+ V
+ 0 X
+ N
+ 202.83 550.98 220.69 568.83 R
+ 7 X
+ V
+ 0 X
+ N
+ 202.83 533.12 220.69 550.98 R
+ 7 X
+ V
+ 0 X
+ N
+ 202.83 515.27 220.69 533.12 R
+ 7 X
+ V
+ 0 X
+ N
+ 202.83 497.41 220.69 515.27 R
+ 7 X
+ V
+ 0 X
+ N
+ 219.18 595.49 209.29 588.69 214.07 599.7 216.63 597.59 4 Y
+ V
+ 212.7 578.32 M
+  221.49 578.06 244.2 575.3 236.97 592.3 D
+  231.32 605.71 223.39 603.9 216.6 597.6 D
+ 0 Z
+ N
+ 240.4 563.21 251.93 559.91 240.4 556.6 240.4 559.91 4 Y
+ V
+ 211.76 559.91 241.4 559.91 2 L
+ 2 Z
+ N
+ 240.4 545.36 251.93 542.05 240.4 538.74 240.4 542.05 4 Y
+ V
+ 211.76 542.05 241.4 542.05 2 L
+ N
+ 240.4 527.5 251.93 524.19 240.4 520.89 240.4 524.19 4 Y
+ V
+ 211.76 524.19 241.4 524.19 2 L
+ N
+ 240.4 509.65 251.93 506.34 240.4 503.03 240.4 506.34 4 Y
+ V
+ 211.76 506.34 241.4 506.34 2 L
+ N
+ 5 F
+ (default behaviors) 261.23 557.58 T
+ (well-known objects) 262.42 538.51 T
+ (method to evaluate a S) 260.86 520.65 T
+ 21 F
+ (ELF) 373.85 520.65 T
+ 5 F
+ ( expression) 392.18 520.65 T
+ (method to print the result of a S) 260.74 502.79 T
+ 21 F
+ (ELF) 414.02 502.79 T
+ 5 F
+ ( expression) 432.35 502.79 T
+ (lobby) 137.34 593.68 T
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "5" 63
+ 13 9 /Helvetica-Oblique FMDEFINEFONT
+ %%Page: "6" 63
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-6) 298.51 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Map of the world) 469.75 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 10 F
+ 0 X
+ (2.2) 71.42 706.78 T
+ (Default behaviors) 98.42 706.78 T
+ 4 F
+ -0.54 (The defaults object holds default behavior for most objects. The category objects that make up ) 71.42 502.16 P
+ 12 F
+ -1.19 (de-) 519.65 502.16 P
+ (faults) 71.42 488.16 T
+ 4 F
+ ( are de\336ned in the \336les ) 110.97 488.16 T
+ 3 F
+ (defaults.self) 222.9 488.16 T
+ 4 F
+ (, ) 280.54 488.16 T
+ 3 F
+ (err) 286.53 488.16 T
+ (orHandling.self) 300.75 488.16 T
+ 4 F
+ (, and ) 376.38 488.16 T
+ 3 F
+ (inspect.self) 402.69 488.16 T
+ 4 F
+ (.) 456.33 488.16 T
+ 10 F
+ (2.3) 71.42 454.83 T
+ (W) 98.42 454.83 T
+ (ell-known objects) 111.65 454.83 T
+ 4 F
+ 0.27 (The globals object is the root of the hierarchy of name space objects holding the well-known ob-) 71.42 125.22 P
+ 1.01 (jects of the world. It has four slots, each holding name space objects for a portion of the S) 71.42 111.22 P
+ 6 F
+ 0.92 (ELF) 519.89 111.22 P
+ 4 F
+ (world: traits, prototypes, oddballs, and mixins.) 71.42 97.22 T
+ 71.42 55.44 539.42 716.11 C
+ 79.74 524.16 531.11 702.11 C
+ 79.74 524.16 531.11 702.11 R
+ 7 X
+ 0 K
+ V
+ 91.67 532.48 214.66 675.82 R
+ 3 X
+ V
+ 88.67 660.96 194.1 678.82 R
+ 7 X
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (comparing*) 93.56 666.85 T
+ 88.67 643.1 194.1 660.96 R
+ 7 X
+ V
+ 0 X
+ N
+ (copying*) 93.56 649 T
+ 88.67 625.25 194.1 643.1 R
+ 7 X
+ V
+ 0 X
+ N
+ (coercing*) 93.56 631.14 T
+ 88.67 607.39 194.1 625.25 R
+ 7 X
+ V
+ 0 X
+ N
+ (doubleDispatching*) 93.56 613.29 T
+ 88.67 589.54 194.1 607.39 R
+ 7 X
+ V
+ 0 X
+ N
+ (errorHandling*) 93.56 595.43 T
+ 88.67 571.68 194.1 589.54 R
+ 7 X
+ V
+ 0 X
+ N
+ (evaluating*) 93.56 577.57 T
+ 88.67 553.82 194.1 571.68 R
+ 7 X
+ V
+ 0 X
+ N
+ (inspecting*) 93.56 559.72 T
+ 88.67 535.97 194.1 553.82 R
+ 7 X
+ V
+ 0 X
+ N
+ (printing*) 93.56 541.86 T
+ 193.8 660.96 211.66 678.82 R
+ 7 X
+ V
+ 0 X
+ N
+ 193.8 643.1 211.66 660.96 R
+ 7 X
+ V
+ 0 X
+ N
+ 193.8 625.25 211.66 643.1 R
+ 7 X
+ V
+ 0 X
+ N
+ 193.8 607.39 211.66 625.25 R
+ 7 X
+ V
+ 0 X
+ N
+ 193.8 589.54 211.66 607.39 R
+ 7 X
+ V
+ 0 X
+ N
+ 193.8 571.68 211.66 589.54 R
+ 7 X
+ V
+ 0 X
+ N
+ 193.8 553.82 211.66 571.68 R
+ 7 X
+ V
+ 0 X
+ N
+ 193.8 535.97 211.66 553.82 R
+ 7 X
+ V
+ 0 X
+ N
+ 231.41 672.98 242.95 669.67 231.41 666.37 231.41 669.67 4 Y
+ V
+ 202.77 669.67 232.41 669.67 2 L
+ N
+ 5 F
+ (comparing objects) 252.24 667.34 T
+ 231.41 637.26 242.95 633.95 231.41 630.64 231.41 633.95 4 Y
+ V
+ 202.77 633.95 232.41 633.95 2 L
+ N
+ (creating certain objects \050mirrors\051) 252.24 631.62 T
+ 231.41 655.13 242.95 651.82 231.41 648.51 231.41 651.82 4 Y
+ V
+ 202.77 651.82 232.41 651.82 2 L
+ N
+ (cloning objects) 252.24 649.49 T
+ 231.41 619.4 242.95 616.09 231.41 612.79 231.41 616.09 4 Y
+ V
+ 202.77 616.09 232.41 616.09 2 L
+ N
+ (double dispatching for equality tests) 252.24 613.76 T
+ 231.41 601.54 242.95 598.24 231.41 594.93 231.41 598.24 4 Y
+ V
+ 202.77 598.24 232.41 598.24 2 L
+ N
+ (response to error messages sent by the virtual machine) 252.24 595.91 T
+ 231.41 583.69 242.95 580.38 231.41 577.07 231.41 580.38 4 Y
+ V
+ 202.77 580.38 232.41 580.38 2 L
+ N
+ (response to ) 252.24 578.05 T
+ 12 F
+ (value) 312.7 578.05 T
+ 23 F
+ ([) 345.66 578.05 T
+ 12 F
+ (:) 348.71 578.05 T
+ 23 F
+ ({) 355.3 578.05 T
+ 12 F
+ (With:) 358.98 578.05 T
+ 23 F
+ (}]) 391.93 578.05 T
+ 5 F
+ ( messages) 398.66 578.05 T
+ 231.41 565.83 242.95 562.53 231.41 559.22 231.41 562.53 4 Y
+ V
+ 202.77 562.53 232.41 562.53 2 L
+ N
+ (inspecting slots of objects) 252.24 560.19 T
+ 231.41 547.98 242.95 544.67 231.41 541.36 231.41 544.67 4 Y
+ V
+ 202.77 544.67 232.41 544.67 2 L
+ N
+ (printing objects) 252.24 542.34 T
+ (defaults) 85.67 685.81 T
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ 71.42 55.44 539.42 716.11 C
+ 140.55 147.22 470.3 450.16 C
+ 140.55 147.22 470.3 450.16 R
+ 7 X
+ 0 K
+ V
+ 164.3 176.25 241.75 243.21 R
+ 3 X
+ V
+ 266.97 176.25 344.43 243.21 R
+ V
+ 369.75 162.86 447.2 283.38 R
+ V
+ 369.75 305.7 447.2 426.23 R
+ V
+ 191.19 341.42 261.11 394.98 R
+ V
+ 188.19 384.59 245 397.98 R
+ 7 X
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 15 F
+ (traits) 191.18 388.56 T
+ 188.19 371.2 245 384.59 R
+ 7 X
+ V
+ 0 X
+ N
+ (prototypes*) 191.18 375.16 T
+ 188.19 357.81 245 371.2 R
+ 7 X
+ V
+ 0 X
+ N
+ (oddballs*) 191.18 361.77 T
+ 366.75 415.84 431.06 429.23 R
+ 7 X
+ V
+ 0 X
+ N
+ (applications*) 370.13 419.8 T
+ 366.75 402.45 431.06 415.84 R
+ 7 X
+ V
+ 0 X
+ N
+ (bench*) 370.13 406.41 T
+ 366.75 389.06 431.06 402.45 R
+ 7 X
+ V
+ 0 X
+ N
+ (collections*) 370.13 393.02 T
+ 366.75 375.66 431.06 389.06 R
+ 7 X
+ V
+ 0 X
+ N
+ (graphics*) 370.13 379.63 T
+ 366.75 362.27 431.06 375.66 R
+ 7 X
+ V
+ 0 X
+ N
+ (io*) 370.13 366.24 T
+ 366.75 348.88 431.06 362.27 R
+ 7 X
+ V
+ 0 X
+ N
+ (pixrects*) 370.13 352.84 T
+ 366.75 335.49 431.06 348.88 R
+ 7 X
+ V
+ 0 X
+ N
+ (slots) 370.13 339.45 T
+ 366.75 322.1 431.06 335.49 R
+ 7 X
+ V
+ 0 X
+ N
+ (system*) 370.13 326.06 T
+ 366.75 308.7 431.06 322.1 R
+ 7 X
+ V
+ 0 X
+ N
+ (userInterface*) 370.13 312.67 T
+ 188.19 344.42 245 357.81 R
+ 7 X
+ V
+ 0 X
+ N
+ (mixins) 191.18 348.38 T
+ 245 384.59 258.11 397.98 R
+ 7 X
+ V
+ 0 X
+ N
+ 245 371.2 258.11 384.59 R
+ 7 X
+ V
+ 0 X
+ N
+ 245 357.81 258.11 371.2 R
+ 7 X
+ V
+ 0 X
+ N
+ 245 344.42 258.11 357.81 R
+ 7 X
+ V
+ 0 X
+ N
+ 13 F
+ (globals) 185.19 403.43 T
+ (traits) 363.75 434.68 T
+ 430.89 415.84 444.2 429.23 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 402.45 444.2 415.84 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 389.06 444.2 402.45 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 375.66 444.2 389.06 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 362.27 444.2 375.66 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 348.88 444.2 362.27 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 335.49 444.2 348.88 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 322.1 444.2 335.49 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 308.7 444.2 322.1 R
+ 7 X
+ V
+ 0 X
+ N
+ 366.75 272.99 431.06 286.38 R
+ 7 X
+ V
+ 0 X
+ N
+ 15 F
+ (applications*) 370.13 276.96 T
+ 366.75 259.6 431.06 272.99 R
+ 7 X
+ V
+ 0 X
+ N
+ (collections*) 370.13 263.56 T
+ 366.75 246.21 431.06 259.6 R
+ 7 X
+ V
+ 0 X
+ N
+ (graphics*) 370.13 250.17 T
+ 366.75 232.82 431.06 246.21 R
+ 7 X
+ V
+ 0 X
+ N
+ (io*) 370.13 236.78 T
+ 366.75 219.42 431.06 232.82 R
+ 7 X
+ V
+ 0 X
+ N
+ (mirrors) 370.13 223.39 T
+ 366.75 206.03 431.06 219.42 R
+ 7 X
+ V
+ 0 X
+ N
+ (pixrects*) 370.13 210 T
+ 366.75 192.64 431.06 206.03 R
+ 7 X
+ V
+ 0 X
+ N
+ (slots) 370.13 196.6 T
+ 366.75 179.25 431.06 192.64 R
+ 7 X
+ V
+ 0 X
+ N
+ (system*) 370.13 183.21 T
+ 366.75 165.86 431.06 179.25 R
+ 7 X
+ V
+ 0 X
+ N
+ (userInterface*) 370.13 169.82 T
+ 13 F
+ (prototypes) 363.75 291.83 T
+ 430.89 272.99 444.2 286.38 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 259.6 444.2 272.99 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 246.21 444.2 259.6 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 232.82 444.2 246.21 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 219.42 444.2 232.82 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 206.03 444.2 219.42 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 192.64 444.2 206.03 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 179.25 444.2 192.64 R
+ 7 X
+ V
+ 0 X
+ N
+ 430.89 165.86 444.2 179.25 R
+ 7 X
+ V
+ 0 X
+ N
+ 263.97 232.82 328.29 246.21 R
+ 7 X
+ V
+ 0 X
+ N
+ 15 F
+ (applications*) 267.36 236.78 T
+ 263.97 219.42 328.29 232.82 R
+ 7 X
+ V
+ 0 X
+ N
+ (bench*) 267.36 223.39 T
+ 263.97 206.03 328.29 219.42 R
+ 7 X
+ V
+ 0 X
+ N
+ (graphics*) 267.36 210 T
+ 263.97 192.64 328.29 206.03 R
+ 7 X
+ V
+ 0 X
+ N
+ (system*) 267.36 196.6 T
+ 263.97 179.25 328.29 192.64 R
+ 7 X
+ V
+ 0 X
+ N
+ (userInterface*) 267.36 183.21 T
+ 13 F
+ (oddballs) 260.97 251.66 T
+ 328.11 232.82 341.43 246.21 R
+ 7 X
+ V
+ 0 X
+ N
+ 328.11 219.42 341.43 232.82 R
+ 7 X
+ V
+ 0 X
+ N
+ 328.11 206.03 341.43 219.42 R
+ 7 X
+ V
+ 0 X
+ N
+ 328.11 192.64 341.43 206.03 R
+ 7 X
+ V
+ 0 X
+ N
+ 328.11 179.25 341.43 192.64 R
+ 7 X
+ V
+ 0 X
+ N
+ 161.3 232.82 225.61 246.21 R
+ 7 X
+ V
+ 0 X
+ N
+ 15 F
+ (applications*) 164.68 236.78 T
+ 161.3 219.42 225.61 232.82 R
+ 7 X
+ V
+ 0 X
+ N
+ (defaults*) 164.68 223.39 T
+ 161.3 206.03 225.61 219.42 R
+ 7 X
+ V
+ 0 X
+ N
+ (graphics*) 164.68 210 T
+ 161.3 192.64 225.61 206.03 R
+ 7 X
+ V
+ 0 X
+ N
+ (io*) 164.68 196.6 T
+ 161.3 179.25 225.61 192.64 R
+ 7 X
+ V
+ 0 X
+ N
+ (userInterface*) 164.68 183.21 T
+ 13 F
+ (mixins) 158.3 251.66 T
+ 225.44 232.82 238.75 246.21 R
+ 7 X
+ V
+ 0 X
+ N
+ 225.44 219.42 238.75 232.82 R
+ 7 X
+ V
+ 0 X
+ N
+ 225.44 206.03 238.75 219.42 R
+ 7 X
+ V
+ 0 X
+ N
+ 225.44 192.64 238.75 206.03 R
+ 7 X
+ V
+ 0 X
+ N
+ 225.44 179.25 238.75 192.64 R
+ 7 X
+ V
+ 0 X
+ N
+ 354.94 404.62 366.74 402.45 355.58 398.04 355.26 401.33 4 Y
+ V
+ 251.56 391.29 356.26 401.43 2 L
+ N
+ 357 280 366.74 273 354.77 273.78 355.88 276.89 4 Y
+ V
+ 251.56 377.9 M
+  287.86 374.27 287.86 374.27 310.18 329.63 D
+  329.84 290.31 332.18 285.62 355.87 276.86 D
+ 0 Z
+ N
+ 318.14 258.21 318.36 246.22 311.81 256.27 314.98 257.24 4 Y
+ V
+ 251.56 364.5 M
+  282.34 361 283.36 360.88 314.99 257.26 D
+ N
+ 216.36 257.12 211.37 246.21 209.82 258.11 213.09 257.61 4 Y
+ V
+ 251.56 351.11 M
+  252.15 320.7 252.15 320.7 234.29 300.62 D
+  218.68 283.05 216.71 280.84 213.08 257.61 D
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "6" 64
+ %%Page: "7" 64
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-7) 298.51 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Map of the world) 469.75 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 3 F
+ 0 X
+ 0.56 (T) 89.42 708.11 P
+ 0.56 (raits.) 95.43 708.11 P
+ 4 F
+ 0.56 ( Traits objects are loci of shared behavior, analogous to classes in class-based lan-) 120.43 708.11 P
+ (guages \050see section II-1.1\051.) 89.42 694.11 T
+ 3 F
+ 0.82 (Pr) 89.42 668.11 P
+ 0.82 (ototypes.) 100.97 668.11 P
+ 4 F
+ 0.82 ( ) 143.95 668.11 P
+ 0.82 (Prototype objects and the traits objects from which they inherit make up the) 147.77 668.11 P
+ 0.75 (bulk of the S) 89.42 654.11 P
+ 6 F
+ 0.68 (ELF) 153.3 654.11 P
+ 4 F
+ 0.75 ( world. Prototype objects typically contain slots holding state, often as-) 172.83 654.11 P
+ 0.61 (signable, and inherit from traits objects where most of their behavior resides. Most com-) 89.42 640.11 P
+ 2.61 (mon are prototype objects that inherit from a traits object with a similar name\321for) 89.42 626.11 P
+ 0.44 (example, the ) 89.42 612.11 P
+ 12 F
+ 0.97 (rectangle) 154.59 612.11 P
+ 4 F
+ 0.44 ( object, representing the prototypical rectangle, is a child of the) 213.91 612.11 P
+ 12 F
+ -0.82 (traits rectangle) 89.42 598.11 P
+ 4 F
+ -0.37 ( object. Although new objects can be obtained by cloning any object,) 194.07 598.11 P
+ 0.03 (prototype objects are well-known and usually contain useful \322prototypical\323 behavior; typ-) 89.42 584.11 P
+ (ically) 89.42 570.11 T
+ (, new objects are created by cloning these prototypes.) 115.29 570.11 T
+ 3 F
+ -0.3 (Oddballs.) 89.42 544.11 P
+ 4 F
+ -0.3 ( ) 136.4 544.11 P
+ -0.3 (Oddball objects are one-of-a-kind objects. Oddballs typically are descendants of) 139.1 544.11 P
+ 12 F
+ -1.01 (traits oddball) 89.42 530.11 P
+ 4 F
+ -0.46 (, which has a ) 180.69 530.11 P
+ 12 F
+ -1.01 (clone) 244.46 530.11 P
+ 4 F
+ -0.46 ( method that simply returns the receiver of the mes-) 277.42 530.11 P
+ (sage rather than a new clone. This ef) 89.42 516.11 T
+ (fectively preserves the uniqueness of oddball objects.) 265.06 516.11 T
+ 3 F
+ 0.47 (Mixins.) 89.42 490.11 P
+ 4 F
+ 0.47 ( ) 125.07 490.11 P
+ 0.47 (Mixins are packages of behavior that are often inherited by a wide variety of ob-) 128.53 490.11 P
+ (jects, and thus have no \336xed position in the traits hierarchy) 89.42 476.11 T
+ (.) 371.46 476.11 T
+ ( Each of the name space objects is further subdivided into categories. These categories are:) 71.42 450.11 T
+ (applications) 107.42 430.11 T
+ (Miscellaneous applications.) 233.42 430.11 T
+ (bench) 107.42 414.11 T
+ (Benchmarks.) 233.42 414.11 T
+ (collections) 107.42 398.11 T
+ (Collections.) 233.42 398.11 T
+ (defaults) 107.42 382.11 T
+ (Default behaviors.) 233.42 382.11 T
+ (io) 107.42 366.11 T
+ (Input/output.) 233.42 366.11 T
+ (graphics) 107.42 350.11 T
+ (Graphics.) 233.42 350.11 T
+ (mirrors) 107.42 334.11 T
+ (Reflection facility.) 233.42 334.11 T
+ (pixrects) 107.42 318.11 T
+ (Interface to primitives for Sun\325s low-level graphic routines.) 233.42 318.11 T
+ (slots) 107.42 302.11 T
+ (Representation of a S) 233.42 302.11 T
+ 6 F
+ (ELF) 336.35 302.11 T
+ 4 F
+ ( slot \050used by mirrors\051.) 355.89 302.11 T
+ (system) 107.42 286.11 T
+ (General system objects.) 233.42 286.11 T
+ (userInterface) 107.42 270.11 T
+ (The prototype S) 233.42 270.11 T
+ 6 F
+ (ELF) 310.71 270.11 T
+ 4 F
+ ( user interface.) 330.24 270.11 T
+ (The \336le ) 71.42 244.11 T
+ 3 F
+ (init.self) 111.4 244.11 T
+ 4 F
+ ( sets up the template for the primary name space objects and their categories.) 147.05 244.11 T
+ -0.02 (The following sections examine the basic system objects in the S) 71.42 218.11 P
+ 6 F
+ -0.01 (ELF) 383.06 218.11 P
+ 4 F
+ -0.02 ( world, the collection hierar-) 402.6 218.11 P
+ 1.24 (chy) 71.42 204.11 P
+ 1.24 (, strings and messages, the re\337ection facility provided by mirrors, and the name inferencer) 87.96 204.11 P
+ 1.24 (.) 536.42 204.11 P
+ -0.18 (Each section is introduced by a picture showing the portion of the inheritance hierarchy being dis-) 71.42 190.11 P
+ (cussed. The remaining objects in the S) 71.42 176.11 T
+ 6 F
+ (ELF) 256.3 176.11 T
+ 4 F
+ ( world are brie\337y discussed in Appendix C.) 275.84 176.11 T
+ FMENDPAGE
+ %%EndPage: "7" 65
+ %%Page: "8" 65
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-8) 298.51 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Map of the world) 469.75 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 10 F
+ 0 X
+ (2.4) 71.42 706.78 T
+ (General system objects) 98.42 706.78 T
+ 3 F
+ 1.34 (Clonable and oddball traits.) 71.42 332.53 P
+ 4 F
+ 1.34 ( ) 211.38 332.53 P
+ 12 F
+ 2.94 (traits clonable) 215.72 332.53 P
+ 4 F
+ 1.34 ( holds behavior for clonable objects: cloning) 317.54 332.53 P
+ 0.48 (such an object returns a shallow copy of it. ) 71.42 318.53 P
+ 12 F
+ 1.06 (traits oddball) 284.28 318.53 P
+ 4 F
+ 0.48 ( holds behavior for one-of-a-kind) 377.62 318.53 P
+ 0.38 (objects: cloning such an object returns ) 71.42 304.53 P
+ 12 F
+ 0.83 (self) 260.89 304.53 P
+ 4 F
+ 0.38 (. These objects are de\336ned in ) 287.26 304.53 P
+ 3 F
+ 0.38 (clonable.self) 432.41 304.53 P
+ 4 F
+ 0.38 ( and ) 493.37 304.53 P
+ 3 F
+ 0.38 (odd-) 517.44 304.53 P
+ (ball.self) 71.42 290.53 T
+ 4 F
+ (.) 109.74 290.53 T
+ 3 F
+ -0.17 (Booleans.) 71.42 264.53 P
+ 4 F
+ -0.17 ( The ) 119.06 264.53 P
+ 12 F
+ -0.37 (true) 143.37 264.53 P
+ 4 F
+ -0.17 ( and ) 169.74 264.53 P
+ 12 F
+ -0.37 (false) 192.72 264.53 P
+ 4 F
+ -0.17 ( oddball objects represent boolean true and false, and inherit from) 225.68 264.53 P
+ 12 F
+ 1.57 (traits boolean) 71.42 250.53 P
+ 4 F
+ 0.72 (. The identities of the ) 165.28 250.53 P
+ 12 F
+ 1.57 (true) 274.13 250.53 P
+ 4 F
+ 0.72 ( and ) 300.5 250.53 P
+ 12 F
+ 1.57 (false) 325.24 250.53 P
+ 4 F
+ 0.72 ( objects are known to the virtual ma-) 358.2 250.53 P
+ (chine; some primitives take them as ar) 71.42 236.53 T
+ (guments or return them as results. De\336ned in ) 255.75 236.53 T
+ 3 F
+ (boolean.self) 474.61 236.53 T
+ 4 F
+ (.) 532.91 236.53 T
+ 3 F
+ 0.27 (Nil.) 71.42 210.53 P
+ 4 F
+ 0.27 ( The ) 89.09 210.53 P
+ 12 F
+ 0.59 (nil) 114.28 210.53 P
+ 4 F
+ 0.27 ( object represents \322not a useful object.\323 Assignable slots without explicit initializers) 134.05 210.53 P
+ -0.16 (are implicitly initialized to ) 71.42 196.53 P
+ 12 F
+ -0.36 (nil) 201.37 196.53 P
+ 4 F
+ -0.16 (. Using ) 221.14 196.53 P
+ 12 F
+ -0.36 (nil) 258.46 196.53 P
+ 4 F
+ -0.16 ( indiscriminately is poor object-oriented style. De\336ned) 278.24 196.53 P
+ (in ) 71.42 182.53 T
+ 3 F
+ (nil.self) 83.75 182.53 T
+ 4 F
+ (.) 116.08 182.53 T
+ 3 F
+ -0.24 (Numbers.) 71.42 156.53 P
+ 4 F
+ -0.24 ( ) 117.73 156.53 P
+ 12 F
+ -0.52 (traits number) 120.49 156.53 P
+ 4 F
+ -0.24 ( holds behavior for all numbers, including basic arithmetic and simple) 205.67 156.53 P
+ 0.49 (functions. ) 71.42 142.53 P
+ 12 F
+ 1.08 (traits integer) 122.55 142.53 P
+ 4 F
+ 0.49 ( holds behavior for integers; all integers in the system inherit from) 215.91 142.53 P
+ 0.05 (this object. Similarly, all floating point numbers inherit from ) 71.42 128.53 P
+ 12 F
+ 0.12 (traits float) 366.09 128.53 P
+ 4 F
+ 0.05 (, including the odd-) 445.32 128.53 P
+ -0.52 (ball object ) 71.42 114.53 P
+ 12 F
+ -1.14 (infinity) 123.68 114.53 P
+ 4 F
+ -0.52 (, representing IEEE infinity, a floating number object greater than the largest) 176.42 114.53 P
+ 0.35 (representable floating point number. Numbers inherit from ) 71.42 100.53 P
+ 12 F
+ 0.77 (traits oddball) 358.99 100.53 P
+ 4 F
+ 0.35 (, so sending ) 452.04 100.53 P
+ 12 F
+ 0.77 (copy) 513.06 100.53 P
+ 4 F
+ -0.12 (or ) 71.42 86.53 P
+ 12 F
+ -0.26 (clone) 84.29 86.53 P
+ 4 F
+ -0.12 ( to a number returns the number itself. De\336ned in ) 117.25 86.53 P
+ 3 F
+ -0.12 (number) 356.22 86.53 P
+ -0.12 (.self) 391.53 86.53 P
+ 4 F
+ -0.12 (, ) 411.19 86.53 P
+ 3 F
+ -0.12 (integer) 417.07 86.53 P
+ -0.12 (.self) 449.71 86.53 P
+ 4 F
+ -0.12 (, and ) 469.37 86.53 P
+ 3 F
+ -0.12 (\337oat.self) 495.44 86.53 P
+ 4 F
+ -0.12 (.) 536.42 86.53 P
+ 71.42 55.44 539.42 716.11 C
+ 88.08 354.53 522.77 702.11 C
+ 88.08 354.53 522.77 702.11 R
+ 7 X
+ 0 K
+ V
+ 370.81 665.48 380.2 668.9 374.05 661.02 372.43 663.25 4 Y
+ 0 X
+ V
+ 347.18 645.13 373.24 663.84 2 L
+ 0.5 H
+ 2 Z
+ N
+ 288.18 661.1 281.93 668.9 291.36 665.6 289.77 663.35 4 Y
+ V
+ 315.67 645.26 288.97 663.92 2 L
+ N
+ 301.96 630.42 360.39 645.78 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ 23 F
+ (lobby) 318.05 635.09 T
+ 204.15 592.21 295.87 607.56 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits oddball) 218.87 596.88 T
+ 364.85 592.21 462.5 607.56 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits clonable) 379.79 596.88 T
+ 119.49 552.03 217.78 567.39 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits boolean) 135.66 556.71 T
+ 235.4 487.57 330.55 502.93 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits number) 250.92 492.25 T
+ 405.03 552.03 492.95 567.39 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits block) 422.74 556.71 T
+ 172.9 453.32 264.52 468.68 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits integer) 188.49 458 T
+ 297.78 453.32 382.71 468.68 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits \337oat) 316.43 458 T
+ 101.48 516.32 159.9 531.68 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (true) 121.22 520.99 T
+ 177.36 516.32 235.79 531.68 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (false) 194.97 520.99 T
+ 146.12 420.11 179.74 435.47 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (0) 159.87 424.29 T
+ 275.88 420.11 321.5 435.47 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (0.0) 291.06 424.29 T
+ 360.39 408.68 418.81 424.04 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (in\336nity) 374.03 413.36 T
+ 188.62 420.11 222.24 435.47 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (1) 202.37 424.29 T
+ 301.92 536.68 347 552.03 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (nil) 318.96 541.35 T
+ 389.74 516.32 434.82 531.68 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ ([ ]) 407.7 520.99 T
+ 150.07 548.7 159.5 552.04 153.27 544.21 151.67 546.46 4 Y
+ V
+ 130.69 531.68 152.49 547.03 2 L
+ 0.5 H
+ N
+ 188.46 543.66 183 552.04 192.07 547.83 190.26 545.74 4 Y
+ V
+ 206.58 531.68 189.51 546.39 2 L
+ N
+ (...) 229.63 423.79 T
+ 178.51 450.13 187.89 453.58 181.76 445.68 180.14 447.91 4 Y
+ V
+ 162.93 435.47 180.95 448.49 2 L
+ N
+ 210.73 447.3 218.71 453.33 215.14 443.99 212.94 445.64 4 Y
+ V
+ 205.43 435.47 213.54 446.43 2 L
+ N
+ (...) 328.9 423.79 T
+ 316.8 450.39 326.36 453.33 319.81 445.77 318.3 448.08 4 Y
+ V
+ 298.69 435.47 319.14 448.62 2 L
+ N
+ 366.02 444.48 361.36 453.33 370 448.3 368.01 446.39 4 Y
+ V
+ 389.6 424.04 367.32 447.11 2 L
+ N
+ 242.15 485.17 251.85 487.58 244.9 480.39 243.52 482.78 4 Y
+ V
+ 218.71 468.68 244.39 483.28 2 L
+ N
+ 320.91 479.73 314.92 487.74 324.24 484.13 322.57 481.93 4 Y
+ V
+ 340.25 468.68 321.79 482.52 2 L
+ N
+ (...) 442.6 519.99 T
+ 433.02 548.92 442.52 552.04 436.12 544.36 434.57 546.64 4 Y
+ V
+ 412.28 531.68 435.42 547.19 2 L
+ N
+ 419.9 584.4 413.66 592.21 423.09 588.9 421.5 586.65 4 Y
+ V
+ 448.99 567.39 420.7 587.22 2 L
+ N
+ 199.79 589.56 209.42 592.26 202.68 584.87 201.23 587.22 4 Y
+ V
+ 168.63 567.39 202.09 587.74 2 L
+ N
+ 250.77 582.24 250 592.21 255.93 584.16 253.35 583.2 4 Y
+ V
+ 282.97 502.93 253.01 584.14 2 L
+ N
+ 285.68 583.87 280.45 592.4 289.4 587.93 287.54 585.9 4 Y
+ V
+ 324.46 552.03 286.81 586.58 2 L
+ N
+ 293.21 632.08 303.04 633.92 295.68 627.15 294.45 629.61 4 Y
+ V
+ 250.01 607.56 295.35 630.06 2 L
+ N
+ 366.77 627.15 359.33 633.84 369.18 632.1 367.97 629.63 4 Y
+ V
+ 413.67 607.56 367.08 630.06 2 L
+ N
+ 248.72 668.9 315.16 684.26 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (defaults) 262.7 673.57 T
+ 346.53 668.9 413.88 684.26 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (globals) 362.8 673.57 T
+ 13 F
+ (In this and the following inheritance diagrams,) 100.17 376.91 T
+ (represents objects that hold) 321.41 376.91 T
+ 286.19 374.86 317.33 385.53 5.33 RR
+ 7 X
+ V
+ 0 X
+ N
+ (shared traits, and) 100.17 364.91 T
+ (represents objects that are concrete.) 209.5 364.91 T
+ 174.41 362.86 205.55 373.53 5.33 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "8" 66
+ %%Page: "9" 66
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-9) 298.51 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Map of the world) 469.75 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 3 F
+ 0 X
+ 2.4 (Blocks.) 71.42 708.11 P
+ 4 F
+ 2.4 ( All blocks inherit from ) 106.4 708.11 P
+ 12 F
+ 5.28 (traits block) 234.67 708.11 P
+ 4 F
+ 2.4 (, which inherits from ) 319.06 708.11 P
+ 12 F
+ 5.28 (traits clonable) 432.27 708.11 P
+ 4 F
+ 2.4 (.) 536.42 708.11 P
+ 12 F
+ (traits block) 71.42 694.11 T
+ 4 F
+ ( has slots containing methods for looping and timing. Defined in ) 150.53 694.11 T
+ 3 F
+ (block.self) 463.01 694.11 T
+ 4 F
+ (.) 508.65 694.11 T
+ 10 F
+ (2.5) 71.42 660.78 T
+ (Miscellaneous system objects) 98.42 660.78 T
+ 3 F
+ 0.34 (Pr) 71.42 345.92 P
+ 0.34 (o\336ling, times, memory) 82.97 345.92 P
+ 0.34 (, and monitor) 189.59 345.92 P
+ 0.34 (.) 253.91 345.92 P
+ 4 F
+ 0.34 ( These objects allow access to various virtual machine op-) 256.91 345.92 P
+ -0.1 (erations. ) 71.42 331.92 P
+ 12 F
+ -0.22 (profiling) 115.29 331.92 P
+ 4 F
+ -0.1 ( contains methods to activate S) 174.62 331.92 P
+ 6 F
+ -0.09 (ELF) 323.04 331.92 P
+ 4 F
+ -0.1 ( code pro\336ling as well as virtual machine) 342.58 331.92 P
+ 0.12 (pro\336ling when running a pro\336lable S) 71.42 317.92 P
+ 6 F
+ 0.11 (ELF) 249.58 317.92 P
+ 4 F
+ 0.12 ( system \050see the S) 269.11 317.92 P
+ 6 F
+ 0.11 (ELF) 355.54 317.92 P
+ 4 F
+ 0.12 ( System Manual\051. ) 375.07 317.92 P
+ 12 F
+ 0.26 (times) 463.37 317.92 P
+ 4 F
+ 0.12 ( contains) 496.33 317.92 P
+ 0.78 (methods to return user time, system time, cpu time, and real time. ) 71.42 303.92 P
+ 12 F
+ 1.72 (memory) 398.59 303.92 P
+ 4 F
+ 0.78 ( contains methods to) 438.14 303.92 P
+ -0.16 (force scavenging and garbage collecting of the S) 71.42 289.92 P
+ 6 F
+ -0.15 (ELF) 303.78 289.92 P
+ 4 F
+ -0.16 ( heap. Finally) 323.31 289.92 P
+ -0.16 (, ) 387.84 289.92 P
+ 12 F
+ -0.35 (monitor) 393.67 289.92 P
+ 4 F
+ -0.16 ( encapsulates system) 439.82 289.92 P
+ 0.25 (monitor operations, currently limited to determining the height of the system monitor) 71.42 275.92 P
+ 0.25 (. De\336ned in) 482.62 275.92 P
+ 3 F
+ (pr) 71.42 261.92 T
+ (o\336ling.self) 81.64 261.92 T
+ 4 F
+ (, ) 131.96 261.92 T
+ 3 F
+ (time.self) 137.95 261.92 T
+ 4 F
+ (, and ) 178.26 261.92 T
+ 3 F
+ (systemOddballs.self) 204.57 261.92 T
+ 4 F
+ (.) 300.19 261.92 T
+ 3 F
+ 0.03 (System-invoked actions) 71.42 235.92 P
+ 0.03 (.) 183.7 235.92 P
+ 4 F
+ 0.03 ( ) 186.7 235.92 P
+ 12 F
+ 0.07 (snapshotAction) 189.73 235.92 P
+ 4 F
+ 0.03 ( contains objects to be evaluated when certain actions) 282.02 235.92 P
+ -0.29 (are taken by the virtual machine. For example, before writing a snapshot, the VM sends to the lob-) 71.42 221.92 P
+ 0.35 (by the message ) 71.42 207.92 P
+ 12 F
+ 0.77 (snapshotAction preWrite) 148.75 207.92 P
+ 4 F
+ 0.35 (. Pre- and post-actions are taken to both snapshot) 301.13 207.92 P
+ 0.29 (reading and writing. In the base world, for example, before writing out a snapshot a garbage col-) 71.42 193.92 P
+ -0.54 (lection is performed,) 71.42 179.92 P
+ -0.54 ( and after reading in a snapshot the caches used by the prototype user interface) 169.94 179.92 P
+ (are reset. \050See the S) 71.42 165.92 T
+ 6 F
+ (ELF) 166.34 165.92 T
+ 4 F
+ ( System manual for details on system-triggered messages.\051) 185.87 165.92 T
+ 3 F
+ -0.05 (Comparison mixins.) 71.42 139.92 P
+ 4 F
+ -0.05 ( The ) 167.99 139.92 P
+ 12 F
+ -0.11 (binaries) 192.54 139.92 P
+ 4 F
+ -0.05 ( mixin contains binary comparisons \050) 245.27 139.92 P
+ 12 F
+ -0.11 (=) 423.24 139.92 P
+ 4 F
+ -0.05 (, ) 429.83 139.92 P
+ 12 F
+ -0.11 (<) 435.78 139.92 P
+ 4 F
+ -0.05 (, ) 442.37 139.92 P
+ 12 F
+ -0.11 (>) 448.32 139.92 P
+ 4 F
+ -0.05 (\051 implemented by) 454.91 139.92 P
+ -0.16 (the three-way comparison ) 71.42 125.92 P
+ 12 F
+ -0.36 (compare:IfLess:Equal:Greater) 198.49 125.92 P
+ 4 F
+ -0.16 (. The ) 382.4 125.92 P
+ 12 F
+ -0.36 (threeWayCompare) 409.72 125.92 P
+ 4 F
+ -0.16 ( mixin) 508.6 125.92 P
+ 0.7 (contains the three-way comparison implemented by binary comparisons. Finally) 71.42 111.92 P
+ 0.7 (, the ) 461.64 111.92 P
+ 12 F
+ 1.54 (identity) 486.69 111.92 P
+ 4 F
+ 0.34 (mixin contains equality and hashing for objects that compare using identity) 71.42 97.92 P
+ 0.34 (. De\336ned in ) 435.14 97.92 P
+ 3 F
+ 0.34 (compari-) 495.46 97.92 P
+ (son.self) 71.42 83.92 T
+ 4 F
+ (.) 107.74 83.92 T
+ 71.42 55.44 539.42 716.11 C
+ 87.01 367.92 523.84 656.11 C
+ 87.01 367.92 523.84 656.11 R
+ 7 X
+ 0 K
+ V
+ 278.18 622.98 288.18 623.09 279.76 617.7 278.97 620.34 4 Y
+ 0 X
+ V
+ 199.12 597.24 279.93 620.63 2 L
+ 0.5 H
+ 2 Z
+ N
+ 279.52 623.08 337.94 642.72 9.82 RR
+ 7 X
+ V
+ 0 X
+ N
+ 23 F
+ (lobby) 295.6 629.84 T
+ 164.95 578.44 256.68 598.08 9.82 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits oddball) 179.68 585.2 T
+ 93.66 540.68 160.38 560.33 9.82 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (pro\336ling) 107.79 547.44 T
+ 180.7 515.12 240.93 534.76 9.82 RR
+ 7 X
+ V
+ 0 X
+ N
+ (times) 197.69 521.88 T
+ 260.29 541.34 330.01 560.98 9.82 RR
+ 7 X
+ V
+ 0 X
+ N
+ (memory) 275.32 548.1 T
+ 240.95 489.53 310.18 509.18 9.82 RR
+ 7 X
+ V
+ 0 X
+ N
+ (monitor) 257.25 496.29 T
+ 159.69 578.19 169.56 579.78 162.03 573.2 160.86 575.7 4 Y
+ V
+ 129.15 560.98 161.77 576.12 2 L
+ 0.5 H
+ N
+ 262.25 576.63 255.32 583.84 265.02 581.4 263.63 579.02 4 Y
+ V
+ 295.15 560.98 262.77 579.52 2 L
+ N
+ 208.06 568.82 210.82 578.44 213.57 568.82 210.82 568.82 4 Y
+ V
+ 210.82 534.76 210.82 569.82 2 L
+ N
+ 238.02 568.75 235.56 578.44 242.78 571.53 240.4 570.14 4 Y
+ V
+ 275.57 509.18 239.9 571 2 L
+ N
+ 107.05 442.44 212.27 462.08 9.82 RR
+ 7 X
+ V
+ 0 X
+ N
+ (snapshotAction) 122.1 449.2 T
+ 283.05 442.44 448.9 462.08 9.82 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mixins comparisons binaries) 296.99 449.2 T
+ 283.05 412.38 448.9 432.02 9.82 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mixins comparisons identity) 298.82 419.14 T
+ 283.05 382.32 506.55 401.96 9.82 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mixins comparisons threeW) 299.16 389.08 T
+ (ayCompare) 433.66 389.08 T
+ 106.53 489.29 175.76 508.93 9.82 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (scheduler) 117.33 496.05 T
+ 184.85 572.43 192.97 578.26 189.17 569.01 187.01 570.72 4 Y
+ V
+ 139.28 509.75 187.63 571.5 2 L
+ 0.5 H
+ N
+ 390.3 578.44 482.02 598.08 9.82 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits system) 407.35 583.7 T
+ 339.18 542.71 430.9 562.37 9.83 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits semaphore) 346.15 547.99 T
+ 405.18 575.98 414.79 578.73 408.09 571.3 406.63 573.65 4 Y
+ V
+ 388.28 562.37 407.5 574.17 2 L
+ N
+ 354.77 490.94 423.99 510.59 9.82 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (semaphore) 361.9 497.7 T
+ 385.52 533.02 388.28 542.64 391.04 533.02 388.28 533.02 4 Y
+ V
+ 388.28 511.39 388.28 534.02 2 L
+ 0.5 H
+ N
+ 437.38 542.71 517.74 562.37 9.83 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits process) 446.67 547.99 T
+ 465.7 570.81 459.59 578.72 468.96 575.25 467.33 573.03 4 Y
+ V
+ 482.02 562.37 466.54 573.62 2 L
+ N
+ 337.73 618.02 328.99 622.89 338.98 623.39 338.35 620.71 4 Y
+ V
+ 437.38 598.08 337.38 620.93 2 L
+ N
+ 444.05 490.94 513.27 510.59 9.82 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (process) 459.43 497.7 T
+ 474.8 533.02 477.56 542.64 480.32 533.02 477.56 533.02 4 Y
+ V
+ 477.56 511.39 477.56 534.02 2 L
+ 0.5 H
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "9" 67
+ %%Page: "10" 67
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-10) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Map of the world) 469.75 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 3 F
+ 0 X
+ 0.75 (Pr) 71.42 708.11 P
+ 0.75 (ocess, scheduler) 82.97 708.11 P
+ 0.75 (, and semaphor) 160.99 708.11 P
+ 0.75 (e.) 236.33 708.11 P
+ 4 F
+ 0.75 ( ) 244.66 708.11 P
+ 12 F
+ 1.64 (process) 248.4 708.11 P
+ 4 F
+ 0.75 ( ) 294.55 708.11 P
+ 0.75 (contains methods for controlling ) 298.29 708.11 P
+ 0.75 (S) 460.52 708.11 P
+ 6 F
+ 0.69 (ELF) 467.19 708.11 P
+ 4 F
+ 0.75 ( processes,) 486.72 708.11 P
+ 0.09 (e.g. terminating them or printing their stack.) 71.42 694.11 P
+ 3 F
+ 0.09 ( ) 284.17 694.11 P
+ 4 F
+ 0.09 (The ) 287.26 694.11 P
+ 12 F
+ 0.2 (scheduler) 308.99 694.11 P
+ 4 F
+ 0.09 ( is a simple preemptive round robin) 368.32 694.11 P
+ 0 (scheduler) 71.42 680.11 P
+ 0 (.) 116.72 680.11 P
+ 0 ( Finally, ) 119.72 680.11 P
+ 12 F
+ 0.01 (semaphore) 162.71 680.11 P
+ 4 F
+ 0 ( implements binary and counting semaphores. The \336le ) 222.04 680.11 P
+ 3 F
+ 0 (pr) 485.56 680.11 P
+ 0 (ompt.self) 495.78 680.11 P
+ 4 F
+ -0.1 (contains a simple demo of the process facilities. The ) 71.42 666.11 P
+ 12 F
+ -0.22 (prompt) 325.03 666.11 P
+ 4 F
+ -0.1 ( object reads in a command and exe-) 364.58 666.11 P
+ -0.33 (cutes it as a separate process \050\322in the background\323\051. The process-related objects are not used in the) 71.42 652.11 P
+ 0.85 (current S) 71.42 638.11 P
+ 6 F
+ 0.78 (ELF) 115.91 638.11 P
+ 4 F
+ 0.85 ( system. They are meant to demonstrate the use of the process primitives and thus) 135.44 638.11 P
+ 0.74 (have only limited functionality) 71.42 624.11 P
+ 0.74 (. Consequently) 221.1 624.11 P
+ 0.74 (, they are likely to be changed when processes are) 293.02 624.11 P
+ (fully integrated into the S) 71.42 610.11 T
+ 6 F
+ (ELF) 194.02 610.11 T
+ 4 F
+ ( world in future releases.) 213.55 610.11 T
+ 10 F
+ (2.6) 71.42 550.78 T
+ (Collections) 98.42 550.78 T
+ 4 F
+ 0.31 (Collections are objects that act as containers, holding zero or more other objects. The collections) 71.42 524.11 P
+ -0.2 (provided in the S) 71.42 510.11 P
+ 6 F
+ -0.19 (ELF) 153.1 510.11 P
+ 4 F
+ -0.2 ( world are a minimal set. One of the underlying principles of these S) 172.64 510.11 P
+ 6 F
+ -0.19 (ELF) 498.44 510.11 P
+ 4 F
+ -0.2 ( col-) 517.98 510.11 P
+ 0.83 (lections is that collections are assumed by default to be \322keyed\323\321having a key associated with) 71.42 496.11 P
+ -0.39 (each value in the collection. Collections without an obvious key) 71.42 482.11 P
+ -0.39 (, such as lists \050section II-2.6.1\051 and) 374.24 482.11 P
+ 0.36 (sets \050section II-2.6.2\051, use each element as both the key and the value. Iterations over collections) 71.42 468.11 P
+ -0.24 (always pass both the value and the key for each element \050in that order\051 to the iteration block; since) 71.42 454.11 P
+ 1.78 (S) 71.42 440.11 P
+ 6 F
+ 1.63 (ELF) 78.09 440.11 P
+ 4 F
+ 1.78 ( blocks ignore extra ar) 97.63 440.11 P
+ 1.78 (guments, iterations that don\325) 211.76 440.11 P
+ 1.78 (t care about the keys can simply use) 354.12 440.11 P
+ (blocks that only take one ar) 71.42 426.11 T
+ (gument, thus ignoring the key part of each element.) 203.45 426.11 T
+ 0.67 (Collections understand the special copy operations ) 71.42 400.11 P
+ 12 F
+ 1.47 (copyRemoveAll) 321.93 400.11 P
+ 4 F
+ 0.67 ( and ) 407.62 400.11 P
+ 12 F
+ 1.47 (copyAddAll:) 432.27 400.11 P
+ 4 F
+ 0.67 (. Addi-) 504.78 400.11 P
+ 0.18 (tions to most collections are made with ) 71.42 386.11 P
+ 12 F
+ 0.41 (add:) 263.6 386.11 P
+ 4 F
+ 0.18 ( for unkeyed collections or ) 289.97 386.11 P
+ 12 F
+ 0.41 (at:Put:) 422.46 386.11 P
+ 4 F
+ 0.18 ( for keyed col-) 468.6 386.11 P
+ 1.24 (lections. ) 71.42 372.11 P
+ 12 F
+ 2.72 (size) 115.97 372.11 P
+ 4 F
+ 1.24 ( and ) 142.34 372.11 P
+ 12 F
+ 2.72 (isEmpty) 168.13 372.11 P
+ 4 F
+ 1.24 ( reveal how many objects a collection contains. Iteration over the) 214.27 372.11 P
+ -0.05 (members of a collection is done with ) 71.42 358.11 P
+ 12 F
+ -0.12 (do:) 251.26 358.11 P
+ 4 F
+ -0.05 (, which takes a block with two ar) 271.04 358.11 P
+ -0.05 (guments, the value and) 428.99 358.11 P
+ 0.94 (key) 71.42 344.11 P
+ 0.94 (, respectively) 87.96 344.11 P
+ 0.94 (. ) 152.07 344.11 P
+ 12 F
+ 2.07 (with:Do:) 159.01 344.11 P
+ 4 F
+ 0.94 ( allows pairwise iteration through two collections. Collections also) 211.75 344.11 P
+ 0.04 (support ) 71.42 330.11 P
+ 12 F
+ 0.09 (doFirst:Middle:Last:IfEmpty:) 110.44 330.11 P
+ 4 F
+ 0.04 (, a variant of the ) 295.01 330.11 P
+ 12 F
+ 0.09 (do:) 376.48 330.11 P
+ 4 F
+ 0.04 ( message that allows dif) 396.26 330.11 P
+ 0.04 (ferent) 511.45 330.11 P
+ 0.35 (behaviors when iterating for the \336rst element in a collection, the last element in a collection, and) 71.42 316.11 P
+ 1.9 (the intervening elements. The ) 71.42 302.11 P
+ 12 F
+ 4.17 (includes:) 224.57 302.11 P
+ 4 F
+ 1.9 (, ) 283.9 302.11 P
+ 12 F
+ 4.17 (occurrencesOf:) 291.79 302.11 P
+ 4 F
+ 1.9 (, and ) 384.08 302.11 P
+ 12 F
+ 4.17 (findFirst:IfPresen-) 414.18 302.11 P
+ 0.07 (t:IfAbsent) 71.42 288.11 P
+ 4 F
+ 0.03 ( messages test for the presence of particular values in the collection. The transform-) 137.34 288.11 P
+ 0.24 (ing operations ) 71.42 274.11 P
+ 12 F
+ 0.52 (filterBy:Into:) 143.19 274.11 P
+ 4 F
+ 0.24 ( and ) 235.48 274.11 P
+ 12 F
+ 0.52 (mapBy:Into:) 259.27 274.11 P
+ 4 F
+ 0.24 ( can be used to create a new collection that) 331.78 274.11 P
+ 0.05 (includes a subset or an element-wise function of a collection. Basic collection behavior is de\336ned) 71.42 260.11 P
+ (in ) 71.42 246.11 T
+ 3 F
+ (collection.self) 83.75 246.11 T
+ 4 F
+ (.) 150.71 246.11 T
+ (The following sections brie\337y discuss each of the concrete collections.) 71.42 220.11 T
+ FMENDPAGE
+ %%EndPage: "10" 68
+ %%Page: "11" 68
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-11) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Map of the world) 469.75 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 2 F
+ 0 X
+ (2.6.1) 71.42 708.11 T
+ (Lists) 107.42 708.11 T
+ 12 F
+ -1.06 (list) 71.42 504.91 P
+ 4 F
+ -0.48 ( implements an unkeyed, circular) 97.79 504.91 P
+ -0.48 (, doubly-linked list of objects. Additions and removals at ei-) 254.93 504.91 P
+ 0.32 (ther end are ef) 71.42 490.91 P
+ 0.32 (\336cient; insertions and removals in the middle of the list are less ef) 141.09 490.91 P
+ 0.32 (\336cient. Keys are) 460.52 490.91 P
+ 0.29 (ignored when adding elements to a list \050the ) 71.42 476.91 P
+ 12 F
+ 0.64 (at:Put:) 283.63 476.91 P
+ 4 F
+ 0.29 ( form performs an ) 329.77 476.91 P
+ 12 F
+ 0.64 (add:) 420.88 476.91 P
+ 4 F
+ 0.29 (\051. Reverse iteration) 447.24 476.91 P
+ -0.26 (is as ef) 71.42 462.91 P
+ -0.26 (\336cient as forward iteration and is provided by ) 103.99 462.91 P
+ 12 F
+ -0.58 (reverseDo:) 323.73 462.91 P
+ 4 F
+ -0.26 (. ) 389.65 462.91 P
+ 12 F
+ -0.58 (link) 395.38 462.91 P
+ 4 F
+ -0.26 (s are the nodes of the list) 421.75 462.91 P
+ (and are transparent to clients of ) 71.42 448.91 T
+ 12 F
+ (list) 225.3 448.91 T
+ 4 F
+ (. Lists and links are de\336ned in ) 251.67 448.91 T
+ 3 F
+ (list.self) 398.91 448.91 T
+ 4 F
+ (.) 433.23 448.91 T
+ 2 F
+ (2.6.2) 71.42 416.91 T
+ (Dictionaries and sets) 107.42 416.91 T
+ 4 F
+ 0.49 (A ) 71.42 208.64 P
+ 12 F
+ 1.08 (set) 83.57 208.64 P
+ 4 F
+ 0.49 ( behaves like a mathematical set. It contains elements without duplication in no particular) 103.35 208.64 P
+ 0.58 (order) 71.42 194.64 P
+ 0.58 (. A ) 96.07 194.64 P
+ 12 F
+ 1.27 (dictionary) 114.88 194.64 P
+ 4 F
+ 0.58 ( implements a mapping from keys to values. The keys and values may be) 180.8 194.64 P
+ -0.21 (arbitrary objects. Dictionaries support the ) 71.42 180.64 P
+ 12 F
+ -0.47 (includesKey:) 272.89 180.64 P
+ 4 F
+ -0.21 ( and ) 351.99 180.64 P
+ 12 F
+ -0.47 (removeKey:) 374.88 180.64 P
+ 4 F
+ -0.21 ( operations. Hash ta-) 440.8 180.64 P
+ 0.73 (bles are used in the implementation of sets and dictionaries. Sets and dictionaries are de\336ned in) 71.42 166.64 P
+ 3 F
+ (setAndDictionary) 71.42 152.64 T
+ (.self) 155.38 152.64 T
+ 4 F
+ (.) 175.04 152.64 T
+ 71.42 55.44 539.42 716.11 C
+ 161.07 526.91 449.78 704.11 C
+ 161.07 526.91 449.78 704.11 R
+ 7 X
+ 0 K
+ V
+ 207.36 612.87 273.08 628.22 7.68 RR
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (traits link) 218.55 617.54 T
+ 303.07 568.23 368.28 583.58 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits list) 315.53 572.9 T
+ 167.4 651.29 253.67 666.65 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits clonable) 176.65 655.96 T
+ 182.98 684.29 238.09 699.65 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (lobby) 197.41 688.96 T
+ 337.04 612.87 442.6 628.22 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits collection) 353.49 617.54 T
+ 313.36 535.23 357.99 550.58 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (list) 328.96 539.9 T
+ 215.86 579.87 264.58 595.22 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (link) 231.98 584.54 T
+ 332.92 558.61 335.67 568.23 338.43 558.61 335.67 558.61 4 Y
+ V
+ 335.67 550.58 335.67 559.61 2 L
+ 0.5 H
+ N
+ 237.46 603.26 240.22 612.87 242.98 603.26 240.22 603.26 4 Y
+ V
+ 240.22 595.22 240.22 604.26 2 L
+ N
+ 207.78 674.68 210.54 684.29 213.29 674.68 210.54 674.68 4 Y
+ V
+ 210.54 666.65 210.54 675.68 2 L
+ N
+ 216.4 643.2 210.54 651.29 219.8 647.54 218.1 645.37 4 Y
+ V
+ 240.22 628.22 217.32 645.98 2 L
+ N
+ 278.51 608.05 272.19 615.8 281.65 612.58 280.08 610.32 4 Y
+ V
+ 319.06 583.58 279.27 610.88 2 L
+ N
+ 375 608.61 384.05 612.87 378.64 604.46 376.82 606.54 4 Y
+ V
+ 350.56 583.58 377.58 607.19 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ 71.42 55.44 539.42 716.11 C
+ 156.72 230.64 454.13 412.91 C
+ 156.72 230.64 454.13 412.91 R
+ 7 X
+ 0 K
+ V
+ 231.47 312.74 362.4 328.1 7.68 RR
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (traits setOrDictionary) 245.66 317.41 T
+ 206.16 272.56 273.87 287.92 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits set) 219.26 277.24 T
+ 301.9 272.56 398.11 287.92 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits dictionary) 313.07 277.24 T
+ 313.38 356.49 399.65 371.84 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits clonable) 322.62 361.16 T
+ 328.96 389.49 384.07 404.84 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (lobby) 343.38 394.16 T
+ 169.03 356.49 274.59 371.84 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits collection) 185.48 361.16 T
+ 218.41 239.56 261.62 254.92 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (set) 232.69 244.24 T
+ 314.29 239.56 385.71 254.92 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (dictionary) 326.5 244.24 T
+ 347.25 262.95 350 272.56 352.76 262.95 350 262.95 4 Y
+ V
+ 350 254.92 350 263.95 2 L
+ 0.5 H
+ N
+ 237.26 262.95 240.02 272.56 242.77 262.95 240.02 262.95 4 Y
+ V
+ 240.02 254.92 240.02 263.95 2 L
+ N
+ 353.76 379.88 356.51 389.49 359.27 379.88 356.51 379.88 4 Y
+ V
+ 356.51 371.84 356.51 380.88 2 L
+ N
+ 262.42 308.95 271.68 312.74 265.84 304.62 264.13 306.79 4 Y
+ V
+ 240.02 287.92 264.92 307.4 2 L
+ N
+ 327.94 304.24 322.67 312.74 331.64 308.32 329.79 306.28 4 Y
+ V
+ 350 287.92 329.05 306.95 2 L
+ N
+ 347.8 351.57 356.51 356.49 351.73 347.7 349.77 349.63 4 Y
+ V
+ 328.36 328.1 350.48 350.35 2 L
+ N
+ 228.36 348.93 221.81 356.49 231.37 353.55 229.86 351.24 4 Y
+ V
+ 265.86 328.1 229.03 351.79 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "11" 69
+ %%Page: "12" 69
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-12) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Map of the world) 469.75 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 2 F
+ 0 X
+ (2.6.3  T) 71.42 708.11 T
+ (r) 108.52 708.11 T
+ (ees) 113.63 708.11 T
+ 12 F
+ 1.28 (treeSet) 71.42 424.92 P
+ 4 F
+ 0.58 ( and ) 117.57 424.92 P
+ 12 F
+ 1.28 (treeBag) 142.04 424.92 P
+ 4 F
+ 0.58 ( implement sorted collections using binary trees. The set variant ignores) 188.18 424.92 P
+ -0.31 (duplicates, while the bag variant does not. T) 71.42 410.92 P
+ -0.31 (rees allow both explicit and implicit keys \050that is, add-) 281.03 410.92 P
+ 0.09 (ing elements can be done with either ) 71.42 396.92 P
+ 12 F
+ 0.2 (at:Put:) 250.92 396.92 P
+ 4 F
+ 0.09 ( or ) 297.06 396.92 P
+ 12 F
+ 0.2 (add:) 313.23 396.92 P
+ 4 F
+ 0.09 (\051\321sorting is done on keys if present, val-) 339.6 396.92 P
+ 0.26 (ues otherwise. The element keys \050keys if explicit, or the elements themselves otherwise\051 must be) 71.42 382.92 P
+ 0.23 (mutually comparable, so that they may be sorted as they are inserted. ) 71.42 368.92 P
+ 12 F
+ 0.52 (includesKey:) 408.67 368.92 P
+ 4 F
+ 0.23 ( ef) 487.77 368.92 P
+ 0.23 (\336ciently) 500.11 368.92 P
+ (tests for the presence of a key) 71.42 354.92 T
+ (.) 213.19 354.92 T
+ -0.6 (The implementation of trees uses dynamic inheritance to distinguish the dif) 71.42 328.92 P
+ -0.6 (fering behavior of emp-) 426.98 328.92 P
+ 0.47 (ty and non-empty subtrees. The prototype ) 71.42 314.92 P
+ 12 F
+ 1.04 (treeSet) 277.8 314.92 P
+ 4 F
+ 0.47 ( represents an empty \050sub\051tree; when an ele-) 323.95 314.92 P
+ 0.62 (ment is added to it, its parent is switched from ) 71.42 300.92 P
+ 12 F
+ 1.37 (traits trees set) 302.5 300.92 P
+ 4 F
+ 0.62 (, which holds behavior for) 410.7 300.92 P
+ 0.59 (empty \050sub\051trees, to a new copy of ) 71.42 286.92 P
+ 12 F
+ 1.29 (treeSetNode) 244.73 286.92 P
+ 4 F
+ 0.59 (, which represents a tree node holding an ele-) 317.24 286.92 P
+ 0.11 (ment. Thus, the ) 71.42 272.92 P
+ 12 F
+ 0.23 (treeSet) 149.36 272.92 P
+ 4 F
+ 0.11 ( object now behaves as a ) 195.51 272.92 P
+ 12 F
+ 0.23 (treeSetNode) 318.04 272.92 P
+ 4 F
+ 0.11 ( object, with right and left sub-) 390.55 272.92 P
+ 0.58 (trees \050initially copies of the empty subtree ) 71.42 258.92 P
+ 12 F
+ 1.27 (treeSet) 280.31 258.92 P
+ 4 F
+ 0.58 (\051. Dynamic inheritance allows one object to) 326.46 258.92 P
+ (behave modally without using clumsy ) 71.42 244.92 T
+ 12 F
+ (if) 256.99 244.92 T
+ 4 F
+ (-tests throughout every method.) 270.17 244.92 T
+ (T) 71.42 218.92 T
+ (rees are de\336ned in ) 78.33 218.92 T
+ 3 F
+ (tr) 168.92 218.92 T
+ (ee.self) 176.47 218.92 T
+ 4 F
+ (.) 206.78 218.92 T
+ 71.42 55.44 539.42 716.11 C
+ 72.58 446.92 538.27 704.11 C
+ 72.58 446.92 538.27 704.11 R
+ 7 X
+ 0 K
+ V
+ 267.51 491.8 391.83 507.16 7.68 RR
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (traits treeNodes set) 282.04 496.48 T
+ 331.17 528.05 470.68 543.41 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits treeNodes abstract) 341.09 532.72 T
+ 409.42 491.8 536.84 507.16 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits treeNodes bag) 423.67 496.48 T
+ 316.65 645.47 402.92 660.83 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits clonable) 325.9 650.15 T
+ 332.23 678.47 387.34 693.83 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (lobby) 346.66 683.15 T
+ 172.3 645.47 277.87 660.83 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits collection) 188.76 650.15 T
+ 285.9 458.8 373.44 474.16 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (treeSetNode) 298.83 463.48 T
+ 429.36 458.8 516.9 474.16 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (treeBagNode) 440.76 463.48 T
+ 357.03 668.86 359.79 678.47 362.54 668.86 359.79 668.86 4 Y
+ V
+ 359.79 660.83 359.79 669.86 2 L
+ 0.5 H
+ N
+ 470.37 482.19 473.13 491.8 475.89 482.19 473.13 482.19 4 Y
+ V
+ 473.13 474.16 473.13 483.19 2 L
+ N
+ 326.91 482.19 329.67 491.8 332.42 482.19 329.67 482.19 4 Y
+ V
+ 329.67 474.16 329.67 483.19 2 L
+ N
+ 133.99 598.94 255.83 614.3 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits trees abstract) 148.2 603.61 T
+ 81.51 563.02 183.36 578.37 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits trees set) 97.94 567.69 T
+ 206.74 563.02 302.75 578.37 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits trees bag) 218.41 567.69 T
+ 221.73 530.02 287.76 545.37 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (treeBag) 235.51 534.69 T
+ 98.96 530.02 165.92 545.37 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (treeSet) 114.72 534.69 T
+ 251.99 553.4 254.75 563.02 257.5 553.4 254.75 553.4 4 Y
+ V
+ 254.75 545.37 254.75 554.4 2 L
+ 0.5 H
+ N
+ 129.68 553.4 132.43 563.02 135.19 553.4 132.43 553.4 4 Y
+ V
+ 132.43 545.37 132.43 554.4 2 L
+ N
+ 150.65 595.36 159.99 598.94 153.96 590.96 152.31 593.16 4 Y
+ V
+ 132.43 578.37 153.11 593.76 2 L
+ N
+ 233.03 590.98 226.98 598.94 236.33 595.4 234.68 593.19 4 Y
+ V
+ 254.75 578.37 233.89 593.78 2 L
+ N
+ 351.84 525.03 361.37 528.06 354.89 520.44 353.37 522.73 4 Y
+ V
+ 329.67 507.16 354.21 523.28 2 L
+ N
+ 449.61 520.25 443.36 528.06 452.8 524.75 451.2 522.5 4 Y
+ V
+ 473.13 507.16 450.41 523.07 2 L
+ N
+ 184.66 639.16 192.42 645.47 189.19 636.01 186.93 637.59 4 Y
+ V
+ 170.92 614.3 187.5 638.4 2 L
+ N
+ 306.66 647.32 316.64 647.88 308.48 642.11 307.57 644.71 4 Y
+ V
+ 219.92 614.3 308.52 645.04 2 L
+ N
+ 260.18 636.97 254.92 645.47 263.89 641.06 262.04 639.02 4 Y
+ V
+ 367.42 543.41 261.3 639.69 2 L
+ N
+ 384.92 635.59 383.41 645.47 389.93 637.89 387.42 636.74 4 Y
+ V
+ 429.92 543.41 387.02 637.65 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "12" 70
+ %%Page: "13" 70
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-13) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Map of the world) 469.75 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 2 F
+ 0 X
+ (2.6.4) 71.42 708.11 T
+ (V) 107.42 708.11 T
+ (ectors and strings) 114.98 708.11 T
+ 4 F
+ -0.24 (S) 71.42 417.88 P
+ 6 F
+ -0.22 (ELF) 78.09 417.88 P
+ 4 F
+ -0.24 ( vectors are like arrays in most programming languages: they have a \336xed size and are keyed) 97.63 417.88 P
+ -0.07 (by integers. ) 71.42 403.88 P
+ 12 F
+ -0.15 (traits indexable) 130.25 403.88 P
+ 4 F
+ -0.07 ( holds behavior for all collections that have indexable behavior) 235.57 403.88 P
+ -0.07 (.) 536.42 403.88 P
+ (These include integers, all vectors, and strings \050which are a kind of vector\051.) 71.42 389.88 T
+ 3 F
+ 0.16 (Integers.) 71.42 363.88 P
+ 4 F
+ 0.16 ( An int) 113.72 363.88 P
+ 0.16 (eger ) 147.35 363.88 P
+ 3 F
+ 0.16 (n) 171.15 363.88 P
+ 4 F
+ 0.16 ( acts like an immutable indexable collection of the integers 0 through ) 177.15 363.88 P
+ 3 F
+ 0.16 (n) 514.13 363.88 P
+ 4 F
+ 0.16 ( - 1,) 520.13 363.88 P
+ (where each element is its own key. ) 71.42 349.88 T
+ (De\336ned in ) 241.96 349.88 T
+ 3 F
+ (integerAsCollection.self) 295.26 349.88 T
+ 4 F
+ (.) 410.86 349.88 T
+ 3 F
+ 0.14 (V) 71.42 323.88 P
+ 0.14 (ectors.) 77.42 323.88 P
+ 4 F
+ 0.14 ( A ) 109.73 323.88 P
+ 12 F
+ 0.3 (vector) 124.66 323.88 P
+ 4 F
+ 0.14 ( contains arbitrary objects, while a ) 164.21 323.88 P
+ 12 F
+ 0.3 (byteVector) 333.24 323.88 P
+ 4 F
+ 0.14 ( may only contain integers in) 399.16 323.88 P
+ (the range [0, 255] but handles that storage ef) 71.42 309.88 T
+ (\336ciently) 285.37 309.88 T
+ (. All vector objects are de\336ned in ) 323.91 309.88 T
+ 3 F
+ (vector) 486.46 309.88 T
+ (.self) 515.1 309.88 T
+ 4 F
+ (.) 534.75 309.88 T
+ 3 F
+ 0.77 (ConsV) 71.42 283.88 P
+ 0.77 (ectors) 102.08 283.88 P
+ 4 F
+ 0.77 (. ) 131.39 283.88 P
+ 0.77 (For ef) 138.16 283.88 P
+ 0.77 (\336cient concatenation of vectors, ) 167.69 283.88 P
+ 12 F
+ 1.7 (consVector) 327 283.88 P
+ 4 F
+ 0.77 ( keeps a separate left part and) 392.92 283.88 P
+ -0.39 (right part. A ) 71.42 269.88 P
+ 12 F
+ -0.87 (consVector) 132.2 269.88 P
+ 4 F
+ -0.39 ( is created with the comma operator \050\324) 198.12 269.88 P
+ 12 F
+ -0.87 (,) 378.21 269.88 P
+ 4 F
+ -0.39 (\325\051, concatenating two vectors \050or) 384.8 269.88 P
+ -0.25 (strings\051. The ) 71.42 255.88 P
+ 12 F
+ -0.55 (flatten) 134.55 255.88 P
+ 4 F
+ -0.25 ( operation does the \050possibly expensive\051 copy operation to create a \337at vec-) 180.69 255.88 P
+ 0.54 (tor with the contents of a ) 71.42 241.88 P
+ 12 F
+ 1.19 (consVector) 197.25 241.88 P
+ 4 F
+ 0.54 (. ) 262.51 241.88 P
+ 12 F
+ 1.19 (consVector) 269.05 241.88 P
+ 4 F
+ 0.54 (s implicitly \337atten themselves in place for) 334.97 241.88 P
+ (many non-contatenation operations.) 71.42 227.88 T
+ 3 F
+ 0.36 (Strings.) 71.42 201.88 P
+ 4 F
+ 0.36 ( Strings are vectors of character objects \050see Appendix B for a description of characters\051.) 108.41 201.88 P
+ 1.6 (As with other vectors, a string\325) 71.42 187.88 P
+ 1.6 (s elements are accessed and changed by sending it the ) 227.31 187.88 P
+ 12 F
+ 3.51 (at:) 505.06 187.88 P
+ 4 F
+ 1.6 ( or) 524.84 187.88 P
+ 12 F
+ 1.91 (at:Put: ) 71.42 173.88 P
+ 4 F
+ 0.87 (messages. In addition, the ASCII code for an element may be obtained and changed) 126.07 173.88 P
+ (with the ) 71.42 159.88 T
+ 12 F
+ (byteAt:) 113.4 159.88 T
+ 4 F
+ ( and ) 159.54 159.88 T
+ 12 F
+ (byteAt:Put:) 182.86 159.88 T
+ 4 F
+ ( messages.) 255.37 159.88 T
+ 0.17 (Abstract string behavior is inherited from ) 71.42 139.88 P
+ 12 F
+ 0.39 (traits indexable abstractString) 274.34 139.88 P
+ 4 F
+ 0.17 (. Any vector) 479.45 139.88 P
+ 0.21 (that looks like a collection of characters will respond appropriately to the string-like behaviors in) 71.42 125.88 P
+ (this object. These operations include dealing with padding, tabs, and capitalization.) 71.42 111.88 T
+ 0.41 (In addition, strings are used to implement indirect message sends. The alternative message invo-) 71.42 91.88 P
+ -0.11 (cation mechanism ) 71.42 77.88 P
+ 12 F
+ -0.24 (sendTo:) 161.15 77.88 P
+ 4 F
+ -0.11 (, inherited from ) 207.29 77.88 P
+ 12 F
+ -0.24 (traits sending) 284.91 77.88 P
+ 4 F
+ -0.11 (, allows strings to be used as mes-) 376.95 77.88 P
+ -0.2 (sage selectors: the receiver string is sent to the ar) 71.42 63.88 P
+ -0.2 (gument object as a message send. \050This is similar) 304.2 63.88 P
+ 71.42 55.44 539.42 716.11 C
+ 72.58 439.88 538.27 704.11 C
+ 72.58 439.88 538.27 704.11 R
+ 7 X
+ 0 K
+ V
+ 243.63 666.44 340.42 681.79 7.68 RR
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (traits collection) 255.7 671.11 T
+ 306.98 610.08 398.46 625.44 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits indexable) 315.78 614.76 T
+ 177.17 569.91 295.78 585.26 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mutableV) 187.93 574.58 T
+ (ector) 260.59 574.58 T
+ 286.89 534.2 376.42 549.55 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits \337atV) 295.32 538.87 T
+ (ector) 343.56 538.87 T
+ 318.13 492.06 420.27 507.41 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits byteV) 329.81 496.73 T
+ (ector) 384.16 496.73 T
+ 435.63 492.06 514.52 507.41 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits vector) 446.68 496.73 T
+ 103.83 534.2 203.3 549.55 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits consV) 112.96 538.87 T
+ (ector) 169.75 538.87 T
+ 389.24 569.91 478.81 585.26 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits integer ) 402.27 574.58 T
+ 361.7 648.3 527.91 663.65 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits indexable abstractString) 372.45 652.97 T
+ 332.02 460.81 406.38 476.16 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (byteV) 343.24 465.48 T
+ (ector) 370.73 465.48 T
+ 446.82 460.81 503.33 476.16 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (vector) 460.11 465.48 T
+ 112.25 500.98 194.88 516.34 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (consV) 126.39 505.66 T
+ (ector) 156.32 505.66 T
+ 112.76 614.55 204.24 629.9 7.68 RR
+ 7 X
+ V
+ 0.5 H
+ 0 X
+ N
+ (traits clonable) 124.61 619.22 T
+ 130.24 650.26 186.75 665.62 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (lobby) 145.37 654.93 T
+ 155.74 640.65 158.5 650.26 161.25 640.65 158.5 640.65 4 Y
+ V
+ 158.5 629.9 158.5 641.65 2 L
+ N
+ 150.81 524.58 153.57 534.2 156.32 524.58 153.57 524.58 4 Y
+ V
+ 153.57 516.34 153.57 525.58 2 L
+ N
+ 366.44 482.44 369.2 492.06 371.95 482.44 369.2 482.44 4 Y
+ V
+ 369.2 476.16 369.2 483.44 2 L
+ N
+ 472.32 482.44 475.08 492.06 477.83 482.44 475.08 482.44 4 Y
+ V
+ 475.08 476.16 475.08 483.44 2 L
+ N
+ 400.68 602.66 393.98 610.09 403.59 607.34 402.14 605 4 Y
+ V
+ 434.17 585.26 401.3 605.52 2 L
+ N
+ 174.66 566.84 184.18 569.91 177.74 562.26 176.2 564.55 4 Y
+ V
+ 153.57 549.55 177.03 565.11 2 L
+ N
+ 298.49 563.94 291.31 570.9 301.09 568.8 299.79 566.37 4 Y
+ V
+ 331.66 549.55 298.92 566.84 2 L
+ N
+ 350.56 525.1 346.42 534.2 354.75 528.68 352.66 526.89 4 Y
+ V
+ 369.2 507.41 352.02 527.65 2 L
+ N
+ 383.93 531.61 375.55 537.07 385.55 536.89 384.74 534.25 4 Y
+ V
+ 475.08 507.41 383.79 534.54 2 L
+ N
+ 303.75 608.53 313.63 610.09 306.08 603.53 304.92 606.03 4 Y
+ V
+ 259.92 585.26 305.83 606.45 2 L
+ N
+ 172.85 607.34 165.92 614.55 175.62 612.11 174.24 609.73 4 Y
+ V
+ 216.92 585.26 173.38 610.23 2 L
+ N
+ 297.55 658.11 292.02 666.44 301.12 662.31 299.34 660.21 4 Y
+ V
+ 340.42 625.44 298.59 660.86 2 L
+ N
+ 388.14 644.55 397.42 648.3 391.54 640.21 389.84 642.38 4 Y
+ V
+ 367.92 625.44 390.64 643 2 L
+ N
+ 399.65 681.3 489.97 696.65 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits sending) 412.14 685.97 T
+ 442.05 671.68 444.81 681.3 447.56 671.68 444.81 671.68 4 Y
+ V
+ 444.81 663.65 444.81 672.68 2 L
+ N
+ 317.12 488.43 327.02 489.85 319.38 483.4 318.25 485.92 4 Y
+ V
+ 286.86 471.98 319.17 486.32 2 L
+ N
+ 7 X
+ 90 450 33.48 31.25 266.77 471.98 G
+ 0 X
+ 90 450 33.48 31.25 266.77 471.98 A
+ 243.64 452.66 289.9 491.31 R
+ 7 X
+ V
+ 5 F
+ 0 X
+ -0.99 (concrete ) 245.7 483.97 P
+ (string) 253.34 470.97 T
+ (hierarchy) 244.18 457.97 T
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "13" 71
+ %%Page: "14" 71
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-14) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Map of the world) 469.75 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 0.29 (to Smalltalk\325) 71.42 708.11 P
+ 0.29 (s ) 133.36 708.11 P
+ 12 F
+ 0.64 (perform) 141.32 708.11 P
+ 4 F
+ 0.29 (.\051 The ) 187.46 708.11 P
+ 12 F
+ 0.64 (sendTo:) 219.69 708.11 P
+ 4 F
+ 0.29 ( form may be packaged as ) 265.83 708.11 P
+ 12 F
+ 0.64 (message) 396.14 708.11 P
+ 4 F
+ 0.29 ( objects to represent) 442.29 708.11 P
+ -0.16 (a S) 71.42 694.11 P
+ 6 F
+ -0.15 (ELF) 86.26 694.11 P
+ 4 F
+ -0.16 ( message send, bundling together the receiver) 105.79 694.11 P
+ -0.16 (, the selector) 323.18 694.11 P
+ -0.16 (, the delegatee, the method hold-) 383.34 694.11 P
+ 0.31 (er) 71.42 680.11 P
+ 0.31 (, and the ar) 80.26 680.11 P
+ 0.31 (guments in one object. Message objects perform the message send they represent in) 134.28 680.11 P
+ 0.48 (response to ) 71.42 666.11 P
+ 12 F
+ 1.06 (send) 129.68 666.11 P
+ 4 F
+ 0.48 (. ) 156.05 666.11 P
+ 12 F
+ 1.06 (sendTo:) 162.53 666.11 P
+ 4 F
+ 0.48 ( and its variants are de\336ned in ) 208.67 666.11 P
+ 3 F
+ 0.48 (sending.self) 358.95 666.11 P
+ 4 F
+ 0.48 (, and message objects are) 415.92 666.11 P
+ (de\336ned in ) 71.42 652.11 T
+ 3 F
+ (message.self) 122.06 652.11 T
+ 4 F
+ (.) 182.35 652.11 T
+ 0.41 (Strings are simple to use, but their implementation is somewhat complex. String implementation) 71.42 632.11 P
+ (details can be found in Appendix B.) 71.42 618.11 T
+ 10 F
+ (2.7) 71.42 584.78 T
+ (Name infer) 98.42 584.78 T
+ (encer) 165.39 584.78 T
+ 4 F
+ -0.54 (The name inferencer is invoked by sending the message ) 71.42 392.94 P
+ 12 F
+ -1.18 (name) 338.04 392.94 P
+ 4 F
+ -0.54 ( to a mirror on an object. If the object) 364.4 392.94 P
+ -0.35 (contains a slot called ) 71.42 378.94 P
+ 12 F
+ -0.77 (thisObjectPrints) 173.28 378.94 P
+ 4 F
+ -0.35 (, indicating that the object knows how to print itself in-) 278.75 378.94 P
+ 1.21 (telligently) 71.42 364.94 P
+ 1.21 (, the name inferencer sends ) 119.29 364.94 P
+ 12 F
+ 2.65 (printString) 259.2 364.94 P
+ 4 F
+ 1.21 ( to the object and returns the result as the) 331.71 364.94 P
+ -0.28 (name. If there is no such slot, the name inferencer consults the path cache to infer a name \050see sec-) 71.42 350.94 P
+ 1.88 (tion II-1.3\051. If the object is not in the path cache \050is not well known\051 the generic name ) 71.42 336.94 P
+ 12 F
+ 4.14 (<an) 519.65 336.94 P
+ (ob) 71.42 322.94 T
+ (ject>) 84.61 322.94 T
+ 4 F
+ ( is returned.) 117.57 322.94 T
+ -0.44 (The path cache is a dictionary of paths from the lobby to well-known objects in the world. The \336rst) 71.42 296.94 P
+ 0.09 (time a name is needed, the path cache is \336lled by traversing all paths from the lobby; each path is) 71.42 282.94 P
+ 0.17 (paired with the object reached and entered into the cache. The path cache uses mirrors on objects) 71.42 268.94 P
+ -0.55 (to traverse the slots; to save space, the path is stored as a vector of integers representing the number) 71.42 254.94 P
+ (of the slot traversed in each object.) 71.42 240.94 T
+ -0.12 (When a subsequent request for a name is made, the path cache checks if the object is in the cache;) 71.42 214.94 P
+ 0.01 (if it is, it veri\336es that the cache is not out of date by checking to see if the path stored in the cache) 71.42 200.94 P
+ 0.36 (actually reaches the object. If successful, the path is returned as the concatenation of slots on the) 71.42 186.94 P
+ -0.23 (path, omitting interior parent slots. If the cache is invalid, then it is re\336lled. The message \322re\336lling) 71.42 172.94 P
+ 1.12 (path cache...\323 is printed during re\336lling. A manual re\336ll can be forced by sending ) 71.42 158.94 P
+ 12 F
+ 2.45 (pathCache) 480.1 158.94 P
+ (refill) 71.42 144.94 T
+ 4 F
+ (.) 110.97 144.94 T
+ (The path cache is de\336ned in ) 71.42 118.94 T
+ 3 F
+ (pathCache.self) 208.65 118.94 T
+ 4 F
+ (.) 280.28 118.94 T
+ 71.42 55.44 539.42 716.11 C
+ 174.82 414.94 436.03 580.11 C
+ 174.82 414.94 436.03 580.11 R
+ 7 X
+ 0 K
+ V
+ 182.98 460.73 290.8 476.08 7.68 RR
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (traits pathCache) 196.89 465.4 T
+ 328.46 520.86 414.72 536.22 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits clonable) 337.7 525.54 T
+ 344.04 553.86 399.15 569.22 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (lobby) 358.46 558.54 T
+ 184.1 520.86 289.67 536.22 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits collection) 200.56 525.54 T
+ 196.55 427.73 277.23 443.08 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (pathCache) 210.32 432.4 T
+ 368.83 544.25 371.59 553.86 374.35 544.25 371.59 544.25 4 Y
+ V
+ 371.59 536.22 371.59 545.25 2 L
+ 0.5 H
+ N
+ 331.62 460.73 411.56 476.08 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits path) 347.47 465.4 T
+ 344.55 427.73 398.63 443.08 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (path) 360.9 432.4 T
+ 368.83 451.11 371.59 460.73 374.35 451.11 371.59 451.11 4 Y
+ V
+ 371.59 443.08 371.59 452.11 2 L
+ 0.5 H
+ N
+ 234.13 451.11 236.89 460.73 239.64 451.11 236.89 451.11 4 Y
+ V
+ 236.89 443.08 236.89 452.11 2 L
+ N
+ 210.97 511.25 213.73 520.86 216.48 511.25 213.73 511.25 4 Y
+ V
+ 213.73 476.08 213.73 512.25 2 L
+ N
+ 341.35 519.31 351.22 520.87 343.67 514.31 342.51 516.81 4 Y
+ V
+ 254.23 476.08 343.42 517.23 2 L
+ N
+ 280.98 513.97 273.87 521 283.63 518.8 282.31 516.39 4 Y
+ V
+ 356.73 476.08 281.43 516.86 2 L
+ N
+ 384.97 511.25 387.73 520.86 390.48 511.25 387.73 511.25 4 Y
+ V
+ 387.73 476.08 387.73 512.25 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "14" 72
+ %%Page: "15" 72
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-15) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Map of the world) 469.75 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 10 F
+ 0 X
+ (2.8) 71.42 706.78 T
+ (Host-speci\336c attributes) 98.42 706.78 T
+ 4 F
+ -0.15 (The ) 71.42 551.26 P
+ 12 F
+ -0.32 (host) 92.93 551.26 P
+ 4 F
+ -0.15 ( and ) 119.29 551.26 P
+ 12 F
+ -0.32 (platform) 142.32 551.26 P
+ 4 F
+ -0.15 ( objects describe machine-speci\336c attributes of hosts running S) 195.05 551.26 P
+ 6 F
+ -0.13 (ELF) 496.35 551.26 P
+ 4 F
+ -0.15 (. Ob-) 514.92 551.26 P
+ -0.06 (jects consult the oddball object ) 71.42 537.26 P
+ 12 F
+ -0.13 (thisHost) 222.7 537.26 P
+ 4 F
+ -0.06 ( when they require knowledge about the particular host) 275.43 537.26 P
+ 0.02 (that the system is being run on. T) 71.42 523.26 P
+ 0.02 (wo parts of the base S) 230.6 523.26 P
+ 6 F
+ 0.01 (ELF) 336.27 523.26 P
+ 4 F
+ 0.02 ( world use such host-speci\336c informa-) 355.81 523.26 P
+ 0 (tion: the prototype user interface checks the database to determine the scale of physical objects as) 71.42 509.26 P
+ -0.32 (well as which frame buf) 71.42 495.26 P
+ -0.32 (fer to use, and the benchmarks use the type of machine to select the appro-) 185.84 495.26 P
+ (priate set of C performance numbers with which to compare.) 71.42 481.26 T
+ -0.47 (The object ) 71.42 455.26 P
+ 12 F
+ -1.02 (traits platform) 124.45 455.26 P
+ 4 F
+ -0.47 ( and the oddball object ) 222.31 455.26 P
+ 12 F
+ -1.02 (platform) 332.24 455.26 P
+ 4 F
+ -0.47 ( have slots that hold default plat-) 384.98 455.26 P
+ 0.24 (form information such as cpu type, operating system, and model name for a variety of platforms.) 71.42 441.26 P
+ -0.41 (A ) 71.42 427.26 P
+ 12 F
+ -0.89 (host) 82.68 427.26 P
+ 4 F
+ -0.41 ( object represents a given host machine. Sending ) 109.04 427.26 P
+ 12 F
+ -0.89 (thisHost) 342.63 427.26 P
+ 4 F
+ -0.41 ( to the lobby returns a host ob-) 395.36 427.26 P
+ 0.06 (ject with information appropriate to the current host. Queries are made to the result of ) 71.42 413.26 P
+ 12 F
+ 0.13 (thisHost) 486.69 413.26 P
+ 4 F
+ (for host-speci\336c attributes.) 71.42 399.26 T
+ -0.22 (The host con\336guration table \050the S) 71.42 373.26 P
+ 6 F
+ -0.2 (ELF) 236.57 373.26 P
+ 4 F
+ -0.22 ( object ) 256.1 373.26 P
+ 12 F
+ -0.48 (traits host configurationTable) 290.97 373.26 P
+ 4 F
+ -0.22 (\051 is used to) 487.77 373.26 P
+ 0.49 (override default host information. For example, a host named \322hal\323 might have two displays. T) 71.42 359.26 P
+ 0.49 (o) 533.43 359.26 P
+ 0.83 (specify that S) 71.42 345.26 P
+ 6 F
+ 0.76 (ELF) 138.38 345.26 P
+ 4 F
+ 0.83 ( should use the frame buf) 157.92 345.26 P
+ 0.83 (fer /dev/cgsix0 rather than /dev/fb when running the) 283.44 345.26 P
+ (user interface, an entry for ) 71.42 331.26 T
+ 3 F
+ (hal) 201.3 331.26 T
+ 4 F
+ ( would be made in the con\336guration table as follows:) 216.63 331.26 T
+ 12 F
+ (host configurationTable at: \325hal\325) 98.42 305.26 T
+ (Put: \050 | frameBufferName = \325/dev/cgsix0\325| \051) 249.92 291.26 T
+ 4 F
+ -0.1 (When S) 71.42 265.26 P
+ 6 F
+ -0.09 (ELF) 109.63 265.26 P
+ 4 F
+ -0.1 ( is run on ) 129.17 265.26 P
+ 3 F
+ -0.1 (hal) 176.75 265.26 P
+ 4 F
+ -0.1 (, the con\336guration entry for ) 192.08 265.26 P
+ 3 F
+ -0.1 (hal) 326.83 265.26 P
+ 4 F
+ -0.1 ( will override any default information for) 342.15 265.26 P
+ 3 F
+ -0.54 (hal) 71.42 251.26 P
+ 4 F
+ -0.54 (\325) 86.75 251.26 P
+ -0.54 (s model type. Hosts only need to be registered in the con\336guration table if they override default) 90.09 251.26 P
+ (machine information.) 71.42 237.26 T
+ 0.04 (The host and platform objects are de\336ned in ) 71.42 211.26 P
+ 3 F
+ 0.04 (hosts.self) 286.27 211.26 P
+ 4 F
+ 0.04 (, and the con\336guration table is initialized in) 330.59 211.26 P
+ 3 F
+ (con\336guration.self) 71.42 197.26 T
+ 4 F
+ (.) 155.71 197.26 T
+ 71.42 55.44 539.42 716.11 C
+ 252.12 573.26 358.73 702.11 C
+ 252.12 573.26 358.73 702.11 R
+ 7 X
+ 0 K
+ V
+ 265.4 616.29 341.96 631.65 7.68 RR
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (traits host) 279.87 620.96 T
+ 260.55 649.29 346.82 664.65 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits clonable) 269.79 653.96 T
+ 276.13 682.29 331.24 697.65 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (lobby) 290.55 686.96 T
+ 276.64 583.29 330.72 598.65 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (host) 293.3 587.96 T
+ 300.93 639.68 303.68 649.29 306.44 639.68 303.68 639.68 4 Y
+ V
+ 303.68 631.65 303.68 640.68 2 L
+ 0.5 H
+ N
+ 300.93 606.68 303.68 616.29 306.44 606.68 303.68 606.68 4 Y
+ V
+ 303.68 598.65 303.68 607.68 2 L
+ N
+ 300.93 672.68 303.68 682.29 306.44 672.68 303.68 672.68 4 Y
+ V
+ 303.68 664.65 303.68 673.68 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "15" 73
+ %%Page: "16" 73
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-16) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Mirrors) 508.89 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Appendix A) 71.42 705.45 T
+ (Mirr) 170.42 705.45 T
+ (ors) 203.88 705.45 T
+ 4 F
+ 0.31 (S) 71.42 216.46 P
+ 6 F
+ 0.28 (ELF) 78.09 216.46 P
+ 4 F
+ 0.31 (\325) 97.63 216.46 P
+ 0.31 (s re\337ection facility is based on ) 100.96 216.46 P
+ 3 F
+ 0.31 (mirr) 252.05 216.46 P
+ 0.31 (ors) 272.93 216.46 P
+ 4 F
+ 0.31 (. A mirror on an object ) 288.26 216.46 P
+ 12 F
+ 0.68 (x) 403.03 216.46 P
+ 4 F
+ 0.31 ( is obtained by sending the) 409.62 216.46 P
+ -0.08 (message ) 71.42 202.46 P
+ 12 F
+ -0.17 (reflect: x) 114.98 202.46 P
+ 4 F
+ -0.08 (, which is de\336ned in default behaviors to invoke the ) 180.73 202.46 P
+ 12 F
+ -0.17 (_Mirror) 431.46 202.46 P
+ 4 F
+ -0.08 ( primitive on) 477.61 202.46 P
+ 12 F
+ -1 (x) 71.42 188.46 P
+ 4 F
+ -0.46 (. Mirrors make their re\337ectees look like collections of slots, keyed by slot names, with values that) 78.02 188.46 P
+ 0.51 (are mirrors on the slot contents. A mirror permits queries to be made about the object it re\337ects,) 71.42 174.46 P
+ -0.32 (such as the number of slots, the name of each slot, whether a slot is a parent, the visibility of a slot,) 71.42 160.46 P
+ 0.33 (etc. Operations on mirrors also include retrieving a mirror on the contents of a slot and returning) 71.42 146.46 P
+ 0.45 (mirrors for all references to an object. Asking a mirror for the name of the re\337ected object gives) 71.42 132.46 P
+ (the string returned by the name inferencer) 71.42 118.46 T
+ (.) 271.93 118.46 T
+ 0.45 (There are twelve kinds of mirrors, one for each kind of object known to the virtual machine: the) 71.42 92.46 P
+ -0 (assignment primitive, blocks, byte codes, integers, \337oats, canonical and immutable strings, object) 71.42 78.46 P
+ (and byte vectors, methods, mirrors, and plain objects. Mirrors are de\336ned in ) 71.42 64.46 T
+ 3 F
+ (mirr) 439.17 64.46 T
+ (or) 460.05 64.46 T
+ (.self) 469.38 64.46 T
+ 4 F
+ (.) 489.04 64.46 T
+ 71.42 55.44 539.42 716.11 C
+ 74.5 238.46 536.35 700.11 C
+ 74.5 238.46 536.35 700.11 R
+ 7 X
+ 0 K
+ V
+ 236.26 349.04 228.6 355.47 238.5 354.07 237.38 351.55 4 Y
+ 0 X
+ V
+ 303.91 322.12 236.47 351.95 2 L
+ 0.5 H
+ 2 Z
+ N
+ 244.6 495.73 363.99 511.09 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ 23 F
+ (traits printingMirror) 258.51 500.4 T
+ 203.16 643.69 289.42 659.04 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits oddball) 215.15 648.36 T
+ 218.74 676.69 273.85 692.04 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (lobby) 233.16 681.36 T
+ 259.23 612.37 349.35 627.72 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirror) 276.52 617.04 T
+ 100.45 509.14 220.49 524.5 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (mirrors assignment) 113.77 513.82 T
+ 243.54 667.08 246.29 676.69 249.05 667.08 246.29 667.08 4 Y
+ V
+ 246.29 659.04 246.29 668.08 2 L
+ 0.5 H
+ N
+ 243 380.56 365.58 395.92 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits vectorishMirror) 254.54 385.23 T
+ 117.45 567.98 203.49 583.34 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (mirrors block) 129.04 572.65 T
+ 102.38 322.21 218.56 337.56 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mirrors byteV) 115.9 326.88 T
+ (ector) 180.61 326.88 T
+ 390.27 509.12 500.6 524.48 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mirrors byteCode) 403.32 513.8 T
+ 397.27 568.48 493.61 583.84 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mirrors method) 408.51 573.15 T
+ 400.74 390.95 490.14 406.31 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mirrors mirror) 412.49 395.62 T
+ 111.61 446.52 209.33 461.88 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mirrors integer) 125.07 451.19 T
+ 118.06 389.74 202.88 405.09 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mirrors \337oat) 131.48 394.41 T
+ 402.83 448.23 488.04 463.59 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mirrors slots) 415.53 452.91 T
+ 251.52 306.74 357.06 322.1 7.68 RR
+ 7 X
+ V
+ 0.5 H
+ 0 X
+ N
+ (traits mirrors string) 258.82 311.42 T
+ 399.42 321.96 491.46 337.31 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (mirrors vector) 411.87 326.63 T
+ 360.1 643.54 370.1 643.69 361.7 638.26 360.9 640.9 4 Y
+ V
+ 317.29 627.72 361.86 641.19 2 L
+ 0.5 H
+ N
+ 301.54 486.12 304.29 495.73 307.05 486.12 304.29 486.12 4 Y
+ V
+ 304.29 395.92 304.29 487.12 2 L
+ N
+ 301.54 602.76 304.29 612.37 307.05 602.76 304.29 602.76 4 Y
+ V
+ 304.29 511.09 304.29 603.76 2 L
+ N
+ 233 388.51 243 388.24 234.38 383.17 233.69 385.84 4 Y
+ V
+ 160.47 367.38 234.66 386.08 2 L
+ N
+ 234.83 501.24 244.59 503.41 237.47 496.39 236.15 498.82 4 Y
+ V
+ 217.46 488.77 237.03 499.29 2 L
+ N
+ 249.27 620.99 259.23 620.05 250.29 615.57 249.78 618.28 4 Y
+ V
+ 213.91 611.68 250.77 618.46 2 L
+ N
+ 357.83 614.77 349.34 620.05 359.34 620.08 358.59 617.42 4 Y
+ V
+ 383.88 610.5 357.63 617.7 2 L
+ N
+ 267.1 608.94 276.5 612.37 270.35 604.48 268.73 606.71 4 Y
+ V
+ 196 554.28 269.54 607.3 2 L
+ N
+ 336.66 604.5 330.49 612.37 339.9 608.97 338.28 606.74 4 Y
+ V
+ 411.5 554.3 337.48 607.32 2 L
+ N
+ 365.88 309.75 357.05 314.44 367.02 315.15 366.45 312.45 4 Y
+ V
+ 446.26 295.81 365.49 312.64 2 L
+ N
+ 374.16 383.14 365.57 388.25 375.56 388.47 374.86 385.8 4 Y
+ V
+ 445.44 367.63 373.91 386.04 2 L
+ N
+ 241.54 315.21 251.51 314.44 242.65 309.81 242.1 312.51 4 Y
+ V
+ 159.99 295.92 243.09 312.69 2 L
+ N
+ 318.77 643.69 421.44 659.04 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits indexable) 333.16 648.36 T
+ 254.41 637.86 246.28 643.69 256.26 643.06 255.34 640.46 4 Y
+ V
+ 291.29 627.72 254.4 640.79 2 L
+ N
+ 97.14 251.16 223.8 266.51 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (mirrors canonicalString) 104.31 255.83 T
+ 382.68 251.18 508.2 266.53 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mirrors immutableString) 387.14 255.85 T
+ 371 496.29 363.98 503.41 373.71 501.09 372.35 498.69 4 Y
+ V
+ 393.5 486.92 371.49 499.18 2 L
+ 0.5 H
+ N
+ 254.86 490.7 263.5 495.74 258.84 486.89 256.85 488.79 4 Y
+ V
+ 204.01 433.94 257.54 489.51 2 L
+ N
+ 351.29 487.03 346.39 495.75 355.17 490.95 353.23 488.99 4 Y
+ V
+ 408.5 433.66 352.53 489.68 2 L
+ N
+ 383.88 598.3 507 613.66 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors method) 395.07 602.97 T
+ 379.11 538.94 511.76 554.3 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors byteCode) 389.88 543.62 T
+ 106.29 598.8 214.65 614.16 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors block) 115.61 603.47 T
+ 91.52 538.93 229.42 554.28 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors assignment) 100.34 543.6 T
+ 102.44 476.8 218.5 492.16 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors integer) 111.64 481.48 T
+ 104.68 419.52 216.26 434.88 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors \337oat) 118.05 424.2 T
+ 392.41 475.09 498.46 490.45 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors slots) 402.1 479.76 T
+ 388.64 418.31 502.23 433.66 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors mirror) 399.06 422.98 T
+ 386.79 352.28 504.09 367.63 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors vector) 398.44 356.95 T
+ 91.28 352.03 229.66 367.38 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors byteV) 102.47 356.7 T
+ (ector) 194.04 356.7 T
+ 359.94 281 530.94 296.35 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors immutableString) 373.71 285.67 T
+ 79.68 281.01 241.26 296.37 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits mirrors canonicalString) 90.88 285.69 T
+ 442.68 588.69 445.44 598.3 448.2 588.69 445.44 588.69 4 Y
+ V
+ 445.44 583.84 445.44 589.69 2 L
+ N
+ 442.68 465.48 445.44 475.09 448.2 465.48 445.44 465.48 4 Y
+ V
+ 445.44 463.59 445.44 466.48 2 L
+ N
+ 157.66 529.31 160.41 538.93 163.17 529.31 160.41 529.31 4 Y
+ V
+ 160.41 524.5 160.41 530.31 2 L
+ N
+ 157.72 589.19 160.47 598.8 163.23 589.19 160.47 589.19 4 Y
+ V
+ 160.47 583.34 160.47 590.19 2 L
+ N
+ 442.68 529.33 445.44 538.94 448.2 529.33 445.44 529.33 4 Y
+ V
+ 445.44 524.48 445.44 530.33 2 L
+ N
+ 157.72 467.19 160.47 476.8 163.23 467.19 160.47 467.19 4 Y
+ V
+ 160.47 461.88 160.47 468.19 2 L
+ N
+ 157.72 409.91 160.47 419.52 163.23 409.91 160.47 409.91 4 Y
+ V
+ 160.47 405.09 160.47 410.91 2 L
+ N
+ 442.68 408.7 445.44 418.31 448.2 408.7 445.44 408.7 4 Y
+ V
+ 445.44 406.31 445.44 409.7 2 L
+ N
+ 442.68 342.66 445.44 352.28 448.2 342.66 445.44 342.66 4 Y
+ V
+ 445.44 337.31 445.44 343.66 2 L
+ N
+ 157.72 342.41 160.47 352.03 163.23 342.41 160.47 342.41 4 Y
+ V
+ 160.47 337.56 160.47 343.41 2 L
+ N
+ 157.72 271.4 160.47 281.01 163.23 271.4 160.47 271.4 4 Y
+ V
+ 160.47 266.51 160.47 272.4 2 L
+ N
+ 442.68 271.38 445.44 281 448.2 271.38 445.44 271.38 4 Y
+ V
+ 445.44 266.53 445.44 272.38 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "16" 74
+ %%Page: "17" 74
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-17) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Mirrors) 508.89 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 0 (Iterating through a mirror returns objects representing each slot of the re\337ected object. The proto-) 71.42 341.46 P
+ 0.06 (types for these objects are: ) 71.42 327.46 P
+ 12 F
+ 0.14 (slots plain) 202.64 327.46 P
+ 4 F
+ 0.06 (, representing an ordinary slot; ) 275.29 327.46 P
+ 12 F
+ 0.14 (slots parent) 425.49 327.46 P
+ 4 F
+ 0.06 (, repre-) 504.73 327.46 P
+ 1.14 (senting a parent slot; ) 71.42 313.46 P
+ 12 F
+ 2.5 (slots argument) 178.57 313.46 P
+ 4 F
+ 1.14 (, representing an ar) 273.35 313.46 P
+ 1.14 (gument slot; and ) 368.46 313.46 P
+ 12 F
+ 2.5 (slots method) 454.83 313.46 P
+ 4 F
+ 1.14 (,) 536.42 313.46 P
+ 0.26 (representing a slot with code. \322Fake\323 slots are objects representing code \050for a method\051, re\337ectee) 71.42 299.46 P
+ -0.4 (\050for a mirror\051, and vector elements \050for an object vector or byte vector\051. These objects representing) 71.42 285.46 P
+ (S) 71.42 271.46 T
+ 6 F
+ (ELF) 78.09 271.46 T
+ 4 F
+ ( slots are de\336ned in ) 97.63 271.46 T
+ 3 F
+ (slot.self) 193.9 271.46 T
+ 4 F
+ (.) 230.88 271.46 T
+ 71.42 55.44 539.42 716.11 C
+ 93.12 363.46 517.73 704.11 C
+ 93.12 363.46 517.73 704.11 R
+ 7 X
+ 0 K
+ V
+ 249.78 647.69 336.05 663.04 7.68 RR
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (traits oddball) 261.77 652.36 T
+ 265.36 680.69 320.47 696.04 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (lobby) 279.79 685.36 T
+ 243.06 610.37 342.77 625.72 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits slots plain) 255.06 615.04 T
+ 290.16 671.08 292.92 680.69 295.67 671.08 292.92 671.08 4 Y
+ V
+ 292.92 663.04 292.92 672.08 2 L
+ N
+ 290.16 638.08 292.92 647.69 295.67 638.08 292.92 638.08 4 Y
+ V
+ 292.92 625.72 292.92 639.08 2 L
+ N
+ 115.44 568.23 224.08 583.58 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits slots parent) 127.93 572.9 T
+ 255.49 550.37 378.82 565.73 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits slots argument) 267.7 555.04 T
+ 387.74 550.37 500.85 565.73 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits slots method) 399.72 555.04 T
+ 166.39 494.3 267.21 509.66 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits slots fake) 180.17 498.98 T
+ 106.51 447.7 229.78 463.06 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits slots fake code) 118.07 452.37 T
+ 236.09 406.78 378.82 422.13 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits slots fake re\337ectee) 248.22 411.45 T
+ 329.71 470.02 498.83 485.38 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits slots fake vectorElement) 341 474.69 T
+ 340.87 437.02 487.67 452.38 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (slots fake vectorElement) 354.43 441.69 T
+ 248.14 373.78 366.76 389.13 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (slots fake re\337ectee) 261.65 378.45 T
+ 119.3 414.7 216.99 430.06 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (slots fake code) 131.5 419.37 T
+ 399.91 517.37 488.68 532.73 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (slots method) 413.15 522.05 T
+ 267.1 517.37 367.21 532.73 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (slots argument) 281.13 522.05 T
+ 127.61 535.23 211.91 550.58 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (slots parent) 141.36 539.9 T
+ 392.21 599.48 468.1 614.83 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (slots plain) 405.73 604.15 T
+ 304.69 397.16 307.45 406.78 310.21 397.16 307.45 397.16 4 Y
+ V
+ 307.45 389.13 307.45 398.16 2 L
+ 0.5 H
+ N
+ 165.39 438.09 168.14 447.7 170.9 438.09 168.14 438.09 4 Y
+ V
+ 168.14 430.06 168.14 439.09 2 L
+ N
+ 441.54 540.76 444.3 550.37 447.05 540.76 444.3 540.76 4 Y
+ V
+ 444.3 532.73 444.3 541.76 2 L
+ N
+ 411.51 460.41 414.27 470.02 417.02 460.41 414.27 460.41 4 Y
+ V
+ 414.27 452.38 414.27 461.41 2 L
+ N
+ 314.4 540.76 317.15 550.37 319.91 540.76 317.15 540.76 4 Y
+ V
+ 317.15 532.73 317.15 541.76 2 L
+ N
+ 167 558.61 169.76 568.23 172.51 558.61 169.76 558.61 4 Y
+ V
+ 169.76 550.58 169.76 559.61 2 L
+ N
+ 234.03 612.35 243.97 613.4 236.09 607.24 235.06 609.79 4 Y
+ V
+ 169.76 583.58 235.99 610.16 2 L
+ N
+ 295.11 600.62 292.91 610.37 299.95 603.27 297.53 601.94 4 Y
+ V
+ 317.15 565.73 297.05 602.82 2 L
+ N
+ 346.4 604.07 338.63 610.37 348.56 609.14 347.48 606.61 4 Y
+ V
+ 444.3 565.73 346.56 607 2 L
+ N
+ 261.47 603.09 268.33 610.37 266.37 600.56 263.92 601.83 4 Y
+ V
+ 216.8 509.66 264.38 602.71 2 L
+ N
+ 191.03 489.56 199.83 494.31 194.88 485.62 192.96 487.59 4 Y
+ V
+ 168.14 463.06 193.68 488.28 2 L
+ N
+ 228.34 485.96 222.83 494.31 231.92 490.15 230.13 488.06 4 Y
+ V
+ 307.45 422.13 229.38 488.7 2 L
+ N
+ 275.16 495.92 267.21 501.99 277.17 501.05 276.16 498.49 4 Y
+ V
+ 329.71 477.7 275.24 498.85 2 L
+ N
+ 351.54 613.26 342.76 618.05 352.74 618.64 352.14 615.95 4 Y
+ V
+ 392.21 607.15 351.17 616.16 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "17" 75
+ %%Page: "18" 75
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-18) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Strings) 511.1 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Appendix B) 71.42 705.45 T
+ (Strings) 170.42 705.45 T
+ 4 F
+ 0.48 (Five kinds of basic string representations are implemented: canonical strings, immutable strings,) 71.42 381.63 P
+ -0.5 (mutable strings, canonicalizable strings, and characters. Strings are de\336ned in ) 71.42 367.63 P
+ 3 F
+ -0.5 (string.self) 441.82 367.63 P
+ 4 F
+ -0.5 (, and char-) 489.47 367.63 P
+ (acters are de\336ned in ) 71.42 353.63 T
+ 3 F
+ (character) 170.67 353.63 T
+ (.self) 215.97 353.63 T
+ 4 F
+ (.) 235.63 353.63 T
+ 3 F
+ 0.66 (Canonical strings.) 89.42 327.63 P
+ 4 F
+ 0.66 ( Canonical strings are registered internally in the virtual machine. The) 178.72 327.63 P
+ -0.45 (VM guarantees that a given canonical string is the only such canonical string with the same) 89.42 313.63 P
+ 0.17 (vector of bytes, allowing ef) 89.42 299.63 P
+ 0.17 (\336cient tests for equality of canonical strings. String literals are) 221.45 299.63 P
+ 0.65 (canonical strings, and some primitives require canonical strings as ar) 89.42 285.63 P
+ 0.65 (guments. Canonical) 425.5 285.63 P
+ (strings are immutable.) 89.42 271.63 T
+ 3 F
+ -0.07 (Immutable strings) 89.42 245.63 P
+ 4 F
+ -0.07 (. Immutable strings, naturally, are immutable, but are not canonicalized.) 176.3 245.63 P
+ 1.42 (Immutable strings are used in some primitives, such as the result of a ) 89.42 231.63 P
+ 12 F
+ 3.12 (_FloatPrint-) 442.32 231.63 P
+ -0.46 (String) 89.42 217.63 P
+ 4 F
+ -0.21 ( primitive, and are used to represent source code and \336le name information in byte) 128.98 217.63 P
+ (code objects.) 89.42 203.63 T
+ 3 F
+ -0.37 (Mutable strings.) 89.42 177.63 P
+ 4 F
+ -0.37 ( Mutable strings may be changed using  ) 167.68 177.63 P
+ 12 F
+ -0.82 (at:Put:) 358.56 177.63 P
+ 4 F
+ -0.37 (, which takes a character) 404.7 177.63 P
+ -0.6 (ar) 89.42 163.63 P
+ -0.6 (gument, or ) 98.53 163.63 P
+ 12 F
+ -1.31 (at:PutByte:) 152.3 163.63 P
+ 4 F
+ -0.6 (, which takes an integer ar) 224.81 163.63 P
+ -0.6 (gument. Sending ) 347.5 163.63 P
+ 12 F
+ -1.31 (canonicalize) 430.59 163.63 P
+ 4 F
+ -0.6 ( to) 509.69 163.63 P
+ -0.31 (a mutable string returns the corresponding canonical string. Sending ) 89.42 149.63 P
+ 12 F
+ -0.69 (copy) 417.04 149.63 P
+ 4 F
+ -0.31 ( to any string re-) 443.4 149.63 P
+ (turns a new mutable string containing the same characters.) 89.42 135.63 T
+ 3 F
+ 0.95 (Canonicalizable strings.) 89.42 109.63 P
+ 4 F
+ 0.95 ( Canonicalizable strings dif) 207.65 109.63 P
+ 0.95 (fer from mutable strings only in that) 341.86 109.63 P
+ 0.53 (they cache their canonical versions in response to the ) 89.42 95.63 P
+ 12 F
+ 1.16 (canonicalize) 352.32 95.63 P
+ 4 F
+ 0.53 ( message. Sending) 431.42 95.63 P
+ 0.29 (the ) 89.42 81.63 P
+ 12 F
+ 0.63 (=) 107.36 81.63 P
+ 4 F
+ 0.29 ( message also causes caching of the canonical version, so future equals comparisons) 113.96 81.63 P
+ 71.42 55.44 539.42 716.11 C
+ 71.42 403.63 539.42 700.11 C
+ 70.96 403.63 539.89 700.11 R
+ 7 X
+ 0 K
+ V
+ 232.63 603.87 312.55 619.22 7.68 RR
+ V
+ 0.5 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (traits string) 245.73 608.54 T
+ 124.24 556.16 255.17 571.51 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits immutableString) 136.59 560.83 T
+ 80.85 511.52 211.23 526.87 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits canonicalString) 95.06 516.19 T
+ 355.68 462.53 486.89 477.88 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (canonicalizableString) 369.39 467.2 T
+ 409.5 525.57 504.82 540.93 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (mutableString) 423.27 530.25 T
+ 290.99 556.16 406.72 571.51 7.68 RR
+ 7 X
+ V
+ 0.5 H
+ 0 X
+ N
+ (traits mutableString) 301.53 560.83 T
+ 346.07 493.85 496.5 509.2 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits canonicalizableString) 355.95 498.52 T
+ 80.09 477.77 116.56 493.12 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (\325) 95.98 482.44 T
+ (\325) 98.22 482.44 T
+ 187.99 441.56 290.12 456.91 7.68 RR
+ 7 X
+ V
+ 0.5 H
+ 0 X
+ N
+ (traits character) 202.73 446.23 T
+ 398.12 551.33 389.36 556.16 399.35 556.71 398.74 554.02 4 Y
+ V
+ 457.16 540.93 397.77 554.24 2 L
+ N
+ 418.53 484.23 421.29 493.85 424.04 484.23 421.29 484.23 4 Y
+ V
+ 421.29 477.88 421.29 485.23 2 L
+ N
+ 368.53 547.97 362.78 556.16 371.99 552.26 370.26 550.12 4 Y
+ V
+ 421.29 509.2 369.49 550.74 2 L
+ N
+ 168.43 552.55 177.76 556.16 171.76 548.16 170.1 550.36 4 Y
+ V
+ 138.76 526.87 170.9 550.96 2 L
+ N
+ 104.64 505.69 112.76 511.52 108.96 502.27 106.8 503.98 4 Y
+ V
+ 98.32 493.12 107.42 504.76 2 L
+ N
+ (...) 124.95 481.44 T
+ 214.78 546.36 216.76 556.16 220.28 546.8 217.53 546.58 4 Y
+ V
+ 224.76 456.91 217.46 547.57 2 L
+ N
+ 201.38 410.81 276.73 426.16 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ (character) 216.16 415.48 T
+ 236.55 475.8 338.69 491.16 7.68 RR
+ 7 X
+ V
+ 0.5 H
+ 0 X
+ N
+ (traits oddball) 256.48 480.48 T
+ 236.3 431.94 239.05 441.56 241.81 431.94 239.05 431.94 4 Y
+ V
+ 239.05 426.16 239.05 432.94 2 L
+ N
+ 266.48 471.43 275.47 475.81 270.17 467.33 268.33 469.38 4 Y
+ V
+ 254.48 456.91 269.08 470.04 2 L
+ N
+ 242.96 601.9 252.76 603.87 245.49 597 244.23 599.45 4 Y
+ V
+ 189.7 571.51 245.11 599.91 2 L
+ N
+ 301.09 596.57 294.25 603.87 303.92 601.3 302.5 598.93 4 Y
+ V
+ 348.85 571.51 301.65 599.44 2 L
+ N
+ 227.82 644.04 317.36 659.4 7.68 RR
+ 7 X
+ V
+ 0 X
+ N
+ (traits byteV) 233.2 648.72 T
+ (ector) 287.55 648.72 T
+ 269.83 634.43 272.59 644.04 275.35 634.43 272.59 634.43 4 Y
+ V
+ 272.59 619.22 272.59 635.43 2 L
+ N
+ 269.45 669.15 271.83 678.86 274.95 669.37 272.2 669.26 4 Y
+ V
+ 272.59 659.4 272.17 670.26 2 L
+ N
+ 219.02 683.33 326.16 692.26 R
+ 7 X
+ V
+ 5 F
+ 0 X
+ (see section II-2.6.4) 226.18 684.92 T
+ 241.4 520.26 336.71 535.61 7.68 RR
+ 7 X
+ V
+ 2 H
+ 0 X
+ N
+ 23 F
+ (immutableString) 249.37 524.93 T
+ 242.56 550.17 234.55 556.16 244.51 555.33 243.54 552.75 4 Y
+ V
+ 289.05 535.61 242.61 553.1 2 L
+ 0.5 H
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "18" 76
+ %%Page: "19" 76
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-19) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Strings) 511.1 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ -0.44 (will be faster \050because equality tests of canonical strings is relatively fast\051. Canonicalizable) 89.42 708.11 P
+ (strings are not currently used in the rest of the system.) 89.42 694.11 T
+ 3 F
+ 0.45 (Characters) 89.42 668.11 P
+ 4 F
+ 0.45 (. There are 256 character objects in the S) 143.39 668.11 P
+ 6 F
+ 0.41 (ELF) 343.12 668.11 P
+ 4 F
+ 0.45 ( universe. They are all contained) 362.66 668.11 P
+ 1.97 (in a 256-element vector named ) 89.42 654.11 P
+ 12 F
+ 4.33 (ascii) 250.83 654.11 P
+ 4 F
+ 1.97 (, which indexes them according to their ASCII) 283.79 654.11 P
+ -0.32 (codes. Characters behave like immutable strings of length 1, with the addition of ) 89.42 640.11 P
+ 12 F
+ -0.71 (asInte-) 475.28 640.11 P
+ -0.52 (ger) 89.42 626.11 P
+ 4 F
+ -0.24 (, which returns a character) 108.72 626.11 P
+ -0.24 (\325) 235.1 626.11 P
+ -0.24 (s ASCII value. The opposite of ) 238.43 626.11 P
+ 12 F
+ -0.52 (asInteger) 389.25 626.11 P
+ 4 F
+ -0.24 ( is ) 448.57 626.11 P
+ 12 F
+ -0.52 (asCharac-) 462.1 626.11 P
+ 4.44 (ter) 89.42 612.11 P
+ 4 F
+ 2.02 (, which can be sent to an integer between 0 and 255 to obtain the corresponding) 108.72 612.11 P
+ (character object.) 89.42 598.11 T
+ -0.27 (The printing convention for strings encode their canonical/canonicalizable status. The leading sin-) 71.42 572.11 P
+ 0.25 (gle quote is a backquote \050\324) 71.42 558.11 P
+ 12 F
+ 0.56 (\324) 199.6 558.11 P
+ 4 F
+ 0.25 (\325\051 if the string is canonicalizable, and a regular quote \050\324) 206.19 558.11 P
+ 12 F
+ 0.56 (\325) 472.85 558.11 P
+ 4 F
+ 0.25 (\325\051 otherwise.) 478.55 558.11 P
+ 0.6 (The trailing single quote is a backquote if the string is canonical, and a regular quote otherwise.) 71.42 544.11 P
+ -0.54 (Thus, string literals print with a pair of backquotes, while normal mutable strings print with regular) 71.42 530.11 P
+ (quotes.) 71.42 516.11 T
+ FMENDPAGE
+ %%EndPage: "19" 77
+ %%Page: "20" 77
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-20) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Other objects in the SELF world) 409.23 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Appendix C) 71.42 705.45 T
+ (Other objects in the S) 170.42 705.45 T
+ 25 F
+ (ELF) 318.77 705.45 T
+ 9 F
+ ( world) 347.95 705.45 T
+ 4 F
+ (There are many objects in the base S) 71.42 678.11 T
+ 6 F
+ (ELF) 247.62 678.11 T
+ 4 F
+ ( world that are not discussed in detail in this document.) 267.15 678.11 T
+ 3 F
+ (Benchmarks.) 89.42 652.11 T
+ 4 F
+ ( ) 151.71 652.11 T
+ (The Stanford benchmarks, the Richards benchmark, and others.) 154.7 652.11 T
+ 3 F
+ (T) 89.42 626.11 T
+ (ests.) 94.99 626.11 T
+ 4 F
+ ( A test suite that exercises much of the system.) 115.98 626.11 T
+ 3 F
+ (Pixr) 89.42 600.11 T
+ (ects.) 109.63 600.11 T
+ 4 F
+ ( Access to the Sun pixrect library for low-level graphics.) 131.28 600.11 T
+ 3 F
+ (Parser) 89.42 574.11 T
+ (.) 122.07 574.11 T
+ 4 F
+ ( A parser that parses an old version of S) 125.07 574.11 T
+ 6 F
+ (ELF) 316.59 574.11 T
+ 4 F
+ ( syntax.) 336.12 574.11 T
+ 3 F
+ 0.11 (Graphics) 89.42 548.11 P
+ 0.11 ( and the prototype user interface.) 134.06 548.11 P
+ 4 F
+ 0.11 ( These objects support the prototype user inter-) 294.5 548.11 P
+ 0.38 (face \050see Appendix D\051. The code in these objects is not particularly well-factored; do not) 89.42 534.11 P
+ (consider this subsystem as an example of good S) 89.42 520.11 T
+ 6 F
+ (ELF) 323.94 520.11 T
+ 4 F
+ ( programming.) 343.48 520.11 T
+ FMENDPAGE
+ %%EndPage: "20" 78
+ %%Page: "21" 78
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-21) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (The SELF prototype user interface) 400.64 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Appendix D) 71.42 705.45 T
+ (The S) 170.42 705.45 T
+ 25 F
+ (ELF) 209.97 705.45 T
+ 9 F
+ ( pr) 239.14 705.45 T
+ (ototype user interface) 258.85 705.45 T
+ 4 F
+ -0.32 (Included in the S) 71.42 678.11 P
+ 6 F
+ -0.29 (ELF) 152.08 678.11 P
+ 4 F
+ -0.32 ( world is a prototype of a user interface for S) 171.62 678.11 P
+ 6 F
+ -0.29 (ELF) 383.59 678.11 P
+ 4 F
+ -0.32 ( [CU90]. This prototype \050the) 403.12 678.11 P
+ -0.23 (\322ui\323\051 serves as an inspector) 71.42 664.11 P
+ -0.23 (, allowing browsing through the S) 201.25 664.11 P
+ 6 F
+ -0.21 (ELF) 363.35 664.11 P
+ 4 F
+ -0.23 ( world by pointing at objects and) 382.89 664.11 P
+ 0.44 (clicking. The ui currently does not support object creation, message sending, or editing capabili-) 71.42 650.11 P
+ -0.52 (ties; it has been developed to explore some ideas in user interfaces for programming environments,) 71.42 636.11 P
+ (and in its present form is not intended to serve as a full-\337edged environment for S) 71.42 622.11 T
+ 6 F
+ (ELF) 464.16 622.11 T
+ 4 F
+ (.) 482.73 622.11 T
+ 1.19 (The ui presents S) 71.42 596.11 P
+ 6 F
+ 1.09 (ELF) 157.95 596.11 P
+ 4 F
+ 1.19 ( objects as three-dimensional boxes \337oating in their own arti\336cial reality) 177.49 596.11 P
+ 1.19 (.) 536.42 596.11 P
+ -0.4 (Slots of an object are depicted as wide boxes on the face of the object, and the contents of each slot) 71.42 582.11 P
+ 0.02 (are smaller boxes on the face of the slots. The relationship between objects and the slots that con-) 71.42 568.11 P
+ 0.37 (tain them is shown by arrows from the slots pointing to the objects. Objects can be moved about) 71.42 554.11 P
+ 1.45 (on the screen, the contents of their slots can be examined, and they can be removed from the) 71.42 540.11 P
+ (screen.) 71.42 526.11 T
+ 3 F
+ 0.15 (Requir) 71.42 500.11 P
+ 0.15 (ements.) 103.63 500.11 P
+ 4 F
+ 0.15 ( The ui does not run under any window system: it must be started from the console) 139.93 500.11 P
+ 0.22 (of the machine that S) 71.42 486.11 P
+ 6 F
+ 0.2 (ELF) 174.21 486.11 P
+ 4 F
+ 0.22 ( is running on. Because the ui accesses /dev/mouse and /dev/fb directly) 193.75 486.11 P
+ 0.22 (,) 536.42 486.11 P
+ -0.34 (it will con\337ict with a running window system. The ui will work with either a monochrome or an 8-) 71.42 472.11 P
+ -0.19 (bit color frame buf) 71.42 458.11 P
+ -0.19 (fer) 160.91 458.11 P
+ -0.19 (. A GX frame buf) 173.56 458.11 P
+ -0.19 (fer is recommended for color; the ui may have poor perfor-) 257.53 458.11 P
+ (mance on lower color frame buf) 71.42 444.11 T
+ (fer models.) 225.41 444.11 T
+ 3 F
+ 0.15 (Con\336guration) 71.42 418.11 P
+ 4 F
+ 0.15 (. By default, the ui uses /dev/fb. If a dif) 138.73 418.11 P
+ 0.15 (ferent frame buf) 328.44 418.11 P
+ 0.15 (fer is to be used, add a con-) 406.45 418.11 P
+ 1.65 (\336guration table entry for the host running S) 71.42 404.11 P
+ 6 F
+ 1.51 (ELF) 291.16 404.11 P
+ 4 F
+ 1.65 (, with a slot ) 309.73 404.11 P
+ 12 F
+ 3.62 (frameBufferName) 375.29 404.11 P
+ 4 F
+ 1.65 ( containing a) 474.17 404.11 P
+ -0.38 (string naming the appropriate frame buf) 71.42 390.11 P
+ -0.38 (fer) 260.84 390.11 P
+ -0.38 (. In addition, the default sizes for fonts used in the ui are) 273.49 390.11 P
+ -0.25 (reasonable for a regular density monitor) 71.42 376.11 P
+ -0.25 (. For high density frame buf) 261.72 376.11 P
+ -0.25 (fers, alter the con\336guration ta-) 394.85 376.11 P
+ 0.13 (ble entry for the host to include a slot ) 71.42 362.11 P
+ 12 F
+ 0.28 (useBigFonts) 254.79 362.11 P
+ 4 F
+ 0.13 ( containing ) 327.3 362.11 P
+ 12 F
+ 0.28 (true) 384.18 362.11 P
+ 4 F
+ 0.13 (. See section II-2.8 and the) 410.55 362.11 P
+ (\336le ) 71.42 348.11 T
+ 3 F
+ (con\336guration.self) 89.75 348.11 T
+ 4 F
+ (.) 174.04 348.11 T
+ 3 F
+ 0.31 (Starting the ui.) 71.42 322.11 P
+ 4 F
+ 0.31 ( The ui coexists with the S) 143.69 322.11 P
+ 6 F
+ 0.29 (ELF) 272.84 322.11 P
+ 4 F
+ 0.31 ( system monitor\321it is useful to start up the system) 292.38 322.11 P
+ -0.38 (monitor \050by sending the message) 71.42 308.11 P
+ 12 F
+ -0.83 ( _Spy: true) 228.48 308.11 P
+ 4 F
+ -0.38 (\051 beforehand so that the progress of the virtual ma-) 299.34 308.11 P
+ 0.16 (chine can be viewed while using the ui. Sending the message ) 71.42 294.11 P
+ 12 F
+ 0.34 (ui start) 368.92 294.11 P
+ 4 F
+ 0.16 ( invokes the S) 421.99 294.11 P
+ 6 F
+ 0.14 (ELF) 490.09 294.11 P
+ 4 F
+ 0.16 ( arti\336-) 509.62 294.11 P
+ 0.31 (cial reality) 71.42 280.11 P
+ 0.31 (, with one object visible, the lobby) 121.91 280.11 P
+ 0.31 (. The mouse-controlled cursor is at the center of the) 288.87 280.11 P
+ -0.13 (screen. T) 71.42 266.11 P
+ -0.13 (o start the ui on an arbitrary object ) 114.41 266.11 P
+ 12 F
+ -0.29 (obj) 281.89 266.11 P
+ 4 F
+ -0.13 (, send the message ) 301.67 266.11 P
+ 12 F
+ -0.29 (ui startWith: obj) 393.4 266.11 P
+ 4 F
+ -0.13 (. T) 504.88 266.11 P
+ -0.13 (o in-) 517.24 266.11 P
+ 0.4 (voke the ui on the result of every expression typed in at the prompt, read in the script \336le ) 71.42 252.11 P
+ 3 F
+ 0.4 (printI-) 508.11 252.11 P
+ 0.76 (tUI.self) 71.42 238.11 P
+ 4 F
+ 0.76 (, which replaces the usual ) 107.07 238.11 P
+ 12 F
+ 1.67 (printIt) 237.42 238.11 P
+ 4 F
+ 0.76 ( method with one that starts the ui with the result of) 283.57 238.11 P
+ 12 F
+ (doIt) 71.42 224.11 T
+ 4 F
+ (.) 97.79 224.11 T
+ 3 F
+ -0.26 (Moving objects.) 71.42 198.11 P
+ 4 F
+ -0.26 ( Objects can be moved about on the screen by pointing to the face of the object \050or) 147.78 198.11 P
+ 1.17 (the face of one of its slots\051, pressing down and holding the left mouse button, and moving the) 71.42 184.11 P
+ (mouse. Letting go of the left mouse button drops the object.) 71.42 170.11 T
+ 3 F
+ -0.46 (Examining slots.) 71.42 144.11 P
+ 4 F
+ -0.46 ( Pressing down the left mouse button on the contents of a slot \050the \322contents box\323\051) 150.92 144.11 P
+ -0.11 (causes the object in the slot to display itself on the screen \050\322sprout\323\051, connected to the slot with an) 71.42 130.11 P
+ 0.24 (arrow) 71.42 116.11 P
+ 0.24 (. Sprouting is simply a special case of grabbing; after sprouting an object, the object can be) 98.61 116.11 P
+ -0.5 (moved immediately before releasing the mouse button. Navigating in the S) 71.42 102.11 P
+ 6 F
+ -0.46 (ELF) 426.48 102.11 P
+ 4 F
+ -0.5 ( world is performed) 446.01 102.11 P
+ 0.48 (by traversing slots to reach the desired object \050the lobby and the globals object are good starting) 71.42 88.11 P
+ (points\051.) 71.42 74.11 T
+ FMENDPAGE
+ %%EndPage: "21" 79
+ %%Page: "22" 79
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-22) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (The SELF prototype user interface) 400.64 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 3 F
+ 0 X
+ -0.5 (Removing objects fr) 71.42 708.11 P
+ -0.5 (om the scr) 165.92 708.11 P
+ -0.5 (een.) 214.45 708.11 P
+ 4 F
+ -0.5 ( Clicking the right mouse button on an object removes the object) 234.09 708.11 P
+ 0.42 (from the screen. Clicking the right mouse button on a sprouted contents box simply removes the) 71.42 694.11 P
+ (arrow between the slot and the object contained in the slot.) 71.42 680.11 T
+ 3 F
+ 0.75 (\322Fake\323 slots.) 71.42 654.11 P
+ 4 F
+ 0.75 ( The ui permits access to certain parts of vectors, methods, and mirrors by way of) 137.48 654.11 P
+ -0.32 (\322fake\323 slots. For example in the case of an object vector or a byte vector) 71.42 640.11 P
+ -0.32 (, in addition to showing its) 413.11 640.11 P
+ 0.43 (regular slots, the elements of the vector are shown as fake slots. The fake slot containing the nth) 71.42 626.11 P
+ -0.03 (element has the name ) 71.42 612.11 P
+ 12 F
+ -0.06 (<n>) 177.9 612.11 P
+ 4 F
+ -0.03 (. A method object has a fake slot containing its bytecode object. A mir-) 197.68 612.11 P
+ (ror has a fake slot containing the object it re\337ects.) 71.42 598.11 T
+ 3 F
+ -0.31 (Refer) 71.42 572.11 P
+ -0.31 (ence buttons.) 96.96 572.11 P
+ 4 F
+ -0.31 ( Objects in the ui can be queried for all references to the object or all children of) 159.94 572.11 P
+ -0.11 (the object. Clicking the left mouse button on the small button in the upper left corner of the object) 71.42 558.11 P
+ 0.55 (causes a vector containing objects that contain the original object in one of their slots. Although) 71.42 544.11 P
+ 0.52 (the primitive that is invoked \336nds all such objects, only a limited number is shown in the vector) 71.42 530.11 P
+ -0.09 (returned by the ui, in the interest of space. Clicking the left mouse button on the small button near) 71.42 516.11 P
+ 0.17 (the bottom of the object does almost the same thing, except it restricts the query to objects which) 71.42 502.11 P
+ -0.35 (contain the original object in one of their ) 71.42 488.11 P
+ 3 F
+ -0.35 (par) 267.84 488.11 P
+ -0.35 (ent) 284.06 488.11 P
+ 4 F
+ -0.35 ( slots\321thus, this returns a vector of children of the) 298.71 488.11 P
+ -0.1 (original object. The top button near the slot names are for returning a vector of objects that imple-) 71.42 474.11 P
+ 0.32 (ment the corresponding selector) 71.42 460.11 P
+ 0.32 (, that is, have a slot with the same name. The bottom button near) 225.46 460.11 P
+ -0.23 (the slot names are for returning a vector of objects that send this selector as a message. The size of) 71.42 446.11 P
+ 0.55 (these vectors is restricted by the ui \050size determined by the integer in the slot ) 71.42 432.11 P
+ 12 F
+ 1.22 (limit) 450.48 432.11 P
+ 4 F
+ 0.55 ( in ) 483.44 432.11 P
+ 12 F
+ 1.22 (traits) 499.87 432.11 P
+ (enumBox) 71.42 418.11 T
+ 4 F
+ (\051.) 117.57 418.11 T
+ 3 F
+ 0.67 (Changing colors.) 71.42 392.11 P
+ 4 F
+ 0.67 ( On a system with a color frame buf) 155.38 392.11 P
+ 0.67 (fer) 333.04 392.11 P
+ 0.67 (, pressing down and holding the middle) 345.87 392.11 P
+ -0.12 (mouse button causes the cursor to enter color space. \050On monochrome systems, the middle mouse) 71.42 378.11 P
+ -0.1 (button has no function.\051 Color space allows the colors of the ui to be changed interactively) 71.42 364.11 P
+ -0.1 (. What-) 503.55 364.11 P
+ -0.44 (ever the cursor is pointing at when color space is entered is what will be changed \050this includes, for) 71.42 350.11 P
+ 0.34 (example, the background, the boxes, the text on the boxes, and the arrows\051. Entering color space) 71.42 336.11 P
+ -0.38 (transports the cursor to the absolute location of the current color) 71.42 322.11 P
+ -0.38 (. The horizontal axis measures hue) 374.77 322.11 P
+ 0.91 (and the vertical axis measures brightness. Pressing the left button down in while in color space) 71.42 308.11 P
+ 1.3 (\050and keeping the ) 71.42 294.11 P
+ 1.3 (middle button down\051 switches the vertical axis from brightness to saturation.) 158.27 294.11 P
+ 0.02 (Moving the cursor in color space interactively changes the color of the tar) 71.42 280.11 P
+ 0.02 (get elements. Releasing) 425.8 280.11 P
+ (the middle button leaves color space.) 71.42 266.11 T
+ 3 F
+ -0.31 (Leaving the ui) 71.42 240.11 P
+ 4 F
+ -0.31 (. Pressing all three mouse buttons down at once and releasing them leaves the ui. In-) 139.42 240.11 P
+ (voking the ui again starts with a single object.) 71.42 226.11 T
+ FMENDPAGE
+ %%EndPage: "22" 80
+ %%Page: "23" 80
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-23) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Selector glossary) 470.86 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Appendix E) 71.42 705.45 T
+ (Selector glossary) 170.42 705.45 T
+ 4 F
+ (This glossary contains entries for common and useful selectors. It is by no means exhaustive.) 71.42 678.11 T
+ 71.42 642.12 539.42 650.11 C
+ 71.42 648.1 539.42 648.1 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Copying) 71.42 654.11 T
+ 4 F
+ (clone) 71.42 632.12 T
+ (shallow copy) 197.42 632.12 T
+ (copy) 71.42 618.12 T
+ (copy) 197.42 618.12 T
+ (, possibly with embedded copies or initialization) 219.96 618.12 T
+ 71.42 582.13 539.42 590.12 C
+ 71.42 588.1 539.42 588.1 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Comparing) 71.42 594.12 T
+ 71.42 554.14 539.42 562.13 C
+ 71.42 560.11 539.42 560.11 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Equality) 71.42 566.13 T
+ 4 F
+ (=) 71.42 544.14 T
+ (equal) 197.42 544.14 T
+ (!=) 71.42 530.14 T
+ (not equal) 197.42 530.14 T
+ (hash) 71.42 516.14 T
+ (hash value) 197.42 516.14 T
+ (==) 71.42 502.14 T
+ (identical \050behaviorally indistinguishable\051) 197.42 502.14 T
+ (!==) 71.42 488.14 T
+ (not identical) 197.42 488.14 T
+ 71.42 456.14 539.42 464.14 C
+ 71.42 462.12 539.42 462.12 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Or) 71.42 468.14 T
+ (der) 84.31 468.14 T
+ (ed) 99.85 468.14 T
+ 4 F
+ (<) 71.42 446.14 T
+ (less than) 314.42 446.14 T
+ (>) 71.42 432.14 T
+ (greater than) 314.42 432.14 T
+ (<=) 71.42 418.14 T
+ (less than or equal) 314.42 418.14 T
+ (>=) 71.42 404.14 T
+ (greater than or equal) 314.42 404.14 T
+ (compare:IfLess:Equal:Greater:) 71.42 390.14 T
+ (three way comparison) 314.42 390.14 T
+ (compare:IfLess:Equal:Greater:Incomparable:) 71.42 376.14 T
+ (three way comparison with failure) 314.42 376.14 T
+ 71.42 340.15 539.42 348.14 C
+ 71.42 346.13 539.42 346.13 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Double dispatching) 71.42 352.14 T
+ 4 F
+ (equals*:) 71.42 330.15 T
+ (\050e.g., equalsInteger\051 double dispatching for equality comparisons) 197.42 330.15 T
+ 71.42 294.16 539.42 302.15 C
+ 71.42 300.14 539.42 300.14 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Numeric operations) 71.42 306.15 T
+ 4 F
+ (+) 71.42 284.16 T
+ (addition) 197.42 284.16 T
+ (-) 71.42 270.16 T
+ (subtraction) 197.42 270.16 T
+ (*) 71.42 256.16 T
+ (multiplication) 197.42 256.16 T
+ (/) 71.42 242.16 T
+ (division) 197.42 242.16 T
+ (%) 71.42 228.16 T
+ (mod) 197.42 228.16 T
+ (absoluteV) 71.42 214.16 T
+ (alue) 118.73 214.16 T
+ (absolute value) 197.42 214.16 T
+ (inverse) 71.42 200.16 T
+ (multiplicative inverse) 197.42 200.16 T
+ (negate) 71.42 186.16 T
+ (additive inverse) 197.42 186.16 T
+ (ceil) 71.42 172.16 T
+ (round towards positive in\336nity) 197.42 172.16 T
+ (\337oor) 71.42 158.16 T
+ (round towards negative in\336nity) 197.42 158.16 T
+ (truncate) 71.42 144.16 T
+ (truncate towards zero) 197.42 144.16 T
+ (round) 71.42 130.16 T
+ (round) 197.42 130.16 T
+ (asFloat) 71.42 116.16 T
+ (coerce to \337oat) 197.42 116.16 T
+ (asInteger) 71.42 102.16 T
+ (coerce to integer) 197.42 102.16 T
+ (double) 71.42 88.16 T
+ (multiply by two) 197.42 88.16 T
+ (quadruple) 71.42 74.16 T
+ (multiply by four) 197.42 74.16 T
+ (half) 71.42 60.16 T
+ (divide by two) 197.42 60.16 T
+ FMENDPAGE
+ %%EndPage: "23" 81
+ %%Page: "24" 81
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-24) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Selector glossary) 470.86 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ (quarter) 71.42 708.11 T
+ (divide by four) 197.42 708.11 T
+ (max:) 71.42 694.11 T
+ (maximum) 197.42 694.11 T
+ (mean:) 71.42 680.11 T
+ (mean) 197.42 680.11 T
+ (min:) 71.42 666.11 T
+ (minimum) 197.42 666.11 T
+ (pred) 71.42 652.11 T
+ (predecessor) 197.42 652.11 T
+ (predecessor) 71.42 638.11 T
+ (predecessor) 197.42 638.11 T
+ (succ) 71.42 624.11 T
+ (successor) 197.42 624.11 T
+ (successor) 71.42 610.11 T
+ (successor) 197.42 610.11 T
+ (power:) 71.42 596.11 T
+ (raise to power) 197.42 596.11 T
+ (squared) 71.42 582.11 T
+ (square) 197.42 582.11 T
+ (squareRoot) 71.42 568.11 T
+ (square root) 197.42 568.11 T
+ (sign) 71.42 554.11 T
+ (signum \050-1, 0, 1\051) 197.42 554.11 T
+ (factorial) 71.42 540.11 T
+ (factorial) 197.42 540.11 T
+ 71.42 504.12 539.42 512.11 C
+ 71.42 510.1 539.42 510.1 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Bitwise operations) 71.42 516.11 T
+ 4 F
+ (&&) 71.42 494.12 T
+ (and) 197.42 494.12 T
+ (||) 71.42 480.12 T
+ (or) 197.42 480.12 T
+ (^^) 71.42 466.12 T
+ (xor) 197.42 466.12 T
+ (complement) 71.42 452.12 T
+ (bitwise complement) 197.42 452.12 T
+ (<<) 71.42 438.12 T
+ (logical left shift) 197.42 438.12 T
+ (>>) 71.42 424.12 T
+ (logical right shift) 197.42 424.12 T
+ (<+) 71.42 410.12 T
+ (arithmetic left shift) 197.42 410.12 T
+ (+>) 71.42 396.12 T
+ (arithmetic right shift) 197.42 396.12 T
+ 71.42 360.13 539.42 368.12 C
+ 71.42 366.1 539.42 366.1 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Logical operations) 71.42 372.12 T
+ 4 F
+ (&&) 71.42 350.13 T
+ (and) 197.42 350.13 T
+ (||) 71.42 336.13 T
+ (or) 197.42 336.13 T
+ (^^) 71.42 322.13 T
+ (xor) 197.42 322.13 T
+ (not) 71.42 308.13 T
+ (logical complement) 197.42 308.13 T
+ 71.42 272.14 539.42 280.13 C
+ 71.42 278.11 539.42 278.11 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Pairing) 71.42 284.13 T
+ 4 F
+ (@) 71.42 262.14 T
+ (point construction \050receiver and ar) 197.42 262.14 T
+ (gument are integers\051) 362.4 262.14 T
+ (@@) 71.42 248.14 T
+ (extent \050size\051 construction \050receiver and ar) 197.42 248.14 T
+ (gument are integers\051) 396.7 248.14 T
+ (#) 71.42 234.14 T
+ (rectangle construction \050receiver and ar) 197.42 234.14 T
+ (gument are points\051) 381.7 234.14 T
+ (##) 71.42 220.14 T
+ (rectangle construction \050receiver is a point, ar) 197.42 220.14 T
+ (gument is an extent\051) 411.36 220.14 T
+ 71.42 184.14 539.42 192.14 C
+ 71.42 190.12 539.42 190.12 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Printing) 71.42 196.14 T
+ 4 F
+ (print) 71.42 174.14 T
+ (print on stdout) 197.42 174.14 T
+ (printLine) 71.42 160.14 T
+ (print with trailing newline) 197.42 160.14 T
+ (printString) 71.42 146.14 T
+ (return a string label) 197.42 146.14 T
+ (printStringDepth:) 71.42 132.14 T
+ (return a string label with depth limitation request) 197.42 132.14 T
+ (printStringSize:) 71.42 118.14 T
+ (return a string label with number of characters limitation request) 197.42 118.14 T
+ (printStringSize:Depth:) 71.42 104.14 T
+ (return a string label with depth and size limitation request) 197.42 104.14 T
+ FMENDPAGE
+ %%EndPage: "24" 82
+ %%Page: "25" 82
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-25) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Selector glossary) 470.86 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 71.42 696.12 539.42 704.11 C
+ 71.42 702.1 539.42 702.1 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Naming) 71.42 708.11 T
+ 4 F
+ (inspect:) 71.42 686.12 T
+ (print the slots of the object) 197.42 686.12 T
+ (inspect:Slot:) 71.42 672.12 T
+ (print the contents of a slot of an object) 197.42 672.12 T
+ (inferName) 71.42 658.12 T
+ (infer a string name for the mirror receiver) 197.42 658.12 T
+ (\325) 398.03 658.12 T
+ (s re\337ectee) 401.36 658.12 T
+ (name:) 71.42 644.12 T
+ (return a string name for the ar) 197.42 644.12 T
+ (gument object \050use name inferencer\051) 340.42 644.12 T
+ (name:Depth:) 71.42 630.12 T
+ (return a string name with depth limitation request) 197.42 630.12 T
+ (name:Size:) 71.42 616.12 T
+ (return a string name with size limitation request) 197.42 616.12 T
+ (name:Size:Depth:) 71.42 602.12 T
+ (return a string name with size and depth limitation request) 197.42 602.12 T
+ (re\336ll) 71.42 588.12 T
+ (re\336ll the path cache) 197.42 588.12 T
+ (thisObjectPrints) 71.42 574.12 T
+ 3.56 (name inferencer looks for this slot to determine whether to send) 197.42 574.12 P
+ 12 F
+ (printString) 197.42 560.12 T
+ 4 F
+ ( to this object) 269.93 560.12 T
+ 71.42 524.13 539.42 532.12 C
+ 71.42 530.1 539.42 530.1 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Contr) 71.42 536.12 T
+ (ol) 101.85 536.12 T
+ 71.42 496.14 539.42 504.13 C
+ 71.42 502.11 539.42 502.11 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Selection) 71.42 508.13 T
+ 4 F
+ (ifT) 71.42 486.14 T
+ (rue:) 85.66 486.14 T
+ (evaluate ar) 197.42 486.14 T
+ (gument if receiver is true) 249.49 486.14 T
+ (ifFalse:) 71.42 472.14 T
+ (evaluate ar) 197.42 472.14 T
+ (gument if receiver is false) 249.49 472.14 T
+ (ifT) 71.42 458.14 T
+ (rue:False:) 85.66 458.14 T
+ (evaluate \336rst ar) 197.42 458.14 T
+ (g if true, second ar) 271.15 458.14 T
+ (g if false) 360.52 458.14 T
+ (ifFalse:T) 71.42 444.14 T
+ (rue:) 114.31 444.14 T
+ (evaluate \336rst ar) 197.42 444.14 T
+ (g if false, second ar) 271.15 444.14 T
+ (g if true) 364.52 444.14 T
+ 71.42 412.14 539.42 420.14 C
+ 71.42 418.12 539.42 418.12 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Local exiting) 71.42 424.14 T
+ 4 F
+ (exit) 71.42 402.14 T
+ (exit block and return nil if block\325) 197.42 402.14 T
+ (s ar) 355.99 402.14 T
+ (gument is evaluated) 372.76 402.14 T
+ (exitV) 71.42 388.14 T
+ (alue) 96.74 388.14 T
+ (exit block and return a value if block\325) 197.42 388.14 T
+ (s ar) 377.62 388.14 T
+ (gument is evaluated) 394.39 388.14 T
+ 71.42 356.15 539.42 364.14 C
+ 71.42 362.13 539.42 362.13 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Basic looping) 71.42 368.14 T
+ 4 F
+ (loop) 71.42 346.15 T
+ (repeat the block forever) 197.42 346.15 T
+ (loopExit) 71.42 332.15 T
+ (repeat the block until ar) 197.42 332.15 T
+ (gument is evaluated; then exit and return nil) 311.12 332.15 T
+ (loopExitV) 71.42 318.15 T
+ (alue) 120.07 318.15 T
+ -0.41 (repeat the block until ar) 197.42 318.15 P
+ -0.41 (gument is evaluated; then exit and return a value) 309.5 318.15 P
+ 71.42 286.16 539.42 294.15 C
+ 71.42 292.14 539.42 292.14 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Pr) 71.42 298.15 T
+ (e-test looping) 82.97 298.15 T
+ 4 F
+ (whileT) 71.42 276.16 T
+ (rue) 104.98 276.16 T
+ (repeat the receiver until it evaluates to true) 197.42 276.16 T
+ (whileFalse) 71.42 262.16 T
+ (repeat the receiver until it evaluates to false) 197.42 262.16 T
+ (whileT) 71.42 248.16 T
+ (rue:) 104.98 248.16 T
+ (repeat the receiver and ar) 197.42 248.16 T
+ (gument until receiver evaluates to true) 318.41 248.16 T
+ (whileFalse:) 71.42 234.16 T
+ (repeat the receiver and ar) 197.42 234.16 T
+ (gument until receiver evaluates to false) 318.41 234.16 T
+ 71.42 202.17 539.42 210.16 C
+ 71.42 208.14 539.42 208.14 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Post-test looping) 71.42 214.16 T
+ 4 F
+ (untilT) 71.42 192.17 T
+ (rue:) 100.33 192.17 T
+ (repeat the receiver and ar) 197.42 192.17 T
+ (gument until ar) 318.41 192.17 T
+ (gument evaluates to true) 391.49 192.17 T
+ (untilFalse:) 71.42 178.17 T
+ (repeat the receiver and ar) 197.42 178.17 T
+ (gument until ar) 318.41 178.17 T
+ (gument evaluates to false) 391.49 178.17 T
+ 71.42 146.18 539.42 154.17 C
+ 71.42 152.15 539.42 152.15 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Iterators) 71.42 158.17 T
+ 4 F
+ (do:) 71.42 136.18 T
+ (iterate, passing each element to the ar) 197.42 136.18 T
+ (gument block) 377.4 136.18 T
+ (to:By:Do:) 71.42 122.18 T
+ (iterate, with stepping) 197.42 122.18 T
+ (to:Do:) 71.42 108.18 T
+ (iterate forward) 197.42 108.18 T
+ (upT) 71.42 94.18 T
+ (o:By:Do:) 89.91 94.18 T
+ (iterate forward, without last element, with stepping) 197.42 94.18 T
+ (upT) 71.42 80.18 T
+ (o:Do:) 89.91 80.18 T
+ (iterate forward, without last element) 197.42 80.18 T
+ (downT) 71.42 66.18 T
+ (o:By:Do:) 104.56 66.18 T
+ (reverse iterate, with stepping) 197.42 66.18 T
+ FMENDPAGE
+ %%EndPage: "25" 83
+ %%Page: "26" 83
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-26) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Selector glossary) 470.86 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ (downT) 71.42 708.11 T
+ (o:Do:) 104.56 708.11 T
+ (reverse iterate) 197.42 708.11 T
+ (to:BinarySearchBySignOf:IfAbsent:) 71.42 694.11 T
+ (binary search) 197.42 680.11 T
+ 71.42 648.12 539.42 656.11 C
+ 71.42 654.1 539.42 654.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Block evaluation) 71.42 660.11 T
+ 4 F
+ (value[:{W) 71.42 638.12 T
+ (ith:}]) 121.33 638.12 T
+ (evaluate block, passing ar) 197.42 638.12 T
+ (guments) 321.11 638.12 T
+ 71.42 602.13 539.42 610.12 C
+ 71.42 608.1 539.42 608.1 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Collections) 71.42 614.12 T
+ 71.42 574.14 539.42 582.13 C
+ 71.42 580.11 539.42 580.11 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Adding) 71.42 586.13 T
+ 4 F
+ (add:) 71.42 564.14 T
+ (add ar) 197.42 564.14 T
+ (gument element to collection receiver) 226.84 564.14 T
+ (add:W) 71.42 550.14 T
+ (ithKey:) 102.92 550.14 T
+ (add key-value pair) 197.42 550.14 T
+ (addAll:) 71.42 536.14 T
+ (add all elements of ar) 197.42 536.14 T
+ (gument to receiver) 300.46 536.14 T
+ (at:Put:) 71.42 522.14 T
+ (add key-value pair) 197.42 522.14 T
+ (at:Put:IfAbsent:) 71.42 508.14 T
+ (add key-value pair) 197.42 508.14 T
+ (, evaluating block if absent) 286.2 508.14 T
+ (copyAddAll:) 71.42 494.14 T
+ (return a new collection with the same elements) 197.42 494.14 T
+ 71.42 462.14 539.42 470.14 C
+ 71.42 468.12 539.42 468.12 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Accessing) 71.42 474.14 T
+ 4 F
+ (at:) 71.42 452.14 T
+ (return element ) 197.42 452.14 T
+ 3 F
+ (n) 270.03 452.14 T
+ 4 F
+ (at:IfAbsent:) 71.42 438.14 T
+ (return element ) 197.42 438.14 T
+ 3 F
+ (n) 270.03 438.14 T
+ 4 F
+ (, evaluating block if absent) 276.03 438.14 T
+ 71.42 406.15 539.42 414.14 C
+ 71.42 412.13 539.42 412.13 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Iterating) 71.42 418.14 T
+ 4 F
+ (do:) 71.42 396.15 T
+ (iterate, passing each element to ar) 260.42 396.15 T
+ (gument block) 422.74 396.15 T
+ (doFirst:Middle:Last:IfEmpty:) 71.42 382.15 T
+ (iterate, with special behavior for \336rst and last) 260.42 382.15 T
+ (doFirst:MiddleLast:IfEmpty:) 71.42 368.15 T
+ (iterate, with special behavior for \336rst) 260.42 368.15 T
+ (doFirstLast:Middle:IfEmpty:) 71.42 354.15 T
+ (iterate, with special behavior for ends) 260.42 354.15 T
+ (doFirstMiddle:Last:IfEmpty:) 71.42 340.15 T
+ (iterate, with special behavior for last) 260.42 340.15 T
+ (with:Do:) 71.42 326.15 T
+ (co-iterate, passing corresponding elements to block) 260.42 326.15 T
+ (copyDo:) 71.42 312.15 T
+ (copy and iterate) 260.42 312.15 T
+ (copyDoFirst:Middle:Last:IfEmpty:) 71.42 298.15 T
+ (copy and iterate, with special behavior for \336rst and last) 260.42 298.15 T
+ (copyDoFirst:MiddleLast:IfEmpty:) 71.42 284.15 T
+ (copy and iterate, with special behavior for \336rst) 260.42 284.15 T
+ (copyDoFirstLast:Middle:IfEmpty:) 71.42 270.15 T
+ (copy and iterate, with special behavior for ends) 260.42 270.15 T
+ (copyDoFirstMiddle:Last:IfEmpty:) 71.42 256.15 T
+ (copy and iterate, with special behavior for last) 260.42 256.15 T
+ 71.42 224.16 539.42 232.15 C
+ 71.42 230.14 539.42 230.14 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Reducing) 71.42 236.15 T
+ 4 F
+ (max) 71.42 214.16 T
+ (return maximum element) 197.42 214.16 T
+ (mean) 71.42 200.16 T
+ (return mean of elements) 197.42 200.16 T
+ (min) 71.42 186.16 T
+ (return minimum element) 197.42 186.16 T
+ (sum) 71.42 172.16 T
+ (return sum of elements) 197.42 172.16 T
+ (product) 71.42 158.16 T
+ (return product of elements) 197.42 158.16 T
+ (reduceW) 71.42 144.16 T
+ (ith:) 114.23 144.16 T
+ (evaluate reduction block with elements) 197.42 144.16 T
+ (reduceW) 71.42 130.16 T
+ (ith:IfEmpty:) 114.23 130.16 T
+ (evaluate reduction block with elements, evaluating block if empty) 197.42 130.16 T
+ 71.42 98.17 539.42 106.16 C
+ 71.42 104.14 539.42 104.14 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Removing) 71.42 110.16 T
+ 4 F
+ (remove:) 71.42 88.17 T
+ (remove element ) 197.42 88.17 T
+ 3 F
+ (n) 277.36 88.17 T
+ 4 F
+ (remove:IfAbsent:) 71.42 74.17 T
+ (remove element ) 197.42 74.17 T
+ 3 F
+ (n) 277.36 74.17 T
+ 4 F
+ (, evaluating block if absent) 283.36 74.17 T
+ (copyRemoveAll) 71.42 60.17 T
+ (return an empty copy of the collection) 197.42 60.17 T
+ FMENDPAGE
+ %%EndPage: "26" 84
+ %%Page: "27" 84
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-27) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Selector glossary) 470.86 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 71.42 696.12 539.42 704.11 C
+ 71.42 702.1 539.42 702.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Sear) 71.42 708.11 T
+ (ching) 92.96 708.11 T
+ 4 F
+ (includes:) 71.42 686.12 T
+ (test if element is member of the collection) 224.42 686.12 T
+ (occurrencesOf:) 71.42 672.12 T
+ (return number of occurences of element in collection) 224.42 672.12 T
+ (\336ndFirst:IfPresent:IfAbsent:) 71.42 658.12 T
+ 1.57 (evaluate present block on \336rst element found satisfying criteria) 224.42 658.12 P
+ (block; evaluate absent block if no such element) 224.42 644.12 T
+ 71.42 612.13 539.42 620.12 C
+ 71.42 618.1 539.42 618.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Sizing) 71.42 624.12 T
+ 4 F
+ (isEmpty) 71.42 602.13 T
+ (test if collection is empty) 197.42 602.13 T
+ (size) 71.42 588.13 T
+ (return number of elements in collection) 197.42 588.13 T
+ 71.42 556.14 539.42 564.13 C
+ 71.42 562.11 539.42 562.11 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (T) 71.42 568.13 T
+ (ransforming) 77.43 568.13 T
+ 4 F
+ (asBytes) 71.42 546.14 T
+ (return a byte vector with same elements) 197.42 546.14 T
+ (asString) 71.42 532.14 T
+ (return a string with same elements) 197.42 532.14 T
+ (asV) 71.42 518.14 T
+ (ector) 88.74 518.14 T
+ (return a vector with same elements) 197.42 518.14 T
+ (\336lterBy:Into:) 71.42 504.14 T
+ (add elements that satisfy \336lter block to a collection) 197.42 504.14 T
+ (mapBy:) 71.42 490.14 T
+ (add result of evaluating map block with each element to this collection) 197.42 490.14 T
+ (mapBy:Into:) 71.42 476.14 T
+ (add result of evaluating map block with each element to a collection) 197.42 476.14 T
+ (copyMappedBy:) 71.42 462.14 T
+ (return a copy) 197.42 462.14 T
+ (, with results of evaluating map block as elements) 259.92 462.14 T
+ 71.42 430.14 539.42 438.14 C
+ 71.42 436.12 539.42 436.12 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Dictionary-speci\336c) 71.42 442.14 T
+ 4 F
+ (includesKey:) 71.42 420.14 T
+ (test if dictionary holds a pair with this key \050trees also respond to this\051) 197.42 420.14 T
+ (removeKey:) 71.42 406.14 T
+ (remove element with this key) 197.42 406.14 T
+ (removeKey:IfAbsent:) 71.42 392.14 T
+ (remove element with this key) 197.42 392.14 T
+ (, evaluating block if absent) 338.55 392.14 T
+ (removeAll) 71.42 378.14 T
+ (remove all elements) 197.42 378.14 T
+ 71.42 346.15 539.42 354.14 C
+ 71.42 352.13 539.42 352.13 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (List-speci\336c) 71.42 358.14 T
+ 4 F
+ (addFirst:) 71.42 336.15 T
+ (add element to head of list) 197.42 336.15 T
+ (addLast:) 71.42 322.15 T
+ (add element to tail of list) 197.42 322.15 T
+ (removeFirst) 71.42 308.15 T
+ (remove \336rst element) 197.42 308.15 T
+ (removeLast) 71.42 294.15 T
+ (remove last element) 197.42 294.15 T
+ (removeAll) 71.42 280.15 T
+ (remove all elements) 197.42 280.15 T
+ (removeAllOccurences:) 71.42 266.15 T
+ (remove all occurrences of this element) 197.42 266.15 T
+ (reverseDo:) 71.42 252.15 T
+ (iterate backwards through list) 197.42 252.15 T
+ 71.42 220.16 539.42 228.15 C
+ 71.42 226.14 539.42 226.14 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Indexable-speci\336c) 71.42 232.15 T
+ 4 F
+ (\336rst) 71.42 210.16 T
+ (return the \336rst element) 197.42 210.16 T
+ (last) 71.42 196.16 T
+ (return the last element) 197.42 196.16 T
+ (\336rstKey) 71.42 182.16 T
+ (return the \336rst key) 197.42 182.16 T
+ (lastKey) 71.42 168.16 T
+ (return the last key) 197.42 168.16 T
+ (loopFrom:Do:) 71.42 154.16 T
+ (circularly iterate, starting from element ) 197.42 154.16 T
+ 3 F
+ (n) 388.61 154.16 T
+ 4 F
+ (copyAddLast:) 71.42 140.16 T
+ (return a copy of this collection with element added to end) 197.42 140.16 T
+ (copyFrom:) 71.42 126.16 T
+ (return a copy of this collection from element ) 197.42 126.16 T
+ 3 F
+ (n) 414.6 126.16 T
+ 4 F
+ (copyFrom:UpT) 71.42 112.16 T
+ (o:) 145.21 112.16 T
+ (return a copy of this collection from element ) 197.42 112.16 T
+ 3 F
+ (n) 414.6 112.16 T
+ 4 F
+ ( up to element ) 420.6 112.16 T
+ 3 F
+ (m) 491.89 112.16 T
+ 4 F
+ (copyW) 71.42 98.16 T
+ (ithoutLast) 105.58 98.16 T
+ (return a copy of this collection without the last element) 197.42 98.16 T
+ FMENDPAGE
+ %%EndPage: "27" 85
+ %%Page: "28" 85
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-28) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Selector glossary) 470.86 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 71.42 696.12 539.42 704.11 C
+ 71.42 702.1 539.42 702.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (V) 71.42 708.11 T
+ (ector) 77.42 708.11 T
+ (-speci\336c) 101.83 708.11 T
+ 4 F
+ (,) 71.42 686.12 T
+ (concatenation \050useful for string concatenation\051) 197.42 686.12 T
+ (copySize:) 71.42 672.12 T
+ (copy vector with size ) 197.42 672.12 T
+ 3 F
+ (n) 302.68 672.12 T
+ 4 F
+ (copySize:FillingW) 71.42 658.12 T
+ (ith:) 161.57 658.12 T
+ (copy vector with size ) 197.42 658.12 T
+ 3 F
+ (n) 302.68 658.12 T
+ 4 F
+ (, \336lling in any extra elements with second ar) 308.67 658.12 T
+ (g) 521.32 658.12 T
+ (\336rst:) 71.42 644.12 T
+ (change \336rst element) 197.42 644.12 T
+ (last:) 71.42 630.12 T
+ (change last element) 197.42 630.12 T
+ (\337atten) 71.42 616.12 T
+ (return a \337at vector \050\337attens ) 197.42 616.12 T
+ 12 F
+ (consVector) 330.32 616.12 T
+ 4 F
+ (s to a regular vector\051) 396.24 616.12 T
+ (sort) 71.42 602.12 T
+ (sort in place) 197.42 602.12 T
+ 71.42 570.13 539.42 578.12 C
+ 71.42 576.1 539.42 576.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (String-speci\336c) 71.42 582.12 T
+ 4 F
+ (at:PutByte:) 71.42 560.13 T
+ (change element ) 197.42 560.13 T
+ 3 F
+ (n) 275.36 560.13 T
+ 4 F
+ ( \050using byte version\051) 281.35 560.13 T
+ (at:PutByte:IfAbsent:) 71.42 546.13 T
+ (change element ) 197.42 546.13 T
+ 3 F
+ (n) 275.36 546.13 T
+ 4 F
+ ( \050using byte version\051; evaluating block if absent) 281.35 546.13 T
+ (byteAt:) 71.42 532.13 T
+ (return byte version of element ) 197.42 532.13 T
+ 3 F
+ (n) 344.98 532.13 T
+ 4 F
+ (byteAt:IfAbsent) 71.42 518.13 T
+ (return byte version of element ) 197.42 518.13 T
+ 3 F
+ (n) 344.98 518.13 T
+ 4 F
+ (; evaluating block if absent) 350.98 518.13 T
+ (\336rstByte) 71.42 504.13 T
+ (return byte version of \336rst character) 197.42 504.13 T
+ (lastByte) 71.42 490.13 T
+ (return byte version of last character) 197.42 490.13 T
+ (\336rstByte:) 71.42 476.13 T
+ (change \336rst character \050using byte version\051) 197.42 476.13 T
+ (lastByte:) 71.42 462.13 T
+ (change last character \050using byte version\051) 197.42 462.13 T
+ (isCapitalized) 71.42 448.13 T
+ (test if capitalized) 197.42 448.13 T
+ (isUncapitalized) 71.42 434.13 T
+ (test if not capitalized) 197.42 434.13 T
+ (capitalize) 71.42 420.13 T
+ (return capitalized form of receiver) 197.42 420.13 T
+ (uncapitalize) 71.42 406.13 T
+ (return uncapitalized form of receiver) 197.42 406.13 T
+ (asInteger) 71.42 392.13 T
+ (return the integer that the string represents) 197.42 392.13 T
+ 71.42 356.14 539.42 364.13 C
+ 71.42 362.11 539.42 362.11 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Indir) 71.42 368.13 T
+ (ect sends) 97.87 368.13 T
+ 71.42 328.14 539.42 336.14 C
+ 71.42 334.12 539.42 334.12 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Indir) 71.42 340.14 T
+ (ect send pr) 94.97 340.14 T
+ (otocol ) 147.15 340.14 T
+ 4 F
+ (\050like Smalltalk ) 180.13 340.14 T
+ 12 F
+ (perform) 254.1 340.14 T
+ 4 F
+ (\051) 300.24 340.14 T
+ (sendT) 71.42 318.14 T
+ (o:{W) 99.9 318.14 T
+ (ith:}) 125.83 318.14 T
+ (send receiver string as a message) 332.42 318.14 T
+ (sendT) 71.42 304.14 T
+ (o:DelegatingT) 99.9 304.14 T
+ (o:{W) 168.34 304.14 T
+ (ith:}) 194.27 304.14 T
+ (indirect delegated send) 332.42 304.14 T
+ (sendT) 71.42 290.14 T
+ (o:DelegatingT) 99.9 290.14 T
+ (o:W) 168.34 290.14 T
+ (ithAr) 188.52 290.14 T
+ (guments:) 213.62 290.14 T
+ (indirect delegated send with ar) 332.42 290.14 T
+ (g vector) 479.43 290.14 T
+ (sendT) 71.42 276.14 T
+ (o:W) 99.9 276.14 T
+ (ithAr) 120.07 276.14 T
+ (guments:) 145.17 276.14 T
+ (indirect send with ar) 332.42 276.14 T
+ (guments in a vector) 430.47 276.14 T
+ (resendT) 71.42 262.14 T
+ (o:{W) 109.21 262.14 T
+ (ith:}) 135.15 262.14 T
+ (indirect resend) 332.42 262.14 T
+ (resendT) 71.42 248.14 T
+ (o:W) 109.21 248.14 T
+ (ithAr) 129.39 248.14 T
+ (guments:) 154.49 248.14 T
+ (indirect resend with ar) 332.42 248.14 T
+ (guments in a vector) 439.79 248.14 T
+ 71.42 216.15 539.42 224.14 C
+ 71.42 222.13 539.42 222.13 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Message pr) 71.42 228.14 T
+ (otocol) 126.61 228.14 T
+ 4 F
+ (send) 71.42 206.15 T
+ (evaluate a message object \050perform the send\051) 233.42 206.15 T
+ (receiver:) 71.42 192.15 T
+ (set receiver of the message object) 233.42 192.15 T
+ (selector:) 71.42 178.15 T
+ (set selector of the message object) 233.42 178.15 T
+ (methodHolder:) 71.42 164.15 T
+ (set method holder of the message object) 233.42 164.15 T
+ (delegatee:) 71.42 150.15 T
+ (set delegatee of the message object) 233.42 150.15 T
+ (ar) 71.42 136.15 T
+ (guments:) 80.53 136.15 T
+ (set ar) 233.42 136.15 T
+ (guments \050packaged in a vector\051 of the message object) 258.85 136.15 T
+ (receiver:Selector:) 71.42 122.15 T
+ (set receiver and selector of the message object) 233.42 122.15 T
+ (receiver:Selector:Ar) 71.42 108.15 T
+ (guments:) 168.45 108.15 T
+ (set receiver) 233.42 108.15 T
+ (, selector) 287.89 108.15 T
+ (, and ar) 330.7 108.15 T
+ (guments of the message object) 366.12 108.15 T
+ (receiver:Selector:T) 71.42 94.15 T
+ (ype:Delegatee:MethodHolder:Ar) 162.5 94.15 T
+ (guments:) 320.83 94.15 T
+ (set all components of the message object) 233.42 80.15 T
+ FMENDPAGE
+ %%EndPage: "28" 86
+ %%Page: "29" 86
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-29) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Selector glossary) 470.86 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 71.42 696.12 539.42 704.11 C
+ 71.42 702.1 539.42 702.1 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Re\337ection) 71.42 708.11 T
+ 4 F
+ (re\337ect:) 71.42 686.12 T
+ (returns a mirror on the ar) 197.42 686.12 T
+ (gument) 317.44 686.12 T
+ (re\337ectee) 71.42 672.12 T
+ (returns the object the mirror receiver re\337ects) 197.42 672.12 T
+ (nameAt:) 71.42 658.12 T
+ (returns the name \050a string\051 of slot ) 197.42 658.12 T
+ 3 F
+ (n) 360.31 658.12 T
+ 4 F
+ (contentsAt:) 71.42 644.12 T
+ (returns a mirror on the contents of slot ) 197.42 644.12 T
+ 3 F
+ (n) 384.63 644.12 T
+ 4 F
+ (isAssignableAt:) 71.42 630.12 T
+ (tests if slot ) 197.42 630.12 T
+ 3 F
+ (n) 252.4 630.12 T
+ 4 F
+ ( is an assignable slot) 258.4 630.12 T
+ (isParentAt:) 71.42 616.12 T
+ (tests if slot ) 197.42 616.12 T
+ 3 F
+ (n) 252.4 616.12 T
+ 4 F
+ ( is a parent slot) 258.4 616.12 T
+ (isAr) 71.42 602.12 T
+ (gumentAt:) 91.86 602.12 T
+ (tests if slot ) 197.42 602.12 T
+ 3 F
+ (n) 252.4 602.12 T
+ 4 F
+ ( is an ar) 258.4 602.12 T
+ (gument slot) 295.82 602.12 T
+ (parentPriorityAt:) 71.42 588.12 T
+ (returns the parent priority of slot ) 197.42 588.12 T
+ 3 F
+ (n) 356.65 588.12 T
+ 4 F
+ (slotAt:) 71.42 574.12 T
+ (returns a slot object representing slot ) 197.42 574.12 T
+ 3 F
+ (n) 377.3 574.12 T
+ 4 F
+ (visibilityAt:) 71.42 560.12 T
+ (returns a visibility object representing visibility of slot ) 197.42 560.12 T
+ 3 F
+ (n) 461.28 560.12 T
+ 4 F
+ (all) 71.42 546.12 T
+ (returns a vector of mirrors on all objects in the system) 197.42 546.12 T
+ (references) 71.42 532.12 T
+ (returns a vector of ) 197.42 532.12 T
+ (all references to the mirror receiver) 288.01 532.12 T
+ (implementors) 71.42 518.12 T
+ (all objects that implement slot named by receiver) 197.42 518.12 T
+ (\325) 434.04 518.12 T
+ (s re\337ectee \050a string\051) 437.38 518.12 T
+ 71.42 482.13 539.42 490.12 C
+ 71.42 488.1 539.42 488.1 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Memory) 71.42 494.12 T
+ 4 F
+ (garbageCollect) 71.42 472.13 T
+ (force a full garbage collection) 197.42 472.13 T
+ (scavenge) 71.42 458.13 T
+ (force a scavenge) 197.42 458.13 T
+ 71.42 422.14 539.42 430.13 C
+ 71.42 428.11 539.42 428.11 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (Pr) 71.42 434.13 T
+ (ocesses) 83.86 434.13 T
+ 4 F
+ (abort) 71.42 412.14 T
+ (quit from executing S) 197.42 412.14 T
+ 6 F
+ (ELF) 301.7 412.14 T
+ 4 F
+ ( code \050abnormal completion\051) 321.23 412.14 T
+ (terminate) 71.42 398.14 T
+ (quit from executing S) 197.42 398.14 T
+ 6 F
+ (ELF) 301.7 398.14 T
+ 4 F
+ ( code \050normal completion\051) 321.23 398.14 T
+ (stackT) 71.42 384.14 T
+ (race) 102.98 384.14 T
+ (print current S) 197.42 384.14 T
+ 6 F
+ (ELF) 266.71 384.14 T
+ 4 F
+ ( stack) 286.24 384.14 T
+ (abortSelf) 71.42 370.14 T
+ (dump stack and quit from S) 197.42 370.14 T
+ 6 F
+ (ELF) 330.35 370.14 T
+ 4 F
+ ( code) 349.88 370.14 T
+ 71.42 334.14 539.42 342.14 C
+ 71.42 340.12 539.42 340.12 2 L
+ 0.5 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 2 F
+ 0 X
+ 0 K
+ (V) 71.42 346.14 T
+ (irtual machine-generated messages) 79.64 346.14 T
+ 71.42 306.15 539.42 314.14 C
+ 71.42 312.13 539.42 312.13 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Lookup err) 71.42 318.14 T
+ (ors) 124.61 318.14 T
+ 4 F
+ (ambiguousSelector:T) 71.42 296.15 T
+ (ype:Delegatee:MethodHolder:Ar) 173.19 296.15 T
+ (guments:) 331.51 296.15 T
+ (lookup found more than one matching slot) 197.42 282.15 T
+ (mismatchedAr) 71.42 268.15 T
+ (gumentCountSelector:T) 141.82 268.15 T
+ (ype:Delegatee:MethodHolder:Ar) 256.25 268.15 T
+ (guments:) 414.58 268.15 T
+ -0.5 (number of ar) 197.42 254.15 P
+ -0.5 (gs supplied to ) 258.16 254.15 P
+ 12 F
+ -1.1 (_Perform) 326.29 254.15 P
+ 4 F
+ -0.5 ( primitive does not match selector) 379.03 254.15 P
+ (missingDelegatee:T) 71.42 240.15 T
+ (ype:Delegatee:MethodHolder:Ar) 166.52 240.15 T
+ (guments:) 324.85 240.15 T
+ (parent slot through which resend was delegated was not found) 197.42 226.15 T
+ (noPublicSelector:T) 71.42 212.15 T
+ (ype:Delegatee:MethodHolder:Ar) 163.2 212.15 T
+ (guments:) 321.52 212.15 T
+ -0.24 (lookup found no matching accessible slot \050but found a matching private) 197.42 198.15 P
+ (slot\051) 197.42 184.15 T
+ (performT) 71.42 170.15 T
+ (ypeErrorSelector:T) 116.54 170.15 T
+ (ype:Delegatee:MethodHolder:Ar) 208.29 170.15 T
+ (guments:) 366.62 170.15 T
+ (\336rst ar) 197.42 156.15 T
+ (gument to the ) 228.19 156.15 T
+ 12 F
+ (_Perform) 297.15 156.15 T
+ 4 F
+ ( primitive was not a canonical string) 349.88 156.15 T
+ (primitive:FailedW) 71.42 142.15 T
+ (ith:) 159.56 142.15 T
+ (the named primitive failed \050with error given by second ar) 197.42 142.15 T
+ (gument\051) 472 142.15 T
+ (unde\336nedSelector:T) 71.42 128.15 T
+ (ype:Delegatee:MethodHolder:Ar) 167.85 128.15 T
+ (guments:) 326.18 128.15 T
+ (lookup found no matching slot) 197.42 114.15 T
+ FMENDPAGE
+ %%EndPage: "29" 87
+ %%Page: "30" 87
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-30) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (Selector glossary) 470.86 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 71.42 696.12 539.42 704.11 C
+ 71.42 702.1 539.42 702.1 2 L
+ 0.1 H
+ 0 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 3 F
+ 0 X
+ 0 K
+ (Other system-trigger) 71.42 708.11 T
+ (ed messages) 171.24 708.11 T
+ 4 F
+ (preRead) 71.42 686.12 T
+ (slot to evaluate before reading a snapshot) 197.42 686.12 T
+ (postRead) 71.42 672.12 T
+ (slot to evaluate after reading a snapshot) 197.42 672.12 T
+ (preW) 71.42 658.12 T
+ (rite) 97.58 658.12 T
+ (slot to evaluate before writing a snapshot) 197.42 658.12 T
+ (postW) 71.42 644.12 T
+ (rite) 102.26 644.12 T
+ (slot to evaluate after writing a snapshot) 197.42 644.12 T
+ FMENDPAGE
+ %%EndPage: "30" 88
+ %%Page: "31" 88
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (II-31) 296.01 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (The S) 71.43 749.62 T
+ 1 F
+ (ELF) 95.02 749.62 T
+ 0 F
+ ( World) 111 749.62 T
+ (References) 495.03 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (Acknowledgment) 71.42 705.45 T
+ 4 F
+ (Joseph Pallas co-authored the sections detailing the collection hierarchy) 71.42 678.11 T
+ (.) 415.73 678.11 T
+ 9 F
+ (Refer) 71.42 637.45 T
+ (ences) 109.31 637.45 T
+ 4 F
+ ([CU90]) 71.42 610.11 T
+ 0.71 (Bay-W) 143.42 610.11 P
+ 0.71 (ei Chang and David Ungar) 177.1 610.11 P
+ 0.71 (. ) 307.84 610.11 P
+ 0.71 (Experiencing S) 314.54 610.11 P
+ 6 F
+ 0.65 (ELF) 388.86 610.11 P
+ 4 F
+ 0.71 ( Objects: An Object-Based) 408.4 610.11 P
+ (Artificial Reality.) 143.42 596.11 T
+ ( Unpublished manuscript, 1990.) 228.04 596.11 T
+ ([UCC91]) 71.42 570.11 T
+ 0.51 (David Ungar) 143.42 570.11 P
+ 0.51 (, Craig Chambers, Bay-W) 205.73 570.11 P
+ 0.51 (ei Chang, and Urs H\232lzle. ) 331.2 570.11 P
+ 0.51 (Organizing Pro-) 461.31 570.11 P
+ 1.1 (gram Without Classe) 143.42 556.11 P
+ 1.1 (s. T) 246.89 556.11 P
+ 1.1 (o be published in ) 265.14 556.11 P
+ 3 F
+ 1.1 (Lisp and Symbolic Computation 4\0503\051) 354.8 556.11 P
+ 4 F
+ 1.1 (,) 536.42 556.11 P
+ (June, 1991.) 143.42 542.11 T
+ FMENDPAGE
+ %%EndPage: "31" 89
+ %%Page: "1" 89
+ 612 792 0 FMBEGINPAGE
+ 72 63 540 747.36 R
+ 7 X
+ 0 K
+ V
+ 7 F
+ 0 X
+ (Part III) 271.7 641.36 T
+ (S) 139.13 591.36 T
+ 8 F
+ (ELF) 152.47 591.36 T
+ 7 F
+ ( Language Reference Manual) 189.8 591.36 T
+ FMENDPAGE
+ %%EndPage: "1" 90
+ %%Page: "2" 90
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 71.42 742.9 539.42 742.9 2 L
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 F
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Table of Contents) 467.8 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 2 F
+ 0 X
+ (T) 71.42 708.11 T
+ (able of Contents) 78.32 708.11 T
+ 4 F
+ (1) 71.42 674.11 T
+ (Introduction) 107.42 674.11 T
+ 0 F
+ (.............................................................................................................................................) 167.41 674.11 T
+ (III-1) 521.11 674.11 T
+ 4 F
+ (2) 71.42 646.11 T
+ (Objects) 107.42 646.11 T
+ 0 F
+ (......................................................................................................................................................) 144.92 646.11 T
+ (III-2) 521.11 646.11 T
+ (2.1) 107.42 631.45 T
+ (Syntax) 143.42 631.45 T
+ (...........................................................................................................................................) 172.4 631.45 T
+ (III-2) 521.11 631.45 T
+ (2.2) 107.42 617.45 T
+ (Data objects) 143.42 617.45 T
+ (..................................................................................................................................) 194.89 617.45 T
+ (III-2) 521.11 617.45 T
+ (2.3) 107.42 603.45 T
+ (The assignment primitive) 143.42 603.45 T
+ (.............................................................................................................) 247.36 603.45 T
+ (III-2) 521.11 603.45 T
+ (2.4) 107.42 589.45 T
+ (Method objects) 143.42 589.45 T
+ (.............................................................................................................................) 207.39 589.45 T
+ (III-3) 521.11 589.45 T
+ (2.5) 107.42 575.45 T
+ (Construction of object literals) 143.42 575.45 T
+ (......................................................................................................) 264.85 575.45 T
+ (III-5) 521.11 575.45 T
+ 4 F
+ (3) 71.42 550.11 T
+ (Slot descriptors) 107.42 550.11 T
+ 0 F
+ (.......................................................................................................................................) 182.4 550.11 T
+ (III-7) 521.11 550.11 T
+ (3.1) 107.42 535.45 T
+ (Slot privacy) 143.42 535.45 T
+ (...................................................................................................................................) 192.39 535.45 T
+ (III-7) 521.11 535.45 T
+ (3.2) 107.42 521.45 T
+ (Read-only slots) 143.42 521.45 T
+ (.............................................................................................................................) 207.39 521.45 T
+ (III-7) 521.11 521.45 T
+ (3.3) 107.42 507.45 T
+ (Read/write slots) 143.42 507.45 T
+ (............................................................................................................................) 209.88 507.45 T
+ (III-8) 521.11 507.45 T
+ (3.4) 107.42 493.45 T
+ (Slots containing methods) 143.42 493.45 T
+ (..............................................................................................................) 244.87 493.45 T
+ (III-9) 521.11 493.45 T
+ (3.5) 107.42 479.45 T
+ (Parent slots) 143.42 479.45 T
+ (..................................................................................................................................) 189.9 479.45 T
+ (III-10) 516.12 479.45 T
+ 4 F
+ (4) 71.42 454.11 T
+ (Expressions) 107.42 454.11 T
+ 0 F
+ (...........................................................................................................................................) 167.41 454.11 T
+ (III-1) 516.49 454.11 T
+ (1) 534.43 454.11 T
+ (4.1) 107.42 439.45 T
+ (Unary messages) 143.42 439.45 T
+ (..........................................................................................................................) 209.88 439.45 T
+ (III-1) 516.49 439.45 T
+ (1) 534.43 439.45 T
+ (4.2) 107.42 425.45 T
+ (Binary messages) 143.42 425.45 T
+ (.........................................................................................................................) 212.38 425.45 T
+ (III-12) 516.12 425.45 T
+ (4.3) 107.42 411.45 T
+ (Keyword messages) 143.42 411.45 T
+ (.....................................................................................................................) 222.38 411.45 T
+ (III-12) 516.12 411.45 T
+ (4.4) 107.42 397.45 T
+ (Implicit-receiver messages) 143.42 397.45 T
+ (.........................................................................................................) 252.36 397.45 T
+ (III-13) 516.12 397.45 T
+ (4.5) 107.42 383.45 T
+ (Resending messages) 143.42 383.45 T
+ (...................................................................................................................) 227.38 383.45 T
+ (III-14) 516.12 383.45 T
+ 4 F
+ (5) 71.42 358.11 T
+ (Message lookup semantics) 107.42 358.11 T
+ 0 F
+ (...............................................................................................................) 237.37 358.11 T
+ (III-15) 516.12 358.11 T
+ (5.1) 107.42 343.45 T
+ (Message send) 143.42 343.45 T
+ (..............................................................................................................................) 199.89 343.45 T
+ (III-15) 516.12 343.45 T
+ (5.2) 107.42 329.45 T
+ (The lookup algorithm) 143.42 329.45 T
+ (.................................................................................................................) 232.37 329.45 T
+ (III-16) 516.12 329.45 T
+ (5.3) 107.42 315.45 T
+ (The sender path tiebreaker) 143.42 315.45 T
+ (..........................................................................................................) 249.86 315.45 T
+ (III-17) 516.12 315.45 T
+ (5.4) 107.42 301.45 T
+ (Privacy) 143.42 301.45 T
+ (........................................................................................................................................) 174.9 301.45 T
+ (III-17) 516.12 301.45 T
+ (5.5) 107.42 287.45 T
+ (Resend) 143.42 287.45 T
+ (........................................................................................................................................) 174.9 287.45 T
+ (III-18) 516.12 287.45 T
+ 4 F
+ (6) 71.42 262.11 T
+ (Lexical elements) 107.42 262.11 T
+ 0 F
+ (..................................................................................................................................) 189.9 262.11 T
+ (III-21) 516.12 262.11 T
+ (6.1) 107.42 247.45 T
+ (Character set) 143.42 247.45 T
+ (...............................................................................................................................) 197.39 247.45 T
+ (III-21) 516.12 247.45 T
+ (6.2) 107.42 233.45 T
+ (Identi\336ers) 143.42 233.45 T
+ (....................................................................................................................................) 184.9 233.45 T
+ (III-21) 516.12 233.45 T
+ (6.3) 107.42 219.45 T
+ (Keywords) 143.42 219.45 T
+ (....................................................................................................................................) 184.9 219.45 T
+ (III-21) 516.12 219.45 T
+ (6.4) 107.42 205.45 T
+ (Ar) 143.42 205.45 T
+ (guments) 153.79 205.45 T
+ (..................................................................................................................................) 189.9 205.45 T
+ (III-22) 516.12 205.45 T
+ (6.5) 107.42 191.45 T
+ (Operators) 143.42 191.45 T
+ (....................................................................................................................................) 184.9 191.45 T
+ (III-22) 516.12 191.45 T
+ (6.6) 107.42 177.45 T
+ (Numbers) 143.42 177.45 T
+ (.....................................................................................................................................) 182.4 177.45 T
+ (III-22) 516.12 177.45 T
+ (6.7) 107.42 163.45 T
+ (Strings) 143.42 163.45 T
+ (.........................................................................................................................................) 172.4 163.45 T
+ (III-23) 516.12 163.45 T
+ (6.8) 107.42 149.45 T
+ (Comments) 143.42 149.45 T
+ (...................................................................................................................................) 187.4 149.45 T
+ (III-24) 516.12 149.45 T
+ 4 F
+ (Appendix A) 71.42 116.11 T
+ (Glossary) 143.42 116.11 T
+ 0 F
+ (...................................................................................................................................) 187.4 116.11 T
+ (III-25) 516.12 116.11 T
+ 4 F
+ (Appendix B) 71.42 102.11 T
+ (Lexical overview) 143.42 102.11 T
+ 0 F
+ (...................................................................................................................) 227.38 102.11 T
+ (III-28) 516.12 102.11 T
+ 4 F
+ (Appendix C) 71.42 88.11 T
+ (Syntax overview) 143.42 88.11 T
+ 0 F
+ (....................................................................................................................) 224.88 88.11 T
+ (III-29) 516.12 88.11 T
+ 4 F
+ (Appendix D) 71.42 74.11 T
+ (Built-in types) 143.42 74.11 T
+ 0 F
+ (..........................................................................................................................) 209.88 74.11 T
+ (III-31) 516.12 74.11 T
+ FMENDPAGE
+ %%EndPage: "2" 91
+ 7 12 /Courier FMDEFINEFONT
+ %%Page: "1" 91
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-1) 296.85 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Introduction) 490.01 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (1  Intr) 71.42 705.45 T
+ (oduction) 114.66 705.45 T
+ 4 F
+ -0.3 (This document speci\336es S) 71.42 682.11 P
+ 6 F
+ -0.28 (ELF) 196.11 682.11 P
+ 4 F
+ -0.3 (\325) 215.65 682.11 P
+ -0.3 (s syntax and semantics. An early version of the syntax was present-) 218.98 682.11 P
+ -0.23 (ed in the original S) 71.42 668.11 P
+ 6 F
+ -0.21 (ELF) 161.78 668.11 P
+ 4 F
+ -0.23 ( paper by Ungar and Smith [US87]; this document incorporates subsequent) 181.31 668.11 P
+ 0.34 (changes to the language. The presentation assumes a basic understanding of object-oriented con-) 71.42 654.11 P
+ (cepts.) 71.42 640.11 T
+ 0.12 (The syntax is described using Extended Backus-Naur Form \050EBNF\051. T) 71.42 620.11 P
+ 0.12 (erminal symbols appear in) 412.14 620.11 P
+ 7 F
+ 0.15 (Courier) 71.42 606.11 P
+ 4 F
+ 0.06 ( and are enclosed in single quotes; they should appear in code as written \050not including) 121.8 606.11 P
+ 0.75 (the single quotes\051. Non-terminal symbols are italicized. The following table describes the meta-) 71.42 592.11 P
+ (symbols:) 71.42 578.11 T
+ (A glossary of terms used in this document can be found in Appendix A.) 71.42 392.11 T
+ 71.42 55.44 539.42 716.11 C
+ 82.37 408.11 528.48 574.11 C
+ 82.37 408.11 528.48 574.11 R
+ 7 X
+ 0 K
+ V
+ 98.48 415.11 530.48 546.11 R
+ V
+ 0 F
+ 0 X
+ (M) 107.48 539.45 T
+ 11 F
+ (ETA-) 116.36 539.45 T
+ 0 F
+ (S) 134.57 539.45 T
+ 11 F
+ (YMBOL) 140.13 539.45 T
+ 0 F
+ (F) 204.48 539.45 T
+ 11 F
+ (UNCTION) 210.04 539.45 T
+ 0 F
+ (D) 294.48 539.45 T
+ 11 F
+ (ESCRIPTION) 301.7 539.45 T
+ 0 F
+ (\050 and \051) 107.48 519.45 T
+ (grouping) 204.48 519.45 T
+ (used to group syntactic constructions) 294.48 519.45 T
+ ([ and ]) 107.48 499.45 T
+ (option) 204.48 499.45 T
+ (encloses an optional construction) 294.48 499.45 T
+ ({ and }) 107.48 479.45 T
+ (repetition) 204.48 479.45 T
+ (encloses a construction that may be repeated zero or) 294.48 479.45 T
+ (more times) 294.48 467.45 T
+ (|) 107.48 447.45 T
+ (alternative) 204.48 447.45 T
+ (separates alternative constructions) 294.48 447.45 T
+ 18 F
+ (\256) 107.48 427.45 T
+ 0 F
+ (production) 204.48 427.45 T
+ (separates the left and right hand sides of a production) 294.48 427.45 T
+ 185.72 554.22 185.72 418.22 2 L
+ 0.5 H
+ 2 Z
+ N
+ 95.69 552.22 521.48 552.22 2 L
+ N
+ 95.69 554.11 521.48 554.11 2 L
+ N
+ 95.75 418.22 521.64 418.22 2 L
+ N
+ 95.69 532.11 521.48 532.11 2 L
+ N
+ 95.69 534.11 521.48 534.11 2 L
+ N
+ 95.76 553.88 95.76 418.34 2 L
+ N
+ 521.79 554.17 521.79 418.09 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "1" 92
+ %%Page: "2" 92
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-2) 296.85 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Objects) 508.89 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (2  Objects) 71.42 705.45 T
+ 3 F
+ -0.46 (Objects) 71.42 682.11 P
+ 4 F
+ -0.46 ( are the fundamental entities in S) 108.06 682.11 P
+ 6 F
+ -0.43 (ELF) 263.17 682.11 P
+ 4 F
+ -0.46 (; every entity in a S) 282.71 682.11 P
+ 6 F
+ -0.43 (ELF) 373.99 682.11 P
+ 4 F
+ -0.46 ( program is represented by one) 393.53 682.11 P
+ 0.1 (or more objects. ) 71.42 668.11 P
+ 0.1 (Even control is handled by objects: ) 152.32 668.11 P
+ 3 F
+ 0.1 (blocks) 324.8 668.11 P
+ 4 F
+ 0.1 ( \050\244III-2.4.4\051 are ) 355.44 668.11 P
+ 0.1 (S) 433.32 668.11 P
+ 6 F
+ 0.09 (ELF) 439.99 668.11 P
+ 4 F
+ 0.1 ( closures used to) 459.52 668.11 P
+ -0.57 (implement user-defined control structures. A) 71.42 654.11 P
+ -0.57 (n object is co) 284.64 654.11 P
+ -0.57 (mposed of a \050possibly empty\051 set of ) 346.55 654.11 P
+ 3 F
+ -0.57 (slots) 517.43 654.11 P
+ 4 F
+ -0.15 (and, optionally, ) 71.42 640.11 P
+ 3 F
+ -0.15 (code) 149.07 640.11 P
+ 4 F
+ -0.15 ( \050\244III-2.4.1\051. A slot is a name-value pair; slots contain references to other ob-) 171.72 640.11 P
+ (jects. When a slot is found during a ) 71.42 626.11 T
+ 3 F
+ (message lookup) 244.31 626.11 T
+ 4 F
+ ( \050\244III-5\051 the object in the slot is evaluated.) 320.59 626.11 T
+ 0.09 (Although everything is an object in S) 71.42 606.11 P
+ 6 F
+ 0.08 (ELF) 251.17 606.11 P
+ 4 F
+ 0.09 (, not all objects serve the same purpose; certain kinds of) 269.75 606.11 P
+ -0.28 (objects occur frequently enough in specialized roles to merit distinct terminology and syntax. This) 71.42 592.11 P
+ 0.29 (chapter introduces these kinds of objects, namely data objects \050\322plain\323 objects\051 and the three dif-) 71.42 578.11 P
+ (ferent kinds of methods.) 71.42 564.11 T
+ 10 F
+ (2.1  Syntax) 71.42 530.78 T
+ 3 F
+ 0.79 (Object literals) 71.42 510.11 P
+ 4 F
+ 0.79 ( are delimited by parentheses \050\324) 141.18 510.11 P
+ 7 F
+ 1.9 (\050) 296.02 510.11 P
+ 4 F
+ 0.79 (\325 and \324) 303.22 510.11 P
+ 7 F
+ 1.9 (\051) 336.1 510.11 P
+ 4 F
+ 0.79 (\325\051. W) 343.3 510.11 P
+ 0.79 (ithin the parentheses, an object de-) 368.92 510.11 P
+ 0.1 (scription consists of a list of slots, delimited by vertical bars \050\324) 71.42 496.11 P
+ 7 F
+ 0.24 (|) 371.66 496.11 P
+ 4 F
+ 0.1 (\325\051, followed by the code to be ex-) 378.86 496.11 P
+ (ecuted when the object is evaluated. Both slot list and code are optional. ) 71.42 482.11 T
+ -0.12 (Blocks) 71.42 462.11 P
+ -0.12 ( are written like other objects, except that square brackets \050\324) 104.74 462.11 P
+ 7 F
+ -0.28 ([) 390.32 462.11 P
+ 4 F
+ -0.12 (\325 and \324) 397.52 462.11 P
+ 7 F
+ -0.28 (]) 428.58 462.11 P
+ 4 F
+ -0.12 (\325\051 are used in place of) 435.78 462.11 P
+ (parentheses.) 71.42 448.11 T
+ -0.58 (A ) 71.42 428.11 P
+ 3 F
+ -0.58 (slot list ) 82.5 428.11 P
+ 4 F
+ -0.58 (consists of a \050possibly empty\051 sequence of ) 119.34 428.11 P
+ 3 F
+ -0.58 (slot descriptors) 321.48 428.11 P
+ 4 F
+ -0.58 ( \050\244III-3\051, separated by periods.) 395.2 428.11 P
+ (A period at the end of the slot list is optional.) 71.42 414.11 T
+ 0.05 (The ) 71.42 394.11 P
+ 0.05 (code) 93.12 394.11 P
+ 0.05 ( for an object is a sequence of ) 115.76 394.11 P
+ 3 F
+ 0.05 (expr) 262.04 394.11 P
+ 0.05 (essions) 282.91 394.11 P
+ 4 F
+ 0.05 ( \050\244III-4\051, each separated by a period; a trailing) 317.56 394.11 P
+ 0.06 (period is optional. Each expression consists of a series of ) 71.42 380.11 P
+ 3 F
+ 0.06 (message sends) 348.85 380.11 P
+ 4 F
+ 0.06 ( and ) 419.19 380.11 P
+ 3 F
+ 0.06 (literals) 442.63 380.11 P
+ 4 F
+ 0.06 (. The last ex-) 476.62 380.11 P
+ (pression in a code body may be preceded with a \324) 71.42 366.11 T
+ 7 F
+ (^) 308.57 366.11 T
+ 4 F
+ (\325 operator \050\244III-2.4.1\051.) 315.77 366.11 T
+ 10 F
+ (2.2  Data objects) 71.42 332.78 T
+ 3 F
+ -0.25 (Data objects) 71.42 312.11 P
+ 4 F
+ -0.25 ( are objects without code. The simplest object is ) 132.13 312.11 P
+ 7 F
+ -0.61 (\050\051) 363.69 312.11 P
+ 4 F
+ -0.25 (, an empty object. In general, data) 378.08 312.11 P
+ -0.26 (objects can have any number of slots. For example, the object ) 71.42 298.11 P
+ 7 F
+ -0.62 (\050 | x = 17. y = 18 | \051) 368.01 298.11 P
+ 4 F
+ -0.26 ( has) 520.7 298.11 P
+ (two slots, ) 71.42 284.11 T
+ 7 F
+ (x) 120.4 284.11 T
+ 4 F
+ ( and ) 127.6 284.11 T
+ 7 F
+ (y) 150.92 284.11 T
+ 4 F
+ (. ) 157.33 284.11 T
+ (A data object returns itself when evaluated.) 71.42 206.86 T
+ 10 F
+ (2.3  The assignment primitive) 71.42 173.53 T
+ 4 F
+ -0.36 (A slot may contain the assignment primitive \050i.e., the slot is an ) 71.42 152.86 P
+ 3 F
+ -0.36 (assignment slot) 370.64 152.86 P
+ 4 F
+ -0.36 (, \244III-3.3) 444.58 152.86 P
+ -0.36 (\051. When an) 487.19 152.86 P
+ 0.12 (assignment slot is evaluated, the ar) 71.42 138.86 P
+ 0.12 (gument to the message is stored in the corresponding ) 239.05 138.86 P
+ 3 F
+ 0.12 (data slot) 497.65 138.86 P
+ 4 F
+ -0.02 (\050\244III-3\051 in the same object \050the slot whose name is the assignment slot\325) 71.42 124.86 P
+ -0.02 (s name without the trailing) 410.92 124.86 P
+ (colon\051, and the ) 71.42 110.86 T
+ 3 F
+ (r) 146.04 110.86 T
+ (eceiver) 150.26 110.86 T
+ 4 F
+ ( \050\244III-4\051 is returned as the result.) 184.88 110.86 T
+ 71.42 55.44 539.42 716.11 C
+ 84.44 222.86 526.41 280.11 C
+ 84.44 222.86 526.41 280.11 R
+ 7 X
+ 0 K
+ V
+ 271.65 235.12 385.65 268.18 R
+ 3 X
+ V
+ 268.65 238.12 382.65 271.18 R
+ 7 X
+ V
+ 1 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (y) 293.9 242.99 T
+ 269.65 254.62 382.65 254.62 2 L
+ 0.5 H
+ N
+ 324.6 270.86 324.6 238.12 2 L
+ N
+ (x) 294.9 259.56 T
+ (17) 346.55 259.56 T
+ (18) 346.55 243.12 T
+ (slots) 186.02 250.99 T
+ 252.94 263.13 261.9 262.26 253.84 258.25 253.39 260.69 4 Y
+ V
+ 212.8 253.33 254.38 260.87 2 L
+ N
+ 253.84 248.41 261.9 244.4 252.94 243.53 253.39 245.97 4 Y
+ V
+ 212.8 253.33 254.38 245.78 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "2" 93
+ %%Page: "3" 93
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-3) 296.85 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Objects) 508.89 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 10 F
+ 0 X
+ (2.4  Method objects) 71.42 706.78 T
+ 4 F
+ -0.11 (The feature that distinguishes a ) 71.42 686.11 P
+ 3 F
+ -0.11 (method object) 223.76 686.11 P
+ 4 F
+ -0.11 ( from a data object is that it has code, while the data) 291.27 686.11 P
+ -0.31 (object does not. Evaluating a method object does not simply return the object itself, as with simple) 71.42 672.11 P
+ -0.49 (data objects; instead, its code is executed, and that result is returned. There are three kinds of meth-) 71.42 658.11 P
+ (ods: outer methods, inner methods, and block methods. ) 71.42 644.11 T
+ 2 F
+ (2.4.1  Code) 71.42 612.11 T
+ 3 F
+ 0.17 (Code) 71.42 592.11 P
+ 4 F
+ 0.17 ( is a sequence of ) 96.74 592.11 P
+ 3 F
+ 0.17 (expressions) 179.85 592.11 P
+ 4 F
+ 0.17 ( \050\244III-4\051. The expressions are evaluated in order) 235.81 592.11 P
+ 0.17 (, and all results) 466.3 592.11 P
+ -0.37 (are discarded except for the result of the last expression evaluated, which becomes the result of the) 71.42 578.11 P
+ (code\325) 71.42 564.11 T
+ (s evaluation.) 97.4 564.11 T
+ -0.32 (The actual ar) 71.42 544.11 P
+ -0.32 (guments in a message send are evaluated from left to right before the message is sent.) 133.18 544.11 P
+ (For instance, in the message send) 71.42 530.11 T
+ 7 F
+ (1 to: 5 * i By: 2 * j Do: [|:k | k print ]) 143.42 510.11 T
+ 2.51 (1) 71.42 490.11 P
+ 4 F
+ 1.05 ( is evaluated \336rst, then ) 78.62 490.11 P
+ 7 F
+ 2.51 (5 * i) 195.12 490.11 P
+ 4 F
+ 1.05 (, then ) 236.13 490.11 P
+ 7 F
+ 2.51 (2 * j) 267.87 490.11 P
+ 4 F
+ 1.05 (, and then ) 308.88 490.11 P
+ 7 F
+ 2.51 ([|:k | k print]) 361.99 490.11 P
+ 4 F
+ 1.05 (. Finally) 477.47 490.11 P
+ 1.05 (, the) 517.72 490.11 P
+ 7 F
+ (to:By:Do:) 71.42 476.11 T
+ 4 F
+ ( message is sent.) 136.19 476.11 T
+ 0.61 (The \324) 71.42 456.11 P
+ 7 F
+ 1.45 (^) 97.67 456.11 P
+ 4 F
+ 0.61 (\325 operator returns from the activation of the method\325) 104.87 456.11 P
+ 0.61 (s ) 360.19 456.11 P
+ 3 F
+ 0.61 (home) 368.46 456.11 P
+ 4 F
+ 0.61 ( \050the lexically enclosing outer) 394.44 456.11 P
+ -0.24 (method, if the method is not already an outer method\051, not just from the method itself; this implies) 71.42 442.11 P
+ 1.09 (a forced return from all intervening activations. Such returns are called ) 71.42 428.11 P
+ 3 F
+ 1.09 (non-local r) 426.43 428.11 P
+ 1.09 (eturns) 480.71 428.11 P
+ 4 F
+ 1.09 ( since) 510.69 428.11 P
+ 0.5 (they may \322return through\323 several methods \050e.g., from within a block\051. In this case, the result of) 71.42 414.11 P
+ (the home\325) 71.42 400.11 T
+ (s invocation is the value returned by the \324) 119.06 400.11 T
+ 7 F
+ (^) 317.59 400.11 T
+ 4 F
+ (\325 operator) 324.79 400.11 T
+ (.) 371.08 400.11 T
+ 2 F
+ (2.4.2  Outer method objects) 71.42 368.11 T
+ 3 F
+ -0.22 (Outer methods) 71.42 348.11 P
+ 4 F
+ -0.22 ( are methods that are not embedded in other code. For example, ) 142.15 348.11 P
+ 7 F
+ -0.54 (\0503.7 sqrt\051) 447.91 348.11 P
+ 4 F
+ -0.22 ( and) 519.33 348.11 P
+ 7 F
+ -0.22 (\050 | x = 17. y = 18 | x + y \051) 71.42 334.11 P
+ 4 F
+ -0.09 ( are outer methods. An outer method can have ) 270.24 334.11 P
+ 3 F
+ -0.09 (ar) 493.9 334.11 P
+ -0.09 (gument) 504.11 334.11 P
+ -0.43 (slots) 71.42 320.11 P
+ 4 F
+ -0.43 ( \050\244III-3.4\051) 93.42 320.11 P
+ -0.43 (, and it always has an implicit ) 140.94 320.11 P
+ 3 F
+ -0.43 (par) 283.82 320.11 P
+ -0.43 (ent) 300.04 320.11 P
+ 4 F
+ -0.43 ( \050\244III-3.5\051 ar) 314.69 320.11 P
+ -0.43 (gument slot named ) 373.88 320.11 P
+ 7 F
+ -1.04 (self) 466.86 320.11 P
+ 4 F
+ -0.43 ( with pri-) 495.65 320.11 P
+ 0.45 (ority one \050the highest possible ) 71.42 306.11 P
+ 3 F
+ 0.45 (par) 221.26 306.11 P
+ 0.45 (ent priority) 237.47 306.11 P
+ 4 F
+ 0.45 (, \244III-3.5) 292.23 306.11 P
+ 0.45 (\051. Outer methods are S) 335.64 306.11 P
+ 6 F
+ 0.41 (ELF) 445.7 306.11 P
+ 4 F
+ 0.45 (\325) 465.23 306.11 P
+ 0.45 (s equivalent to) 468.56 306.11 P
+ 0.66 (Smalltalk\325) 71.42 292.11 P
+ 0.66 (s methods. Sometimes, the term \322method\323 is used to mean \322outer method\323 for conve-) 120.74 292.11 P
+ (nience; in this manual, however) 71.42 278.11 T
+ (, \322method\323 always means \322any kind of method.\323) 223.84 278.11 T
+ -0.02 (If a slot contains an outer method, the following steps are performed when the slot is evaluated as) 71.42 258.11 P
+ (the result of a message send:) 71.42 244.11 T
+ (\245) 84.96 224.11 T
+ 0.87 (The method object is ) 98.42 224.11 P
+ 3 F
+ 0.87 (cloned) 205.83 224.11 P
+ 4 F
+ 0.87 (, creating a new ) 237.81 224.11 P
+ 3 F
+ 0.87 (method activation object) 320.21 224.11 P
+ 4 F
+ 0.87 ( containing the slots) 440.54 224.11 P
+ (for the method\325s arguments and locals.) 98.42 210.11 T
+ (\245) 84.96 190.11 T
+ (The clone\325s ) 98.42 190.11 T
+ 7 F
+ (self) 157.71 190.11 T
+ 4 F
+ ( slot is initialized to the receiver of the message.) 186.49 190.11 T
+ (\245) 84.96 170.11 T
+ 0.48 (The clone\325s argument slots \050if any\051 are initialized to the values of the corresponding actual) 98.42 170.11 P
+ (arguments.) 98.42 156.11 T
+ (\245) 84.96 136.11 T
+ (The code of the method is executed in the context of the new activation object. ) 98.42 136.11 T
+ (The value returned by a method is the result of the evaluation of the method\325) 71.42 116.11 T
+ (s code. ) 439.17 116.11 T
+ FMENDPAGE
+ %%EndPage: "3" 94
+ %%Page: "4" 94
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-4) 296.85 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Objects) 508.89 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ (For example, consider the outer method ) 71.42 708.11 T
+ 7 F
+ (\050 | :arg | arg * arg ) 265.62 708.11 T
+ 4 F
+ (\051:) 416.74 708.11 T
+ -0.36 (This outer method has an ar) 71.42 609.01 P
+ -0.36 (gument slot ) 202.96 609.01 P
+ 7 F
+ -0.87 (arg) 261.55 609.01 P
+ 4 F
+ -0.36 ( and returns the square of its ar) 283.13 609.01 P
+ -0.36 (gument. \050The syntax of) 428.59 609.01 P
+ (slots and objects is explained in \244III-3.\051 ) 71.42 595.01 T
+ 2 F
+ (2.4.3  Inner method objects) 71.42 563.01 T
+ 3 F
+ 1 (Inner methods) 71.42 543.01 P
+ 4 F
+ 1 ( look like outer methods, but they are embedded in code. For example, the outer) 141.37 543.01 P
+ -0.24 (method ) 71.42 529.01 P
+ 7 F
+ -0.57 (\0503 * \0504 + 5\051\051) 110.17 529.01 P
+ 4 F
+ -0.24 ( contains the inner method ) 201.43 529.01 P
+ 7 F
+ -0.57 (\0504 + 5\051) 330.49 529.01 P
+ 4 F
+ -0.24 (. Like outer methods, inner meth-) 379.72 529.01 P
+ -0.42 (ods can have slots, but they cannot have ar) 71.42 515.01 P
+ -0.42 (gument slots, and they do not have a ) 272.68 515.01 P
+ 7 F
+ -1.01 (self) 447.52 515.01 P
+ 4 F
+ -0.42 ( slot. Instead,) 476.31 515.01 P
+ 0.02 (they have an anonymous parent slot pointing to the enclosing method\325) 71.42 501.01 P
+ 0.02 (s activation object. As a re-) 408.09 501.01 P
+ 0.55 (sult,) 71.42 487.01 P
+ 3 F
+ 0.55 ( implicit-r) 91.75 487.01 P
+ 0.55 (eceiver messages) 140.17 487.01 P
+ 4 F
+ 0.55 ( \050\244III-4.4\051 sent within an inner method are scoped lexically) 223.63 487.01 P
+ 0.55 (. Like) 510.9 487.01 P
+ -0.26 (the ) 71.42 473.01 P
+ 7 F
+ -0.62 (self) 88.82 473.01 P
+ 4 F
+ -0.26 ( slot in an outer method, the anonymous parent slot has the highest possible parent prior-) 117.6 473.01 P
+ (ity) 71.42 459.01 T
+ (.) 83.31 459.01 T
+ -0.02 (Inner method evaluation follows the same steps as outer method evaluation does, except it sets its) 71.42 439.01 P
+ -0.58 (anonymous parent slot to the current \050enclosing\051 activation object, and ) 71.42 425.01 P
+ 3 F
+ -0.58 (inherits) 407.03 425.01 P
+ 4 F
+ -0.58 ( ) 443.68 425.01 P
+ 7 F
+ -1.4 (self) 446.1 425.01 P
+ 4 F
+ -0.58 ( from that ob-) 474.88 425.01 P
+ (ject.) 71.42 411.01 T
+ (For example, executing the inner method ) 71.42 391.01 T
+ 7 F
+ (\0504 + 5\051) 271.62 391.01 T
+ 4 F
+ ( produces:) 321.99 391.01 T
+ (The anonymous parent slot is invisible at the S) 71.42 260.98 T
+ 6 F
+ (ELF) 295.96 260.98 T
+ 4 F
+ ( level, and it cannot be accessed explicitly) 315.5 260.98 T
+ (.) 516.57 260.98 T
+ 2 F
+ (2.4.4  Block method objects) 71.42 228.98 T
+ 3 F
+ 0.05 (Blocks) 71.42 208.98 P
+ 4 F
+ 0.05 ( are S) 103.4 208.98 P
+ 6 F
+ 0.05 (ELF) 130.81 208.98 P
+ 4 F
+ 0.05 ( closures; they are used to implement user) 150.34 208.98 P
+ 0.05 (-de\336ned control structures. A block lit-) 351.97 208.98 P
+ 0.64 (eral \050delimited by square brackets\051 de\336nes a ) 71.42 194.98 P
+ 3 F
+ 0.64 (pair) 290.76 194.98 P
+ 4 F
+ 0.64 (of objects: the ) 313.76 194.98 P
+ 3 F
+ 0.64 (block data object) 386.64 194.98 P
+ 4 F
+ 0.64 ( and the ) 470.54 194.98 P
+ 3 F
+ 0.64 (block) 513.45 194.98 P
+ 0.52 (method) 71.42 180.98 P
+ 4 F
+ 0.52 (. The block data object contains a parent pointer and a slot pointing to the block method.) 106.73 180.98 P
+ -0.3 (The block method contains the block\325) 71.42 166.98 P
+ -0.3 (s code. A block method is similar to an inner method: it does) 250.82 166.98 P
+ -0.37 (not contain a ) 71.42 152.98 P
+ 7 F
+ -0.88 (self) 135.28 152.98 P
+ 4 F
+ -0.37 ( slot but instead contains an anonymous parent slot pointing to the lexically en-) 164.07 152.98 P
+ 1.02 (closing activation object. Thus, a block can be viewed as a \322deferred inner method\323 that is not) 71.42 138.98 P
+ (evaluated until explicitly invoked and that can have ar) 71.42 124.98 T
+ (gument slots.) 331.02 124.98 T
+ 71.42 55.44 539.42 716.11 C
+ 89.42 625.01 521.42 704.11 C
+ 89.42 625.01 521.42 704.11 R
+ 7 X
+ 0 K
+ V
+ 290.83 633.92 408.83 694.06 R
+ 3 X
+ V
+ 287.83 636.92 405.83 697.06 R
+ 7 X
+ V
+ 1 H
+ 0 Z
+ 0 X
+ N
+ 287.83 661.49 405.83 661.49 2 L
+ 2 Z
+ N
+ 346.83 697.06 346.83 661.49 2 L
+ 0.5 H
+ N
+ 23 F
+ (:arg) 310.37 666.99 T
+ 5 F
+ (arg * arg) 325.77 646.87 T
+ 288.83 680.12 404.83 680.12 2 L
+ N
+ 23 F
+ (:self*) 307.62 683.93 T
+ (slots) 205.49 674.99 T
+ 272.41 687.13 281.37 686.26 273.31 682.25 272.86 684.69 4 Y
+ V
+ 232.27 677.33 273.85 684.87 2 L
+ N
+ 273.31 672.41 281.37 668.4 272.41 667.53 272.86 669.96 4 Y
+ V
+ 232.27 677.33 273.85 669.78 2 L
+ N
+ (code) 205.49 648.2 T
+ 272.73 653.03 281.38 650.54 272.73 648.06 272.73 650.54 4 Y
+ V
+ 232.27 650.54 273.73 650.54 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ 71.42 55.44 539.42 716.11 C
+ 89.42 276.98 521.42 387.01 C
+ 89.42 276.98 521.42 387.01 R
+ 7 X
+ 0 K
+ V
+ 246.73 342.52 360.73 374.85 R
+ 3 X
+ V
+ 246.73 282.83 360.73 315.17 R
+ V
+ 243.73 285.83 357.73 318.17 R
+ 7 X
+ V
+ 1 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (4 + 5) 283.11 292.05 T
+ 244.73 303.89 357.73 303.89 2 L
+ 0.5 H
+ N
+ 299.68 318.4 299.68 303.51 2 L
+ N
+ (\050parent*\051) 251.36 307.77 T
+ 326.04 336.86 328.52 345.52 331 336.86 328.52 336.86 4 Y
+ V
+ 328.52 311.01 328.52 337.86 2 L
+ N
+ 90 450 1.5 1.34 328.52 310.68 G
+ 90 450 1.5 1.34 328.52 310.68 A
+ 243.73 345.52 357.73 377.85 R
+ 7 X
+ V
+ 1 H
+ 0 X
+ N
+ (3 * \0504 + 5\051) 271.21 351.73 T
+ 244.73 363.58 357.73 363.58 2 L
+ 0.5 H
+ N
+ 299.68 378.08 299.68 363.19 2 L
+ N
+ (:self*) 260.52 367.45 T
+ 404.64 373.12 413.3 370.64 404.64 368.16 404.64 370.64 4 Y
+ V
+ 328.48 370.64 405.64 370.64 2 L
+ N
+ (receiver) 417.26 367.64 T
+ 14 F
+ (activation object ) 122.12 366.33 T
+ (of outer method) 122.12 355.33 T
+ (activation object ) 122.12 306.45 T
+ (of inner method) 122.12 295.45 T
+ 232.55 367.17 241.2 364.69 232.55 362.21 232.55 364.69 4 Y
+ V
+ 196.56 364.69 233.55 364.69 2 L
+ N
+ 232.55 304.67 241.2 302.19 232.55 299.71 232.55 302.19 4 Y
+ V
+ 196.56 302.19 233.55 302.19 2 L
+ N
+ 90 450 1.5 1.51 328.52 370.64 G
+ 90 450 1.5 1.51 328.52 370.64 A
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "4" 95
+ %%Page: "5" 95
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-5) 296.85 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Objects) 508.89 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ (For example, the block ) 71.42 708.11 T
+ 7 F
+ ([ 3 + 4 ]) 185.01 708.11 T
+ 4 F
+ ( looks like:) 249.78 708.11 T
+ 0 F
+ (\240) 303.09 712.91 T
+ 4 F
+ 0.43 (The block method\325) 71.42 534.66 P
+ 0.43 (s selector has the form ) 162.9 534.66 P
+ 7 F
+ 1.03 (value) 275.97 534.66 P
+ 4 F
+ 0.43 ([) 311.95 534.66 P
+ 7 F
+ 1.03 (:) 315.94 534.66 P
+ 4 F
+ 0.43 ( {) 323.14 534.66 P
+ 7 F
+ 1.03 (With:) 332.32 534.66 P
+ 4 F
+ 0.43 (}], with the exact name determined) 368.3 534.66 P
+ -0.3 (by the number of ar) 71.42 520.66 P
+ -0.3 (guments. For example, the slot containing the block method of a block without) 164.6 520.66 P
+ 0.25 (ar) 71.42 506.66 P
+ 0.25 (guments has the name ) 80.53 506.66 P
+ 7 F
+ 0.6 (value) 190.79 506.66 P
+ 4 F
+ 0.25 (, and the slot of a block with two ar) 226.77 506.66 P
+ 0.25 (guments is named ) 398.69 506.66 P
+ 7 F
+ 0.6 (value:-) 489.05 506.66 P
+ (With:) 71.42 492.66 T
+ 4 F
+ (.) 107.4 492.66 T
+ 0.16 (Since blocks are \322deferred inner methods,\323 their evaluation has two phases. In the \336rst phase, the) 71.42 472.66 P
+ -0.27 (block is created because it is evaluated, e.g. when it is used as an ar) 71.42 458.66 P
+ -0.27 (gument to a message send. The) 390.87 458.66 P
+ -0.19 (block is cloned and given a pointer to its enclosing scope, the current activation record. In the sec-) 71.42 444.66 P
+ -0.04 (ond phase, its block method is evaluated because the block was sent the appropriate variant of the) 71.42 430.66 P
+ 7 F
+ -0.03 (value) 71.42 416.66 P
+ 4 F
+ -0.01 ( message. The block method is evaluated by cloning it, \336lling in the ar) 107.4 416.66 P
+ -0.01 (gument slots \050in the) 444.51 416.66 P
+ -0.29 (clone\051, and initializing \050the clone\325) 71.42 402.66 P
+ -0.29 (s\051 anonymous parent slot from the scope pointer in the block ob-) 232.49 402.66 P
+ (ject.) 71.42 388.66 T
+ -0.12 (It is an error to evaluate a block method if its home \050lexically-enclosing scope\051 has returned. Such) 71.42 368.66 P
+ -0.58 (a block is called a ) 71.42 354.66 P
+ 3 F
+ -0.58 (non-lifo block) 157.46 354.66 P
+ 4 F
+ -0.58 ( \050because returning from it would violate last-in \336rst-out semantics) 223.84 354.66 P
+ (of activation object invocation\051.) 71.42 340.66 T
+ 10 F
+ (2.5  Construction of object literals) 71.42 307.32 T
+ 4 F
+ -0.36 (Object literals are constructed during parsing\321the parser converts objects in textual form into real) 71.42 286.66 P
+ (S) 71.42 272.66 T
+ 6 F
+ (ELF) 78.09 272.66 T
+ 4 F
+ ( objects. An object literal is constructed as follows:) 97.63 272.66 T
+ (\245) 84.96 252.66 T
+ -0.26 (First, the slot initializers of every slot are evaluated from left to right. If a slot initializer con-) 98.42 252.66 P
+ 1.38 (tains another object literal, this literal is constructed before the initializer containing it is) 98.42 238.66 P
+ (evaluated. If the initializer is an expression, its code is evaluated in the root context.) 98.42 224.66 T
+ (\245) 84.96 204.66 T
+ 0.55 (Second, the object is created, and its slots are initialized with the results of the evaluations) 98.42 204.66 P
+ (performed in the first step.) 98.42 190.66 T
+ 0.67 (Slot initializers are ) 71.42 170.66 P
+ 3 F
+ 0.67 (not) 167.03 170.66 P
+ 4 F
+ 0.67 ( evaluated in the lexical context, since none exists at parse time; they are) 182.36 170.66 P
+ -0.6 (evaluated in the root context, i.e. with the ) 71.42 156.66 P
+ 3 F
+ -0.6 (lobby) 268.83 156.66 P
+ 0 F
+ -0.5 (\340) 295.48 161.46 P
+ 4 F
+ -0.6 ( as the receiver) 300.48 156.66 P
+ -0.6 (. The two-phase object construction) 370.28 156.66 P
+ 0.26 (process implies that slot initializers may not refer to any other slots within the constructed object) 71.42 142.66 P
+ 71.42 116.44 539.42 136.53 C
+ 71.42 124.43 203.4 124.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ (\240  ) 71.42 113.77 T
+ 0 F
+ (The block traits object is a prede\336ned object shared by all blocks.) 79.42 109.77 T
+ 11 F
+ 1.17 (\340  ) 71.42 99.77 P
+ 0 F
+ 1.46 (The root context object is called \322the lobby\323 because it is the starting point from which other objects can be) 81.75 95.77 P
+ -0.05 (reached. The lobby is sometimes called \322the root object,\323 but this term is slightly misleading because the lobby is not) 71.42 84.77 P
+ 0.45 (the \322root\323 of the inheritance graph. Inheritance relationships in S) 71.42 73.77 P
+ 1 F
+ 0.41 (ELF) 334.76 73.77 P
+ 0 F
+ 0.45 ( can form arbitrary \050possibly disconnected\051 di-) 350.73 73.77 P
+ (rected graphs, not just a single tree.) 71.42 62.77 T
+ 71.42 55.44 539.42 716.11 C
+ 89.42 550.66 521.42 704.11 C
+ 89.42 550.66 521.42 704.11 R
+ 7 X
+ 0 K
+ V
+ 173.68 584.31 287.68 632.81 R
+ 3 X
+ V
+ 170.68 587.31 284.68 635.81 R
+ 7 X
+ V
+ 1 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (\050scope\051) 180.36 607.62 T
+ 171.68 619.24 284.68 619.24 2 L
+ 0.5 H
+ N
+ 226.63 635.49 226.63 587.31 2 L
+ N
+ (parent*) 181.97 624.19 T
+ 171.68 602.66 284.68 602.66 2 L
+ N
+ (value) 185.55 591.71 T
+ 90 450 1.5 1.51 255.84 627.51 G
+ 90 450 1.5 1.51 255.84 627.51 A
+ 230.32 661.6 292.32 679.6 R
+ 3 X
+ V
+ 336.81 656.94 440.21 691.9 R
+ V
+ 326.54 583.72 440.54 616.05 R
+ V
+ 314.11 597.9 322.77 595.42 314.11 592.94 314.11 595.42 4 Y
+ 0 X
+ V
+ 255.81 595.42 315.11 595.42 2 L
+ 1 H
+ N
+ 323.54 586.72 437.54 619.05 R
+ 7 X
+ V
+ 0 X
+ N
+ (3 + 4) 362.92 592.93 T
+ 324.54 604.78 437.54 604.78 2 L
+ 0.5 H
+ N
+ 379.5 619.29 379.5 604.4 2 L
+ N
+ (\050parent*\051) 331.18 608.65 T
+ 333.81 659.94 437.21 694.9 R
+ 7 X
+ V
+ 0 Z
+ 0 X
+ N
+ (activation object) 347.79 669.06 T
+ (enclosing method\325) 340.04 681.8 T
+ (s) 428.38 681.8 T
+ 405.74 651.29 408.22 659.94 410.7 651.29 408.22 651.29 4 Y
+ V
+ 408.22 612.46 408.22 652.29 2 L
+ 1 H
+ 2 Z
+ N
+ 227.32 664.6 289.32 682.6 R
+ 7 X
+ V
+ 0.5 H
+ 0 Z
+ 0 X
+ N
+ (block traits) 233.07 670.33 T
+ 325.18 657.38 333.8 659.94 327.85 653.2 326.51 655.29 4 Y
+ V
+ 255.81 610.66 327.36 655.82 2 L
+ 1 H
+ 2 Z
+ N
+ 253.44 655.97 255.99 664.6 258.4 655.93 255.92 655.95 4 Y
+ V
+ 255.68 627.13 255.93 656.95 2 L
+ N
+ 90 450 1.5 1.51 255.84 611.43 G
+ 0.5 H
+ 90 450 1.5 1.51 255.84 611.43 A
+ 90 450 1.5 1.51 255.84 595.42 G
+ 90 450 1.5 1.51 255.84 595.42 A
+ 90 450 1.5 1.51 408.22 612.42 G
+ 90 450 1.5 1.51 408.22 612.42 A
+ 169.24 576.88 M
+  171.25 573.88 171.25 573.88 172.98 572.88 D
+  174.7 571.88 174.7 571.88 179.01 571.12 D
+  183.33 570.38 183.33 570.38 187.81 570.28 D
+  192.3 570.19 192.3 570.19 196.49 570.41 D
+  200.68 570.63 200.68 570.63 205.22 571.3 D
+  209.76 571.97 209.76 571.97 212.73 572.42 D
+  215.7 572.86 215.7 572.86 217.97 572.64 D
+  220.24 572.42 220.24 572.42 223.3 571.41 D
+  226.36 570.41 226.36 570.41 227.23 569.74 D
+ N
+ 285.3 576.88 M
+  283.29 573.88 283.29 573.88 281.56 572.88 D
+  279.84 571.88 279.84 571.88 275.53 571.12 D
+  271.21 570.38 271.21 570.38 266.73 570.28 D
+  262.24 570.19 262.24 570.19 258.05 570.41 D
+  253.86 570.63 253.86 570.63 249.32 571.3 D
+  244.78 571.97 244.78 571.97 241.81 572.42 D
+  238.84 572.86 238.84 572.86 236.57 572.64 D
+  234.3 572.42 234.3 572.42 231.24 571.41 D
+  228.18 570.41 228.18 570.41 227.31 569.74 D
+ N
+ 322.48 576.88 M
+  324.49 573.88 324.49 573.88 326.22 572.88 D
+  327.94 571.88 327.94 571.88 332.26 571.12 D
+  336.57 570.38 336.57 570.38 341.05 570.28 D
+  345.54 570.19 345.54 570.19 349.73 570.41 D
+  353.92 570.63 353.92 570.63 358.46 571.3 D
+  363 571.97 363 571.97 365.97 572.42 D
+  368.94 572.86 368.94 572.86 371.21 572.64 D
+  373.48 572.42 373.48 572.42 376.54 571.41 D
+  379.6 570.41 379.6 570.41 380.47 569.74 D
+ N
+ 438.54 576.88 M
+  436.53 573.88 436.53 573.88 434.8 572.88 D
+  433.08 571.88 433.08 571.88 428.77 571.12 D
+  424.45 570.38 424.45 570.38 419.97 570.28 D
+  415.48 570.19 415.48 570.19 411.29 570.41 D
+  407.1 570.63 407.1 570.63 402.56 571.3 D
+  398.02 571.97 398.02 571.97 395.05 572.42 D
+  392.08 572.86 392.08 572.86 389.81 572.64 D
+  387.54 572.42 387.54 572.42 384.48 571.41 D
+  381.42 570.41 381.42 570.41 380.55 569.74 D
+ N
+ 171.47 551.88 283.07 565.28 R
+ 7 X
+ V
+ 5 F
+ 0 X
+ (block) 214.45 557.94 T
+ 324.71 551.88 436.31 565.28 R
+ 7 X
+ V
+ 0 X
+ (block method) 347.85 557.94 T
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "5" 96
+ %%Page: "6" 96
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-6) 296.85 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Objects) 508.89 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 0.1 (\050as with Scheme\325) 71.42 708.11 P
+ 0.1 (s ) 154.23 708.11 P
+ 7 F
+ 0.23 (let*) 161.99 708.11 P
+ 4 F
+ 0.1 ( and ) 190.77 708.11 P
+ 7 F
+ 0.23 (letrec) 214.28 708.11 P
+ 4 F
+ 0.1 ( forms\051, and more generally) 257.45 708.11 P
+ 0.1 (, a slot initializer may not refer) 390.62 708.11 P
+ (to any textually-enclosing object literal, since these haven\325) 71.42 694.11 T
+ (t been created yet.) 353.01 694.11 T
+ FMENDPAGE
+ %%EndPage: "6" 97
+ %%Page: "7" 97
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-7) 296.85 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Slot descriptors) 476.96 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (3  Slot descriptors) 71.42 705.45 T
+ 4 F
+ -0.32 (An object can have any number of slots. Slots can contain data \050) 71.42 682.11 P
+ 3 F
+ -0.32 (data slots) 375.74 682.11 P
+ 4 F
+ -0.32 (\051 or methods. Some slots) 421.75 682.11 P
+ 0.71 (have special roles: ) 71.42 668.11 P
+ 3 F
+ 0.71 (ar) 165.15 668.11 P
+ 0.71 (gument slots) 175.37 668.11 P
+ 4 F
+ 0.71 ( are \336lled in with the actual ar) 236.38 668.11 P
+ 0.71 (guments during a message send) 384.69 668.11 P
+ (\050\244III-4.3\051, and ) 71.42 654.11 T
+ 3 F
+ (par) 142.69 654.11 T
+ (ent slots) 158.9 654.11 T
+ 4 F
+ ( specify inheritance relationships \050\244III-5.2\051.) 198.55 654.11 T
+ 0.55 (A ) 71.42 634.11 P
+ 3 F
+ 0.55 (slot descriptor) 83.63 634.11 P
+ 4 F
+ 0.55 ( consists of an optional privacy speci\336cation, followed by the slot name and an) 153.82 634.11 P
+ (optional initializer) 71.42 620.11 T
+ (.) 159.05 620.11 T
+ 10 F
+ (3.1  Slot privacy) 71.42 586.78 T
+ 3 F
+ -0.42 (Slot privacy) 71.42 566.11 P
+ 4 F
+ -0.42 ( delimits the public and private interfaces to an object. Public slots may be accessed by) 128.63 566.11 P
+ -0.2 (message sends anywhere in the system, while private slots are accessible only within the same ab-) 71.42 552.11 P
+ 3.69 (straction. \050The semantics of privacy declarations are de\336ned in \244III-5.4 and explained in) 71.42 538.11 P
+ -0.26 ([CUC91].\051 Slots without explicitly declared privacy are treated as public slots. This permits priva-) 71.42 524.11 P
+ -0.17 (cy declarations to be omitted during exploratory development phases and added later when the in-) 71.42 510.11 P
+ -0.51 (terfaces have become more stable.) 71.42 496.11 P
+ 0 F
+ -0.43 (\240) 234.22 500.91 P
+ 4 F
+ -0.51 ( Slot privacy syntax is summarized in the table below; \324) 239.21 496.11 P
+ 7 F
+ -1.23 (^_) 501.23 496.11 P
+ 4 F
+ -0.51 (\325 and) 515.63 496.11 P
+ 0.35 (\324) 71.42 482.11 P
+ 7 F
+ 0.84 (_^) 75.42 482.11 P
+ 4 F
+ 0.35 (\325 can only be used for assignable slots. \050Slots names may not begin with an underscore \050\324_\325\051;) 89.81 482.11 P
+ (see \244III-6.2.\051) 71.42 468.11 T
+ 10 F
+ (3.2  Read-only slots) 71.42 302.87 T
+ 4 F
+ -0.52 (A slot name followed by an equals sign \050\324) 71.42 282.21 P
+ 7 F
+ -1.26 (=) 267.75 282.21 P
+ 4 F
+ -0.52 (\325\051 and an expression represents a ) 274.95 282.21 P
+ 3 F
+ -0.52 (r) 431.66 282.21 P
+ -0.52 (ead-only variable) 435.88 282.21 P
+ 4 F
+ -0.52 ( ini-) 520.29 282.21 P
+ (tialized to the result of evaluating the expression in the root context. ) 71.42 268.21 T
+ (For example, a constant point might be de\336ned as:) 71.42 248.21 T
+ 7 F
+ (\050 | ) 93.02 228.21 T
+ (parent* = traits point.) 143.42 228.21 T
+ (x = 3 + 4.) 143.42 214.21 T
+ (y = 5.) 143.42 200.21 T
+ (| \051) 93.02 186.21 T
+ 71.42 91.44 539.42 111.53 C
+ 71.42 99.43 203.4 99.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ -0.18 (\240  ) 71.42 88.77 P
+ 0 F
+ -0.23 (For slots that are not part of the public interface but cannot be made private due to the semantics for slot privacy) 79.05 84.77 P
+ -0.23 (, the) 522.44 84.77 P
+ -0.24 (convention is to leave the slot formally unmarked \050so that it behaves as a public slot\051, but decorated with the comment) 71.42 73.77 P
+ (\324) 71.42 62.77 T
+ 20 F
+ ("_") 74.75 62.77 T
+ 0 F
+ (\325 as an indication that it is not intended to be part of the public interface.) 92.74 62.77 T
+ 71.42 55.44 539.42 716.11 C
+ 134.97 332.21 475.88 464.11 C
+ 134.97 332.21 475.88 464.11 R
+ 7 X
+ 0 K
+ V
+ 11 F
+ 0 X
+ (SYNTAX) 205.89 438.09 T
+ (DATA) 266.78 438.09 T
+ (SLOT) 290.98 438.09 T
+ (ASSIGNMENT) 331.53 438.09 T
+ ( SLOT) 385.06 438.09 T
+ (none) 211.75 420.09 T
+ (public) 278.88 420.09 T
+ (public) 359.3 420.09 T
+ (^) 217.65 402.09 T
+ (public) 278.88 402.09 T
+ (public) 359.3 402.09 T
+ (_) 217.52 384.09 T
+ (private) 277.77 384.09 T
+ (private) 358.19 384.09 T
+ (^_) 215.65 366.09 T
+ (public) 278.88 366.09 T
+ (private) 358.19 366.09 T
+ (_^) 215.65 348.09 T
+ (private) 277.77 348.09 T
+ (public) 359.3 348.09 T
+ 193.01 341.62 411.74 448.76 R
+ 0.5 H
+ 2 Z
+ N
+ 193.01 430.9 411.74 430.9 2 L
+ N
+ 251.04 448.76 251.04 341.62 2 L
+ N
+ 326.92 448.76 326.92 341.62 2 L
+ N
+ 193.01 341.62 411.74 450.72 R
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "7" 98
+ 8 12 /Symbol FMDEFINEFONT
+ %%Page: "8" 98
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-8) 296.85 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Slot descriptors) 476.96 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ (The resulting point contains three initialized read-only slots:) 71.42 708.11 T
+ 10 F
+ (3.3  Read/write slots) 71.42 580.87 T
+ 4 F
+ -0.07 (There is no separate assignment operation in S) 71.42 560.21 P
+ 6 F
+ -0.06 (ELF) 294.47 560.21 P
+ 4 F
+ -0.07 (. Instead, assignments to data slots are message) 313.04 560.21 P
+ 0.16 (sends that invoke the assignment primitive. For example, a data slot ) 71.42 546.21 P
+ 7 F
+ 0.39 (x) 402 546.21 P
+ 4 F
+ 0.16 ( is assignable if and only if) 409.2 546.21 P
+ -0.37 (there is a slot in the same object with the same name appended with a colon \050in this case, ) 71.42 532.21 P
+ 7 F
+ -0.89 (x:) 494.1 532.21 P
+ 4 F
+ -0.37 (\051, con-) 508.49 532.21 P
+ -0.52 (taining the assignment primitive. Therefore, assigning ) 71.42 518.21 P
+ 7 F
+ -1.25 (17) 330.79 518.21 P
+ 4 F
+ -0.52 ( to slot ) 345.18 518.21 P
+ 7 F
+ -1.25 (x) 379.27 518.21 P
+ 4 F
+ -0.52 ( ) 386.47 518.21 P
+ -0.52 (consists of sending the message) 388.95 518.21 P
+ 7 F
+ 0.08 (x: 17) 71.42 504.21 P
+ 4 F
+ 0.04 (.) 107.49 504.21 P
+ 0.04 ( Since this is indistinguishable from a message send that invokes a method, clients do not) 110.49 504.21 P
+ (need to know if ) 71.42 490.21 T
+ 7 F
+ (x) 149.37 490.21 T
+ 4 F
+ ( and ) 156.57 490.21 T
+ 7 F
+ (x:) 179.88 490.21 T
+ 4 F
+ ( comprise data slot accesses or method invocations.) 194.27 490.21 T
+ 0.27 (An identi\336er followed by a left arrow \050the characters \324) 71.42 470.21 P
+ 7 F
+ 0.64 (<) 333.93 470.21 P
+ 4 F
+ 0.27 (\325 and \324) 341.13 470.21 P
+ 7 F
+ 0.64 (-) 372.97 470.21 P
+ 4 F
+ 0.27 (\325 concatenated to form \324) 380.16 470.21 P
+ 7 F
+ 0.64 (<-) 496.46 470.21 P
+ 4 F
+ 0.27 (\325\051 and) 510.85 470.21 P
+ 0.59 (an expression represents an initialized ) 71.42 456.21 P
+ 3 F
+ 0.59 (r) 259.91 456.21 P
+ 0.59 (ead/write variable) 264.13 456.21 P
+ 4 F
+ 0.59 ( \050assignable data slot\051. The object will) 353 456.21 P
+ -0.1 (contain both a data slot of that name and a corresponding assignment slot whose name is obtained) 71.42 442.21 P
+ -0.45 (by appending a colon to the data slot name. The initializing expression is evaluated in the root con-) 71.42 428.21 P
+ (text and the result stored into the data slot at parse time.) 71.42 414.21 T
+ (For example, an initialized mutable point might be de\336ned as:) 71.42 394.21 T
+ 7 F
+ (\050 | ) 93.02 374.21 T
+ (parent* = traits point.) 143.42 374.21 T
+ (x <- 3 + 4.) 143.42 360.21 T
+ (y <- 5. ) 143.42 346.21 T
+ (| \051) 93.02 332.21 T
+ 4 F
+ -0.54 (producing an object with two data slots \050) 71.42 312.21 P
+ 7 F
+ -1.3 (x) 263.16 312.21 P
+ 4 F
+ -0.54 ( and ) 270.36 312.21 P
+ 7 F
+ -1.3 (y) 292.59 312.21 P
+ 4 F
+ -0.54 (\051 and two assignment slots \050) 299.79 312.21 P
+ 7 F
+ -1.3 (x:) 431.33 312.21 P
+ 4 F
+ -0.54 ( and ) 445.72 312.21 P
+ 7 F
+ -1.3 (y:) 467.95 312.21 P
+ 4 F
+ -0.54 (\051 containing) 482.34 312.21 P
+ (the assignment primitive \050depicted with ) 71.42 298.21 T
+ (\051:) 278.37 298.21 T
+ -0.07 (An identi\336er by itself speci\336es an assignable data slot initialized to ) 71.42 147.82 P
+ 3 F
+ -0.07 (nil.) 394.79 147.82 P
+ 0 F
+ -0.06 (\240) 410.45 152.62 P
+ 4 F
+ -0.07 ( Thus, the slot declaration) 415.45 147.82 P
+ 7 F
+ (x) 71.42 133.82 T
+ 4 F
+ ( is a shorthand notation for ) 78.62 133.82 T
+ 7 F
+ (x <- nil) 210.54 133.82 T
+ 4 F
+ (.) 268.1 133.82 T
+ (For example, a simple mutable point might be de\336ned as:) 71.42 113.82 T
+ 7 F
+ (\050 | x. y. | \051) 143.42 93.82 T
+ 71.42 69.44 539.42 89.53 C
+ 71.42 77.43 203.4 77.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ (\240  ) 71.42 66.77 T
+ 0 F
+ (Nil is a prede\336ned object provided by the implementation. It is intended to indicate \322not a useful object.\323) 79.42 62.77 T
+ 71.42 55.44 539.42 716.11 C
+ 89.42 610.21 521.42 704.11 C
+ 89.42 610.21 521.42 704.11 R
+ 7 X
+ 0 K
+ V
+ 280.42 680.18 342.42 697.31 R
+ 3 X
+ V
+ 228.42 614.84 342.42 664.41 R
+ V
+ 372.42 617.84 387.42 628.36 R
+ V
+ 372.42 635.12 387.42 646.39 R
+ V
+ 277.42 683.18 339.42 700.31 R
+ 7 X
+ V
+ 0.5 H
+ 0 Z
+ 0 X
+ N
+ 225.42 617.84 339.42 667.41 R
+ 7 X
+ V
+ 1 H
+ 2 Z
+ 0 X
+ N
+ 23 F
+ (x) 250.68 638.92 T
+ 226.42 651.64 339.42 651.64 2 L
+ 0.5 H
+ N
+ 226.42 635.11 339.42 635.11 2 L
+ N
+ 282.42 667.41 282.42 618.59 2 L
+ N
+ (y) 250.68 622.4 T
+ (parent*) 236.71 653.95 T
+ 357.77 645.48 366.42 643 357.77 640.52 357.77 643 4 Y
+ V
+ 311.42 643 358.77 643 2 L
+ 1 H
+ N
+ 307.44 674.54 309.92 683.19 312.4 674.54 309.92 674.54 4 Y
+ V
+ 309.92 659.15 309.92 675.54 2 L
+ N
+ 357.77 628.96 366.42 626.48 357.77 624 357.77 626.48 4 Y
+ V
+ 311.42 626.48 358.77 626.48 2 L
+ N
+ (point traits) 284.08 688.5 T
+ 369.42 638.12 384.42 649.39 R
+ 7 X
+ V
+ 0.5 H
+ 0 X
+ N
+ (7) 373.37 639.68 T
+ 369.42 620.84 384.42 631.36 R
+ 7 X
+ V
+ 0 X
+ N
+ (5) 373.37 622.4 T
+ 90 450 1.5 1.51 309.92 626.48 G
+ 90 450 1.5 1.51 309.92 626.48 A
+ 90 450 1.5 1.51 309.92 643 G
+ 90 450 1.5 1.51 309.92 643 A
+ 90 450 1.5 1.51 309.92 659.92 G
+ 90 450 1.5 1.51 309.92 659.92 A
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ 264.97 294.21 278.37 307.6 C
+ 264.97 294.21 278.37 307.6 R
+ 7 X
+ 0 K
+ V
+ 8 F
+ 0 X
+ (\254) 266 298.82 T
+ 0 0 612 792 C
+ 71.42 55.44 539.42 716.11 C
+ 89.42 163.82 521.42 294.21 C
+ 89.42 163.82 521.42 294.21 R
+ 7 X
+ 0 K
+ V
+ 228.42 169.13 342.42 250.77 R
+ 3 X
+ V
+ 280.42 267.34 342.42 284.08 R
+ V
+ 277.42 270.34 339.42 287.08 R
+ 7 X
+ V
+ 0.5 H
+ 0 Z
+ 0 X
+ N
+ 225.42 172.13 339.42 253.77 R
+ 7 X
+ V
+ 1 H
+ 0 X
+ N
+ 23 F
+ (x) 250.68 226.63 T
+ 226.42 237.9 339.42 237.9 2 L
+ 0.5 H
+ 2 Z
+ N
+ 226.42 222.02 339.42 222.02 2 L
+ N
+ 282.42 253.77 282.42 173.64 2 L
+ N
+ (y) 250.68 193.37 T
+ (parent*) 237.71 242.51 T
+ 357.77 232.06 366.42 229.58 357.77 227.1 357.77 229.58 4 Y
+ V
+ 311.42 229.58 358.77 229.58 2 L
+ 1 H
+ N
+ 307.44 261 309.92 269.65 312.4 261 309.92 261 4 Y
+ V
+ 309.92 245.46 309.92 262 2 L
+ N
+ 226.42 204.64 339.42 204.64 2 L
+ 0.5 H
+ N
+ 226.42 188.01 339.42 188.01 2 L
+ N
+ (x:) 249.15 210 T
+ (y:) 249.15 177.49 T
+ 357.77 198.8 366.42 196.32 357.77 193.84 357.77 196.32 4 Y
+ V
+ 311.42 196.32 358.77 196.32 2 L
+ 1 H
+ N
+ 90 450 1.5 1.51 309.92 196.32 G
+ 0.5 H
+ 90 450 1.5 1.51 309.92 196.32 A
+ (point traits) 283.08 275.77 T
+ 8 F
+ (\254) 304.51 208.68 T
+ (\254) 304.51 176.18 T
+ 90 450 1.5 1.51 309.92 229.58 G
+ 90 450 1.5 1.51 309.92 229.58 A
+ 90 450 1.5 1.51 309.92 245.59 G
+ 90 450 1.5 1.51 309.92 245.59 A
+ 373.66 187.07 388.66 197.59 R
+ 3 X
+ V
+ 373.66 221.91 388.66 233.17 R
+ V
+ 370.66 224.91 385.66 236.17 R
+ 7 X
+ V
+ 0 X
+ N
+ 23 F
+ (7) 374.6 226.46 T
+ 370.66 190.07 385.66 200.59 R
+ 7 X
+ V
+ 0 X
+ N
+ (5) 374.6 191.63 T
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "8" 99
+ %%Page: "9" 99
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-9) 296.85 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Slot descriptors) 476.96 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ (producing:) 71.42 708.11 T
+ 10 F
+ (3.4  Slots containing methods) 71.42 599.3 T
+ 4 F
+ 0.56 (If the initializing expression is a single object literal with code, that object is stored into the slot) 71.42 578.64 P
+ 3 F
+ 0.29 (without evaluating the code) 71.42 564.64 P
+ 4 F
+ 0.29 (. This allows a slot to be initialized to an outer method by storing the) 205.22 564.64 P
+ 0.85 (outer method itself, rather than its result, in the slot.) 71.42 550.64 P
+ 0 F
+ 0.71 (\240) 327.6 555.44 P
+ 4 F
+ 0.85 ( Methods may only be stored in read-only) 332.6 550.64 P
+ -0.42 (slots. An outer method automatically receives a parent ar) 71.42 536.64 P
+ -0.42 (gument slot named ) 341.29 536.64 P
+ 7 F
+ -1.01 (self) 434.3 536.64 P
+ 4 F
+ -0.42 ( with parent pri-) 463.08 536.64 P
+ (ority one \050the highest possible priority\051. For example, a point addition method can be written as:) 71.42 522.64 T
+ 7 F
+ (\050 |) 93.02 502.64 T
+ (+ = \050 | :arg | \050clone x: x + arg x\051 y: y + arg y \051.) 143.42 488.64 T
+ (| \051) 93.02 474.64 T
+ 4 F
+ (producing:) 71.42 454.64 T
+ 0.44 (A slot name beginning with a colon indicates an ) 71.42 355.54 P
+ 3 F
+ 0.44 (ar) 309.53 355.54 P
+ 0.44 (gument slot) 319.75 355.54 P
+ 4 F
+ 0.44 (. The pre\336xed colon is not part of) 375.82 355.54 P
+ 0.51 (the slot name and is ignored when matching the name against a message. Ar) 71.42 341.54 P
+ 0.51 (gument slots are al-) 443.62 341.54 P
+ -0.31 (ways read-only) 71.42 327.54 P
+ -0.31 (, and no initializer may be speci\336ed for them. As a syntactic convenience, the ar) 143.94 327.54 P
+ -0.31 (gu-) 523.44 327.54 P
+ 1.62 (ment name may also be written immediately after the slot name \050without the pre\336xed colon\051,) 71.42 313.54 P
+ 0.12 (thereby implicitly declaring the ar) 71.42 299.54 P
+ 0.12 (gument slot. Thus, the following yields exactly the same object) 234.89 299.54 P
+ (as above:) 71.42 285.54 T
+ 7 F
+ (\050 |) 93.02 265.53 T
+ (+ arg = \050 \050clone x: x + arg x\051 y: y + arg y \051.) 143.42 251.53 T
+ (| \051) 93.02 237.53 T
+ 4 F
+ 0.33 (The ) 71.42 217.53 P
+ 7 F
+ 0.8 (+) 93.4 217.53 P
+ 4 F
+ 0.33 ( slot above is a ) 100.6 217.53 P
+ 3 F
+ 0.33 (binary slot) 176.55 217.53 P
+ 4 F
+ 0.33 ( \050\244III-4.2\051) 228.53 217.53 P
+ 0.33 (, taking one ar) 276.82 217.53 P
+ 0.33 (gument and having a name that consists) 346.21 217.53 P
+ -0.21 (of operator symbols. Slots like ) 71.42 203.53 P
+ 7 F
+ -0.51 (x) 220.27 203.53 P
+ 4 F
+ -0.21 ( or ) 227.47 203.53 P
+ 7 F
+ -0.51 (y) 243.02 203.53 P
+ 4 F
+ -0.21 ( in a point object are ) 250.22 203.53 P
+ 3 F
+ -0.21 (unary slots) 350.2 203.53 P
+ 4 F
+ -0.21 ( \050\244III-4.1\051, which take no ar-) 402.95 203.53 P
+ 1.52 (guments and have simple identi\336ers for names. In addition, there are ) 71.42 189.53 P
+ 3 F
+ 1.52 (keywor) 420.25 189.53 P
+ 1.52 (d slots) 454.44 189.53 P
+ 4 F
+ 1.52 ( \050\244III-4.3\051,) 486.95 189.53 P
+ -0.28 (which handle messages that require one or more ar) 71.42 175.53 P
+ -0.28 (guments. A keyword slot name is a sequence of) 312.8 175.53 P
+ (identi\336ers, each followed with a colon.) 71.42 161.53 T
+ -0.06 (The ar) 71.42 141.53 P
+ -0.06 (guments in keyword methods are handled analogously to those in binary methods: each co-) 102.12 141.53 P
+ -0.58 (lon-terminated identi\336er in a keyword slot name requires a corresponding ar) 71.42 127.53 P
+ -0.58 (gument slot in the key-) 431.14 127.53 P
+ 71.42 80.44 539.42 100.53 C
+ 71.42 88.43 203.4 88.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ 0.02 (\240  ) 71.42 77.77 P
+ 0 F
+ 0.02 (Although blocks may be stored into slots, it is not useful to do so: evaluating the slot will result in an error because) 79.46 73.77 P
+ (the block\325) 71.42 62.77 T
+ (s home \050the context that created it\051 has returned; see \244III-2.4.4) 111.12 62.77 T
+ 16 F
+ (.) 360.36 62.77 T
+ 71.42 55.44 539.42 716.11 C
+ 89.42 628.64 521.42 704.11 C
+ 89.42 628.64 521.42 704.11 R
+ 7 X
+ 0 K
+ V
+ 405.29 682.3 430.29 694.15 R
+ 3 X
+ V
+ 230.44 632.65 344.44 697.05 R
+ V
+ 227.44 635.65 341.44 700.05 R
+ 7 X
+ V
+ 1 H
+ 0 Z
+ 0 X
+ N
+ 23 F
+ (x) 252.44 688.96 T
+ 228.44 683.77 341.44 683.77 2 L
+ 0.5 H
+ 2 Z
+ N
+ 284.44 700.05 284.44 637.13 2 L
+ N
+ (y) 252.44 656.39 T
+ 228.44 667.48 341.44 667.48 2 L
+ N
+ 228.44 651.2 341.44 651.2 2 L
+ N
+ (x:) 252.44 671.93 T
+ (y:) 252.44 640.1 T
+ 402.29 685.3 427.29 697.15 R
+ 7 X
+ V
+ 0 Z
+ 0 X
+ N
+ (nil) 408.79 687.54 T
+ 8 F
+ (\254) 306.52 671.4 T
+ (\254) 306.52 639.57 T
+ 392.75 694.2 401.4 691.72 392.75 689.24 392.75 691.72 4 Y
+ V
+ 312.12 691.72 393.75 691.72 2 L
+ 2 Z
+ N
+ 394.36 685.81 401.9 690.72 398.1 682.56 396.23 684.18 4 Y
+ V
+ 312.62 659.47 M
+  370.39 659.47 374.76 659.47 396.24 684.15 D
+ 0 Z
+ N
+ 90 450 1.5 1.51 311.92 691.72 G
+ 2 Z
+ 90 450 1.5 1.51 311.92 691.72 A
+ 90 450 1.5 1.51 311.92 659.48 G
+ 90 450 1.5 1.51 311.92 659.48 A
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ 71.42 55.44 539.42 716.11 C
+ 89.42 371.54 521.42 450.64 C
+ 89.42 371.54 521.42 450.64 R
+ 7 X
+ 0 K
+ V
+ 316.42 379.2 434.42 439.34 R
+ 3 X
+ V
+ 170.74 399.06 271.8 421.77 R
+ V
+ 313.42 382.2 431.42 442.34 R
+ 7 X
+ V
+ 1 H
+ 0 Z
+ 0 X
+ N
+ 313.42 406.77 431.42 406.77 2 L
+ 2 Z
+ N
+ 372.42 442.34 372.42 406.77 2 L
+ 0.5 H
+ N
+ 23 F
+ (:arg) 335.96 412.27 T
+ 5 F
+ (\050clone x: x + arg x\051) 327.09 395.33 T
+ 314.42 425.4 430.42 425.4 2 L
+ N
+ 23 F
+ (:self*) 333.21 429.21 T
+ 5 F
+ (y: y + arg y) 345.4 386.86 T
+ 167.74 402.06 268.8 424.77 R
+ 7 X
+ V
+ 1 H
+ 0 X
+ N
+ 217.34 424.55 217.34 402.06 2 L
+ 0.5 H
+ N
+ 23 F
+ (+) 189.54 411.01 T
+ 303.97 416.16 312.62 413.68 303.97 411.2 303.97 413.68 4 Y
+ V
+ 244.47 413.68 304.97 413.68 2 L
+ 1 H
+ N
+ 90 450 1.5 1.51 242.7 413.92 G
+ 0.5 H
+ 90 450 1.5 1.51 242.7 413.92 A
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "9" 100
+ %%Page: "10" 100
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-10) 294.35 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Slot descriptors) 476.96 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 2.01 (word method object, and the ar) 71.42 708.11 P
+ 2.01 (gument slots may be speci\336ed either all in the method or all) 230.48 708.11 P
+ (interspersed with the selector parts.) 71.42 694.11 T
+ (For example:) 71.42 674.11 T
+ 7 F
+ (\050 |) 93.02 654.11 T
+ (ifTrue: False: = ) 107.42 640.11 T
+ (\050 | :trueBlock. :falseBlock |) 233.42 640.11 T
+ (trueBlock value \051.) 233.42 626.11 T
+ (| \051) 93.02 612.11 T
+ 4 F
+ (and) 71.42 592.11 T
+ 7 F
+ (\050 |) 93.02 572.11 T
+ (ifTrue: trueBlock False: falseBlock = \050 trueBlock value \051.) 107.42 558.11 T
+ (| \051) 93.02 544.11 T
+ 4 F
+ (produce identical objects.) 71.42 524.11 T
+ 10 F
+ (3.5  Par) 71.42 490.78 T
+ (ent slots) 117.42 490.78 T
+ 4 F
+ -0.58 (A unary slot name followed by one or more asterisks denotes a ) 71.42 470.11 P
+ 3 F
+ -0.58 (par) 369.55 470.11 P
+ -0.58 (ent slot) 385.77 470.11 P
+ 4 F
+ -0.58 (. The number of asterisks) 420.17 470.11 P
+ 0.41 (indicates the priority level of the parent, with one asterisk being the highest priority) 71.42 456.11 P
+ 0.41 (. The trailing) 476.32 456.11 P
+ -0.21 (asterisks are not part of the slot name and are ignored when matching the name against a message.) 71.42 442.11 P
+ -0.26 (Except for their special meaning during the message lookup process \050\244III-5.2\051, parent slots are ex-) 71.42 428.11 P
+ -0.19 (actly like normal unary slots; in particular) 71.42 414.11 P
+ -0.19 (, they may be assignable, allowing ) 270.97 414.11 P
+ 3 F
+ -0.19 (dynamic inheritance) 438.36 414.11 P
+ 4 F
+ -0.19 (.) 536.42 414.11 P
+ (Ar) 71.42 400.11 T
+ (gument slots cannot be parent slots.) 83.86 400.11 T
+ FMENDPAGE
+ %%EndPage: "10" 101
+ %%Page: "11" 101
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-11) 294.35 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Expressions) 491.12 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (4  Expr) 71.42 705.45 T
+ (essions) 121.78 705.45 T
+ 3 F
+ 0.07 (Expr) 71.42 682.11 P
+ 0.07 (essions) 94.29 682.11 P
+ 4 F
+ 0.07 ( in S) 128.94 682.11 P
+ 6 F
+ 0.07 (ELF) 151.09 682.11 P
+ 4 F
+ 0.07 ( are ) 170.62 682.11 P
+ 3 F
+ 0.07 (messages) 191.41 682.11 P
+ 4 F
+ 0.07 ( sent to some object, the ) 236.71 682.11 P
+ 3 F
+ 0.07 (r) 356.08 682.11 P
+ 0.07 (eceiver) 360.3 682.11 P
+ 0.07 (. ) 393.59 682.11 P
+ 4 F
+ 0.07 (S) 399.66 682.11 P
+ 6 F
+ 0.07 (ELF) 406.33 682.11 P
+ 4 F
+ 0.07 ( message syntax is sim-) 425.86 682.11 P
+ 0.03 (ilar to Smalltalk\325) 71.42 668.11 P
+ 0.03 (s. S) 152.12 668.11 P
+ 6 F
+ 0.03 (ELF) 169.49 668.11 P
+ 4 F
+ 0.03 ( provides three basic kinds of messages: unary messages, binary messag-) 189.02 668.11 P
+ 0.58 (es, and keyword messages. Each has its own syntax, associativity) 71.42 654.11 P
+ 0.58 (, and precedence. Each type of) 389.66 654.11 P
+ (message can be sent either to an explicit or implicit ) 71.42 640.11 T
+ (receiver) 320.59 640.11 T
+ (.) 358.55 640.11 T
+ (Productions:) 71.42 620.11 T
+ 0 F
+ (\240) 132.06 624.91 T
+ 3 F
+ (expression) 107.42 600.11 T
+ 8 F
+ (\256) 198 600.11 T
+ 3 F
+ (constant) 216 600.11 T
+ 4 F
+ ( | ) 256.65 600.11 T
+ 3 F
+ (unary-message) 265.04 600.11 T
+ 4 F
+ ( | ) 337.65 600.11 T
+ 3 F
+ (binary-message) 346.05 600.11 T
+ 4 F
+ ( | ) 421.99 600.11 T
+ 3 F
+ (keyword-message) 430.38 600.11 T
+ (constant) 107.42 576.11 T
+ 8 F
+ (\256) 198 576.11 T
+ 7 F
+ (self) 216 576.11 T
+ 4 F
+ ( | ) 244.78 576.11 T
+ 3 F
+ (number) 253.18 576.11 T
+ 4 F
+ ( | ) 289.82 576.11 T
+ 3 F
+ (string) 298.21 576.11 T
+ 4 F
+ ( | ) 326.21 576.11 T
+ 3 F
+ (object) 334.6 576.11 T
+ (unary-message) 107.42 552.11 T
+ 8 F
+ (\256) 198 552.11 T
+ 3 F
+ (receiver unary-send) 216 552.11 T
+ 4 F
+ ( | ) 312.25 552.11 T
+ 3 F
+ (resend) 320.64 552.11 T
+ 4 F
+ ( \324) 352.62 552.11 T
+ 7 F
+ (.) 359.61 552.11 T
+ 4 F
+ (\325) 366.8 552.11 T
+ 3 F
+ ( unary-send) 370.8 552.11 T
+ (unary-send) 107.42 528.11 T
+ 8 F
+ (\256) 198 528.11 T
+ 3 F
+ (identifier) 216 528.11 T
+ (binary-message) 107.42 504.11 T
+ 8 F
+ (\256) 198 504.11 T
+ 3 F
+ (receiver binary-send ) 216 504.11 T
+ 4 F
+ (| ) 318.58 504.11 T
+ 3 F
+ (resend ) 323.98 504.11 T
+ 4 F
+ (\324) 358.95 504.11 T
+ 7 F
+ (.) 362.94 504.11 T
+ 4 F
+ (\325) 370.14 504.11 T
+ 3 F
+ ( binary-send) 374.13 504.11 T
+ (binary-send) 107.42 480.11 T
+ 8 F
+ (\256) 198 480.11 T
+ 3 F
+ (operator expression) 216 480.11 T
+ (keyword-message) 107.42 456.11 T
+ 8 F
+ (\256) 198 456.11 T
+ 3 F
+ (receiver keyword-send ) 216 456.11 T
+ 4 F
+ ( | ) 327.9 456.11 T
+ 3 F
+ (resend) 336.29 456.11 T
+ 4 F
+ ( \324) 368.27 456.11 T
+ 7 F
+ (.) 375.26 456.11 T
+ 4 F
+ (\325) 382.46 456.11 T
+ 3 F
+ ( keyword-send) 386.45 456.11 T
+ (keyword-send) 107.42 432.11 T
+ 8 F
+ (\256) 198 432.11 T
+ 3 F
+ (small-keyword expression) 216 432.11 T
+ 4 F
+ ( { ) 340.91 432.11 T
+ 3 F
+ (cap-keyword expression) 352.67 432.11 T
+ 4 F
+ ( }) 468.9 432.11 T
+ 3 F
+ (receiver) 107.42 408.11 T
+ 8 F
+ (\256) 198 408.11 T
+ 4 F
+ ([ ) 216 408.11 T
+ 3 F
+ (expression ) 222.99 408.11 T
+ 4 F
+ (]) 277.29 408.11 T
+ 3 F
+ (resend) 107.42 384.11 T
+ 8 F
+ (\256) 198 384.11 T
+ 7 F
+ (resend) 216 384.11 T
+ 4 F
+ ( | ) 259.18 384.11 T
+ 3 F
+ (identifier) 267.57 384.11 T
+ 4 F
+ (The table below summarizes S) 71.42 360.11 T
+ 6 F
+ (ELF) 218.65 360.11 T
+ 4 F
+ (\325) 238.19 360.11 T
+ (s message syntax rules:) 241.52 360.11 T
+ 10 F
+ (4.1  Unary messages) 71.42 186.2 T
+ 4 F
+ 0.07 (A ) 71.42 165.53 P
+ 3 F
+ 0.07 (unary message) 83.15 165.53 P
+ 4 F
+ 0.07 ( does not specify any ar) 154.84 165.53 P
+ 0.07 (guments other than its receiver) 268.56 165.53 P
+ 0.07 (. It is written as an identi-) 416.07 165.53 P
+ (\336er following the receiver) 71.42 151.53 T
+ (.) 195.66 151.53 T
+ 71.42 80.44 539.42 100.53 C
+ 71.42 88.43 203.4 88.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ 0.06 (\240  ) 71.42 77.77 P
+ 0 F
+ 0.08 (In order to simplify the presentation, this grammar is ambiguous; precedence and associativity rules are used to re-) 79.54 73.77 P
+ (solve the ambiguities.) 71.42 62.77 T
+ 71.42 55.44 539.42 716.11 C
+ 82.82 215.54 528.03 356.11 C
+ 82.82 215.54 528.03 356.11 R
+ 7 X
+ 0 K
+ V
+ 93.25 217.73 520.9 331.51 R
+ V
+ 0 F
+ 0 X
+ (M) 100.25 324.84 T
+ 11 F
+ (ESSAGE) 109.13 324.84 T
+ 0 F
+ (A) 155.65 324.84 T
+ 11 F
+ (RGUMENTS) 162.87 324.84 T
+ 0 F
+ (P) 217.92 324.84 T
+ 11 F
+ (RECEDENCE) 223.48 324.84 T
+ 0 F
+ (A) 285.1 324.84 T
+ 11 F
+ (SSOCIATIVITY) 292.32 324.84 T
+ 0 F
+ (S) 416.48 324.84 T
+ 11 F
+ (YNTAX) 422.04 324.84 T
+ 0 F
+ (unary) 100.25 304.84 T
+ (0) 178.75 304.84 T
+ (highest) 229.81 304.84 T
+ (none) 306.53 304.84 T
+ ([) 393.97 304.84 T
+ 16 F
+ (receiver) 397.3 304.84 T
+ 0 F
+ (]) 430.04 304.84 T
+ 16 F
+ ( identifier) 433.37 304.84 T
+ 0 F
+ (binary) 100.23 290.84 T
+ (1) 178.75 290.84 T
+ (medium) 227.87 290.84 T
+ (none or) 301.12 290.84 T
+ ([) 372.18 290.84 T
+ 16 F
+ (receiver) 375.51 290.84 T
+ 0 F
+ (]) 408.26 290.84 T
+ 16 F
+ ( operator expression) 411.58 290.84 T
+ 0 F
+ (left-to-right *) 289.18 278.84 T
+ (keyword) 100.23 262.84 T
+ 18 F
+ (\263) 174.75 262.84 T
+ 0 F
+ ( 1) 180.24 262.84 T
+ (lowest) 231.2 262.84 T
+ (right-to-left) 292.93 262.84 T
+ ([) 360.25 262.84 T
+ 16 F
+ (receiver) 363.58 262.84 T
+ 0 F
+ (]) 396.32 262.84 T
+ 16 F
+ ( small-keyword) 399.65 262.84 T
+ 0 F
+ ( ) 461 262.84 T
+ 16 F
+ (expression ) 463.49 262.84 T
+ 0 F
+ ({) 377.52 250.84 T
+ 16 F
+ ( cap-keyword expression) 382.31 250.84 T
+ 0 F
+ ( }) 481.68 250.84 T
+ 1 F
+ (* Heterogeneous binary messages have no associativity; homogeneous binary messages associate left-to-right.) 100.25 224.51 T
+ 520.42 335.36 92.92 335.36 2 L
+ 0.5 H
+ 2 Z
+ N
+ 146.03 337.36 146.03 237.36 2 L
+ N
+ 92.92 318.36 520.67 318.36 2 L
+ N
+ 520.67 337.36 92.92 337.36 2 L
+ N
+ 357.03 337.36 357.03 237.36 2 L
+ N
+ 278.03 337.36 278.03 237.36 2 L
+ N
+ 213.03 337.36 213.03 237.36 2 L
+ N
+ 92.92 237.36 520.67 237.36 2 L
+ N
+ 520.57 336.98 520.57 237.61 2 L
+ N
+ 92.82 337.36 92.82 237.36 2 L
+ N
+ 92.92 238.95 520.42 238.95 2 L
+ N
+ 71.42 55.44 539.42 716.11 C
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "11" 102
+ %%Page: "12" 102
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-12) 294.35 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Expressions) 491.12 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ (Examples of unary messages sent to explicit receivers:) 71.42 708.11 T
+ 7 F
+ (17 print) 143.42 688.11 T
+ (5 factorial) 143.42 674.11 T
+ 3 F
+ 0.67 (Associativity) 71.42 654.11 P
+ 0.67 (. ) 132.06 654.11 P
+ 4 F
+ 0.67 (Unary messages compose from left to right. An expression to print 5 factorial, for) 138.73 654.11 P
+ (example, is written:) 71.42 640.11 T
+ 7 F
+ (5 factorial print) 143.42 620.11 T
+ 4 F
+ (and interpreted as:) 71.42 600.11 T
+ 7 F
+ (\0505 factorial\051 print) 143.42 580.11 T
+ 3 F
+ 4.11 (Pr) 71.42 560.11 P
+ 4.11 (ecedence. ) 82.97 560.11 P
+ 4 F
+ 4.11 (Unary messages have higher precedence than binary messages and keyword) 137.03 560.11 P
+ (messages.) 71.42 546.11 T
+ 10 F
+ (4.2  Binary messages) 71.42 512.78 T
+ 4 F
+ (A ) 71.42 492.11 T
+ 3 F
+ (binary message) 83.08 492.11 T
+ 4 F
+ ( has a receiver and a single ar) 158.03 492.11 T
+ (gument, separated by a binary operator) 299.35 492.11 T
+ (.) 485.87 492.11 T
+ (Examples of binary messages:) 71.42 472.11 T
+ 7 F
+ (3 + 4) 143.42 452.11 T
+ (7 <-> 8) 143.42 438.11 T
+ 3 F
+ 0.91 (Associativity) 71.42 418.11 P
+ 0.91 (. ) 132.06 418.11 P
+ 4 F
+ 0.91 (Binary messages have no associativity) 138.97 418.11 P
+ 0.91 (, except between identical operators \050which) 326.38 418.11 P
+ (associate from left to right\051. For example,) 71.42 404.11 T
+ 7 F
+ (3 + 4 + 7) 143.42 384.11 T
+ 4 F
+ (is interpreted as) 71.42 364.11 T
+ 7 F
+ (\0503 + 4\051 + 7) 143.42 344.11 T
+ 4 F
+ (But) 71.42 324.11 T
+ 7 F
+ (3 + 4 * 7) 143.42 304.11 T
+ 4 F
+ (is illegal: the associativity must be made explicit by writing either ) 71.42 284.11 T
+ 7 F
+ (\0503 + 4\051 * 7 or 3 + \0504 * 7\051. ) 143.42 264.11 T
+ 3 F
+ -0.54 (Pr) 71.42 244.11 P
+ -0.54 (ecedence. ) 82.97 244.11 P
+ 4 F
+ -0.54 (The precedence of binary messages is lower than unary messages but higher than key-) 132.38 244.11 P
+ (word messages. All binary messages have the same precedence. For example,) 71.42 230.11 T
+ 7 F
+ (3 factorial + pi sine) 143.42 210.11 T
+ 4 F
+ (is interpreted as) 71.42 190.11 T
+ 7 F
+ (\0503 factorial\051 + \050pi sine\051) 143.42 170.11 T
+ 10 F
+ (4.3  Keyword messages) 71.42 136.78 T
+ 4 F
+ -0.02 (A ) 71.42 116.11 P
+ 3 F
+ -0.02 (keywor) 83.07 116.11 P
+ -0.02 (d message) 117.26 116.11 P
+ 4 F
+ -0.02 ( has a receiver and one or more ar) 166.87 116.11 P
+ -0.02 (guments. It is written as a receiver followed) 329.03 116.11 P
+ -0.23 (by a sequence of one or more keyword-ar) 71.42 102.11 P
+ -0.23 (gument pairs. The \336rst keyword must begin with a lower) 269.05 102.11 P
+ -0.57 (case letter or underscore \050\324) 71.42 88.11 P
+ 7 F
+ -1.38 (_) 197 88.11 P
+ 4 F
+ -0.57 (\325\051; subsequent keywords must be capitalized. A keyword message con-) 204.19 88.11 P
+ -0.15 (sists of the longest possible sequence of such keyword-ar) 71.42 74.11 P
+ -0.15 (gument pairs; the message selector is the) 344.47 74.11 P
+ FMENDPAGE
+ %%EndPage: "12" 103
+ %%Page: "13" 103
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-13) 294.35 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Expressions) 491.12 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 0.11 (concatenation of the keywords forming the message. Message selectors beginning with an under-) 71.42 708.11 P
+ (score are reserved for ) 71.42 694.11 T
+ 3 F
+ (primitives) 177.97 694.11 T
+ 4 F
+ ( \050\244III-5.1\051.) 225.95 694.11 T
+ (Example:) 71.42 674.11 T
+ 7 F
+ (5 min: 4 Max: 7) 143.42 654.11 T
+ 4 F
+ (is the single message ) 71.42 634.11 T
+ 7 F
+ (min:Max:) 175.36 634.11 T
+ 4 F
+ ( sent to ) 232.93 634.11 T
+ 7 F
+ (5) 270.58 634.11 T
+ 4 F
+ ( with ar) 277.77 634.11 T
+ (guments ) 314.2 634.11 T
+ 7 F
+ (4) 357.84 634.11 T
+ 4 F
+ ( and ) 365.04 634.11 T
+ 7 F
+ (7) 388.35 634.11 T
+ 4 F
+ (, whereas) 395.55 634.11 T
+ 7 F
+ (5 min: 4 max: 7) 143.42 614.11 T
+ 4 F
+ -0.4 (involves two messages: \336rst the message ) 71.42 594.11 P
+ 7 F
+ -0.95 (max:) 268.25 594.11 P
+ 4 F
+ -0.4 ( sent to 4 and taking ) 297.03 594.11 P
+ 7 F
+ -0.95 (7) 394.59 594.11 P
+ 4 F
+ -0.4 ( as its ar) 401.79 594.11 P
+ -0.4 (gument, and then the) 440.02 594.11 P
+ (message ) 71.42 580.11 T
+ 7 F
+ (min:) 115.06 580.11 T
+ 4 F
+ ( sent to 5, taking the result of ) 143.84 580.11 T
+ 7 F
+ (\0504 max: 7\051) 286.75 580.11 T
+ 4 F
+ ( as its ar) 358.71 580.11 T
+ (gument.) 398.14 580.11 T
+ 3 F
+ (Associativity) 71.42 560.11 T
+ (. ) 132.06 560.11 T
+ 4 F
+ (Keyword messages associate from right to left, so) 138.06 560.11 T
+ 7 F
+ (5 min: 6 min: 7 Max: 8 Max: 9 min: 10 Max: 11) 143.42 540.11 T
+ 4 F
+ (is interpreted as) 71.42 520.11 T
+ 7 F
+ (5 min: \0506 min: 7 Max: 8 Max: \0509 min: 10 Max: 11\051\051) 143.42 500.11 T
+ 4 F
+ -0.15 (The association order and capitalization requirements are intended to reduce the number of paren-) 71.42 480.11 P
+ -0.23 (theses necessary in S) 71.42 466.11 P
+ 6 F
+ -0.22 (ELF) 171.65 466.11 P
+ 4 F
+ -0.23 ( code. For example, taking the minimum of two slots ) 191.18 466.11 P
+ 7 F
+ -0.56 (m) 446.02 466.11 P
+ 4 F
+ -0.23 ( and ) 453.22 466.11 P
+ 7 F
+ -0.56 (n) 476.06 466.11 P
+ 4 F
+ -0.23 ( and storing) 483.26 466.11 P
+ (the result into a data slot ) 71.42 452.11 T
+ 7 F
+ (i) 192.02 452.11 T
+ 4 F
+ ( may be written as) 199.21 452.11 T
+ 7 F
+ (i: m min: n) 143.42 432.11 T
+ 3 F
+ (Pr) 71.42 412.11 T
+ (ecedence. ) 82.97 412.11 T
+ 4 F
+ (Keyword messages have the lowest precedence. For example,) 132.91 412.11 T
+ 7 F
+ (i: 5 factorial + pi sine) 143.42 392.11 T
+ 4 F
+ (is interpreted as) 71.42 372.11 T
+ 7 F
+ (i: \050\0505 factorial\051 + \050pi sine\051\051) 143.42 352.11 T
+ 10 F
+ (4.4  Implicit-r) 71.42 318.78 T
+ (eceiver messages) 153.95 318.78 T
+ 4 F
+ 1.3 (Unary) 71.42 298.11 P
+ 1.3 (, binary) 100.62 298.11 P
+ 1.3 (, and keyword messages are frequently written without an explicit receiver) 137.77 298.11 P
+ 1.3 (. Such) 508.14 298.11 P
+ 0.52 (messages use the current receiver \050) 71.42 284.11 P
+ 7 F
+ 1.24 (self) 241.52 284.11 P
+ 4 F
+ 0.52 (\051 as the implied receiver) 270.3 284.11 P
+ 0.52 (. The method lookup, however) 387.61 284.11 P
+ 0.52 (,) 536.42 284.11 P
+ 0.56 (begins at the current activation object rather than the current receiver \050see \244III-2.4 for details on) 71.42 270.11 P
+ -0.46 (activation objects\051. Thus, a message sent explicitly to ) 71.42 256.11 P
+ 7 F
+ -1.11 (self) 326.88 256.11 P
+ 4 F
+ -0.46 ( is ) 355.66 256.11 P
+ 3 F
+ -0.46 (not) 368.73 256.11 P
+ 4 F
+ -0.46 ( equivalent to an implicit-receiv-) 384.06 256.11 P
+ -0.36 (er send because the former won\325) 71.42 242.11 P
+ -0.36 (t search local slots before searching the receiver) 225.59 242.11 P
+ -0.36 (. Sending messag-) 452.53 242.11 P
+ (es to explicit ) 71.42 228.11 T
+ 7 F
+ (self) 135.72 228.11 T
+ 4 F
+ ( is considered bad style.) 164.51 228.11 T
+ (Examples:) 71.42 208.11 T
+ 7 F
+ (factorial) 143.42 188.11 T
+ 4 F
+ (\050implicit-receiver unary message\051) 287.42 188.11 T
+ 7 F
+ (+ 3) 143.42 174.11 T
+ 4 F
+ (\050implicit-receiver binary message\051) 287.42 174.11 T
+ 7 F
+ (max: 5) 143.42 160.11 T
+ 4 F
+ (\050implicit-receiver keyword message\051) 287.42 160.11 T
+ 7 F
+ (1 + power: 3) 143.42 146.11 T
+ 4 F
+ (\050parsed as ) 287.42 146.11 T
+ 7 F
+ (1 + \050power: 3\051) 338.71 146.11 T
+ 4 F
+ (\051) 439.45 146.11 T
+ -0.28 (Accesses to a local data slot are also message sends to ) 71.42 126.11 P
+ 7 F
+ -0.67 (self) 331.17 126.11 P
+ 4 F
+ -0.28 (. For an assignable data slot named ) 359.95 126.11 P
+ 7 F
+ -0.67 (t) 529.23 126.11 P
+ 4 F
+ -0.28 (,) 536.42 126.11 P
+ (the message ) 71.42 112.11 T
+ 7 F
+ (t) 132.71 112.11 T
+ 4 F
+ ( returns the contents, and ) 139.91 112.11 T
+ 7 F
+ (t: 17) 263.15 112.11 T
+ 4 F
+ ( puts ) 299.13 112.11 T
+ 7 F
+ (17) 325.12 112.11 T
+ 4 F
+ ( into the slot.) 339.51 112.11 T
+ FMENDPAGE
+ %%EndPage: "13" 104
+ %%Page: "14" 104
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-14) 294.35 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Expressions) 491.12 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 10 F
+ 0 X
+ (4.5  Resending messages) 71.42 706.78 T
+ 4 F
+ 0.12 (A ) 71.42 686.11 P
+ 3 F
+ 0.12 (r) 83.2 686.11 P
+ 0.12 (esend) 87.42 686.11 P
+ 4 F
+ 0.12 ( allows a method to invoke the method that the \336rst method \050the one that invokes the re-) 114.73 686.11 P
+ -0.11 (send\051 is overriding. Directed resends allow ambiguities among overridden methods to be resolved) 71.42 672.11 P
+ 0.51 (by constraining the lookup to search a single parent slot. Both resends and directed resends may) 71.42 658.11 P
+ -0.52 (change the name of the message being sent from the name of the current method, and may pass dif-) 71.42 644.11 P
+ 0.57 (ferent ar) 71.42 630.11 P
+ 0.57 (guments than the ar) 112.07 630.11 P
+ 0.57 (guments passed to the current method. The receiver of a resend or a) 207.83 630.11 P
+ (directed resend must be the implicit receiver) 71.42 616.11 T
+ (.) 283.93 616.11 T
+ (Intuitively) 71.42 596.11 T
+ (, resend is similar to Smalltalk\325) 120.62 596.11 T
+ (s ) 269.88 596.11 T
+ 7 F
+ (super) 277.54 596.11 T
+ 4 F
+ ( send and CLOS\325 ) 313.52 596.11 T
+ 7 F
+ (call-next-method) 399.47 596.11 T
+ 4 F
+ (.) 514.6 596.11 T
+ -0.3 (A resend is written as an implicit-receiver message with the reserved word ) 71.42 576.11 P
+ 7 F
+ -0.72 (resend) 428.87 576.11 P
+ 4 F
+ -0.3 (, a period, and) 472.05 576.11 P
+ (the message name. No whitespace may separate ) 71.42 562.11 T
+ 7 F
+ (resend) 304.56 562.11 T
+ 4 F
+ (, the period, and the message name.) 347.74 562.11 T
+ (Examples:) 71.42 542.11 T
+ 7 F
+ (resend.display) 143.42 522.11 T
+ (resend.+ 5) 143.42 508.11 T
+ (resend.min: 17 Max: 23) 143.42 494.11 T
+ 4 F
+ -0.19 (A ) 71.42 474.11 P
+ 3 F
+ -0.19 (dir) 82.89 474.11 P
+ -0.19 (ected r) 96.44 474.11 P
+ -0.19 (esend) 128.77 474.11 P
+ 4 F
+ -0.19 ( constrains the resend through a speci\336ed parent. It is written similar to a normal) 156.08 474.11 P
+ -0.51 (resend, but replaces ) 71.42 460.11 P
+ 7 F
+ -1.23 (resend) 167.8 460.11 P
+ 4 F
+ -0.51 ( with the name of the parent slot through which the resend is directed.) 210.98 460.11 P
+ (Examples:) 71.42 440.11 T
+ 7 F
+ (listParent.height) 143.42 420.11 T
+ (intParent.min: 17 Max: 23) 143.42 406.11 T
+ 4 F
+ (Only implicit-receiver messages may be delegated via a resend or a directed resend.) 71.42 386.11 T
+ 0 F
+ (\240) 474.09 390.91 T
+ 71.42 80.44 539.42 100.53 C
+ 71.42 88.43 203.4 88.43 2 L
+ 0.1 H
+ 2 Z
+ 0 X
+ 0 K
+ N
+ 0 0 612 792 C
+ 11 F
+ 0 X
+ 0 K
+ 0.59 (\240  ) 71.42 77.77 P
+ 0 F
+ 0.73 (General delegation for explicit receiver messages is supported through primitives in the implementation \050see the) 80.59 73.77 P
+ (S) 71.42 62.77 T
+ 1 F
+ (ELF) 76.98 62.77 T
+ 0 F
+ ( System Manual\051.) 92.96 62.77 T
+ FMENDPAGE
+ %%EndPage: "14" 105
+ 5 14 /Symbol FMDEFINEFONT
+ %%Page: "15" 105
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-15) 294.35 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Message lookup semantics) 432.27 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 9 F
+ 0 X
+ (5  Message lookup semantics) 71.42 705.45 T
+ 4 F
+ -0.6 (This section describes the semantics of message lookups in S) 71.42 682.11 P
+ 6 F
+ -0.55 (ELF) 359.53 682.11 P
+ 4 F
+ -0.6 (. In addition to an informal textual) 378.11 682.11 P
+ (description, the lookup semantics are presented in pseudo-code using the following notation:) 71.42 668.11 T
+ 3 F
+ (s.name) 71.42 648.11 T
+ 4 F
+ (The name of slot ) 233.55 648.11 T
+ 3 F
+ (s) 317.49 648.11 T
+ 4 F
+ (.) 322.16 648.11 T
+ 3 F
+ (s.contents) 71.42 628.11 T
+ 4 F
+ (The object contained in slot ) 233.55 628.11 T
+ 3 F
+ (s) 369.8 628.11 T
+ 4 F
+ (.) 374.46 628.11 T
+ 3 F
+ (s.isParent) 71.42 608.11 T
+ 4 F
+ (True iff ) 233.55 608.11 T
+ 3 F
+ (s) 273.51 608.11 T
+ 4 F
+ ( is a parent slot.) 278.18 608.11 T
+ 3 F
+ (s.priority) 71.42 588.11 T
+ 4 F
+ -0.51 (The parent slot priority of parent slot ) 233.55 588.11 P
+ 3 F
+ -0.51 (s) 410.21 588.11 P
+ 4 F
+ -0.51 ( \050equivalent to the number) 414.88 588.11 P
+ (of asterisks following the slot name\051.) 233.71 574.11 T
+ 3 F
+ (s.holder) 71.42 554.11 T
+ 4 F
+ (The object containing slot ) 233.55 554.11 T
+ 3 F
+ (s) 361.47 554.11 T
+ 4 F
+ (.) 366.14 554.11 T
+ 3 F
+ (s.isPublic) 71.42 534.11 T
+ 4 F
+ (True iff ) 233.55 534.11 T
+ 3 F
+ (s) 273.51 534.11 T
+ 4 F
+ ( is a public slot or a slot with unspecified privacy.) 278.18 534.11 T
+ 3 F
+ (h.sel) 71.42 514.11 T
+ 4 F
+ -0.6 (The name of the slot holding the prototype of activation object ) 233.55 514.11 P
+ 3 F
+ -0.6 (h) 530.43 514.11 P
+ 4 F
+ -0.6 (.) 536.42 514.11 P
+ 3 F
+ (h.holder) 71.42 494.11 T
+ 4 F
+ (The object containing the prototype of activation object ) 233.55 494.11 T
+ 3 F
+ (h) 503.37 494.11 T
+ 4 F
+ (.) 509.36 494.11 T
+ 3 F
+ (h.invokedByDirectedResend) 71.42 474.11 T
+ 4 F
+ (True iff activation object ) 233.55 474.11 T
+ 3 F
+ (h) 356.12 474.11 T
+ 4 F
+ ( was invoked by a directed resend.) 362.12 474.11 T
+ 3 F
+ (h.delegatee) 71.42 454.11 T
+ 4 F
+ -0.32 (The delegatee directed to if activation object ) 233.55 454.11 P
+ 3 F
+ -0.32 (h) 448.12 454.11 P
+ 4 F
+ -0.32 ( was invoked by a) 454.11 454.11 P
+ (directed resend.) 233.71 440.11 T
+ ({s ) 71.42 420.11 T
+ 8 F
+ (\316) 84.85 420.11 T
+ 4 F
+ ( ) 93.4 420.11 T
+ 3 F
+ (obj) 96.39 420.11 T
+ 4 F
+ ( | ) 111.72 420.11 T
+ 3 F
+ (pred) 120.12 420.11 T
+ 4 F
+ (\050s\051}) 142.1 420.11 T
+ (The set of all slots of object ) 233.55 420.11 T
+ 3 F
+ (obj) 369.8 420.11 T
+ 4 F
+ ( that satisfy predicate ) 385.12 420.11 T
+ 3 F
+ (pred) 490.38 420.11 T
+ 4 F
+ (.) 512.36 420.11 T
+ (| ) 71.42 400.11 T
+ 3 F
+ (S) 76.82 400.11 T
+ 4 F
+ ( |) 82.82 400.11 T
+ (The cardinality of set ) 233.55 400.11 T
+ 3 F
+ (S) 338.81 400.11 T
+ 4 F
+ (.) 344.8 400.11 T
+ 3 F
+ (o1) 71.42 380.11 T
+ (o2) 104.23 380.11 T
+ 4 F
+ 0.65 (True iff ) 233.55 380.11 P
+ 3 F
+ 0.65 (o2) 274.81 380.11 P
+ 4 F
+ 0.65 ( is \050possibly trivially\051 an ancestor of ) 286.8 380.11 P
+ 3 F
+ 0.65 (o1) 467.54 380.11 P
+ 4 F
+ 0.65 (, i.e. if there) 479.53 380.11 P
+ (exists at least one inheritance path from ) 233.71 366.11 T
+ 3 F
+ (o1) 427.24 366.11 T
+ 4 F
+ ( to ) 439.23 366.11 T
+ 3 F
+ (o2) 454.56 366.11 T
+ 4 F
+ (, or if ) 466.55 366.11 T
+ 3 F
+ (o1) 495.86 366.11 T
+ 4 F
+ ( = ) 507.86 366.11 T
+ 3 F
+ (o2) 520.62 366.11 T
+ 4 F
+ (.) 532.61 366.11 T
+ (The message sending semantics are decomposed into the following functions:) 71.42 346.11 T
+ 3 F
+ (send\050rec, sel, smh, args\051) 71.42 326.11 T
+ 4 F
+ (The message send function \050\244III-5.1\051.) 233.55 326.11 T
+ 3 F
+ (lookup\050obj, rec, sel, smh, V\051) 71.42 306.11 T
+ 4 F
+ (The lookup algorithm \050\244III-5.2\051.) 233.55 306.11 T
+ 3 F
+ (tiebreak\050M, smh, rec\051) 71.42 286.11 T
+ 4 F
+ (The sender path tiebreaker \050\244III-5.3\051) 233.55 286.11 T
+ 3 F
+ (isVisible\050rec, smh, obj\051) 71.42 266.11 T
+ 4 F
+ (The privacy function \050\244III-5.4\051.) 233.55 266.11 T
+ 3 F
+ (resend\050...\051) 71.42 246.11 T
+ 4 F
+ (The message resend function \050\244III-5.5\051.) 233.55 246.11 T
+ 3 F
+ (resend_lookup\050...\051) 71.42 226.11 T
+ 4 F
+ (The lookup algorithm for resends \050\244III-5.5\051.) 233.55 226.11 T
+ 3 F
+ (eval\050rec, M, args\051) 71.42 206.11 T
+ 4 F
+ -0.04 (The slot evaluation function as described informally throughout) 233.55 206.11 P
+ (\244III-2.) 233.71 192.11 T
+ (See [CUC91] for more background on S) 71.42 172.11 T
+ 6 F
+ (ELF) 265.29 172.11 T
+ 4 F
+ (\325) 284.82 172.11 T
+ (s inheritance semantics.) 288.15 172.11 T
+ 10 F
+ (5.1  Message send) 71.42 138.78 T
+ 4 F
+ 0.73 (There are two kinds of message sends: a ) 71.42 118.11 P
+ 3 F
+ 0.73 (primitive send) 273.77 118.11 P
+ 4 F
+ 0.73 ( has a selector beginning with an under-) 342.79 118.11 P
+ 1.24 (score \050\324_\325\051 and calls the corresponding primitive operation. Primitives are prede\336ned functions) 71.42 104.11 P
+ -0.32 (provided by the implementation. A ) 71.42 90.11 P
+ 3 F
+ -0.32 (normal send) 241.04 90.11 P
+ 4 F
+ -0.32 ( does a lookup to obtain the tar) 300.34 90.11 P
+ -0.32 (get slot; if the look-) 446.1 90.11 P
+ -0.11 (up was successful, the slot is subsequently evaluated. Otherwise, the lookup error is handled in an) 71.42 76.11 P
+ 83.42 377.11 104.23 393.67 C
+ 83.42 377.11 104.23 393.67 R
+ 7 X
+ 0 K
+ V
+ 86.76 377.16 101.48 388.08 R
+ V
+ 5 F
+ 0 X
+ (\336) 86.76 380.08 T
+ 4 F
+ (*) 89.48 382.99 T
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "15" 106
+ %%Page: "16" 106
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-16) 294.35 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Message lookup semantics) 432.27 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ 0.05 (implementation-de\336ned manner; typically) 71.42 708.11 P
+ 0.05 (, a message indicating the type of error is sent to the re-) 272.63 708.11 P
+ (ceiver of the original message.) 71.42 694.11 T
+ (The function ) 71.42 674.11 T
+ 3 F
+ (send\050r) 136.04 674.11 T
+ (ec, sel, smh, ar) 166.24 674.11 T
+ (gs\051) 237.75 674.11 T
+ 4 F
+ ( is de\336ned as follows:) 252.4 674.11 T
+ 2 F
+ (Input) 71.42 654.11 T
+ 4 F
+ (:) 100.09 654.11 T
+ 3 F
+ (r) 143.42 654.11 T
+ (ec) 147.65 654.11 T
+ 4 F
+ (, ) 158.3 654.11 T
+ (the receiver of the message) 179.42 654.11 T
+ 3 F
+ (sel) 143.42 640.11 T
+ 4 F
+ (, ) 156.75 640.11 T
+ (the message selector) 179.42 640.11 T
+ 3 F
+ (smh) 143.42 626.11 T
+ 4 F
+ (, ) 162.74 626.11 T
+ (the sending method holder) 179.42 626.11 T
+ 3 F
+ (ar) 143.42 612.11 T
+ (gs) 153.64 612.11 T
+ 4 F
+ (,) 164.3 612.11 T
+ (the actual ar) 179.42 612.11 T
+ (guments) 237.82 612.11 T
+ 2 F
+ (Output) 71.42 592.11 T
+ 4 F
+ (:) 108.75 592.11 T
+ 3 F
+ (r) 143.42 592.11 T
+ (es) 147.65 592.11 T
+ 4 F
+ (, ) 157.64 592.11 T
+ (the result object) 179.42 592.11 T
+ 2 F
+ (Algorithm) 71.42 572.11 T
+ 4 F
+ (:) 124.72 572.11 T
+ 2 F
+ (if) 98.42 552.11 T
+ 4 F
+ ( begins_with_underscore\050sel\051) 105.75 552.11 T
+ 2 F
+ (then) 98.42 538.11 T
+ 4 F
+ (invoke_primitive\050rec, smh, sel, ar) 125.42 538.11 T
+ (gs\051) 287.1 538.11 T
+ 0 F
+ (\322primitive call\323) 395.42 538.11 T
+ 2 F
+ (else) 98.42 524.11 T
+ 3 F
+ (M) 125.42 524.11 T
+ 4 F
+ ( ) 135.41 524.11 T
+ 5 F
+ (\254) 138.41 524.11 T
+ 4 F
+ ( lookup\050rec, rec, sel, smh, ) 152.22 524.11 T
+ 8 F
+ (\306) 279.13 524.11 T
+ 4 F
+ (\051) 289 524.11 T
+ 0 F
+ (\322do the lookup\323) 395.42 524.11 T
+ 2 F
+ (if) 125.42 510.11 T
+ 4 F
+ ( | ) 132.75 510.11 T
+ 3 F
+ (M) 141.15 510.11 T
+ 4 F
+ ( | > 1 ) 151.14 510.11 T
+ 2 F
+ (then) 178.29 510.11 T
+ 3 F
+ ( M) 200.95 510.11 T
+ 4 F
+ ( ) 213.93 510.11 T
+ 5 F
+ (\254) 216.93 510.11 T
+ 4 F
+ ( tiebreak\050) 230.74 510.11 T
+ 3 F
+ (M) 276.37 510.11 T
+ 4 F
+ (, smh, rec\051 ) 286.36 510.11 T
+ 2 F
+ (end) 339.98 510.11 T
+ (case) 125.42 496.11 T
+ 4 F
+ ( ) 146.74 496.11 T
+ (| ) 161.42 482.11 T
+ 3 F
+ (M) 166.82 482.11 T
+ 4 F
+ ( | = 0:) 176.81 482.11 T
+ 3 F
+ (err) 215.42 482.11 T
+ (or: message not understood) 229.64 482.11 T
+ 4 F
+ (| ) 161.42 468.11 T
+ 3 F
+ (M) 166.82 468.11 T
+ 4 F
+ ( | = 1: ) 176.81 468.11 T
+ (res ) 215.42 468.11 T
+ 5 F
+ (\254) 232.41 468.11 T
+ 4 F
+ ( eval\050rec,) 246.22 468.11 T
+ 3 F
+ ( M) 290.83 468.11 T
+ 4 F
+ (, ar) 303.82 468.11 T
+ (gs\051) 318.92 468.11 T
+ 0 F
+ (\322see \244III-2\323) 395.42 468.11 T
+ 4 F
+ (| ) 161.42 454.11 T
+ 3 F
+ (M) 166.82 454.11 T
+ 4 F
+ ( | > 1:) 176.81 454.11 T
+ 3 F
+ (err) 215.42 454.11 T
+ (or: ambiguous message send) 229.64 454.11 T
+ 2 F
+ (end) 125.42 440.11 T
+ (end) 98.42 426.11 T
+ (r) 98.42 412.11 T
+ (eturn) 103.75 412.11 T
+ 22 F
+ ( ) 131.73 412.11 T
+ 3 F
+ (res) 134.73 412.11 T
+ 10 F
+ (5.2  The lookup algorithm) 71.42 378.78 T
+ 4 F
+ -0.07 (The lookup algorithm recursively traverses the inheritance graph, which can be an arbitrary graph) 71.42 358.11 P
+ 0 (\050including cyclic graphs\051. No object is searched twice along any single path. The search begins in) 71.42 344.11 P
+ 0.31 (the object itself and then continues to search every parent group \050every set of parent slots having) 71.42 330.11 P
+ -0.51 (the same priority\051 until the set of matching slots is non-empty or all parent slots have been exhaust-) 71.42 316.11 P
+ -0.33 (ed. Parent slots are not evaluated during the lookup. That is, if a parent slot contains an object with) 71.42 302.11 P
+ (code, the code will not be executed; the object will merely be searched for matching slots. ) 71.42 288.11 T
+ (The function ) 71.42 268.11 T
+ 3 F
+ (lookup\050obj, rec, sel, smh, V\051) 136.04 268.11 T
+ 4 F
+ ( is defined as follows:) 271.28 268.11 T
+ 2 F
+ (Input) 71.42 248.11 T
+ 4 F
+ (:) 100.09 248.11 T
+ 3 F
+ (obj) 143.42 248.11 T
+ 4 F
+ (, ) 158.75 248.11 T
+ (the object being searched for matching slots) 179.42 248.11 T
+ 3 F
+ (r) 143.42 234.11 T
+ (ec) 147.65 234.11 T
+ 4 F
+ (, ) 158.3 234.11 T
+ (the receiver of the message) 179.42 234.11 T
+ 3 F
+ (sel) 143.42 220.11 T
+ 4 F
+ (, ) 156.75 220.11 T
+ (the message selector) 179.42 220.11 T
+ 3 F
+ (smh) 143.42 206.11 T
+ 4 F
+ (, ) 162.74 206.11 T
+ (the sending method holder) 179.42 206.11 T
+ 3 F
+ (V) 143.42 192.11 T
+ 4 F
+ (, ) 149.21 192.11 T
+ (the set of objects already visited along this path) 179.42 192.11 T
+ 2 F
+ (Output) 71.42 172.11 T
+ 4 F
+ (:) 108.75 172.11 T
+ 3 F
+ (M) 143.42 172.11 T
+ 4 F
+ (, ) 153.41 172.11 T
+ (the set of matching slots of highest priority) 179.42 172.11 T
+ 2 F
+ (Algorithm) 71.42 152.11 T
+ 4 F
+ (:) 124.72 152.11 T
+ 2 F
+ (if) 98.42 132.11 T
+ 3 F
+ ( ) 105.75 132.11 T
+ 4 F
+ (obj) 108.75 132.11 T
+ ( ) 124.08 132.11 T
+ 8 F
+ (\316) 127.08 132.11 T
+ 4 F
+ ( ) 135.63 132.11 T
+ 3 F
+ (V) 138.63 132.11 T
+ 2 F
+ (then) 98.42 118.11 T
+ 4 F
+ ( ) 121.08 118.11 T
+ 3 F
+ (M) 125.42 118.11 T
+ 4 F
+ ( ) 135.41 118.11 T
+ 5 F
+ (\254) 138.41 118.11 T
+ 4 F
+ ( ) 152.22 118.11 T
+ 8 F
+ (\306) 155.22 118.11 T
+ 0 F
+ (\322cycle detection\323) 431.42 118.11 T
+ 2 F
+ (else) 98.42 104.11 T
+ 4 F
+ ( ) 117.07 104.11 T
+ 3 F
+ (M) 125.42 104.11 T
+ 4 F
+ ( ) 135.41 104.11 T
+ 5 F
+ (\254) 138.41 104.11 T
+ 4 F
+ ( {s) 152.22 104.11 T
+ ( ) 165.64 104.11 T
+ 8 F
+ (\316) 168.64 104.11 T
+ 4 F
+ ( obj | ) 177.19 104.11 T
+ (s.name = sel ) 203.91 104.11 T
+ 2 F
+ (and) 266.64 104.11 T
+ 4 F
+ ( isV) 285.97 104.11 T
+ (isible\050rec, smh, s\051}) 304.91 104.11 T
+ 0 F
+ (\322try local slots\323) 431.42 104.11 T
+ 2 F
+ (if) 125.42 90.11 T
+ 3 F
+ ( M) 132.75 90.11 T
+ 4 F
+ ( = ) 145.74 90.11 T
+ 8 F
+ (\306) 158.5 90.11 T
+ 4 F
+ ( ) 168.37 90.11 T
+ 2 F
+ (then) 171.37 90.11 T
+ 4 F
+ ( ) 194.03 90.11 T
+ 3 F
+ (M) 197.02 90.11 T
+ 4 F
+ ( ) 207.01 90.11 T
+ 5 F
+ (\254) 210.01 90.11 T
+ 4 F
+ ( parent_lookup\050obj, rec, sel, smh, V\051 ) 223.82 90.11 T
+ 2 F
+ (end) 403.03 90.11 T
+ 0 F
+ (\322try parent slots\323) 431.42 90.11 T
+ 2 F
+ (end) 98.42 76.11 T
+ (r) 98.42 62.11 T
+ (eturn) 103.53 62.11 T
+ 4 F
+ ( ) 131.51 62.11 T
+ 3 F
+ (M) 134.51 62.11 T
+ FMENDPAGE
+ %%EndPage: "16" 107
+ 12 7 /Times-Italic FMDEFINEFONT
+ 13 9 /Times-Italic FMDEFINEFONT
+ 14 7 /Symbol FMDEFINEFONT
+ 15 18 /Symbol FMDEFINEFONT
+ %%Page: "17" 107
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-17) 294.35 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Message lookup semantics) 432.27 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 4 F
+ 0 X
+ (Where ) 71.42 708.11 T
+ 3 F
+ (par) 106.39 708.11 T
+ (ent_lookup\050obj,) 122.6 708.11 T
+ 4 F
+ ( ) 198.22 708.11 T
+ 3 F
+ (r) 201.22 708.11 T
+ (ec, sel, smh, V\051) 205.44 708.11 T
+ 4 F
+ ( is de\336ned as follows:) 278.05 708.11 T
+ 3 F
+ (M) 98.42 688.11 T
+ 4 F
+ ( ) 108.42 688.11 T
+ 5 F
+ (\254) 111.41 688.11 T
+ 4 F
+ ( ) 125.22 688.11 T
+ 8 F
+ (\306) 128.22 688.11 T
+ 4 F
+ (prio) 98.42 674.11 T
+ 5 F
+ ( \254) 117.75 674.11 T
+ 4 F
+ ( 1) 135.05 674.11 T
+ 3 F
+ (V) 98.42 660.11 T
+ 4 F
+ ( ) 105.75 660.11 T
+ 5 F
+ (\254) 108.75 660.11 T
+ 4 F
+ ( ) 122.56 660.11 T
+ 3 F
+ (V) 125.56 660.11 T
+ 4 F
+ ( ) 132.89 660.11 T
+ 5 F
+ (\310) 135.88 660.11 T
+ 4 F
+ ( {obj}) 146.63 660.11 T
+ 2 F
+ (while) 98.42 646.11 T
+ 4 F
+ ( ) 125.75 646.11 T
+ 3 F
+ (M) 128.74 646.11 T
+ 4 F
+ ( = ) 138.73 646.11 T
+ 8 F
+ (\306) 151.49 646.11 T
+ 4 F
+ ( ) 161.37 646.11 T
+ 2 F
+ (and) 164.36 646.11 T
+ 4 F
+ ( {s) 183.7 646.11 T
+ ( ) 197.12 646.11 T
+ 8 F
+ (\316) 200.12 646.11 T
+ 4 F
+ ( obj | ) 208.67 646.11 T
+ (s.isParent ) 235.39 646.11 T
+ 2 F
+ (and) 284.69 646.11 T
+ 4 F
+ ( s.priority ) 304.03 646.11 T
+ 8 F
+ (\263) 353.67 646.11 T
+ 4 F
+ ( prio} ) 360.25 646.11 T
+ 8 F
+ (\271) 391.33 646.11 T
+ 4 F
+ ( ) 397.91 646.11 T
+ 8 F
+ (\306) 400.91 646.11 T
+ 4 F
+ ( ) 410.78 646.11 T
+ 2 F
+ (do) 413.78 646.11 T
+ 3 F
+ (P) 125.42 632.11 T
+ 4 F
+ ( ) 132.75 632.11 T
+ 5 F
+ (\254) 135.75 632.11 T
+ 4 F
+ ( {s) 149.56 632.11 T
+ ( ) 162.98 632.11 T
+ 8 F
+ (\316) 165.98 632.11 T
+ 4 F
+ ( obj |) 174.53 632.11 T
+ ( s.priority = prio}) 198.25 632.11 T
+ 0 F
+ (\322parent group\323) 395.42 632.11 T
+ 3 F
+ (M) 125.42 618.11 T
+ 4 F
+ ( ) 135.41 618.11 T
+ 5 F
+ (\254) 138.41 618.11 T
+ 4 F
+ (lookup\050s.contents, rec, sel, smh, ) 174.09 618.11 T
+ 3 F
+ (V) 330.99 618.11 T
+ 4 F
+ (\051) 338.32 618.11 T
+ 0 F
+ (\322recursively search parents\323) 395.42 618.11 T
+ 4 F
+ (prio ) 125.42 598.11 T
+ 5 F
+ (\254) 147.74 598.11 T
+ 4 F
+ ( prio + 1) 161.55 598.11 T
+ 2 F
+ (end) 98.42 584.11 T
+ (r) 98.42 570.11 T
+ (eturn) 103.53 570.11 T
+ 3 F
+ ( M) 131.51 570.11 T
+ 10 F
+ (5.3  The sender path tiebr) 71.42 536.78 T
+ (eaker) 225.09 536.78 T
+ 4 F
+ -0.12 (If two or more slots with the same name are de\336ned in equal priority ancestors of the receiver) 71.42 516.11 P
+ -0.12 (, but) 518.22 516.11 P
+ -0.05 (only one of the ancestors is on the) 71.42 502.11 P
+ 3 F
+ -0.05 ( sender path) 234.66 502.11 P
+ 4 F
+ -0.05 (, then that ancestor) 293.87 502.11 P
+ -0.05 (\325) 384.78 502.11 P
+ -0.05 (s slot takes precedence over the) 388.11 502.11 P
+ 0 (other ancestors\325 slots. The sender path ) 71.42 488.11 P
+ 3 F
+ 0 (S) 258.29 488.11 P
+ 4 F
+ 0 ( consists of all objects between the receiver and the send-) 264.29 488.11 P
+ (ing method holder and all ancestors of the sending method holder) 71.42 474.11 T
+ (.) 385.22 474.11 T
+ (Thus, the function ) 71.42 454.11 T
+ 3 F
+ (tiebr) 162.03 454.11 T
+ (eak\050M, smh, r) 184.25 454.11 T
+ (ec\051) 250.41 454.11 T
+ 4 F
+ ( is de\336ned as follows:) 265.06 454.11 T
+ 2 F
+ (Input) 71.42 434.11 T
+ 4 F
+ (:) 100.09 434.11 T
+ 3 F
+ (M) 143.42 434.11 T
+ 4 F
+ (,) 153.41 434.11 T
+ (as computed by ) 179.42 434.11 T
+ 3 F
+ (lookup) 257.7 434.11 T
+ (smh) 143.42 420.11 T
+ 4 F
+ (, ) 162.74 420.11 T
+ (the sending method holder) 179.42 420.11 T
+ 3 F
+ (r) 143.42 406.11 T
+ (ec) 147.65 406.11 T
+ 4 F
+ (, ) 158.3 406.11 T
+ (the receiver of the message) 179.42 406.11 T
+ 2 F
+ (Output) 71.42 386.11 T
+ 4 F
+ (:) 108.75 386.11 T
+ 3 F
+ (M) 143.42 386.11 T
+ 4 F
+ ( with any sender path disambiguation performed) 153.41 386.11 T
+ 2 F
+ (Algorithm) 71.42 366.11 T
+ 4 F
+ (:) 124.72 366.11 T
+ 3 F
+ (S) 98.42 346.11 T
+ 4 F
+ ( ) 104.42 346.11 T
+ 5 F
+ (\254) 107.42 346.11 T
+ 4 F
+ ( {obj) 121.23 346.11 T
+ ( |) 145.31 346.11 T
+ ( \050rec) 150.71 346.11 T
+ (obj ) 191.16 346.11 T
+ 2 F
+ (and) 209.49 346.11 T
+ 4 F
+ ( obj) 228.82 346.11 T
+ (smh\051 ) 265.96 346.11 T
+ 2 F
+ (or) 292.95 346.11 T
+ 4 F
+ ( smh) 304.27 346.11 T
+ (obj}) 348.07 346.11 T
+ 3 F
+ (M) 98.42 332.11 T
+ 8 F
+ (\242) 108.42 332.11 T
+ 4 F
+ ( ) 111.38 332.11 T
+ 5 F
+ (\254) 114.38 332.11 T
+ 4 F
+ ( ) 128.19 332.11 T
+ 3 F
+ (S) 131.18 332.11 T
+ 4 F
+ ( ) 137.18 332.11 T
+ 5 F
+ (\307) 140.18 332.11 T
+ 3 F
+ ( M) 150.93 332.11 T
+ 2 F
+ (if) 98.42 318.11 T
+ 4 F
+ ( ) 105.75 318.11 T
+ 3 F
+ (M) 108.75 318.11 T
+ 8 F
+ (\242) 118.74 318.11 T
+ 4 F
+ ( ) 121.7 318.11 T
+ 8 F
+ (\271) 124.7 318.11 T
+ 4 F
+ ( ) 131.29 318.11 T
+ 8 F
+ (\306) 134.28 318.11 T
+ 4 F
+ ( ) 144.15 318.11 T
+ 2 F
+ (then) 147.15 318.11 T
+ 4 F
+ ( ) 169.81 318.11 T
+ 3 F
+ (M) 172.81 318.11 T
+ 4 F
+ ( ) 182.8 318.11 T
+ 5 F
+ (\254) 185.8 318.11 T
+ 4 F
+ ( ) 199.61 318.11 T
+ 3 F
+ (M) 202.6 318.11 T
+ 8 F
+ (\242) 212.6 318.11 T
+ 4 F
+ ( ) 215.56 318.11 T
+ 2 F
+ (end) 218.56 318.11 T
+ (r) 98.42 304.11 T
+ (eturn) 103.53 304.11 T
+ 4 F
+ ( ) 131.51 304.11 T
+ 3 F
+ (M) 134.51 304.11 T
+ 10 F
+ (5.4  Privacy) 71.42 270.78 T
+ 4 F
+ -0.31 (A ) 71.42 250.11 P
+ 3 F
+ -0.31 (private slot) 82.77 250.11 P
+ 4 F
+ -0.31 ( is accessible if both the sending method holder and the private slot holder are ances-) 136.76 250.11 P
+ 0.95 (tors of the receiver) 71.42 236.11 P
+ 0.95 (. Inaccessible private slots are ignored during the lookup. Thus, the function) 163.87 236.11 P
+ 3 F
+ (isV) 71.42 222.11 T
+ (isible\050r) 85.86 222.11 T
+ (ec, smh, s\051) 120.07 222.11 T
+ 4 F
+ ( is de\336ned as follows:) 170.69 222.11 T
+ 2 F
+ (Input) 71.42 202.11 T
+ 4 F
+ (:) 100.09 202.11 T
+ 3 F
+ (r) 143.42 202.11 T
+ (ec) 147.65 202.11 T
+ 4 F
+ (, ) 158.3 202.11 T
+ (the receiver of the message) 179.42 202.11 T
+ 3 F
+ (smh) 143.42 188.11 T
+ 4 F
+ (, ) 162.74 188.11 T
+ (the sending method holder) 179.42 188.11 T
+ 3 F
+ (s) 143.42 174.11 T
+ 4 F
+ (, ) 148.09 174.11 T
+ (a matching slot) 179.42 174.11 T
+ 2 F
+ (Output) 71.42 154.11 T
+ 4 F
+ (:) 108.75 154.11 T
+ (T) 143.42 154.11 T
+ (rue if) 150.33 154.11 T
+ (f ) 175.76 154.11 T
+ 3 F
+ (s) 182.75 154.11 T
+ 4 F
+ ( is visible.) 187.42 154.11 T
+ 2 F
+ (Algorithm) 71.42 134.11 T
+ 4 F
+ (:) 124.72 134.11 T
+ 2 F
+ (r) 98.42 114.11 T
+ (eturn) 103.53 114.11 T
+ 4 F
+ ( s.isPublic ) 131.51 114.11 T
+ 2 F
+ (or) 183.83 114.11 T
+ 4 F
+ ( \050rec) 195.15 114.11 T
+ (smh ) 235.6 114.11 T
+ 2 F
+ (and) 258.6 114.11 T
+ 4 F
+ ( rec) 277.93 114.11 T
+ (s.holder\051) 314.39 114.11 T
+ 152.22 602.32 174.09 627.52 C
+ 12 F
+ 0 X
+ 0 K
+ (s) 155.66 608.21 T
+ 13 F
+ (P) 166.86 608.21 T
+ 14 F
+ (\316) 160.13 608.21 T
+ 15 F
+ (\310) 157.1 615.67 T
+ 0 0 612 792 C
+ 172.35 343.11 191.16 359.67 C
+ 172.35 343.11 191.16 359.67 R
+ 7 X
+ 0 K
+ V
+ 175.69 343.16 190.41 354.08 R
+ V
+ 5 F
+ 0 X
+ (\336) 175.69 346.08 T
+ 4 F
+ (*) 178.41 348.99 T
+ 0 0 612 792 C
+ 247.15 343.11 265.96 359.67 C
+ 247.15 343.11 265.96 359.67 R
+ 7 X
+ 0 K
+ V
+ 250.49 343.16 265.21 354.08 R
+ V
+ 5 F
+ 0 X
+ (\336) 250.49 346.08 T
+ 4 F
+ (*) 253.21 348.99 T
+ 0 0 612 792 C
+ 327.26 343.11 348.07 359.67 C
+ 327.26 343.11 348.07 359.67 R
+ 7 X
+ 0 K
+ V
+ 330.61 343.16 345.33 354.08 R
+ V
+ 5 F
+ 0 X
+ (\336) 330.61 346.08 T
+ 4 F
+ (*) 333.32 348.99 T
+ 0 0 612 792 C
+ 216.79 111.11 235.6 127.67 C
+ 216.79 111.11 235.6 127.67 R
+ 7 X
+ 0 K
+ V
+ 220.13 111.16 234.85 122.08 R
+ V
+ 5 F
+ 0 X
+ (\336) 220.13 114.08 T
+ 4 F
+ (*) 222.85 116.99 T
+ 0 0 612 792 C
+ 295.57 111.11 314.39 127.67 C
+ 295.57 111.11 314.39 127.67 R
+ 7 X
+ 0 K
+ V
+ 298.91 111.16 313.63 122.08 R
+ V
+ 4 F
+ 0 X
+ (\336) 325.91 114.08 T
+ (*) 301.63 116.99 T
+ 295.57 111.11 314.39 127.67 R
+ 7 X
+ V
+ 298.91 111.16 313.63 122.08 R
+ V
+ 5 F
+ 0 X
+ (\336) 298.91 114.08 T
+ 4 F
+ (*) 301.63 116.99 T
+ 0 0 612 792 C
+ FMENDPAGE
+ %%EndPage: "17" 108
+ %%Page: "18" 108
+ 612 792 0 FMBEGINPAGE
+ 72 19.73 540 31.68 R
+ 7 X
+ 0 K
+ V
+ 0 F
+ 0 X
+ (III-18) 294.35 25.01 T
+ 71.42 742.9 539.42 742.9 2 L
+ 7 X
+ V
+ 0.1 H
+ 2 Z
+ 0 X
+ N
+ 71.43 744.34 539.42 756.29 R
+ 7 X
+ V
+ 0 X
+ (S) 71.43 749.62 T
+ 1 F
+ (ELF) 76.98 749.62 T
+ 0 F
+ ( Language Reference Manual) 92.96 749.62 T
+ (Message lookup semantics) 432.27 749.62 T
+ 71.42 55.44 539.42 716.11 R
+ 7 X
+ V
+ 10 F
+ 0 X
+ (5.5  Resend) 71.42 706.78 T
+ 4 F
+ 0.33 (A resend consists of \322redoing\323 the lookup, beginning with the most recent non-resend lookup on) 71.42 686.11 P
+ -0.07 (the call stack, skipping over lookup matches up to and including the match containing the method) 71.42 672.11 P
+ 0.15 (performing the resend, and returning the next matching slot as the result of the resend. This com-) 71.42 658.11 P
+ 0.21 (plexity and \322history-sensitivity\323 is caused by the interactions among resends, prioritized multiple) 71.42 644.11 P
+ (inheritance, and dynamic inheritance.) 71.42 630.11 T
+ 0 F
+ (\240) 251.61 634.91 T
+ 4 F
+ -0.58 (The ) 71.42 610.11 P
+ 3 F
+ -0.58 (activation call stack) 92.49 610.11 P
+ 4 F
+ -0.58 ( is the ordered list of suspended activation objects, beginning with the cur-) 188.94 610.11 P
+ 0.11 (rent activation object and ) 71.42 596.11 P
+ 0.11 (continuing with the current activation object\325) 196.44 596.11 P
+ 0.11 (s calling activation object,) 413.18 596.11 P
+ (and so on.) 71.42 582.11 T
+ -0.55 (The ) 71.42 562.11 P
+ 3 F
+ -0.55 (r) 92.52 562.11 P
+ -0.55 (esend call chain) 96.74 562.11 P
+ 4 F
+ -0.55 ( is the pre\336x of the activation call stack up to and including the \336rst activation) 173.59 562.11 P
+ 0.48 (object that was not invoked by a resend or a directed resend; this non-resend activation object is) 71.42 548.11 P
+ (called the ) 71.42 534.11 T
+ 3 F
+ (base activation object) 120.72 534.11 T
+ 4 F
+ (.) 225.98 534.11 T
+ -0.44 (A resend or directed resend begins by performing the same lookup that invoked the base activation) 71.42 514.11 P
+ 0.41 (object; thus, the sending method holder and the receiver of the resend is the same as the sending) 71.42 500.11 P
+ -0.29 (method holder and the receiver used to invoke the base activation object. The normal ) 71.42 486.11 P
+ 3 F
+ -0.29 (lookup) 478.76 486.11 P
+ 4 F
+ -0.29 ( func-) 511.41 486.11 P
+ 0.26 (tion is extended to return a list of sets of matching slots, such that elements of one set \322override\323) 71.42 472.11 P
+ (elements of successive sets.) 71.42 458.11 T
+ (The function ) 71.42 438.11 T
+ 3 F
+ (r) 136.04 438.11 T
+ (esend\050r) 140.27 438.11 T
+ (ec, sel, smh, ar) 175.79 438.11 T
+ (gs, isDir) 247.29 438.11 T
+ (, del, A\051) 287.28 438.11 T
+ 4 F
+ ( is de\336ned as follows:) 325.25 438.11 T
+ 2 F
+ (Input) 71.42 418.11 T
+ 4 F
+ (:) 100.09 418.11 T
+ 3 F
+ (r) 143.42 418.11 T
+ (ec) 147.65 418.11 T
+ 4 F
+ (, ) 158.3 418.11 T
+ (the receiver of the message) 179.42 418.11 T
+ 3 F
+ (sel) 143.42 404.11 T
+ 4 F
+ (, ) 156.75 404.11 T
+ (the message selector) 179.42 404.11 T
+ 3 F
+ (isDir) 143.42 390.11 T
+ 4 F
+ (,) 168.08 390.11 T
+ (true if this is a ) 179.42 390.11 T
+ 3 F
+ (directed) 251.05 390.11 T
+ 4 F
+ ( resend) 290.35 390.11 T
+ 3 F
+ (del) 143.42 376.11 T
+ 4 F
+ (,) 158.08 376.11 T
+ (the parent to which the resend is directed \050the delegatee\051) 179.42 376.11 T
+ 3 F
+ (smh) 143.42 362.11 T
+ 4 F
+ (, ) 162.74 362.11 T
+ (the sending method holder) 179.42 362.11 T
+ 3 F
+ (ar) 143.42 348.11 T
+ (gs) 153.64 348.11 T
+ 4 F
+ (,) 164.3 348.11 T
+ (the actual ar) 179.42 348.11 T
+ (guments) 237.82 348.11 T
+ 3 F
+ (A) 143.42 334.11 T
+ 4 F
+ (,) 150.75 334.11 T
+ (the list of current activation objects) 179.42 334.11 T
+ 2 F
+ (Output) 71.42 314.11 T
+ 4 F
+ (:) 108.75 314.11 T
+ 3 F
+ (r) 143.42 314.11 T
+ (es) 147.65 314.11 T
+ 4 F
+ (, ) 157.64 314.11 T
+ (the result object) 179.42 314.11 T
+ 2 F
+ (Algorithm) 71.42 294.11 T
+ 4 F
+ (:) 124.72 294.11 T
+ 3 F
+ (H) 98.42 274.11 T
+ 4 F
+ ( ) 107.08 274.11 T
+ 5 F
+ (\254) 110.08 274.11 T
+ 4 F
+ ( resend_call_chain_pre\336x\050) 123.89 274.11 T
+ 3 F
+ (A) 251.45 274.11 T
+ 4 F
+ (\051) 258.78 274.11 T
+ 0 F
+ (\322resend call chain\323) 431.42 274.11 T
+ 4 F
+ (base ) 98.42 260.11 T
+ 5 F
+ (\254) 122.74 260.11 T
+ 3 F
+ ( ) 136.54 260.11 T
+ 4 F
+ (last_element\050) 139.54 260.11 T
+ 3 F
+ (H) 204.16 260.11 T
+ 4 F
+ (\051) 212.82 260.11 T
+ 0 F
+ (\322base activation object\323) 431.42 260.11 T
+ 3 F
+ (M) 98.42 246.11 T
+ 4 F
+ ( ) 108.42 246.11 T
+ 5 F
+ (\254) 111.41 246.11 T
+ 4 F
+ ( resend_lookup\050rec, rec, base.sel, sel, isDir) 125.22 246.11 T
+ (, del, base.holder) 330.57 246.11 T
+ (, ) 411.7 246.11 T
+ 8 F
+ (\306) 417.7 246.11 T
+ 4 F
+ (, ) 427.57 246.11 T
+ 3 F
+ (H) 433.56 246.11 T
+ 4 F
+ (\051) 442.22 246.11 T
+ ( ) 467.42 246.11 T
+ 0 F
+ (\322do the lookup\323) 470.42 246.11 T
+ 3 F
+ (M) 98.42 232.11 T
+ 8 F
+ (\242) 108.42 232.11 T
+ 4 F
+ ( ) 111.38 232.11 T
+ 5 F
+ (\254) 114.38 232.11 T
+ 4 F
+ (\050) 151.11 232.11 T
+ 2 F
+ (if) 155.1 232.11 T
+ 4 F
+ ( | ) 162.43 232.11 T
+ 3 F
+ (m) 170.83 232.11 T
+ 4 F
+ ( | > 1 ) 179.49 232.11 T
+ 2 F
+ (then ) 206.64 232.11 T
+ 4 F
+ (tiebreak\050) 232.29 232.11 T
+ 3 F
+ (m) 274.92 232.11 T
+ 4 F
+ (, smh, rec\051 ) 283.58 232.11 T
+ 2 F
+ (else) 337.2 232.11 T
+ 4 F
+ ( ) 355.85 232.11 T
+ 3 F
+ (m) 358.85 232.11 T
+ 4 F
+ (\051) 367.51 232.11 T
+ 3 F
+ (m) 98.42 212.11 T
+ 4 F
+ ( ) 107.08 212.11 T
+ 5 F
+ (\254) 110.08 212.11 T
+ 2 F
+ ( ) 123.89 212.11 T
+ 4 F
+ (first) 126.89 212.11 T
+ 2 F
+ (_) 146.21 212.11 T
+ 4 F
+ (element\050) 152.21 212.11 T
+ 3 F
+ (M) 194.17 212.11 T
+ 8 F
+ (\242) 204.16 212.11 T
+ 4 F
+ (\051) 207.13 212.11 T
+ 2 F
+ (while) 98.42 198.11 T
+ 4 F
+ ( | ) 125.75 198.11 T
+ 3 F
+ (m) 134.14 198.11 T
+ 4 F
+ ( | ) 142.8 198.11 T
+ 8 F
+ (\271) 151.2 198.11 T
+ 4 F
+ ( 0 ) 157.78 198.11 T
+ 2 F
+ (do) 169.77 198.11 T
+ (if ) 125.42 184.11 T
+ 4 F
+ (| ) 135.75 184.11 T
+ 3 F
+ (m) 141.15 184.11 T
+ 4 F
+ ( | >) 149.81 184.11 T
+ ( ) 164.97 184.11 T
+ (1) 167.96 184.11 T
+ 2 F
+ (then) 125.42 170.11 T
+ 3 F
+ (err) 161.42 170.11 T
+ (or: ambiguous message send) 175.64 170.11 T
+ 2 F
+ ( end) 314.54 17