Here is our submission for the C++ bindings of Chapter 7 of the document.
The issue of whether to flatten the class heirarchy or not (e.g. with
respect to communicators) has been resolved -- it will be flat. See the
text for more information.
The ND and MSState proposals have been merged and we are now presenting
this as a single, unified proposal.
If possible, we would like to move this chapter up on the voting schedule,
and present this as the "first reading" for the entire Forum. If all goes
well, we can take votes on it at the following two meetings.
{+} Jeff Squyres
{+} squyres@cse.nd.edu
{+} Perpetual Obsessive Notre Dame Student Craving Utter Madness.
{+} (*6* years and counting -- 1 more year of eligibility)
--- postscript data follows this line ---
%!PS-Adobe-2.0
%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
%%Title: chapter-7.dvi
%%Pages: 18
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips -o chapter-7.ps chapter-7
%DVIPSParameters: dpi=300, compressed, comments removed
%DVIPSSource: TeX output 1996.04.21:2053
%%BeginProcSet: texc.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true 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 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N
/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id
gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp
add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add
/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2
idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
chg nd}{pop nd}]dup{bind pop}forall N /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 /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
known{start-hook}if pop /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
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}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
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{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 /QV{gsave newpath transform
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill grestore}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{SS restore}B end
%%EndProcSet
TeXDict begin 40258431 52099146 1000 300 300 (chapter-7.dvi)
@start /Fa 1 59 df<127012F8A3127005057C840D>58 D E /Fb
1 25 df<000F1304EA3F80EA7FC03870F00CEAC078EB3C3838800FF8EB07F0EB03C01609
7E8C1B>24 D E /Fc 6 117 df<B4FCA2121FAAEB1FC0EB7FF0EBE0F8EB807CEB007E14
3EA2143FA6143EA2147C1380381EC1F8381C7FE038181F8018207E9F1D>98
D<EA01FE3807FF80380F83C0381E01E0383E00F05A14F812FCB5FCA200FCC7FCA3127CA2
6C1318121E380F80703807FFE0C6138015147F9318>101 D<121C123E127FA3123E121C
C7FCA6B4FCA2121FB0EAFFE0A20B217EA00E>105 D<B4FCA2121FB3AAEAFFE0A20B207E
9F0E>108 D<38FE0FC0EB3FE0381E61F0EBC0F81380EA1F00AD38FFE3FFA218147D931D>
110 D<EA0180A31203A31207120F123FEAFFFCA2EA0F80AA1386A5EA07CCEA03F8EA01F0
0F1D7F9C14>116 D E /Fd 17 118 df<126012F0AF12601200A4126012F0A212600419
779816>33 D<13E01201EA0380EA0700120E5AA25AA25AA35AA91270A37EA27EA27E7EEA
0380EA01E012000B217A9C16>40 D<12C07E12707E7E7EA27EA2EA0380A3EA01C0A9EA03
80A3EA0700A2120EA25A5A5A5A5A0A217B9C16>I<EA7FFFB51280A2C8FCA5B51280A26C
1300110B7E9116>61 D<EA7FF8EAFFFE6C7EEA1C0FEB0780EB03C01301A214E01300A8EB
01C0A21303EB0780130F387FFF00485AEA7FF81319809816>68 D<387FFFC0B5FC7EEA1C
01A490C7FCA2131CA2EA1FFCA3EA1C1CA290C7FC14E0A5EA7FFFB5FC7E13197F9816>I<
EAFFFEA3EA0380B3EAFFFEA30F197D9816>73 D<38FC07E0EAFE0FA2383A0B80EA3B1BA5
13BBEA39B3A413F3EA38E3A21303A538FE0FE0A313197F9816>77
D<387E1FC038FF3FE0387F1FC0381D07001387A313C7A2121CA213E7A31367A21377A213
37A31317EA7F1FEAFF9FEA7F0F13197F9816>I<EA7FF8EAFFFE6C7E381C0F80130314C0
1301A313031480130F381FFF005B13F8001CC7FCA7127F487E6CC7FC12197F9816>80
D<387FFFE0B5FCA2EAE0E0A400001300AFEA07FC487E6C5A13197F9816>84
D<EA1FE0487E487EEA783CEA300E1200A2EA03FE121FEA3E0E127012E0A3EA783E387FFF
E0EA3FE7EA0F8313127E9116>97 D<127E12FE127E120EA4133E13FF000F1380EB83C0EB
00E0120E1470A614E0EA0F01EB83C0EBFF80000E1300EA063C1419809816>I<EA03E0EA
0FF8EA1FFCEA3C1EEA780EEA700712E0B5FCA3EAE000A2EA70071278EA3C0FEA1FFEEA0F
FCEA03F010127D9116>101 D<38FF0FC0EB3FE0137F3807F040EBC0005BA290C7FCA8EA
FFFCA313127F9116>114 D<12035AA4EA7FFFB5FCA20007C7FCA75BEB0380A3EB8700EA
03FE6C5A6C5A11177F9616>116 D<387E1F80EAFE3FEA7E1FEA0E03AB130F380FFFF038
07FBF83803E3F01512809116>I E /Fe 1 16 df<EA03C0EA0FF0EA1FF8EA3FFCEA7FFE
A2B5FCA6EA7FFEA2EA3FFCEA1FF8EA0FF0EA03C010127D9317>15
D E /Ff 69 126 df<127012F8B012701200A5127012F8A31270051C779B18>33
D<EA01C0EA07E0487EEA0E70487EA4EB73F0A213E3000F1380EBC70013871307EA1F0E12
3FEA7B8EEA73DC12E1EAE0F8A2EB70701378EA70FC387FFFE0EA3FCF380F03C0141C7F9B
18>38 D<137013F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA45AA81270A47EA27E
121E7EEA0780EA03C0EA01F0120013700C24799F18>40 D<126012F012787E7E7EEA0780
1203EA01C0A2EA00E0A41370A813E0A4EA01C0A2EA03801207EA0F00121E5A5A5A12600C
247C9F18>I<EA01C0A438C1C180EAF1C7EAF9CF387FFF00EA1FFCEA07F0A2EA1FFCEA7F
FF38F9CF80EAF1C7EAC1C13801C000A411147D9718>I<136013F0A7387FFFC0B512E0A2
6C13C03800F000A7136013147E9718>I<121C123E127E127F123F121F1207120E121E12
7C12F81260080C788518>I<EA7FFFB51280A26C130011047D8F18>I<1230127812FCA212
7812300606778518>I<1303EB0780A2130F14005B131EA2133E133C137C1378A213F85B
12015B12035BA212075B120F90C7FCA25A121E123E123CA2127C127812F85AA212601124
7D9F18>I<EA01801203A21207120F123F12FF12FB12431203B0EA7FFCEAFFFEEA7FFC0F
1C7B9B18>49 D<EA03F0EA0FFEEA3FFF387C0F80387003C0EAE00138F000E0A21260C7FC
A2EB01C0A21303EB0780EB0F00131E5B5B5B485AEA07C0485A381E00E05AEA7FFFB5FC7E
131C7E9B18>I<EA07F8EA1FFE487E38780780EB03C013011230120013031480EB0F00EA
03FF5B7F38000780EB03C01301EB00E0A312F0A2EB01C01303387C0780383FFF006C5AEA
03F8131C7E9B18>I<1230127812FCA2127812301200A81230127812FCA2127812300614
779318>58 D<1218123C127EA2123C12181200A81218123C127EA2123E121E120E121C12
3C127812F01260071A789318>I<387FFFC0B512E0A3C8FCA4B512E0A36C13C0130C7E93
18>61 D<137013F8A213D8A2EA01DCA3138CEA038EA41306EA0707A4380FFF80A3EA0E03
A2381C01C0A2387F07F038FF8FF8387F07F0151C7F9B18>65 D<EAFFFC13FF1480381C03
C01301EB00E0A4130114C01307381FFF80140014C0EA1C03EB00E014F01470A414F014E0
1303B512C01480EBFE00141C7F9B18>I<EBF8E0EA03FEEA07FFEA0F07EA1E03EA3C01EA
38005AA214005AA8127014E0A27E123C381E01C0EA0F073807FF803803FE00EA00F8131C
7E9B18>I<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0
A2130114C01303EB0F80387FFF00485AEA7FF8141C7F9B18>I<B512F0A3381C0070A414
00A2130EA3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A3151C7F9B18>I<B512E0A3EA
1C00A41400A2131CA3EA1FFCA3EA1C1CA390C7FCA7EAFFC0A3131C7E9B18>I<3801F1C0
EA03FDEA0FFFEA1F0FEA1C03123813011270A290C7FC5AA5EB0FF0131F130F387001C0A2
13031238A2EA1C07EA1F0FEA0FFFEA03FDEA01F1141C7E9B18>I<387F07F038FF8FF838
7F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F0151C7F9B18>I<EA
7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<387F07F038FF87
F8387F07F0381C03C0EB07801400130E131E5B13385B13F0121DA2EA1FB8A2131C121EEA
1C0EA27FA2EB0380A2EB01C0387F03F038FF87F8387F03F0151C7F9B18>75
D<EA7FE012FF127F000EC7FCB11470A5387FFFF0B5FC7E141C7F9B18>I<38FC01F8EAFE
03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03F8A3151C
7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A213
311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>I<EA0FF8EA3FFE487E
EA780FEA700700F01380EAE003B0EAF00700701300EA780FEA7FFF6C5AEA0FF8111C7D9B
18>I<EAFFFEEBFF8014C0EA1C03EB01E013001470A514E01301EB03C0EA1FFF1480EBFE
00001CC7FCA8B47EA3141C7F9B18>I<EA0FF8EA3FFE487EEA780FEA700700F01380EAE0
03AEEAE1E3A2EAF0E73870F700EA787FEA7FFF6C5AEA0FFCEA001C131E130E130F7FA211
227D9B18>I<EA7FF8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF005B
A2EA1C0F7FEB0380A5149CA3387F01F8EAFF81387F00F0161C7F9B18>I<3803F380EA1F
FF5AEA7C0FEA7007EAE003A390C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C013
01EB00E0A2126012E0130100F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387F
FFF8B5FCA238E07038A400001300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B3
6C13E0EA0F01380783C03803FF806C1300EA007C171C809B18>I<38FE03F8A338700070
A36C13E0A513F8A2EA39DCA2001913C0A3138CEA1D8DA4000D13801305EA0F07A2EA0E03
151C7F9B18>87 D<387F8FE0139F138F380E0700120FEA070E138EEA039C13DCEA01F8A2
6C5AA2137013F07F120113DCEA039E138EEA070F7F000E13801303001E13C0387F07F038
FF8FF8387F07F0151C7F9B18>I<38FF07F8A3381C01C0EA1E03000E1380EA0F07000713
00A2EA038EA2EA01DCA3EA00F8A21370A9EA01FC487E6C5A151C7F9B18>I<EAFFF8A3EA
E000B3ACEAFFF8A30D24779F18>91 D<EAFFF8A3EA0038B3ACEAFFF8A30D247F9F18>93
D<EA7FFFB51280A26C130011047D7F18>95 D<EA1FE0EA3FF8487EEA781EEA300EC67EA2
13FF1207121FEA7F07127812E0A36C5AEA781F383FFFF0EA1FFBEA07E114147D9318>97
D<127E12FE127E120EA5133EEBFF80000F13C0EBC1E01380EB0070120E1438A6000F1370
A2EB80E013C1EBFFC0000E138038063E00151C809B18>I<EA01FEEA07FF001F1380EA3E
073838030048C7FCA25AA61270EB01C01238EA3E03381FFF8000071300EA01FC12147D93
18>I<EB1F80133F131F1303A5EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6
EA7007A2EA380FEA3C1F381FFFF0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA
1FFEEA3E0F38380780EA7003A238E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E0338
1FFF8000071300EA01FC12147D9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A338
7FFFC0B5FCA23801C000AEEA7FFFA3131C7F9B18>I<3801E1F03807FFF85A381E1E3038
1C0E00487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801
F038700070481338A4007813F0EA7E03381FFFC06C13803801FC00151F7F9318>I<127E
12FE127E120EA5133EEBFF80000F13C013C1EB80E01300120EAB387FC3FC38FFE7FE387F
C3FC171C809B18>I<EA0380487EA36C5AC8FCA4EA7FC012FF127F1201AEB5FC14801400
111D7C9C18>I<12FEA3120EA5EB3FF0137F133FEB0780EB0F00131E5B5B5BEA0FF87F13
9C130EEA0E0F7FEB038014C038FFC7F8A3151C7F9B18>107 D<EA7FE012FF127F1200B3
A4387FFFC0B512E06C13C0131C7E9B18>I<387CE0E038FFFBF8EA7FFF381F1F1CEA1E1E
A2EA1C1CAB387F1F1F39FFBFBF80397F1F1F001914819318>I<EA7E3E38FEFF80007F13
C0EA0FC1EB80E01300120EAB387FC3FC38FFE7FE387FC3FC1714809318>I<EA01F0EA0F
FE487E383E0F80EA3803387001C0A238E000E0A5EAF001007013C0EA7803383C0780EA3E
0F381FFF006C5AEA01F013147E9318>I<EA7E3E38FEFF80007F13C0380FC1E01380EB00
70120E1438A6000F1370A2EB80E013C1EBFFC0000E1380EB3E0090C7FCA7EA7FC0487E6C
5A151E809318>I<3801E380EA07FBEA1FFFEA3E1FEA380FEA7007A2EAE003A6EA7007A2
EA380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB3FF8A3151E7E9318>I<387F87E038FF
9FF0387FBFF83803F878EBF030EBE0005BA25BA9EA7FFEB5FC6C5A15147F9318>I<EA07
F7EA3FFF5AEA780FEAE007A3007CC7FCEA7FE0EA1FFCEA03FEEA001F38600780EAE003A2
12F038F80F00B5FC13FCEAE7F011147D9318>I<487E1203A4387FFFC0B5FCA238038000
A9144014E0A33801C1C013FF6C1380EB3E0013197F9818>I<387E07E0EAFE0FEA7E07EA
0E00AC1301EA0F033807FFFC6C13FE3801FCFC1714809318>I<387F8FF000FF13F8007F
13F0381E03C0000E1380A338070700A3EA038EA4EA01DCA3EA00F8A2137015147F9318>
I<38FF8FF8A3383800E0A3381C01C0A2137113F9A213D9A2380DDD80A3138DEA0F8FA238
07070015147F9318>I<387F8FF0139F138F38070700138EEA039EEA01DC13F812001370
13F07FEA01DCEA039E138EEA0707000F1380387F8FF000FF13F8007F13F015147F9318>
I<387F8FF000FF13F8007F13F0380E01C0EB0380A21207EB0700A2EA03871386138EEA01
CEA2EA00CCA213DC1378A31370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>
I<383FFFF05AA2387001E0EB03C0EB078038000F00131E5B13F8485AEA03C0485A380F00
70121E5A5AB512F0A314147F9318>I<EB07E0131F137FEB780013E0AB1201EA7FC0485A
A26C7EEA01E01200AB1378EB7FE0131F130713247E9F18>I<127CB4FC13C01203C67EAB
7FEB7FC0EB3FE0A2EB7FC0EBF0005BABEA03C012FF90C7FC127C13247E9F18>125
D E /Fg 10 58 df<121FEA3180EA60C0EA4040EAC060A8EA4040EA60C0EA3180EA1F00
0B107F8F0F>48 D<120C123C12CC120CACEAFF8009107E8F0F>I<121FEA6180EA40C0EA
806012C01200A213C0EA0180EA030012065AEA10201220EA7FC012FF0B107F8F0F>I<12
1FEA2180EA60C0A2120013801201EA0F00EA00801340136012C0A2EA8040EA6080EA1F00
0B107F8F0F>I<1203A25A5A120B121312331223124312C3EAFFE0EA0300A4EA1FE00B10
7F8F0F>I<EA2080EA3F00122C1220A3122FEA3080EA2040EA0060A312C0EA80C0EA6180
EA1F000B107F8F0F>I<EA0780EA1840EA30C0126013005A12CFEAF080EAE040EAC060A3
1240EA60C0EA3080EA1F000B107F8F0F>I<1240EA7FE013C0EA8080A2EA010012025AA2
120C1208A21218A50B117E900F>I<121FEA3180EA60C0A3EA7180EA3F00120FEA3380EA
61C0EAC060A3EA4040EA6080EA1F000B107F8F0F>I<121FEA3180EA60C0EAC0401360A3
EA40E01221EA1E6012001340EA60C01380EA4300123E0B107F8F0F>I
E /Fh 36 122 df<12F0A404047B830E>46 D<14801301A2EB0300A31306A35BA35BA35B
A35BA35BA3485AA448C7FCA31206A35AA35AA35AA35AA35AA311317DA418>I<13C01201
120712FFA212FB1203B3A7B5FCA310227CA118>49 D<EA03F0EA0FFC487EEA3C1F383007
80007013C0EA600300E013E0EAC0011240A21200A3EB03C0A2EB0780A2EB0F00131E5B5B
5B485A5B485A48C7FC120E5A5A5AB512E0A313227EA118>I<EA01F0EA07FCEA1FFFEA3E
0F38380780387003C01220A21200A3EB0780A2EB0F00131EEA03FC5B13FEEA000FEB0780
EB03C0A2EB01E0A5128038C003C012E038700780EA3C0F381FFF00EA0FFCEA03F013237E
A118>I<131FA2132FA2136F13EF13CF1201A2EA038FA21207130F120F120E121E123CA2
1278A212F0B512F8A338000F00A915217FA018>I<383FFF80A3003CC7FCA913F8EA3FFE
7FEB0F80EA3E07383C03C01238380001E0A7384003C0A212E038700780387C1F00EA3FFE
EA0FFCEA03F013227EA018>I<137E48B4FC5AEA07C148C7FC121EA25AA25AA213F8EAF1
FEEAF7FF38FF0F80EAFC0738F803C0A2130100F013E0A51270A21278EB03C01238003C13
80EA1C07381F0F00EA0FFE6C5AEA01F013237EA118>I<B512E0A3C7FCEB01C0EB038013
071400130E131E131C133C13381378A25BA25B1201A3485AA5485AA713217EA018>I<EB
0FF0EB7FFC90B5FC3801F01F3803C0074848C7FC48C8FC121E123E123CA25AA35AA91278
A37EA2123E121E7E6C6C13803803C0033801F00F6CB51200EB7FFCEB0FF019257DA31F>
67 D<EAFFFEEBFFC08038F003F0EB00F8147C80141E80A2EC0780A3EC03C0A915801407
A3EC0F005C141E5C14FCEB03F8B512E05C49C7FC1A237BA223>I<12F0B3AEB512C0A312
237BA21A>76 D<00FC131E7EA312F7A2EAF380A213C012F1A213E012F013F0A21378A213
38133CA2131EA2130E130F1307A2149E1303A2EB01DEA2EB00FEA3147E17237BA222>78
D<EB1FC0EB7FF03801FFFC3803F07E3807C01F390F800F80391F0007C0001E130348EB01
E0A248EB00F0A30070147000F01478A9007814F0A3007C1301003C14E0003E1303001E14
C0001F1307390F800F803907C01F003803F07E6CB45A38007FF0EB1FC01D257DA324>I<
EAFFFCEBFF8014C038F003E0EB00F014781438143CA51438147814F0EB03E0B512C01480
EBFE00EAF01E7F7F1480130314C0EB01E0A2EB00F0A214781438143C141EA2140F18237B
A21F>82 D<13FE3803FFC04813E0EA0F81381E0060481300A25AA5127C123C123FEA1FC0
EA0FFC6CB4FC0001138038003FC0EB07E0EB01F0130014F81478A600C013F07E38F801E0
387E07C0383FFF80000F1300EA01FC15257EA31B>I<00F0011FEB01E0EC3F80A2007816
C0023B1303EC7BC014736C0171EB078014F115E014E16C01E0EB0F00130115F014C0000F
EC701E1303157800070180131C0183EB383CA20187133C000301001338151C01C7147813
CFD801CEEB1E70150EA201EE14F0D800EC5C01FC1307A301785C2B237FA22E>87
D<EA07E0EA1FF8EA3FFCEA381E1220EA000FA413FF1207121FEA3E0F127812F0A4EAF83F
EA7FFFEA3FEFEA1F8F10167E9517>97 D<12F0ADEAF1F0EAF7FCB47EEAFC1F487E38F007
80A2EB03C0A8EB0780A238F80F00EAFC3EEAFFFEEAF7F8EAF1F012237CA219>I<EA01FC
EA07FF481380EA1F03EA3C0148C7FCA2127012F0A61278A36C1340381F03C0EA0FFF6C13
803801FC0012167E9516>I<EA03F0EA07FCEA1FFEEA3E0F383C0780EA7803A238F001C0
B5FCA300F0C7FCA312701278A26C1380EA1F07EA0FFF6C1300EA01F812167E9516>101
D<3801F0783807FFF85A381F1F00EA1E0F383C0780A5381E0F00EA1F1FEA0FFE485AEA19
F00038C7FCA2123CEA1FFEEBFFC014E04813F0EA7801EB00F8481378A4007813F0383E03
E0381FFFC06C13803801FC0015217F9518>103 D<12F0ADEAF1F8EAF3FCEAF7FEEAFE1E
EAF80FA212F0B010237CA219>I<12F0A41200A912F0B3A404237DA20B>I<12F0ADEB1F80
EB3F00133E5B5BEAF1F0EAF3E0EAF7C012FFA27FA2EAFDF0EAF8F8EAF078137C7F131E13
1F7F1480EB07C012237CA218>107 D<12F0B3B104237DA20B>I<39F0F807C039F3FE1FF0
39F7FF3FF839FE0F707800FCEBE07C39F807C03CA200F01380AF1E167C9527>I<EAF1F8
EAF3FCEAF7FEEAFE1EEAF80FA212F0B010167C9519>I<EA01FCEA07FF481380381F07C0
383C01E0387800F0A20070137000F01378A6007813F0A2EA7C01383E03E0381F07C0380F
FF806C1300EA01FC15167F9518>I<EAF1F0EAF7FCB47EEAFC3FEAF80F38F00780A214C0
1303A613071480130F00F81300EAFC3EEAFFFEEAF7F8EAF1F000F0C7FCAA12207C9519>
I<EAF0E012F312F7EAFF005A5A5AA25AAE0B167C9511>114 D<EA07F0EA1FFCEA3FFEEA
3C0EEA78061300A2127C123F13F0EA1FF8EA0FFCEA01FEEA001F130FA312C0EAF81EEAFF
FEEA3FFCEA0FF010167F9513>I<120FA6EAFFF8A3EA0F00AE1308131CEA07FC13F8EA03
E00E1C7F9B12>I<EAF00FB1131FEAF83FEA7FFF13CFEA1F0F10167C9519>I<387801F000
7C13E0383E03C0EA1E07000F138038078F0013DEEA03FC12016C5A137013F8487EEA03DC
139EEA078F380F0780121EEB03C0383C01E0387800F000F813F81516809516>120
D<38F001E0A2387803C0A2127C383C0780A2121E14005B120F130EEA071E139EEA039CA3
EA019813D8EA00F85BA35BA212015BA2485A127F90C7FC127E13207F9516>I
E /Fi 44 125 df<137E3801C180EA0301380703C0120EEB018090C7FCA5B512C0EA0E01
B0387F87F8151D809C17>12 D<1306ADB612E0A2D80006C7FCAD1B1C7E9720>43
D<126012F0A212701210A41220A212401280040C7C830C>I<EAFFE0A20B0280890E>I<12
6012F0A2126004047C830C>I<EA07C0EA1830EA201CEA400C130EEAF00F12F81307A212
70EA000F130EA2131CA213381370136013C0EA0180EA0300EA0601120C1218EA1002EA3F
FE127F12FF101C7E9B15>50 D<1240387FFF801400A2EA4002485AA25B485AA25B136013
4013C0A212015BA21203A41207A66CC7FC111D7E9B15>55 D<126012F0A212601200AA12
6012F0A212701210A41220A212401280041A7C910C>59 D<1306A3130FA3EB1780A3EB23
C0A3EB41E0A3EB80F0A200017FEB0078EBFFF83803007C0002133CA20006133E0004131E
A2000C131F121E39FF80FFF01C1D7F9C1F>65 D<90381F8080EBE0613801801938070007
000E13035A14015A00781300A2127000F01400A8007014801278A212386CEB0100A26C13
026C5B380180083800E030EB1FC0191E7E9C1E>67 D<B512F8380F007814181408A2140C
1404A213021400A3130613FE13061302A490C7FCA77FEAFFF8161C7E9B1B>70
D<39FFF3FFC0390F003C00ACEBFFFCEB003CAD39FFF3FFC01A1C7E9B1F>72
D<EAFFF0EA0F00B3A8EAFFF00C1C7F9B0F>I<B46CEBFF80000FECF800A2390BC00178A3
3809E002A23808F004A3EB7808A3EB3C10A3EB1E20A3EB0F40A2EB0780A3EB0300121C3A
FF8307FF80211C7E9B26>77 D<EB3F80EBE0E03803803848487E000E7F487F003C148000
381303007814C0A20070130100F014E0A8007014C000781303A200381480003C1307001C
14006C130E6C5B6C6C5A3800E0E0EB3F801B1E7E9C20>79 D<B51280380F00E01478143C
141C141EA5141C143C147814E0EBFF8090C7FCACEAFFF0171C7E9B1C>I<007FB512C038
700F010060130000401440A200C014201280A300001400B1497E3803FFFC1B1C7F9B1E>
84 D<12FEA212C0B3B312FEA207297C9E0C>91 D<12FEA21206B3B312FEA20729809E0C>
93 D<EA1FC0EA3070EA78387F12301200A2EA01FCEA0F1C12381270126000E01340A3EA
603C38304E80381F870012127E9115>97 D<12FC121CAA137CEA1D86EA1E03381C018014
C0130014E0A614C013011480381E0300EA1906EA10F8131D7F9C17>I<EA07E0EA0C30EA
18781230EA7030EA600012E0A61260EA70041230EA1808EA0C30EA07C00E127E9112>I<
133F1307AAEA03E7EA0C17EA180F487E1270126012E0A61260127012306C5AEA0C373807
C7E0131D7E9C17>I<EA03E0EA0C30EA1818EA300CEA700EEA600612E0EAFFFEEAE000A4
1260EA70021230EA1804EA0C18EA03E00F127F9112>I<13F8EA018CEA071E1206EA0E0C
1300A6EAFFE0EA0E00B0EA7FE00F1D809C0D>I<EB03803803C4C0EA0C38001C13803818
1800EA381CA4EA1818EA1C38EA0C30EA13C00010C7FC12307EEA1FF813FF1480EA300338
6001C0EAC000A33860018038300300EA1C0EEA07F8121C7F9215>I<12FC121CAA137C13
87EA1D03001E1380121CAD38FF9FF0141D7F9C17>I<1218123CA21218C7FCA712FC121C
B0EAFF80091D7F9C0C>I<13C0EA01E0A2EA00C01300A7EA0FE01200B3A21260EAF0C012
F1EA6180EA3E000B25839C0D>I<12FC121CB3A9EAFF80091D7F9C0C>108
D<39FC7E07E0391C838838391D019018001EEBE01C001C13C0AD3AFF8FF8FF8021127F91
24>I<EAFC7CEA1C87EA1D03001E1380121CAD38FF9FF014127F9117>I<EA03F0EA0E1CEA
1806487E00701380EA600100E013C0A600601380EA700300301300EA1806EA0E1CEA03F0
12127F9115>I<EAFC7CEA1D86EA1E03381C018014C0130014E0A6EB01C0A21480381E03
00EA1D06EA1CF890C7FCA7B47E131A7F9117>I<EA03C1EA0C33EA180BEA300FEA7007A2
12E0A612601270EA300F1218EA0C37EA07C7EA0007A7EB3FE0131A7E9116>I<EAFCE0EA
1D30EA1E78A2EA1C301300ACEAFFC00D127F9110>I<EA1F90EA3070EA4030EAC010A212
E0EAF800EA7F80EA3FE0EA0FF0EA00F8EA8038131812C0A2EAE010EAD060EA8FC00D127F
9110>I<1204A4120CA2121C123CEAFFE0EA1C00A91310A5120CEA0E20EA03C00C1A7F99
10>I<38FC1F80EA1C03AD1307120CEA0E1B3803E3F014127F9117>I<38FF07E0383C0380
381C0100A2EA0E02A26C5AA3EA0388A213D8EA01D0A2EA00E0A3134013127F9116>I<39
FF3FCFE0393C0F0380381C07011500130B000E1382A21311000713C4A213203803A0E8A2
EBC06800011370A2EB8030000013201B127F911E>I<387F8FF0380F03801400EA0702EA
0384EA01C813D8EA00F01370137813F8139CEA010E1202EA060738040380381E07C038FF
0FF81512809116>I<38FF07E0383C0380381C0100A2EA0E02A26C5AA3EA0388A213D8EA
01D0A2EA00E0A31340A25BA212F000F1C7FC12F31266123C131A7F9116>I<B812802901
808B2A>124 D E /Fj 8 118 df<127812FCA412781200A6127812FCA4127806127D910D
>58 D<B512F814FF390FC01FC0EC07E0EC01F015F8140015FC157CA2157EA8157CA315F8
A2EC01F0EC07E0EC1FC0B6120014F81F1C7E9B25>68 D<EA03FCEA0E0EEA1C1F123C1278
130E00F8C7FCA61278EB0180123C381C0300EA0E0EEA03F811127E9115>99
D<121E123FA4121EC7FCA6B4FCA2121FAEEAFFE0A20B1E7F9D0E>105
D<38FF0FC0EB31E0381F40F0EB80F8A21300AB38FFE7FFA218127F911B>110
D<EA01FC380F0780381C01C0003C13E0387800F0A200F813F8A6007813F0A2383C01E038
1E03C0380F07803801FC0015127F9118>I<EA1FD8EA3078EA601812E0A2EAF000EAFF80
EA7FE013F0EA1FF8EA07FCEA007CEAC01CA212E01318EAF830EACFC00E127E9113>115
D<38FF07F8A2EA1F00AC1301120F380786FFEA01F818127F911B>117
D E /Fk 30 119 df<14C0A3495AA449C7FCA41306A2B612E0A2D8000CC7FCA45BA45BA4
13201B1C7A9823>43 D<127012F8A212F012E005057B840E>46 D<14021406A2140E141E
A2143F142F144FA2148FEB010FA21302A21304130C13081310A201201380EB3FFFEB4007
13C01380EA0100A21202A21206001E130F39FF807FF81D207E9F22>65
D<48B512C039001E00F015781538153C5BA4491378A215F0EC01E09038F007809038FFFE
009038F00F80EC03C03801E00115E0A3EA03C0A315C038078003EC0780EC0F00141E380F
0078B512E01E1F7D9E20>I<ECFE02903807818690381C004C49133C136049131C000114
18485A48C7FC5A001E1410A2481400A25AA45AA415801270A2EC01007E140200185B6C13
186C1320380381C0D800FEC7FC1F217A9F21>I<48B512FE39001E001C150C1504A25BA4
90387808081500A21418495AEBFFF0EBF030A23801E020A3EC001048481320A21540A248
481380140115001407380F001FB512FE1F1F7D9E1F>69 D<3801FFF038001F00131EA35B
A45BA45BA4485AA4485AA4485AA4120FEAFFF8141F7D9E12>73 D<D801FEEC7FC0D8001E
ECFC005E0117EB0178A20127EB02F01504A215080147EB09E015111521A20187495AEB83
801583A23A01038107801482A2148400024AC7FC14881490A2390401E01EA214C0000C13
80001C143E3AFF8103FFC02A1F7D9E29>77 D<48B5128039001E00E015701538153C5BA4
491378A215F015E09038F003C0EC0F00EBFFFC01F0C7FC485AA4485AA4485AA4120FEAFF
F01E1F7D9E1F>80 D<903807E04090381C18C09038300580EB600313C000011301018013
001203A391C7FC7FA213F86CB47E14E06C6C7E131FEB01F8EB0078A21438A21220A21430
00601370146014E000705B38E80380D8C606C7FCEA81F81A217D9F1A>83
D<397FFC1FF83907C003C09038800100A3380F0002A4001E5BA4485BA4485BA4485BA35C
A200705B49C7FCEA3002EA3804EA0C18EA07E01D20779E22>85 D<EBF180380389C03807
0780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C135C38308C8038
0F070013147C9317>97 D<EA0780123FEA0700A4120EA45AA213F0EA1D0CEA3A0E123CEA
380FA21270A4EAE01EA3131C133C1338EA607013E0EA31C0EA1F0010207B9F15>I<137E
EA01C138030080EA0E07121E001C1300EA3C0248C7FCA35AA5EA70011302EA3004EA1838
EA07C011147C9315>I<1478EB03F8EB0070A414E0A4EB01C0A213F1EA038938070780EA
0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C135C38308C80380F0700
15207C9F17>I<137CEA01C2EA0701120E121C123CEA3802EA780CEA7BF0EA7C0012F0A4
127013011302EA3804EA1838EA07C010147C9315>I<1478EB019CEB033CA2EB07181400
A2130EA53801FFE038001C00A45BA55BA65BA45B1201A25B1231007BC7FC12F31266123C
1629829F0E>I<EB3C60EBE2703801C1E0EA0380EA07005A380E01C0121EA3383C0380A4
EB0700A2EA1C0F1317EA0C2EEA03CEEA000EA25BA21230EA7838485AEA60E0EA3F80141D
7E9315>I<13C0EA01E0A213C0C7FCA7120E12331223EA4380130012471287120EA35AA3
EA3840138012301270EA31001233121C0B1F7C9E0E>105 D<EB0180EB03C0A2148090C7
FCA7133C13461387A2EA0107A2EA020E1200A35BA45BA45BA45BA21230EA79C0EAF18000
63C7FC123C1228829E0E>I<EA03C0121FEA0380A4EA0700A4120EA45AA45AA45AA31271
12E2A4126412380A207C9F0C>108 D<391C0F80F0392630C318394740640C903880680E
EB0070A2008E495A120EA34848485AA3ED70803A3803807100156115E115623970070066
D83003133821147C9325>I<381C0F80382630C0384740601380EB0070A2008E13E0120E
A3381C01C0A3EB03840038138814081307EB031000701330383001C016147C931A>I<13
7CEA01C338030180000E13C0121E001C13E0123C1278A338F003C0A3EB07801400EA700F
130EEA3018EA1870EA07C013147C9317>I<3801C1E0380262183804741C1378EB701EA2
EA08E01200A33801C03CA3143838038078147014E0EBC1C038072380EB1E0090C7FCA212
0EA45AA2EAFFC0171D809317>I<EA1C1EEA26613847838013871307EB0300008EC7FC12
0EA35AA45AA45A123011147C9313>114 D<13FCEA0302EA0601EA0C03130713061300EA
0F8013F0EA07F8EA03FCEA003E130E1270EAF00CA2EAE008EA4010EA2060EA1F8010147D
9313>I<EA018013C0EA0380A4EA0700A2EAFFF0EA0700120EA45AA45AA31320EA7040A2
1380A2EA3100121E0C1C7C9B0F>I<000E13C0003313E0382301C0EA4381130112473887
0380120EA3381C0700A31410EB0E201218A2EA1C1E380C26403807C38014147C9318>I<
380E0380EA3307002313C0EA43831301EA470000871380120EA3381C0100A31302A25BA2
5BEA0E30EA03C012147C9315>I E /Fl 31 90 df<13031304130813101320136013C0EA
018013005A1206A25AA2121C1218A212381230A21270A21260A412E0A61260A57EA21210
12181208120C12047E7E102E7CA112>40 D<138013C01360132013301318A2130CA3130E
1306AB130EA3130CA2131C1318A213381330A21360A213C0A2EA018013005A12065A5A5A
5A12800F2E7FA112>I<801301A549C7FCA61306A3B612E0A2D80006C7FC5BA65BA65B13
101B207B9A23>43 D<121C123E127EA2123A1202A21204A21208A21210122012C0070E7D
840D>I<EAFFC0A20A027D8A0F>I<1230127812F81278127005057C840D>I<EB3F80EBC1
E0380100F0000213785AA2000F137C1380A2EB00781206C712F814F0EB01E014C0EB0380
EB0700130E5B5B13605B485A380300201206000813405A383FFFC0481380B5FC161E7E9D
17>50 D<137F380183C0380201E0380400F012075A1301A2000013E0A2EB03C01480EB07
00130E13F8130E7F148014C0130313071230127812F8A200F0138038800F00EA400E6C5A
EA1878EA07E0141F7D9D17>I<1460A214E0EB01C013031305130D13091311EB23801343
13C31383EA010312023804070012081218121012201240B512F038000E00A55B131E3801
FFE0141E7E9D17>I<EB0F80EB7040EBC020380180E0EA03011207380E00C0001E130012
1C123C1238EA78F8EA790EEA7A07EA7C0300F81380A200F013C0A4EB078012E0A214005B
EA600EEA701CEA3018EA1870EA07C0131F7C9D17>54 D<1220383FFFE04813C014803840
0100EAC00212805B485A5B5B5BA25B120148C7FCA25A1206120EA2121E121CA2123CA35A
A31230131F799D17>I<141014181438A21478A214FCEB01BC143C130313021306EB043E
EB081EA21310A21320801340A290B5FCEB800FD80100138014071202A25AA2000C14C012
3E39FF807FFC1E207E9F22>65 D<0007B5FC39007C01C0013C13E0EC00F04913F8A515F0
EBF00115E0EC03C0EC0F809038FFFE00EBF00F3901E007C0140315E01401A3EA03C01403
A215C01407EC0F80D807801300143EB512F01D1F7E9E20>I<903801F80890380E061890
3838013890387000F8484813784848137048481330A248C7FC5A121E003E1420003C1400
127CA45AA5007814401580A27EEC0100001C13027E0006130C6C13103801C0E0D8003FC7
FC1D217B9F21>I<0007B5FC39007C01E090383C00F0157849133CA2151EA3151F5BA648
48131E153EA3153C157C4848137815F0A2EC01E0EC03C0EC07803907800F00143CB512E0
201F7E9E23>I<0007B512F839007C0078013C133815185B1508A414089038F01000A314
30EBFFF0EBF0703801E020A4EC00081510485AA21520A2156015C0380780011407B61280
1D1F7E9E1F>I<0007B512F839007C0078013C133815185B1508A59038F01000A3143014
70EBFFF03801E0601420A491C7FC485AA6485A7FEAFFFE1D1F7E9E1E>I<903801FC0490
380F030C90383C009C0170137C49133C4848133848481318120748C7FC5A121E003E1410
003C1400127CA45AA2EC7FFCEC03E000781301A2EC03C0A27EA2121C6C13076CEB0B8038
0380113801E06039003F80001E217B9F24>I<3A07FFC7FFC03A007C00F800013C1378A2
495BA649485AA490B5FCEBF0014848485AA64848485AA6484848C7FC01C07F39FFF8FFF8
221F7E9E22>I<3807FFE038007C00133CA25BA65BA6485AA6485AA6485A7FEAFFFC131F
7F9E10>I<3807FFF0D8007EC7FC133CA25BA65BA6485AA41580EC0100EA03C0A25C1402
1406A23807801E147CB512FC191F7E9E1C>76 D<D807FCECFFC0D8007CECF800013CEB01
78A2014EEB02F0A21504A21508A20187EB11E0A21521A21541EB8380D80103495AA2EC81
031482EB01C214C400024A5A14C8A214D0EB00F0000613E04BC7FC000F01C07F3AFFE0C1
FFF82A1F7E9E2A>I<3A07FC01FFC03A003E003E001518A2014F1310A2EB4780A2EB43C0
A201835BEB81E0A2EB80F0A21478D801005B147C143CA2141EA200026D5AA31407A20006
130392C7FC000F7FEAFFE0221F7E9E22>I<EB03F8EB1E0EEB38079038E003803901C001
C0000314E03807800048C712F0A2121E15F8123E123C127CA448EB01F0A4EC03E0127815
C01407007C1480003CEB0F00141E6C131C000E5B6C13F03803C3C0D800FEC7FC1D217B9F
23>I<0007B5FC39007C03C090383C01E0EC00F05B15F8A415F0EBF00115E0EC03C0EC07
80EC0F00EBFFF8D801E0C7FCA6485AA6485A7FEAFFFC1D1F7E9E1F>I<3807FFFC38007C
0790383C03C0EC01E0137815F0A415E0EBF00315C0EC0780EC0F00143CEBFFF03801E030
143880A3141E3803C03EA51502D807801304EBC01F39FFFC0F18C7EA03E01F207E9E21>
82 D<EB3F04EB60CC3801803C0003131C130048131800061308120EA31400120F7F13E0
EA07FE3803FF806C13C038007FE013071301130014F0A2004013E0A4006013C0EB0180EA
E00300F81300EAC60CEA81F816217D9F19>I<003FB512F0383C07800030143012603940
0F0010A212C01280A3D8001E1300A65BA65BA65B487E387FFFE01C1F7A9E21>I<39FFFC
3FF8390F8007C00007EB0300A2380F0002A6001E5BA6485BA600385BA35C003C5B121C5C
6C48C7FCEA0706EA01F81D20799E22>I<3A03FFC0FFC03A007F007E00013E1338011E13
3015206D5B5D0281C7FCEB078214C6EB03C414E8EB01F0A2130080A2EB017CEB023C1304
EB0C1E1308EB101F497E01407FEBC00701807F38010003000780381F800739FFE01FFE22
1F7F9E22>88 D<39FFF003FF391F8000F86CC712606D134000071480EBC00100031400EB
E00200015BEBF00C140800005B6D5AEB7860EB7C40EB3C80013FC7FC7F131EA3131C133C
A513381378137C380FFFC0201F7A9E22>I E /Fm 27 122 df<1306AFB612F0A2D80006
C7FCAF1C207D9A23>43 D<131FA2497E133BA2EB7BC013731371EBF1E013E113E000017F
A213C000031378A2138000077FA21300380FFFFEA3381E000FA24814801407A24814C014
03A24814E01B207F9F1E>65 D<EB1FC0EBFFF84813FC3803E03C3807800C48C7FC121E12
3E123C127C1278A35AA81278A3127C123C123E121E6C13023807800E3803E03E3801FFFC
6C13F0EB1FC017227DA01D>67 D<12F0B3AE04207C9F0D>73 D<12F0B3ABB51280A31120
7B9F19>76 D<00F8EB01F86C1303A200F4147800F61307A300F3130EA3EB801EA200F113
1CEBC03CA200F01338A2EBE078A2EB6070EB70F0A2EB30E01339A2EB19C0A3EB0F80A390
C7FC1D207B9F28>I<133FEBFFC0000313F03807E1F8380F807C48487E001E131E487FA2
48EB0780A348EB03C0A96C130700781480A36CEB0F00A26C131E001F133E6C6C5A3807E1
F86CB45AC613C0013FC7FC1A227DA021>79 D<EAFFF813FF148038F00FC0EB03E01301EB
00F0A7EB01E01303EB0FC0B51280140013F800F0C7FCAD14207B9F1D>I<EAFFF813FF14
8038F007C0EB03E01301EB00F0A5EB01E01303EB07C0B51280140013F8EAF03C7FA27FA2
EB0780A2EB03C0130114E0EB00F0A21478A2143C16207B9F1D>82
D<EA07E0EA3FF8EA7FFCEA701EEA401FEA000FA3133FEA07FF121FEA7E0F12F812F0A3EA
F83FEA7FFFEA3FEFEA1F8F10147E9316>97 D<12F0ACEAF1F0EAF7FCB47EEAFC3EEAF80F
12F0EB0780A7EB0F00A26C5AEAFC3EEAFFFCEAF7F8EAF1E011207D9F17>I<EA03F0EA0F
FCEA1FFEEA3E0EEA3C02EA7800A25AA61278A2EA3C01EA3E0FEA1FFFEA0FFEEA03F01014
7E9314>I<EB0780ACEA07C7EA0FF7EA1FFFEA3E1FEA7C07127812F812F0A71278130FEA
3E1FEA1FFFEA0FF7EA07C711207E9F17>I<EA03F0EA0FFC487EEA3E1FEA3C0712783870
0380B5FCA300F0C7FCA3127012786C5AEA3E076CB4FCEA07FEEA01F811147F9314>I<38
03E0F0EA0FFF5A383E3E00EA3C1E487EA5EA3C1EEA3E3EEA1FFC485AEA33E00030C7FC12
38EA3FFEEBFF806C13C04813E0387803F0EAF000A3EAF801387E07E0383FFFC0000F1300
EA03FC141E7F9317>103 D<12F0ACEAF1F8EAF3FCEAF7FEEAFC1FEAF80FA212F0AE1020
7D9F17>I<12F0A41200A812F0B3A204207D9F0B>I<EA01E0A4C7FCA8EA01E0B3A7EAC3C0
12FF1380EA3F000B29839F0C>I<12F0B3AE04207D9F0B>108 D<39F0FC07E039F3FE1FF0
39F7FF3FF839FE0FF07C39F807C03CA200F01380AE1E147D9325>I<EAF1F8EAF3FCEAF7
FEEAFC1FEAF80FA212F0AE10147D9317>I<EAF1F0EAF7FCB47EEAFC3E487E487E148013
07A6EB0F00A26C5AEAFC3EEAFFFCEAF7F8EAF1E000F0C7FCA9111D7D9317>112
D<EAF0E012F312F7EAFF0012FCA25AA25AAC0B147D9310>114 D<EA07F0EA1FFC123FEA
780C1300A3127CEA3FC0EA1FF0EA0FF81203EA007C133CA212C0EAF07CEAFFF8EA7FF0EA
0FC00E147F9311>I<121EA6EAFFF0A3EA1E00AD1320EA1FF0120FEA07C00C1A7F9910>I<
D8F01F13F01480A239781B81E0133B14C11339393C31C3C0137114E3D81C701380381E60
E7A213E0000EEB770013C0A20007137E143E13801C147F931F>119
D<38F003C0A238780780A2127C383C0F00A2121E131E120EEA0F1CA2EA073C1338EA03B8
A213B0EA01F0A26C5AA2485AA3485A1207007FC7FC127E127C121D7F9315>121
D E /Fn 78 124 df<90381F83E09038F06E303901C07878380380F8903800F03048EB70
00A7B612803907007000B2387FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA
0701A290C7FCA6B512E0EA0700B2387FC3FE1720809F19>I<EB3FE013E0EA01C1EA0381
EA0700A8B5FCEA0700B2387FE7FE1720809F19>I<90381F81F89038F04F043901C07C06
390380F80FEB00F05A0270C7FCA6B7FC3907007007B23A7FE3FE3FF02420809F26>I<EA
7038EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008A2EA2010EA40200F0E7E9F17>
34 D<132013401380EA0100120212065AA25AA25AA312701260A312E0AC1260A3127012
30A37EA27EA27E12027EEA0080134013200B2E7DA112>40 D<7E12407E7E7E120C7EA27E
A2EA0180A313C01200A313E0AC13C0A312011380A3EA0300A21206A25A12085A5A5A5A0B
2E7DA112>I<1306AFB612F0A2D80006C7FCAF1C207D9A23>43 D<127012F812FCA21274
1204A31208A21210A212201240060E7C840D>I<EAFFC0A20A027F8A0F>I<127012F8A312
7005057C840D>I<13011303A21306A3130CA31318A31330A31360A313C0A3EA0180A3EA
0300A31206A35AA35AA35AA35AA35AA3102D7DA117>I<EA03F0EA0E1C487EEA1806EA38
0738700380A400F013C0AD00701380A3EA780700381300EA1806EA1C0E6C5AEA03F0121F
7E9D17>I<EA01801203120F12F31203B3A6EA07C0EAFFFE0F1E7C9D17>I<EA03F0EA0C1C
EA100E487E00401380128000F013C0EAF803A3EA200712001480A2EB0F00130E5B5B5B13
605B485A48C7FC000613405A5A00101380EA3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1C
EA100EEA200F007813801307A2EA380F12001400A2130E5B5BEA03F0EA003C130E130FEB
0780A214C0122012F8A300F013801240EB0F00EA200EEA1C3CEA03F0121F7E9D17>I<13
06A2130EA2131E132EA2134E138EA2EA010E1202A212041208A212101220A2124012C0B5
12F038000E00A7EBFFE0141E7F9D17>I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA
161CEA180EEA10071480EA0003A214C0A3127012F0A200E013801240EB0700EA2006EA10
0EEA0C38EA03E0121F7E9D17>I<137CEA0182EA0701380E0380EA0C07121C3838030090
C7FC12781270A2EAF1F0EAF21CEAF406EAF807EB0380A200F013C0A51270A214801238EB
07001218EA0C0E6C5AEA01F0121F7E9D17>I<1240387FFFC01480A238400100EA8002A2
5B485AA25B5BA25BA213C0A212015B1203A41207A76CC7FC121F7D9D17>I<EA03F0EA0C
0CEA1006EA3003382001801260A3127038780300123EEA3F06EA1FC8EA0FF0EA03F8487E
EA0C7EEA103F38300F80EA6003384001C012C01300A31480EA600100201300EA1002EA0C
0CEA03F0121F7E9D17>I<EA03F0EA0E18487E487E13071270EB038012F0A214C0A5EA70
07A21238EA180BEA0E13EA03E338000380A3EB07001230EA7806130EEA700CEA2018EA10
70EA0FC0121F7E9D17>I<127012F8A312701200AA127012F8A3127005147C930D>I<1270
12F8A312701200AA127012F012F8A212781208A31210A31220A21240051D7C930D>I<5B
497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA3497EA2EBFFFE3801000FA30002EB07
80A348EB03C0120E001FEB07E039FFC03FFE1F207F9F22>65 D<B512E0380F8038000713
1E141F801580A515005C141E5CEBFFF0EB803C80801580140715C0A51580140F15005C00
0F133CB512F01A1F7E9E20>I<90380FC04090387030C03801C009380380053807000300
0E1301001E1300121C123C007C1440A2127800F81400A91278007C1440A2123C121C001E
1480120E6CEB0100380380026C6C5A38007038EB0FC01A217D9F21>I<B512E0380F803C
00077F1407EC038015C0EC01E0A215F01400A215F8A915F0A3EC01E0A2EC03C01580EC07
00140E000F133CB512E01D1F7E9E23>I<B6FC380F800F00071303A28015801400A31480
1500A3138113FF13811380A4EC0020A31540A315C0A2EC0180000F130FB6FC1B1F7E9E1F
>I<B6FC380F800F00071303A28015801400A4EC8000A4138113FF13811380A491C7FCA8
487EEAFFFE191F7E9E1E>I<90380FE02090387818609038E004E0380380023807000148
1300001E1460A25A1520127C127800F81400A7EC7FFCEC03E000781301127C123CA27EA2
7E7E380380023900E00460903878182090380FE0001E217D9F24>I<39FFF8FFF8390F80
0F8000071400AC90B5FCEB800FAE000F148039FFF8FFF81D1F7E9E22>I<EAFFFCEA0FC0
EA0780B3A9EA0FC0EAFFFC0E1F7F9E10>I<380FFFC038007C00133CB3A3122012F8A3EA
F038EA40781370EA30E0EA0F8012207E9E17>I<39FFFC0FFC390FC003E0390780018015
0014025C5C5C5C5C5C0181C7FC1383EB8780138FEB93C0EB91E013A1EBC0F01380147880
A280A280EC0780A215C0D80FC013E039FFFC3FFC1E1F7E9E23>I<EAFFFEEA0FC06C5AB2
1402A414061404A2140C141C000F137CB512FC171F7E9E1C>I<B46CEB1FF8000F158000
071500D805C0132FA3D804E0134FA20170138FA3903838010FA3EB1C02A3EB0E04A3EB07
08A3EB0390A2EB01E0A3380E00C0001FEC1F803AFFE0C1FFF8251F7E9E2A>I<39FF803F
F83907C007C0EC03803905E00100A2EA04F01378A2133CA2131E130FA2EB0781A2EB03C1
EB01E1A2EB00F1A21479143DA2141FA28080A2000E7F121F38FFE0011D1F7E9E22>I<EB
1F80EBF0F03801C0383807801E48487E000E7F001E148048EB03C0A2007C14E000781301
A200F814F0A9007814E0007C1303A2003C14C0A26CEB0780000E1400000F5B3807801E38
01C0383800F0F0EB1F801C217D9F23>I<B512E0380F80780007131C141E801580A61500
141E141C1478EBFFE00180C7FCAD487EEAFFFC191F7E9E1F>I<B57E380F80F000071378
8080A2141FA4141EA25C5C5CEBFF80EB81C0EB80E08014701478A3147CA31504147E143E
390FC01E0839FFFC0F10C7EA03E01E207E9E21>82 D<3807E080EA0C19EA1007EA3003EA
6001A212E01300A36C1300A21278127FEA3FF0EA1FFC6C7EEA03FF38001F801307EB03C0
A213011280A400C01380130300E01300EAF006EACE0CEA81F812217D9F19>I<007FB512
E038780F010060EB006000401420A200C0143000801410A400001400B3497E3807FFFE1C
1F7E9E21>I<39FFFC3FF8390FC007C03907800380EC0100B3A300031302A2EA01C05C6C
6C5AEB7018EB3820EB0FC01D207E9E22>I<39FFF003FE391F8000F86CC712607F000714
40A26C6C1380A33901E00100A213F000001302A2EBF806EB7804A26D5AA36D5AA2EB1F30
EB0F20A2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF07FF81FF03B1F800FC007C03B
0F0007800380EE010015C0D807801402A33A03C009E004A39039E010F00C00011508A290
38F0207800005DA2EC403C01785CA2ECC03E90393C801E40A390391F000F80A3011E1307
010E91C7FCA2010C7F010413022C207F9E2F>I<387FFFF8EA7C00007013F0386001E012
4038C003C0A238800780130F1400EA001EA25BA25B13F85B485AA23803C004A2EA078012
0FEB000C121E1408481318A248133838F801F8B5FC161F7D9E1C>90
D<12FEA212C0B3B3A512FEA2072D7CA10D>I<EA0804EA1008EA2010A2EA4020A2EA8040
A3EAB85CEAFC7EA2EA7C3EEA381C0F0E7B9F17>I<12FEA21206B3B3A512FEA2072D7FA1
0D>I<1230127812FC1278123006057D9E0D>95 D<EA1FE0EA3030EA7818131CEA300E12
00A313FEEA078EEA1E0E1238127800F01310A3131E127838386720380F83C014147E9317
>97 D<120E12FE120EAA133EEBC380380F01C0EB00E0120E1470A21478A61470A214E012
0F380D01C0380CC300EA083E15207F9F19>I<EA03F8EA0E0CEA1C1E1238130CEA7000A2
12F0A61270A2EA3801A2EA1C02EA0E0CEA03F010147E9314>I<EB0380133F1303AAEA03
E3EA061BEA1C07EA3803A21270A212F0A61270A212381307121CEA0E1B3803E3F815207E
9F19>I<EA03F0EA0E1C487E487EA21270EB038012F0A2B5FC00F0C7FCA31270A26C1380
1218380C0100EA0706EA01F811147F9314>I<137C13C6EA018F1203EA07061300A7EAFF
F0EA0700B2EA7FF01020809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA
380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381FFF806C13C0383001E038600070
481330A4006013606C13C0381C03803803FC00141F7F9417>I<120E12FE120EAA133E13
43EB8180380F01C0A2120EAE38FFE7FC16207F9F19>I<121C121E123E121E121CC7FCA6
120E127E120EB1EAFFC00A1F809E0C>I<13E0EA01F0A3EA00E01300A61370EA07F01200
1370B3A31260EAF06013C0EA6180EA3F000C28829E0E>I<120E12FE120EAAEB0FF0EB03
C0140013025B5B5B1330137013F8EA0F38EA0E1C131E130E7F1480130314C014E038FFCF
F815207F9F18>I<120E12FE120EB3ABEAFFE00B20809F0C>I<390E1F01F039FE61861839
0E81C81C390F00F00EA2000E13E0AE3AFFE7FE7FE023147F9326>I<EA0E3EEAFE43380E
8180380F01C0A2120EAE38FFE7FC16147F9319>I<EA01F8EA070E381C0380383801C0A2
387000E0A200F013F0A6007013E0A2383801C0A2381C038038070E00EA01F814147F9317
>I<EA0E3E38FEC380380F01C0EB00E0120E14F014701478A6147014F014E0EA0F0114C0
380EC300133E90C7FCA8EAFFE0151D7F9319>I<3803E080EA0619EA1C05EA3C07EA3803
1278127012F0A61270127812381307EA1C0BEA0E13EA03E3EA0003A8EB3FF8151D7E9318
>I<EA0E78EAFE8CEA0F1EA2130CEA0E00AEEAFFE00F147F9312>I<EA1F90EA3070EA4030
EAC010A3EAE0001278EA7F80EA3FE0EA0FF0EA0070EA80381318A212C0A2EAE030EAD060
EA8F800D147E9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1308A5EA06101203
EA01E00D1C7F9B12>I<380E01C0EAFE1FEA0E01AE13031206EA030D3801F1FC16147F93
19>I<38FF83F8381E01E0381C00C06C1380A338070100A2EA0382A3EA01C4A213ECEA00
E8A21370A3132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440
A214C0D807071380130414E039038861001471EBC8733801D032143A3800F03CEBE01CA2
EB6018EB40081E147F9321>I<387FC3FC380F01E0000713C0148038038100EA01C2EA00
E413EC13781338133C137C134E1387EA010738030380380201C0000613E0121E38FF07FE
1714809318>I<38FF83F8381E01E0381C00C06C1380A338070100A2EA0382A3EA01C4A2
13ECEA00E8A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA3FFF
EA380E1220131CEA403813781370EA00E0120113C0EA038012071301120E121EEA1C03EA
3802EA7006130EEAFFFE10147F9314>I<B512FC1601808C17>I E
/Fo 45 122 df<EC0F80137E13FE12011203D807C0C7FC5B120FA939FFFE0F80A3EA0F80
B3A6192B7FAA1F>12 D<1438B2B712FEA3C70038C7FCB227277DA12E>43
D<12F8A5123812301270A21260A212E0050C7B8410>I<EAFFFEA30F037F8E14>I<12F8A5
05057B8410>I<13301370EA01F0120F12FFA212F11201B3ACB512E0A313287BA71D>49
D<13FE3803FF80000F13C04813E0EB07F0383C01F8387800FC147C127000F0133EA21260
1220C7FCA3147CA2147814F8EB01F014E01303EB07C0EB0F80EB1F00133E5B5B485A485A
5B485A48C7FC121E5A387FFFFEA417287EA71D>I<137E3803FF804813E0001F13F0383F
83F8EA3E0048137C123812301210C7FCA214F8A21301EB03F0EB0FE03801FFC0148014C0
14E0380001F8EB00FC147C143EA2141FA57E6C133E7E6C137E007C13FC383F01F8381FFF
F06C13E0000313C03800FE0018297EA71D>I<EB07E0130F130B131BA2133BA21373A213
F3A2EA01E3A2120313C31207EA0F83A2EA1F03A2123EA2127CA212F8B6FCA4380003E0AA
18277EA61D>I<383FFFF8A4003EC7FCAA133EEBFF80003F13E014F013C1EB00F8147C12
3EC7FC143EA712400060137C12E06C13F8EA7801387F07F0383FFFE0000F13C06C1300EA
01FC17287EA61D>I<EB0FE0EB3FF813FF5A3803F0183807E000EA0F8090C7FC5A123EA2
123C127C1302EB3FC038F8FFE000F913F000FB13F838FF80FC38FE007C143E5A143F141F
5AA41278127CA2141E003C133E123E001E137C001F13FC380FC1F83807FFF06C13E06C13
8038007E0018297EA71D>I<B6FCA4C7120F141E143C147814F814F0EB01E0130314C0EB
0780130F14005B131E133EA2133C137CA25BA35B1201A5485AA718277EA61D>I<137E38
03FFC04813E04813F0381F81F8383F00FC003E137C007E137E007C133EA56C137CA26C13
F8380FC3F03807FFE06C13C0A2000F13F0381F81F8383F00FC003E137C48133EA248131F
A6007C133EA2007E137E6C13FC381F81F8380FFFF06C13E06C13C038007E0018297EA71D
>I<137E3801FF80000713C04813E0381F83F0EB00F8003E137848137C143C0078133E12
F8A2141E141FA4143F7E127C147F7E383F01FF381FFFDF6C139F6C131F3803FC1E380040
3E1300A2147CA214F8A2EB01F0381803E0381E0FC0383FFF806C13006C5AEA03F818297E
A71D>I<EB03F0A2497EA21478497EA3EB1E3E141EA2EB3E1F133C90387C0F80A2137890
38F807C0A213F000016D7EA213E000036D7EA213C000076D7E90B5FCA24880903880007C
90C7FC4880A2121E003E80A2123C007CEC0F80A24815C01507A2222A7EA927>65
D<B512C014F814FE38F800FFEC1F80EC07C0EC03E0140115F0A214001401A215E01403EC
07C0EC1F80EC7F00B512FE14F88014FF39F8007FC0EC0FE0EC03F01401EC00F81578157C
A615F81401EC03F0EC0FE0EC3FC0B61280ECFE0014F01E2A7BA927>I<EB03FF010F13E0
013F13F890B5FC3801FE013903F80070D807E01310491300485A121F90C8FC123EA25AA4
5AAA127CA47EA27E7F120F6C7E6D1308D803F813383901FE01F86CB5FC013F13F0010F13
C0903803FE001D2C7CAA25>I<B512E014FC14FF39F8007F80EC0FC06E7EEC01F06E7EA2
157C81A2151E151FA2811680AA16005DA3153EA25DA25D4A5A4A5AEC0FC0EC3F80B6C7FC
14FC14E0212A7BA92A>I<B612C0A400F8C8FCAEB6FCA400F8C8FCB0B612E0A41B2A7BA9
23>I<EB03FE90380FFFC0013F13F84913FC3801FE013903F8007CD807E0131849130048
5A121F90C8FC123EA2127E127CA35AA7EC3FFCA3127CEC007CA2127E123EA27E7F120F6C
7E7FEA03F83901FE01FC38007FFF6D13F8010F13C0903803FE001E2C7CAA27>71
D<12F8B3B3A6052A7BA910>73 D<00FE15FFA36C5C00FB15DF6D1303A3D8F9C0EB079FA3
6D130F00F8151FA26D131F0170131EA20178133E0138133C013C137CA2011C1378011E13
F8A2010E13F0EB0F01A2010713E01483A2010313C014C7A20101138014EFA20100130014
FF147EA391C7FC282A7BA933>77 D<B512C014F814FE38F8007FEC1F80EC07C0140315E0
140115F0A615E01403A2EC07C0EC1F80EC7F00B512FE5C14F000F8C8FCB21C2A7BA925>
80 D<B512E014FC14FF39F8003F80EC0FC0EC03E0EC01F0A2EC00F8A6EC01F0A2EC03E0
140FEC3FC0B61280ECFE0014F814E0EAF801806D7EA2147C143C143E141E141FEC0F80A2
EC07C0A2EC03E0140115F0EC00F8A2157C1E2A7BA926>82 D<B712E0A4260001F0C7FCB3
B3A2232A7EA928>84 D<EA01FC380FFF80003F13C014E0383C03F0EA3001000013F81300
A4130113FF1207121FEA3FC0EA7E005A5AA3EAFC01EA7E07EA7FFF7EEA1FFCEA0FE0151B
7E9A1C>97 D<EB7F803801FFE0000713F85A381FC078383F0010003E13005AA35AA7127C
A37E003F1318381FC078380FFFF87E000113E038007F80151B7E9A1A>99
D<143EAFEA01FCEA03FF000F13BE4813FE13C1383F007E003E133E5AA212FC5AA77E127C
A2007E137E6C13FEEA1FC113FF6C13BE3803FE3EEA01F8172A7EA91E>I<13FCEA03FF48
13804813C0381F87E0EA3F01383E00F05A1470481378B512F8A400F8C7FCA31278127CA2
7E003F1318381FC0F8EA0FFF7E000113E038007F00151B7E9A1A>I<EB3FC013FF5A5A38
07E0005B485AA9EAFFFEA3EA0F80B3A6122A7FA912>I<90387C07803901FF3FC0000713
FF5A903883E000381F01F0A2383E00F8A56C485AA2380F83E013FF485B001D90C7FCEA1C
7C003CC8FCA2123E381FFFE014F86C13FE487F481480387E003F007CEB0FC0481307A46C
130F007EEB1F80393F807F00381FFFFE6C5B000313F038007F801A287F9A1D>I<12F8A5
1200AA12F8B3A9052A7CA90E>105 D<12F8B3B3A6052A7CA90E>108
D<D8F83F133F9039FFC0FFC000FB01E313E0B500F713F0018313833AFE01FE01F839FC00
FC00A3485BB2251B7C9A2E>I<EAF83FEBFFC000FB13E0B512F0138338FE01F8EAFC00A3
5AB2151B7C9A1E>I<137E3801FF80000713E04813F0381F81F8383F00FC003E137C4813
3EA20078131E00F8131FA7007C133EA36C137C003F13FC381FC3F8380FFFF06C13E06C13
C038007E00181B7E9A1D>I<EAF83F38F9FFC000FB13E0B512F0EB07F8EAFC0138F800FC
A2147C147E143EA7147E147C14FC6C13F8130138FF07F0EBFFE000FB13C000F9138038F8
7E0090C7FCAC17277C9A1E>I<EBFC3EEA03FF4813BE4813FEEA1FC1EA3F00003E137E00
7E133E127C12FC5AA77E127C127E147E6C13FEEA1FC113FF6C13BE3807FE3EEA01F8C7FC
AC17277E9A1E>I<EAF83C13FC12F912FBEAFFE0138013005A5AA35AB00E1B7C9A14>I<EA
07F8EA1FFF4813805AEA7C0738F8010090C7FCA37E127F13F0EA3FFC6C7EEA07FFC61380
EB1FC0130F1307A2124012E038FC1F80B5FC6C1300EA1FFEEA07F8121B7E9A16>I<EA0F
80A7B51280A3380F8000B2148013C33807FFC0A26C1300EA01F812227FA115>I<00F813
F8B3A213011303EAFC07B5FCEA7FFEEA3FF8EA1FC0151B7C9A1E>I<00F8131FA2007C13
3EA36C137CA36C13F8A3380F81F0A33807C3E0A3000313C013E700011380A30000130013
F713FF137EA2181B7F9A1B>I<007CEB1F80007EEB3F006C133E6C5B380F80FC6C6C5AEB
E1F03803E3E0EA01F76CB45A6D5A91C7FC133EA2133F497E497E3801F3E0EA03E1803807
C0F8380F807C121F497E003E7F007E148048EB0FC01A1B809A1B>120
D<00F8131F7E007C133EA27E147CA27E14F81380000F13F01381EA07C114E013C31203EB
E3C0120113E71480EA00F714001377A2137E133EA2133CA2137C1378A25BA21201EA7FE0
5B5B90C7FC18277F9A1B>I E /Fp 20 122 df<15E01401EC03801407EC1F00143E5C5C
13015C495A1307495A495AA249C7FC5B137E13FEA2485AA212035B1207A2485AA3121F5B
A2123FA35B127FA7485AB06C7EA7123F7FA3121FA27F120FA36C7EA212037F1201A26C7E
A2137E137F7F6D7EA26D7E6D7E13036D7E801300147C8080EC07801403EC01E014001B66
75CC2D>40 D<12C07E12701278123E7E6C7E6C7E7F12036C7E7F6C7E137EA27F80131F80
A26D7EA280130780A26D7EA3801301A280A37F1580A7EC7FC0B0ECFF80A715005BA35CA2
13035CA3495AA25C130F5CA2495AA25C133F91C7FC137EA25B485A5B485A12075B485A48
C8FC123E127812705A5A1A6679CC2D>I<EE07804C7EB3B1007FBB12F0BC12F8A46C1AF0
C9D80FC0C9FCB3B1705A4D4E7AC05A>43 D<B912C018FCF0FF8019E0D8001F90C7000313
F805007FF03FFE727E1A807213C0841AE0A2841AF0A84E13E0A21AC0601A804E13004E5A
4E5A4E5A050313E0057F138092B600FCC7FCF0FF8019F092C8EA7FFCF01FFF0607138072
13C01AE07213F07213F81AFCA2F17FFEA31AFFA81AFEA219FF1AFC601AF84E13F04E13E0
4E13C0063F13804DB51200BA12FC19F0198006F8C7FC48477CC653>66
D<DC7FFE1406030FB500C0131E037F02F8133E0203B600FE137E020F903AF800FF80FE02
3F0180EB1FC1DAFFFCC7EA07F34901F0EC01FF010701C0EC007F4990C9123F4948161F49
48160F49481607495A4818034A16015A48491600A2485B1A7E5A91CBFC48193EA35A4918
00A312FFAD127FA37F6C191EA37E806C193E1A3C6C7FA26C6D17787E6E17F06C18016D6C
17E06D6CEE03C06D6CEE07806D6C6CED0F006D6D153E010101F05D6D01FC4A5A91263FFF
80EB0FF0020F01F8EB7FC0020390B6C7FCDA007F14FC030F14E09226007FFEC8FC47497A
C754>I<B712FEA4D8001F0180C9FCB3B3A419F0A4F001E0A41803A31807A219C0180F18
1FA2183F187FEF01FF5F170F94B51280BAFCA43C477CC646>76 D<90380FFFF090B6FC00
0315C03A07F8007FF0486CEB1FFCED07FE486C6D7E838183816C48816C5A6C5AC9FCA515
7F023FB5FC0103B6FC011F13F090387FFE003801FFE0481380D80FFEC7FC485A5B123F48
5AA2485AA45DA26C6C5BED077F6C6C130F6C6C013E13F83C0FFF80F83FFFE000039038FF
F01FC6ECC00F90390FFE0003332E7CAD38>97 D<EB7FC0B5FCA412037EB3A2ED1FFC92B5
7E02C314F09139CFE01FFC9139DF0003FE02FC6D7E4A6D13804AEC7FC04AEC3FE04A15F0
EF1FF8A218FCA2EF0FFEA418FFAA18FEA318FC171FA218F8EF3FF0A26EEC7FE06E15C06E
ECFF80023C491300D9FE1FEB07FE903AFC0FC03FF8D9F803B512E049C6148049D91FF8C7
FC38487CC741>I<EFFF804BB5FCA4ED000782B3A2EC1FFC49B51283010714E390391FFC
03F390397FE0007FD9FF807F4890C7120F484880000781485AA2485A123FA25B127FA312
FFAA127FA46C7EA2121FA26C7E00075D6C6C5C6C6C5C6C6D137F6D6C01FB13C090273FF8
07E313FF010FB512C3010114039038003FF038487CC741>100 D<EC1FFC49B512C00107
14F090391FF80FFC90397FC001FE49486C7E4890C7EA7F804848EC3FC04848EC1FE0120F
484815F0160F003F16F8A25B007F150717FCA212FFA290B7FCA301F0C9FCA5127FA36C7E
A2001F163CA26C7E17786C6C15F86C6CEC01F06C6DEB03E06C6DEB07C0D93FE0EB1F8090
3A1FFC01FF000107B512FC010014E0020F90C7FC2E2E7DAD35>I<171FDA7FF0EBFFC001
07B5000313E0011FECC7E7903B7FE03FFF0FF09039FF800FFC48EB00074848EB03FE0007
9238FF07E0496DEB03C0000FEE8000A2001F82A8000F5EA2000793C7FC6D5B00035D6C6C
495A6C6D485A9138E03FF0D801DFB512C0D803C791C8FC9038C07FF04848CAFCA37FA27F
A213F890B612F06C15FF17E06C8217FC6C826D8148B812801207D80FF0C7001F13C0D81F
C014014848EC007F007FEE3FE048C9FC171FA56C6CED3FC0A26C6CED7F806C6CEDFF00D8
0FF8EC03FED803FEEC0FF82601FFE0EBFFF06C6CB612C0010F4AC7FCD9007F13C034447D
AE3A>103 D<EB7FC0B5FCA412037EB3A2ED07FE92383FFFC04B13F09139C1F81FF89139
C3C00FFC9139C70007FE14CE02DC8002F87F18805CA25CA35CB3A9B60081B6FCA438487B
C741>I<137C48B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FC
ACEB7FC0B5FCA412037EB3B2B6FCA418497CC820>I<EB7FC0B5FCA412037EB3B3B3A8B6
1280A419487CC720>108 D<9039FF8007FEB590383FFFC04B13F0913981F81FF8913983
C00FFC00039039870007FE6C138E029C8002B87F188014F0A25CA35CB3A9B60081B6FCA4
382E7BAD41>110 D<EC0FFE49B512F0010714FC90391FF803FF90267FE00013C0D9FF80
EB3FE04890C76C7E48486E7E48486E7E000F82491403001F82003F17804980A2007F17C0
A300FF17E0AA007F17C0A46C6C4A1380A2001F17006D5C000F5E6C6C4A5A00035E6C6C4A
5A6C6D495AD97FE0EBFFC090261FFC0790C7FC0107B512FC010114F0D9001F90C8FC332E
7DAD3A>I<90397FC01FFCB590B57E02C314F09139CFE03FFC9139DF0007FE000301FC6D
7E6C496D13804A6D13C04AEC7FE04A15F0EF3FF8A2EF1FFCA218FEA2170FA218FFAA18FE
171FA218FCA2173F18F818F0177F6EECFFE06E15C06E4913806E49130002DFEB0FFE9139
CFC03FF802C3B512E002C01480DB1FF8C7FC92C9FCB0B67EA438427CAD41>I<90397F80
3F80B5EBFFE0028113F8913883C3FC91388707FE0003138E6C90389C0FFF14B8A214F0A2
ED07FE9138E003FCED01F892C7FCA25CB3A8B612E0A4282E7DAD2F>114
D<D97FC0ECFF80B549B5FCA40003EC00076C81B3AA5EA36C5D5EA26D6C133B013F02F313
C090271FF803E313FF6DB51283010314039038003FF8382E7BAD41>117
D<B649B5FCA4000101C09038001FC06EEC0F806C17006E5C017F151E6E143E013F153C80
011F5D8017F8010F5D6E13016D5DED80036D5DEDC0076D5D15E06D4AC7FC15F05E027F13
1EEDF83E023F133CEDFC7C021F1378EDFEF8020F5B15FF6E5BA36E5BA26E5BA26E90C8FC
A2157EA2153CA2157C157815F85D1401001F5C383F8003D87FC05B38FFE0075D140F4AC9
FC141E387FC07C495A383F03F06CB45A00071380D801FCCAFC38427EAD3D>121
D E /Fq 11 121 df<123C123EEA3FE090B71280A41700485D5E5E5EA2007CC7EA03E000
784A5A4B5A93C7FC48141E153E5D5DC7485A5D14034A5A5D140F4AC8FCA25C143E147E14
FE5CA21301A21303A2495AA4130FA5131FA86D5AA2EB03C0293B7BB930>55
D<ED01E04B7EA24B7EA34B7EA24B7EA34B7EA24B7F157BA203F37F15F102018015E00203
805D167F020780ED803F020F80ED001FA24A80021E130F023E80023C7FA24A818202F881
4A7FA249B77EA24982A2D907C0C76C7E5C173F010F8291C8121F4982011E150FA2013E82
013C81017C8301788113FCB500F00103B612C0A4423B7DBA49>65
D<DB1FFE14600203B500E013E0021FECF801027FECFE03903B01FFFC00FF07010701C0EB
1FCF4990C7EA07FFD91FFC1401D93FF0804948157F4948153F4849151F4890C9120F5A48
481607A248481603A2485A1801A2127FA24993C7FCA212FFAB127FA27FF001E0123FA36C
7EF003C06C7EA26C6CEE07807E6C6DED0F006C6D5D6D6C153E6D6C5DD91FFC5D6DB4EC03
F06D01C0EB0FE0010101FCEB7F806D6CB6C7FC021F14FC020314E09126001FFEC8FC3B3D
7BBB46>67 D<EB3FFE48B512E0000714F8390FE007FC9038F001FE486C6C7E6F7E82153F
6C48806C5A6C5AC8FCA491B5FC131F90387FF83F3803FF803807FC00EA0FF0485A123F48
5AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F0FFFE03807FFFE0001497E39003FE0
002B267DA52F>97 D<49B47E010F13F0017F13FC9038FF81FE3A03FE007F80D807F8133F
4848EB1FC0ED0FE0485A003F15F01507485A16F8A212FFA290B6FCA301C0C8FCA4127FA3
6C7E1678121F7F000F15F06C6C13016C6CEB03E06C6CEB0FC03A00FFC07F8090393FFFFE
00010F13F8010013C025267DA52C>101 D<13FE12FFA412071203B0EDFF80020313F002
0F7F91381E03FC91383801FE02607F4A7E01FF15805C91C7FCA35BB3A4B5D8F83F13FEA4
2F3C7CBB36>104 D<D801FCEBFF8000FF010313F0020F7F91381E03FC91383801FE0007
01607F0003497E01FD15805C01FFC7FCA35BB3A4B5D8F83F13FEA42F267CA536>110
D<9038FE01FF00FF011F13F0027F13FC9138FC07FE9039FFF001FF00079039C0007F806C
90C7EA3FC04915E0EE1FF017F8160F17FCA2160717FEA917FC160FA317F8EE1FF0A26DEC
3FE06EEB7FC06EEBFF806E4813009039FEFC07FE91387FFFF8021F13E0DA03FEC7FC91C9
FCADB512F8A42F377DA536>112 D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F
00079038E0FFC000035BEBFD80A201FFEB7F809138003F00151E92C7FC5BB3A3B512FCA4
22267DA528>114 D<130FA55BA45BA25BA25B5A5A5A001FEBFFF0B6FCA3000190C7FCB3
153CA86C14781480017F13F090383FC1E090381FFFC06D1380903801FE001E377EB626>
116 D<B539E00FFFF8A4000190390001FC00028013F06CEBC0036D6C485A013F5C6D6C48
5A6D6C48C7FCECFC3E6D6C5A903803FFFC6D5B6D5B5D147F6E7E141F4A7E4A7E81ECFBFF
D901F17FEB03E049486C7E010F8049486C7E4A6C7E013E130F496D7E496D7E000181B501
1F13FCA42E267EA533>120 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin
%%EndSetup
%%Page: 1 1
1 0 bop 75 361 a Fq(Chapter)31 b(7)75 568 y Fp(Language)39
b(Binding)75 809 y Fo(7.1)59 b(MPI)20 b(Bindings)75 910
y Fn(The)13 b(MPI)g(standard)g(is)h(a)f(functional)h(sp)q
(eci\014cation)h(that)d(curren)o(tly)i(only)f(sp)q(eci\014es)i
(bindings)g(for)e(the)75 967 y(languages)j(of)f(C)g(and)h(F)l(ortran)e
(77.)20 b(As)15 b(C++)h([2,)f(5)o(])g(gains)h(widespread)h(acceptance)f
(as)f(a)g(program-)75 1023 y(ming)h(language)g(for)f(high-p)q
(erformance)i(computing,)f(the)g(MPI)g(standard)f(should)i(b)q(e)g
(expanded)g(to)75 1080 y(include)j(this)f(user)f(comm)o(unit)o(y)l(.)28
b(In)19 b(addition,)g(the)f(C++)h(language)f(includes)i(seman)o(tic)f
(and)f(syn-)75 1136 y(tactic)c(impro)o(v)o(emen)o(ts)g(o)o(v)o(er)f
(the)i(C)f(language;)g(C++)h(MPI)f(bindings)i(that)e(tak)o(e)f(adv)m
(an)o(tage)h(of)g(these)75 1193 y(impro)o(v)o(emen)o(ts)h(are)g
(necessary)g(to)g(gain)g(the)g(acceptance)h(in)g(the)f(ob)s(ject-orien)
o(ted)h(comm)o(unit)o(y)l(.)75 1336 y Fo(7.2)59 b(Alternatives)75
1437 y Fn(There)15 b(are)g(three)h(principle)i(alternativ)o(es)d(to)f
(consider)j(for)d(C++)i(language)f(bindings:)131 1531
y(1.)22 b(Use)15 b(the)g(existing)h(C)f(language)h(bindings,)131
1625 y(2.)22 b(Pro)o(vide)15 b(a)g(ligh)o(t)o(w)o(eigh)o(t)g(set)g(of)g
(ob)s(jects,)f(or)131 1719 y(3.)22 b(Pro)o(vide)15 b(a)g(comprehensiv)o
(e)h(class)g(library)l(.)75 1813 y(W)l(e)f(discuss)i(eac)o(h)e(of)g
(these)g(alternativ)o(es)g(b)q(elo)o(w.)75 1933 y Fm(C++)f(bindings)47
b Fn(The)14 b(C)e(bindings)k(pro)o(vide)d(one)h(a)o(v)m(ailable)g(in)o
(terface)g(for)e(writing)i(MPI)f(programs)f(in)75 1989
y(ANSI)k(C++.)22 b(C++)16 b(MPI)g(programs)e(ma)o(y)h(b)q(e)i(written)e
(b)o(y)h(simply)h(including)h(the)e(\\mpi.h")g(header)75
2046 y(\014le)h(\(as)e(sp)q(eci\014ed)j(in)f([3)o(]\))f(and)g(calling)h
(MPI)f(functions)h(as)f(describ)q(ed)i(b)o(y)d(the)h(C)g(bindings.)24
b(So,)16 b(one)75 2102 y(prop)q(osal)j(for)f(C++)i(bindings)g(for)f
(MPI)f(could)i(b)q(e)g(to)e(mak)o(e)g(the)h(existing)h(C)e(bindings)j
(to)d(b)q(e)i(the)75 2158 y(C++)c(bindings)h(as)e(w)o(ell.)166
2215 y(There)j(are)f(some)h(dra)o(wbac)o(ks)f(to)g(this)h(alternativ)o
(e.)27 b(First,)18 b(it)g(is)g(conceiv)m(able)i(that)d(there)h(will)75
2271 y(b)q(e)23 b(v)o(ersions)f(of)g(MPI)g(written)g(in)h(C++.)42
b(There)22 b(will)i(b)q(e)f(natural)f(C++)g(bindings)j(in)e(suc)o(h)f
(an)75 2328 y(implemen)o(tation)e(on)e(top)g(of)g(whic)o(h)h(the)g(C)f
(bindings)j(w)o(ould)d(b)q(e)h(la)o(y)o(ered.)30 b(T)l(o)18
b(require)i(that)d(C++)75 2384 y(programs)c(use)h(the)g(C)f(bindings)j
(of)d(suc)o(h)h(an)g(implemen)o(tation)h(seems)f(un)o(w)o(arran)o(ted.)
19 b(Moreo)o(v)o(er,)12 b(the)75 2441 y(sp)q(eci\014cation)19
b(of)e(MPI)h(is)g(in)g(itself)g(ob)s(ject-orien)o(ted.)27
b(Th)o(us,)17 b(it)h(seems)f(that)g(certain)h(C++)g(ob)s(jects)75
2497 y(and)e(bindings)j(w)o(ould)d(b)q(e)h(appropriate)f(in)i(suc)o(h)e
(a)g(setting.)23 b(Finally)l(,)18 b(C++)f(p)q(oten)o(tially)h(pro)o
(vides)e(a)75 2554 y(m)o(uc)o(h)e(higher)g(lev)o(el)h(of)e(expressiv)o
(e)i(p)q(o)o(w)o(er)e(than)g(C)h(and)f(this)i(expressiv)o(eness)f
(should)h(b)q(e)f(pro)o(vided)h(to)75 2610 y(MPI)g(users)g(\(if)h(p)q
(ossible\).)964 2828 y(1)p eop
%%Page: 2 2
2 1 bop 75 -100 a Fn(2)977 b Fl(CHAPTER)16 b(7.)34 b(LANGUA)o(GE)15
b(BINDING)75 49 y Fm(Light)o(w)o(eight)f(Objects)48 b
Fn(As)14 b(men)o(tioned)g(ab)q(o)o(v)o(e,)f(the)h(design)h(of)e(MPI)h
(is)g(ob)s(ject-orien)o(ted)g(in)h(\015a)o(v)o(or.)j(It)75
106 y(has)13 b(b)q(een)h(prop)q(osed)g(within)g(the)f(MPI)g(F)l(orum)g
(that)g(the)g(C++)g(in)o(terface)h(to)e(MPI)h(should)i(b)q(e)e(a)g
(basic)75 162 y(set)g(of)g(classes)h(corresp)q(onding)g(to)f(the)g
(fundamen)o(tal)h(ob)s(ject)f(t)o(yp)q(es)g(in)h(MPI-1.)19
b(The)14 b(functionalit)o(y)g(of)75 219 y(MPI-1)j(w)o(ould)g(b)q(e)g
(realized)i(through)d(mem)o(b)q(er)h(functions)h(of)e(the)h(ob)s
(jects.)24 b(This)17 b(t)o(yp)q(e)g(of)g(in)o(terface)75
275 y(w)o(ould)i(b)q(e)g(ligh)o(t)o(w)o(eigh)o(t.)31
b(F)l(or)18 b(instance,)i(MPI)e(error)g(co)q(des)h(w)o(ould)g(still)h
(b)q(e)g(returned)f(b)o(y)f(function)75 332 y(calls,)c(no)f(new)g(t)o
(yp)q(es)h(of)e(ob)s(jects)h(w)o(ould)g(b)q(e)h(in)o(tro)q(duced,)g
(only)g(a)f(minimal)h(use)g(of)e(adv)m(anced)i(features)75
388 y(of)h(C++)g(suc)o(h)h(as)f(p)q(olymorphism)h(w)o(ould)g(b)q(e)g
(in)o(tro)q(duced,)g(etc.)75 508 y Fm(Class)21 b(Lib)o(ra)o(ry)44
b Fn(There)21 b(ha)o(v)o(e)g(also)g(b)q(een)h(prop)q(osals)f(within)h
(the)f(F)l(orum)f(that)h(a)f(class)i(library)f(b)q(e)75
564 y(de\014ned)i(and)e(used)h(for)f(the)g(C++)h(bindings.)41
b(A)21 b(class)h(library)g(should)g(mak)o(e)f(full)i(use)f(of)e(C++)75
621 y(features)15 b(suc)o(h)g(as)g(inheritance,)i(p)q(olymorphism,)f
(etc.)166 677 y(Th)o(us,)e(a)f(class)h(library)h(w)o(ould)f(use)g(p)q
(olymorphism)h(to)e(ob)o(viate)g(the)h(need)h(to)e(explicitly)j(pro)o
(vide)75 734 y(t)o(yp)q(e)i(information)g(to)g(messages.)28
b(By)18 b(w)o(a)o(y)f(of)h(con)o(trast,)f(the)h(C++)g(bindings)i(w)o
(ould)f(still)g(require)75 790 y(that)14 b(t)o(yp)q(e)h(information)h
(b)q(e)f(pro)o(vided.)21 b(Similarly)l(,)c(a)d(class)i(library)g(w)o
(ould)f(pro)o(vide)h(\\out")e(v)m(ariables)75 847 y(as)f(return)g(v)m
(alues)i(to)d(allo)o(w)i(c)o(haining)g(of)f(op)q(erations.)20
b(The)13 b(C++)h(bindings)h(w)o(ould)f(still)g(return)g(error)75
903 y(co)q(des.)166 960 y(A)e(class)f(library)i(is)f(not)f(appropriate)
h(as)f(a)g(C++)h Fk(binding)p Fn(,)f(ho)o(w)o(ev)o(er.)18
b(While)13 b(a)e(class)h(library)h(ma)o(y)75 1016 y(mak)o(e)k(user)h
(programming)f(more)g(elegan)o(t,)h(a)f(binding)j(m)o(ust)d(pro)o(vide)
h(a)f(direct)i(and)e(unam)o(biguous)75 1073 y(mapping)23
b(to)e(the)i(sp)q(eci\014ed)h(functionalit)o(y)g(of)d(MPI.)h(Th)o(us,)i
(a)e(general)g(class)h(library)g(should)g(b)q(e)75 1129
y(pro)o(vided,)16 b(but)g(it)f(should)i(b)q(e)f(built)h(on)e(top)g(of)g
(the)h(C++)g(bindings.)22 b(Ho)o(w)o(ev)o(er,)15 b(the)g(C++)h
(bindings)75 1186 y(should)g(b)q(e)g(general)g(enough)f(to)g(allo)o(w)g
(the)h(building)h(of)e(application-sp)q(eci\014)q(c)j(class)e(library)g
(as)e(w)o(ell.)166 1325 y Fj(Discussion:)k Fi([7)o(])d(pro)o(vides)h
(the)f(sp)q(eci\014cation)h(one)g(p)q(ossible)f(C++)h(class)g(library)e
(for)h(MPI)h(|)f(Ob)r(ject)75 1381 y(Orien)o(ted)e(MPI,)f(or)h(OOMPI.)f
(Although)g(the)h(OOMPI)g(class)g(library)e(is)h(sp)q(eci\014ed)i(in)e
(C++,)h(few)f(assumptions)75 1438 y(ab)q(out)j(implemen)o(tati)o(on)d
(are)k(made)d(|)i(in)f(some)g(sense)j(the)e(sp)q(eci\014cation)h(is)f
(a)f(generic)i(one)f(that)g(uses)h(C++)75 1494 y(as)g(the)h(program)d
(description)j(language.)23 b(Th)o(us,)16 b(the)h(OOMPI)g(sp)q
(eci\014cation)g(can)f(also)f(b)q(e)i(considered)g(as)f(a)75
1550 y(generic)g(ob)r(ject)g(orien)o(ted)g(class)g(library)e(sp)q
(eci\014cation)i(whic)o(h)f(can)h(th)o(us)g(also)e(form)g(the)i(basis)f
(for)g(MPI)h(class)75 1607 y(libraries)f(in)f(other)i(ob)r(ject-orien)o
(ted)g(languages.)21 b(As)15 b(suc)o(h,)h(its)f(inclusion)f(in)h(MPI-2)
g(w)o(ould)f(b)q(e)h(appropriate.)75 1868 y Fh(7.2.1)49
b(Other)15 b(W)o(o)o(rk)75 1954 y Fn(Other)h(C++)h(in)o(terfaces)f(to)f
(MPI)h(include)i Fm(MPI++)e Fn([6)o(],)g Fm(mpi++)g Fn([4)o(],)f(and)h
Fm(P)l(ARA++)i Fn([1].)j(W)l(e)16 b(com-)75 2010 y(men)o(t)f(on)g(eac)o
(h)g(of)g(these)g(brie\015y)l(.)166 2066 y Fm(MPI++)h
Fn(is)g(one)g(of)f(the)h(earliest)g(prop)q(osed)g(C++)g(in)o(terfaces)g
(to)f(MPI.)h Fm(MPI++)f Fn(had)h(as)g(one)f(of)75 2123
y(its)k(goals)g(to)f(b)q(e)i(seman)o(tically)g(and)f(syn)o(tactically)h
(consisten)o(t)f(with)h(the)f(C)f(in)o(terface.)32 b(The)19
b(basic)75 2179 y(design)d(of)f Fm(MPI++)g Fn(w)o(ould)h(th)o(us)f
(form)f(a)h(solid)h(basis)g(for)f(a)f(C++)i(binding)h(for)e(MPI.)166
2236 y Fm(mpi++)k Fn(is)h(a)e(more)h(recen)o(tly)h(in)o(tro)q(duced)g
(C++)g(in)o(terface)f(to)g(MPI)g(and)g(is)h(presen)o(tly)f(under)75
2292 y(dev)o(elopmen)o(t.)40 b(The)22 b(v)o(ersion)g(describ)q(ed)h(in)
g([4)o(])f(includes)i(only)e(p)q(oin)o(t)g(to)f(p)q(oin)o(t)h(comm)o
(unication)75 2349 y(op)q(erations.)c(Ho)o(w)o(ev)o(er,)11
b(ev)o(en)g(with)g(these)f(op)q(erations,)i(mpi++)g(do)q(es)f(not)f
(app)q(ear)h(to)f(b)q(e)h(seman)o(tically)75 2405 y(or)h(syn)o
(tactically)h(consisten)o(t)f(with)h(the)f(C)g(in)o(terface)g(b)q
(ecause)i(of)d(its)i(use)f(of)g(templates)g(for)g(datat)o(yp)q(es.)166
2462 y Fm(P)l(ARA++)24 b Fn(pro)o(vides)f(a)f(generic)i(high-lev)o(el)h
(in)o(terface)d(for)g(p)q(erforming)h(message)f(passing)h(in)75
2518 y(C++,)15 b(with)h(no)f(attempt)f(\(b)o(y)h(design\))h(to)e(b)q(e)
i(consisten)o(t)g(with)f(MPI.)1967 46 y Fg(1)1967 103
y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 3 3
3 2 bop 75 -100 a Fl(7.3.)34 b(RECOMMEND)o(A)l(TIONS)1183
b Fn(3)75 49 y Fo(7.3)59 b(Recommendations)75 151 y Fn(The)19
b(bindings)i(sub)q(committee)f(mak)o(es)f(the)g(follo)o(wing)h
(recommendations)f(for)g(C++)h(bindings)h(for)75 207
y(MPI:)131 296 y(1.)h(The)13 b(C++)h(language)g(bindings)h(should)f
(consist)g(of)f(a)g(small)h(set)f(of)g(classes)h(with)g(a)f(ligh)o(t)o
(w)o(eigh)o(t)189 353 y(functional)18 b(in)o(terface)f(to)g(MPI-2.)26
b(The)17 b(set)g(of)g(classes)g(should)i(b)q(e)e(as)g(small)h(as)f(p)q
(ossible)i(and)189 409 y(the)c(classes)h(should)g(corresp)q(ond)f(to)g
(fundamen)o(tal)g(MPI)g(ob)s(ject)g(t)o(yp)q(es)g(\(e.g.,)f(comm)o
(unicator,)189 466 y(group,)g(etc.,)h(as)f(w)o(ell)j(as)d(an)o(y)h(new)
h(t)o(yp)q(es)f(that)f(ma)o(y)h(emerge)g(from)g(MPI-2\).)131
557 y(2.)22 b(The)e(MPI)f(C++)h(language)g(bindings)i(m)o(ust)d(pro)o
(vide)h(a)g(seman)o(tically)g(correct)g(in)o(terface)g(to)189
614 y(MPI-2.)131 706 y(3.)i(T)l(o)17 b(the)h(greatest)e(exten)o(t)i(p)q
(ossible,)h(the)f(C++)g(bindings)i(should)f(b)q(e)f(seman)o(tically)h
(and)f(syn-)189 762 y(tactically)d(iden)o(tical)i(to)d(the)h(C)f
(bindings,)j(but)d(use)h(C++)h(seman)o(tics)e(where)h(a)g(higher)g(lev)
o(el)h(of)189 819 y(expressiv)o(e)g(p)q(o)o(w)o(er)e(is)i(desired.)131
911 y(4.)22 b(A)14 b(class)h(library)g(should)g(also)g(b)q(e)g
(designed)h(and)e(pro)o(vided)h(as)g(an)f(annex)h(to)e(the)i(MPI-2)f
(do)q(cu-)189 967 y(men)o(t.)21 b(The)16 b(class)g(library)g(should)h
(b)q(e)g(built)g(on)e(top)h(of)f(the)h(C++)g(bindings.)23
b(A)16 b(class)g(library)189 1024 y(built)f(on)e(top)g(of)g(the)h(the)g
(C)f(bindings)i(has)f(already)g(b)q(een)g(designed)h(and)f(is)g(pro)o
(vided)g(in)h([7)o(].)k(A)189 1080 y(class)c(library)g(built)h(on)e
(top)h(of)f(the)h(C++)g(bindings)h(will)g(ha)o(v)o(e)f(a)f(somewhat)g
(clearer)h(in)o(terface)189 1136 y(b)q(ecause)h(it)f(will)i(b)q(e)f
(able)g(to)f(tak)o(e)f(adv)m(an)o(tage)h(of)f Ff(const)h
Fn(argumen)o(ts)f(and)i(so)e(forth.)75 1279 y Fo(7.4)59
b(C++)19 b(Bindings)75 1380 y Fn(The)d(complete)g(set)f(of)g(C++)h
(language)g(bindings)h(is)f(presen)o(ted)g(in)h(App)q(endix)g(A.)k
(There)16 b(is)g(a)f(small)75 1437 y(set)e(of)g(classes)h(de\014ned)h
(for)e(these)g(bindings.)21 b(Ho)o(w)o(ev)o(er,)13 b(to)g(main)o(tain)g
(consistency)i(with)f(the)f(binding)75 1493 y(de\014nitions)k(w)o(e)e
(list)h(the)g(C++)g(bindings)h(in)f(the)f(same)g(order)h(as)f(giv)o(en)
g(for)g(the)h(C)f(bindings)i(\(rather)75 1550 y(than)e(b)q(eing)i
(group)q(ed)e(b)o(y)g(class;)g(see)h(Section)g(A.1\).)166
1606 y(The)i(bindings)i(are)e(similar)h(to)f(the)g Fm(MPI++)g
Fn(prop)q(osal)h(\(see)f(section)g(7.2.1,)f(but)h(with)h(sev)o(eral)75
1663 y(notable)e(di\013erences:)25 b Fm(MPI++)17 b Fn(mak)o(es)f(use)h
(of)f(C++)i(features)e(suc)o(h)h(as)g(p)q(olymorphism,)h(while)g(not)75
1719 y(taking)11 b(adv)m(an)o(tage)f(of)h(other)f(C++)h(features)g(suc)
o(h)g(as)g(reference)g(and)g Ff(const)f Fn(seman)o(tics.)19
b(App)q(endix)13 b(A)75 1775 y(prop)q(oses)23 b(the)g(exact)f(opp)q
(osite:)36 b(do)22 b(not)h(use)g(p)q(olymorphism)h(b)q(ecause)g(suc)o
(h)f(a)f(sc)o(heme)h(cannot)75 1832 y(em)o(brace)15 b(a)h(simple)h
(one-to-one)e(mapping)h(that)f(is)h(critical)h(for)e(a)g(bindings,)i
(and)f(use)g(reference)g(and)75 1888 y Ff(const)e Fn(seman)o(tics)i
(since)g(they)f(are)g(an)g(imp)q(ortan)o(t)g(feature)g(of)g(the)g(C++)h
(language.)166 1945 y(In)j(order)f(to)f(mak)o(e)h(the)g(follo)o(wing)h
(function)h(list)f(less)g(cluttered,)g(the)f(k)o(eyw)o(ord)g
Ff(virtual)f Fn(has)75 2001 y(b)q(een)e(left)f(out)f(of)g(eac)o(h)h
(declaration)g(with)g(the)g(implicit)i(understanding)f(that)e(all)h
(mem)o(b)q(er)g(functions)75 2058 y(are)g Ff(virtual)f
Fn(\(except)i(for)e(constructors)h(and)g(the)h(assignmen)o(t)f(op)q
(erator\).)k(In)d(particular,)g(pro\014ling)75 2114 y(library)23
b(ob)s(jects)e(can)h(b)q(e)h(easily)g(deriv)o(ed)g(for)e(these)h(ob)s
(jects;)i(the)e(pro\014ling)i(mec)o(hanism)e(can)g(b)q(e)75
2171 y(in)o(v)o(ok)o(ed)15 b(follo)o(w)o(ed)h(b)o(y)f(a)g(call)h(to)f
(the)g(original)h(MPI)g(function.)75 2291 y Fh(7.4.1)49
b(Naming)17 b(Rules)75 2377 y Fn(The)11 b(bindings)i(presen)o(ted)e(ab)
q(o)o(v)o(e)f(w)o(ere)h(generated)f(b)o(y)h(applying)h(a)f(simple)h
(set)e(of)h(rules)g(to)f(the)h(existing)75 2434 y(C)18
b(bindings.)31 b(These)19 b(rules)g(can)g(also)f(b)q(e)h(applied)h(to)e
(MPI-2)g(C)g(bindings)i(to)e(create)g(MPI-2)g(C++)75
2490 y(bindings:)131 2591 y(1.)k(Remo)o(v)o(e)d(the)g(MPI)g(opaque)h
(handle)g(from)f(the)g(argumen)o(t)f(list)i(and)g(mak)o(e)f(it)g(an)g
(ob)s(ject.)32 b(If)189 2647 y(there)16 b(is)h(no)f(MPI)g(opaque)g
(handle)i(in)f(the)f(argumen)o(t)f(list,)i(the)g(function)g(should)g(b)
q(e)g(globally)189 2704 y(scop)q(ed.)-32 46 y Fg(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 4 4
4 3 bop 75 -100 a Fn(4)977 b Fl(CHAPTER)16 b(7.)34 b(LANGUA)o(GE)15
b(BINDING)243 49 y Fe(\017)23 b Fn(If)18 b(the)g(original)h(function)g
(con)o(tained)g(an)f(opaque)g(MPI)g(handle,)i(mak)o(e)d(the)h(function)
h(a)289 106 y(metho)q(d)c(of)g(the)h(MPI)f(ob)s(ject.)20
b(Strip)c(the)f(\\)p Ff(MPI)p 1135 106 15 2 v 17 w Fn(")g(from)g(the)g
(b)q(eginning)j(of)d(the)g(function)289 162 y(name,)e(as)g(w)o(ell)h
(as)f(an)o(y)g(part)g(of)g(the)g(name)h(that)e(is)i(duplicated)h(in)g
(the)e(ob)s(ject)g(name)g(\(e.g.)289 219 y Ff(MPI)p 364
219 V 16 w(Comm)p 476 219 V 17 w(compare\(\))h Fn(b)q(ecomes)i
Ff(MPI)p 976 219 V 17 w(Comm::Compare\(\))p Fn(\).)243
292 y Fe(\017)23 b Fn(If)e(the)g(original)h(function)f(did)h(not)f(con)
o(tain)g(a)f(single)j(opaque)e(MPI)f(handle,)k(the)d(full)289
348 y(function)16 b(name)f(should)i(b)q(e)f(retained)g(\(e.g.)j
Ff(MPI)p 1153 348 V 17 w(Buffer)p 1314 348 V 16 w(attach\(\))c
Fn(b)q(ecomes)h Ff(::MPI)p 1838 348 V 16 w(-)289 405
y(Buffer)p 436 405 V 16 w(attach\(\))p Fn(\).)131 511
y(2.)22 b(F)l(ollo)o(w)15 b(the)g(MPI-1)g(capitalization)i(rules)f(for)
f(the)g(metho)q(d)g(names.)131 605 y(3.)22 b(Metho)q(ds)15
b(should)h(b)q(e)g(declared)h Ff(const)e Fn(if)g(they)h(return)f
(information)h(to)e(the)i(user)f(and)h(do)f(not)189 661
y(c)o(hange)g(the)g(in)o(ternal)h(state)f(of)f(the)i(calling)h(ob)s
(ject.)131 755 y(4.)22 b(An)o(y)16 b(reference)i(or)e(arra)o(y)f
(argumen)o(t)h(that)g(will)i(not)e(b)q(e)i(mo)q(di\014ed)g(in)f(the)g
(metho)q(d)g(should)g(b)q(e)189 811 y(declared)f Ff(const)p
Fn(.)131 905 y(5.)22 b(P)o(oin)o(ter)12 b(argumen)o(ts)g(should)i(b)q
(e)f(c)o(hanged)g(to)f(references)h(when)h(a)e(reference)h(is)h(what)e
(is)h(seman-)189 962 y(tically)j(implied.)131 1055 y(6.)22
b(Arra)o(y)14 b(argumen)o(ts)g(should)i(b)q(e)g(denoted)g(with)g
(square)f(brac)o(k)o(ets)f(\()p Ff([])p Fn(\),)g(not)h(p)q(oin)o(ters.)
166 1162 y(These)h(rules)g(should)h(b)q(e)f(applied)h(to)e(all)i(new)e
(functions)i(created)e(in)i(MPI-2)e(so)g(that)g(the)g(C++)75
1218 y(bindings)i(sta)o(y)d(curren)o(t)h(with)h(the)f(latest)g
(functionalit)o(y)i(of)d(MPI.)75 1340 y Fh(7.4.2)49 b(Cop)o(y)17
b(Semantics)75 1426 y Fn(The)g(cop)o(y)f(and)g(assignmen)o(t)h(seman)o
(tics)f(in)h(C++)g(should)g(b)q(e)h(the)e(same)g(as)g(those)g(sp)q
(eci\014ed)j(b)o(y)d(the)75 1482 y(C)e(and)h(F)l(ortran)e(77)g
(bindings.)22 b(That)14 b(is,)g(the)h(MPI)f(user)g(lev)o(el)i(ob)s
(jects)e(should)h(b)q(eha)o(v)o(e)g(lik)o(e)g(handles.)189
1588 y Fk(A)n(dvic)n(e)g(to)h(implementors.)40 b Fn(Eac)o(h)14
b(MPI)h(user)g(lev)o(el)h(ob)s(ject)f(is)g(lik)o(ely)i(to)d(con)o
(tain,)h(b)o(y)f(v)m(alue)i(or)189 1645 y(b)o(y)i(reference,)i(an)f
(implemen)o(tation-dep)q(endent)i(state)d(information.)30
b(The)19 b(assignmen)o(t)g(and)189 1701 y(cop)o(ying)g(of)f(MPI)h(ob)s
(ject)g(handles)h(ma)o(y)e(simply)i(cop)o(y)f(this)g(v)m(alue)h(\(or)e
(reference\).)32 b(\()p Fk(End)19 b(of)189 1758 y(advic)n(e)d(to)g
(implementors.)p Fn(\))75 1880 y Fh(7.4.3)49 b(Construction)16
b(/)h(Destruction)e(Semantics)75 1965 y Fn(The)g(construction)h(and)f
(destruction)h(seman)o(tics)g(in)g(C++)f(should)i(b)q(e)f(the)f(same)g
(as)g(those)g(sp)q(eci\014ed)75 2022 y(b)o(y)h(the)h(C)f(and)h(F)l
(ortran)e(77)h(bindings.)26 b(That)15 b(is,)i(the)g(MPI)f(user)h(lev)o
(el)h(ob)s(jects)e(should)h(b)q(eha)o(v)o(e)g(lik)o(e)75
2078 y(handles.)189 2185 y Fk(A)n(dvic)n(e)g(to)h(implementors.)50
b Fn(Default)17 b(constructors)f(for)h(all)h(MPI)e(ob)s(jects)h(should)
h(allo)o(w)f(the)189 2241 y(comparison)e(with)g(a)f(corresp)q(onding)i
Ff(MPI)p 936 2241 V 17 w(*)p 977 2241 V 17 w(NULL)e Fn(ob)s(ject)h(to)f
(return)h(a)f(b)q(o)q(olean)i Ff(true)p Fn(,)e Ff(MPI)p
1837 2241 V 17 w(-)189 2297 y(IDENT)p Fn(,)d(or)g(whatev)o(er)h(the)g
(corresp)q(onding)h(comparison)f(function)h(returns)f(\(see)g(Section)h
(7.4.4\).)189 2373 y(The)19 b(destructor)f(for)g(eac)o(h)h(MPI)g(user)g
(lev)o(el)h(ob)s(ject)e(should)i Fk(not)e Fn(in)o(v)o(ok)o(e)h(the)g
(corresp)q(onding)189 2429 y Ff(MPI)p 264 2429 V 16 w(*)p
304 2429 V 17 w(free\(\))c Fn(function)h(\(if)f(it)h(exists\))f(for)f
(the)i(follo)o(wing)g(reasons:)231 2535 y(1.)22 b(Suc)o(h)15
b(a)f(sc)o(heme)h(w)o(ould)g(not)f(b)q(e)i(consisten)o(t)f(with)f(the)h
(C)g(and)f(F)l(ortran)g(77)g(functionalit)o(y)l(.)231
2608 y(2.)22 b(The)d(mo)q(del)h(put)f(forth)f(in)i(MPI-1)e(mak)o(es)h
(memory)f(allo)q(cation)i(and)f(deallo)q(cation)i(the)289
2665 y(resp)q(onsibilit)o(y)c(of)e(the)g(user,)g(not)g(the)g(implemen)o
(tation.)1967 46 y Fg(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 5 5
5 4 bop 75 -100 a Fl(7.4.)34 b(C++)16 b(BINDINGS)1324
b Fn(5)231 49 y(3.)22 b(MPI)15 b(ob)s(jects)g(going)h(out)f(of)h(scop)q
(e)g(ma)o(y)f(pro)q(duce)i(collectiv)o(e)g(op)q(erations,)f(whic)o(h)g
(is)g(not)289 106 y(in)o(tuitiv)o(e,)k(and)f(ma)o(y)f(not)h(b)q(e)g
(what)f(the)h(user)g(w)o(an)o(ts)f(\(this)h(also)f(a\013ects)g(the)h
(cop)o(y)g(and)289 162 y(construction)i(seman)o(tics\).)37
b(The)21 b(comm)o(unicator)g(that)f(is)h(created)g(at)g(the)g(b)q
(eginning)289 219 y(of)c(the)i(function)g(sho)o(wn)f(b)q(elo)o(w)h(is)g
(freed)f(when)h(the)f(function)h(exits,)g(whic)o(h)h(triggers)d(a)289
275 y(collectiv)o(e)g(op)q(eration:)289 371 y Ff(void)23
b(foo\(\))289 427 y({)336 484 y(MPI_Comm)g(a)h(=)g
(MPI_COMM_WORLD.Dup\(\);)336 540 y(//)g(Rest)f(of)h(the)f(function)289
597 y(})189 703 y Fn(\()p Fk(End)15 b(of)i(advic)n(e)f(to)g
(implementors.)p Fn(\))75 825 y Fh(7.4.4)49 b(Compa)o(rison)17
b(Syntax)75 911 y Fn(Sev)o(eral)11 b(MPI)f(ob)s(jects)f(already)i(ha)o
(v)o(e)e(MPI)i(functions)f(for)g(comparison)g(\(e.g.,)g
Ff(MPI)p 1506 911 15 2 v 17 w(Comm::Compare\(\))p Fn(\).)75
967 y(These)19 b(functions)g(t)o(ypically)h(can)e(return)g(more)g(than)
h(t)o(w)o(o)e(v)m(alues;)j(a)e(b)q(o)q(olean)i(is)f(not)f(su\016cien)o
(t)h(to)75 1023 y(describ)q(e)d(their)f(relationship.)21
b(Therefore,)14 b(the)h(equalit)o(y)g(and)f(inequalit)o(y)i(op)q
(erators)e Ff(operator==\(\))75 1080 y Fn(and)h Ff(operator!=\(\))p
Fn(\))f(should)i Fk(not)f Fn(b)q(e)h(o)o(v)o(erridden)f(for)g(these)g
(ob)s(jects.)166 1219 y Fj(Discussion:)26 b Fi(Ho)o(w)o(ev)o(er,)21
b(man)o(y)d(C)h(and)g(F)m(ortran)h(implem)o(en)o(tations)d(that)i(use)i
(p)q(oin)o(ters)f(or)f(in)o(tegers)75 1276 y(as)d(MPI)h(handles)g
(indirectly)f(allo)o(w)f(the)i(use)g(of)f(the)h Fd(==)f
Fi(and)g Fd(!=)g Fi(op)q(erators;)i(the)f(only)e(meaningful)f(b)q(o)q
(olean)75 1332 y(resp)q(onse)i(is)f Fd(true)p Fi(,)e(whic)o(h)i(is)f
(equiv)n(alen)o(t)g(to)h Fd(MPI)p 880 1332 14 2 v 15
w(IDENT)p Fi(.)e(It)h(ma)o(y)f(b)q(e)i(desirable)g(to)g(adopt)f(this)h
(functionalit)o(y)75 1388 y(in)o(to)e(the)h(C++)h(bindings.)i(F)m(or)c
(example,)f(after)i(an)g(assignmen)o(t)e(suc)o(h)j(as)f
Fd(a)21 b(=)h(b)p Fi(,)13 b(the)h(test)h Fd(\(a)21 b(==)h(b\))13
b Fi(should)75 1445 y(return)i Fd(true)p Fi(.)166 1584
y Fn(Ho)o(w)o(ev)o(er,)j(sev)o(eral)g(ob)s(jects)f(do)i(not)e(ha)o(v)o
(e)h(metho)q(ds)h(equiv)m(alen)o(t)h(to)d(the)h(C)g Ff(MPI)p
1605 1584 15 2 v 17 w(*)p 1646 1584 V 17 w(compare\(\))75
1640 y Fn(functions)d(\(e.g.,)e Ff(MPI)p 458 1640 V 17
w(Datatype)p Fn(\).)18 b(Since)e(no)f(other)f(form)g(of)g(comparison)h
(is)g(a)o(v)m(ailable,)h(and)f(since)g(a)75 1697 y(simply)i(b)q(o)q
(olean)g(answ)o(er)f(is)g(all)h(that)e(is)i(required,)f(the)g(equalit)o
(y)h(and)f(inequalit)o(y)i(op)q(erators)d(should)75 1753
y(b)q(e)h(o)o(v)o(erridden)h(to)e(pro)o(vide)h(this)g(functionalit)o(y)
l(.)23 b(This)16 b(is)g(also)g(consisten)o(t)g(with)g(the)g(C)f(and)h
(F)l(ortran)75 1810 y(77)f(functionalit)o(y)l(.)166 1866
y(The)i(follo)o(wing)h(table)f(summarizes)g(whic)o(h)h(ob)s(jects)e
(should)i(mak)o(e)f(use)g(of)f(the)h(o)o(v)o(erridden)h(op-)75
1923 y(erators:)p 517 1978 916 2 v 516 2035 2 57 v 542
2018 a(Ov)o(erride)e(op)q(erators)p 939 2035 V 49 w(Use)f(MPI)h
(functionalit)o(y)p 1432 2035 V 517 2037 916 2 v 516
2093 2 57 v 589 2076 a Ff(MPI)p 664 2076 15 2 v 17 w(Datatype)p
939 2093 2 57 v 224 w(MPI)p 1169 2076 15 2 v 17 w(Comm)p
1432 2093 2 57 v 516 2149 V 660 2132 a(MPI)p 735 2132
15 2 v 17 w(Op)p 939 2149 2 57 v 285 w(MPI)p 1157 2132
15 2 v 17 w(Group)p 1432 2149 2 57 v 516 2206 V 613 2189
a(MPI)p 688 2189 15 2 v 16 w(Status)p 939 2206 2 57 v
1432 2206 V 516 2262 V 601 2245 a(MPI)p 676 2245 15 2
v 17 w(Request)p 939 2262 2 57 v 1432 2262 V 517 2264
916 2 v 75 2366 a Fh(7.4.5)49 b(Constants)75 2452 y Fn(Constan)o(ts)11
b(should)i(b)q(e)g(singleton)g(ob)s(jects;)f(they)g(should)h(either)g
(b)q(e)g(declared)g Ff(const)f Fn(or)g(deriv)o(ed)h(from)75
2509 y(the)i(original)i(MPI)e(ob)s(ject)f(and)i(o)o(v)o(erride)f(all)h
(non-const)f(functions)h(to)f(prev)o(en)o(t)g(mo)q(di\014cation.)-32
46 y Fg(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 6 6
6 5 bop 75 -100 a Fn(6)977 b Fl(CHAPTER)16 b(7.)34 b(LANGUA)o(GE)15
b(BINDING)75 49 y Fh(7.4.6)49 b(Class)17 b(Lib)o(ra)o(ries)75
135 y Fn(The)g(C++)h(bindings)h(ha)o(v)o(e)d(b)q(een)i(designed)h(to)d
(supp)q(ort)h(class)h(libraries;)h(they)e(include)i Ff(const)e
Fn(and)75 192 y(reference)f(seman)o(tics.)1967 46 y Fg(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 7 7
7 6 bop 75 381 a Fp(Bibliograph)m(y)75 604 y Fn([1])22
b(Olivier)17 b(Coulaud)f(and)f(Eric)g(Dillon.)21 b(P)o(ara++:)f(C++)15
b(bindings)i(for)d(message)h(passing)g(libraries)146
660 y(user)g(guide.)21 b(T)l(ec)o(h.)15 b(rep)q(ort,)g(INRIA,)h(1995.)
75 754 y([2])22 b(C++)16 b(F)l(orum.)j(W)l(orking)d(pap)q(er)g(for)e
(draft)h(prop)q(osed)h(in)o(ternational)g(standard)f(for)g(information)
146 811 y(systems)e({)g(programming)g(language)h(c++.)k(T)l(ec)o
(hnical)d(rep)q(ort,)f(American)g(National)g(Standards)146
867 y(Institute,)h(1995.)75 961 y([3])22 b(Message)15
b(P)o(assing)g(In)o(terface)g(F)l(orum.)21 b(Do)q(cumen)o(t)15
b(for)g(a)g(standard)g(message-passing)h(in)o(terface.)146
1017 y(T)l(ec)o(hnical)21 b(Rep)q(ort)e(T)l(ec)o(hnical)i(Rep)q(ort)e
(No.)g(CS-93-214)f(\(revised\),)i(Univ)o(ersit)o(y)g(of)e(T)l
(ennessee,)146 1074 y(April)e(1994.)j(Av)m(ailable)e(on)f
Fc(netlib)p Fn(.)75 1168 y([4])22 b(Dennis)40 b(Kafura)g(and)f(Liy)o(a)
i(Huang.)92 b(mpi++:)70 b(A)40 b(C++)g(language)g(binding)i(for)146
1224 y(MPI.)66 b(In)31 b Fk(Pr)n(o)n(c)n(e)n(e)n(dings)e(MPI)g(develop)
n(ers)h(c)n(onfer)n(enc)n(e)p Fn(,)j(Notre)d(Dame,)k(IN,)d(June)g
(1995.)146 1280 y(h)o(ttp://www.cse.nd.edu/mpidc95/pro)q(ceedings/pap)q
(ers/h)o(tml/h)o(uang/.)75 1374 y([5])22 b(The)g(Annotated)g(C++)h
(Reference)h(Man)o(ual.)41 b Fk(Mar)n(gar)n(et)22 b(A.)h(El)r(lis)e
(and)i(Bjarne)g(Str)n(oustrup)p Fn(.)146 1431 y(Addison)16
b(W)l(esley)l(,)g(1990.)75 1525 y([6])22 b(An)o(thon)o(y)17
b(Skjellum,)j(Ziy)o(ang)d(Lu,)i(Purushotham)e(V.)g(Bangalore,)h(and)g
(Nathan)f(E.)g(Doss.)27 b(Ex-)146 1581 y(plicit)18 b(parallel)g
(programming)d(in)i(C++)g(based)g(on)f(the)g(message-passing)h(in)o
(terface)f(\(MPI\).)22 b(In)146 1637 y(Gregory)d(V.)i(Wilson,)h
(editor,)g Fk(Par)n(al)r(lel)e(Pr)n(o)n(gr)n(amming)h(Using)f(C++)p
Fn(.)f(MIT)i(Press,)g(1996.)35 b(in)146 1694 y(press.)75
1788 y([7])22 b(Je\013rey)11 b(M.)f(Squyres,)h(Brian)h(C)701
1776 y(_)687 1788 y(McCandless,)g(and)f(Andrew)g(Lumsdaine.)j(Ob)s
(ject-Orien)o(ted)e(MPI.)146 1844 y(CSE)i(T)l(ec)o(hnical)i(Rep)q(ort)e
(TR96-10,)g(Univ)o(ersit)o(y)g(of)g(Notre)g(Dame,)f(Marc)o(h)h(1996.)j
(Also)d(a)o(v)m(ailable)146 1901 y(at)g Ff(http://www.cse.nd.edu/)729
1884 y Fb(\030)756 1901 y Ff(lsc/research/oompi/)p Fn(.)964
2828 y(7)p eop
%%Page: 8 8
8 7 bop 75 361 a Fq(Annex)32 b(A)75 568 y Fp(Language)39
b(Binding)e(\(C++\))75 809 y Fo(A.1)59 b(C++)19 b(Classes)75
910 y Fn(The)c(follo)o(wing)h(are)f(the)h(classes)f(pro)o(vided)h(with)
g(the)f(C++)h(language)f(bindings:)75 1004 y Ff(class)23
b(MPI_Comm;)75 1061 y(class)g(MPI_Datatype;)75 1117 y(class)g
(MPI_Group;)75 1174 y(class)g(MPI_Op;)75 1230 y(class)g(MPI_Request;)75
1286 y(class)g(MPI_Status;)166 1380 y Fn(Note)15 b(that)f
Ff(MPI)p 449 1380 15 2 v 17 w(Status)g Fn(has)h(public)j(data)c(mem)o
(b)q(ers,)h(as)g(sp)q(eci\014ed)i(in)f(the)g(C)f(bindings.)75
1523 y Fo(A.2)59 b(De\014ned)20 b(Constants)75 1625 y
Fn(These)g(are)g(required)h(constan)o(ts,)f(de\014ned)i(in)f(the)f
(\014le)h Ff(mpi++.h)p Fn(.)33 b(F)l(or)20 b(brevit)o(y)l(,)h(the)f(t)o
(yp)q(es)g(of)g(the)75 1681 y(constan)o(ts)c(are)h(de\014ned)i(b)q(elo)
o(w)f(are)f(de\014ned)i(in)f(the)g(commen)o(ts.)25 b(All)19
b(constan)o(ts)d(are)i(also)f(assumed)75 1738 y(to)e(b)q(e)g
Ff(const)p Fn(.)75 1844 y Ff(/*)24 b(return)f(codes)g(\(C,)g(C++,)h
(and)f(Fortran\))g(*/)75 1901 y(/*)h(Type:)f(int)g(\(or)h(enum\))f(*/)
75 1957 y(MPI_SUCCESS)75 2014 y(MPI_ERR_BUFFER)75 2070
y(MPI_ERR_COUNT)75 2126 y(MPI_ERR_TYPE)75 2183 y(MPI_ERR_TAG)75
2239 y(MPI_ERR_COMM)75 2296 y(MPI_ERR_RANK)75 2352 y(MPI_ERR_REQUEST)75
2409 y(MPI_ERR_ROOT)75 2465 y(MPI_ERR_GROUP)75 2522 y(MPI_ERR_OP)75
2578 y(MPI_ERR_TOPOLOGY)75 2635 y(MPI_ERR_DIMS)75 2691
y(MPI_ERR_ARG)964 2828 y Fn(8)p eop
%%Page: 9 9
9 8 bop 75 -100 a Fl(A.2.)29 b(DEFINED)15 b(CONST)l(ANTS)1156
b Fn(9)75 49 y Ff(MPI_ERR_UNKNOWN)75 106 y(MPI_ERR_TRUNCATE)75
162 y(MPI_ERR_OTHER)75 219 y(MPI_ERR_INTERN)75 275 y(MPI_ERR_LASTCODE)
75 388 y(/*)24 b(assorted)e(constants)h(\(C,)g(C++,)h(and)f(Fortran\))g
(*/)75 444 y(/*)h(Type:)f(long)g(*/)75 501 y(MPI_BOTTOM)75
557 y(/*)h(Type:)f(int)g(\(or)h(enum\))f(*/)75 614 y(MPI_PROC_NULL)75
670 y(MPI_ANY_SOURCE)75 727 y(MPI_ANY_TAG)75 783 y(MPI_UNDEFINED)75
840 y(MPI_UB)75 896 y(MPI_LB)75 1009 y(/*)h(Error-handling)e
(specifiers)g(\(C,)h(C++,)h(and)f(Fortran\))g(*/)75 1065
y(/*)h(Type:)f(int)g(\(or)h(enum\))f(*/)75 1122 y(MPI_ERRORS_ARE_FATAL)
75 1178 y(MPI_ERRORS_RETURN)75 1291 y(/*)h(Maximum)e(sizes)i(for)f
(strings)g(*/)75 1348 y(/*)h(Type:)f(int)g(*/)75 1404
y(MPI_MAX_PROCESSOR_NAME)75 1461 y(MPI_MAX_ERROR_STRING)75
1574 y(/*)h(elementary)e(datatypes)h(\(C)g(and)h(C++\))f(*/)75
1630 y(/*)h(Type:)f(MPI_Datatype)f(*/)75 1686 y(MPI_CHAR)75
1743 y(MPI_SHORT)75 1799 y(MPI_INT)75 1856 y(MPI_LONG)75
1912 y(MPI_UNSIGNED_CHAR)75 1969 y(MPI_UNSIGNED_SHORT)75
2025 y(MPI_UNSIGNED)75 2082 y(MPI_UNSIGNED_LONG)75 2138
y(MPI_FLOAT)75 2195 y(MPI_DOUBLE)75 2251 y(MPI_LONG_DOUBLE)75
2307 y(MPI_BYTE)75 2364 y(MPI_PACKED)75 2477 y(/*)i(datatypes)e(for)i
(reduction)e(functions)h(\(C\))g(*/)75 2533 y(/*)h(Type:)f
(MPI_Datatype)f(*/)75 2590 y(MPI_FLOAT_INT)75 2646 y(MPI_DOUBLE_INT)75
2703 y(MPI_LONG_INT)-32 46 y Fg(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 10 10
10 9 bop 75 -100 a Fn(10)856 b Fl(ANNEX)15 b(A.)30 b(LANGUA)o(GE)15
b(BINDING)h(\(C++\))75 49 y Ff(MPI_2INT)75 106 y(MPI_SHORT_INT)75
162 y(MPI_LONG_DOUBLE_INT)75 275 y(/*)24 b(optional)e(datatypes)h
(\(C\))g(*/)75 332 y(/*)h(Type:)f(MPI_Datatype)f(*/)75
388 y(MPI_LONG_LONG_INT)75 501 y(/*)i(optional)e(datatypes)h(\(C++\))g
(*/)75 557 y(/*)h(Type:)f(MPI_Datatype)f(*/)75 614 y(MPI_BOOL)75
670 y(MPI_LONG_DOUBLE)75 727 y(MPI_COMPLEX)75 783 y(MPI_DOUBLE_COMPLEX)
75 840 y(MPI_LONG_DOUBLE_COMPLEX)75 953 y(/*)i(reserved)e
(communicators)g(\(C,)i(C++,)f(and)h(Fortran\))e(*/)75
1009 y(/*)i(Type:)f(MPI_Comm)g(*/)75 1065 y(MPI_COMM_WORLD)75
1122 y(MPI_COMM_SELF)75 1235 y(/*)h(results)e(of)i(communicator)e(and)i
(group)f(comparisons)f(*/)75 1291 y(/*)i(Type:)f(int)g(\(or)h(enum\))f
(*/)75 1348 y(MPI_IDENT)75 1404 y(MPI_CONGRUENT)75 1461
y(MPI_SIMILAR)75 1517 y(MPI_UNEQUAL)75 1630 y(/*)h(environmental)e
(inquiry)h(keys)g(\(C,)g(C++,)h(and)f(Fortran\))g(*/)75
1686 y(/*)h(Type:)f(int)g(\(or)h(enum\))f(*/)75 1743
y(MPI_TAG_UB)75 1799 y(MPI_IO)75 1856 y(MPI_HOST)75 1969
y(/*)h(collective)e(operations)h(\(C,)g(C++,)g(and)h(Fortran\))f(*/)75
2025 y(/*)h(Type:)f(MPI_Op)g(*/)75 2082 y(MPI_MAX)75
2138 y(MPI_MIN)75 2195 y(MPI_SUM)75 2251 y(MPI_PROD)75
2307 y(MPI_MAXLOC)75 2364 y(MPI_MINLOC)75 2420 y(MPI_BAND)75
2477 y(MPI_BOR)75 2533 y(MPI_BXOR)75 2590 y(MPI_LAND)75
2646 y(MPI_LOR)75 2703 y(MPI_LXOR)1967 46 y Fg(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 11 11
11 10 bop 75 -100 a Fl(A.3.)34 b(TYPEDEFS)1388 b Fn(11)75
106 y Ff(/*)24 b(Null)f(handles)g(*/)75 162 y(/*)h(Type:)f(MPI_Group)f
(*/)75 219 y(MPI_GROUP_NULL)75 275 y(/*)i(Type:)f(MPI_Comm)g(*/)75
332 y(MPI_COMM_NULL)75 388 y(/*)h(Type:)f(MPI_Datatype)f(*/)75
444 y(MPI_DATATYPE_NULL)75 501 y(/*)i(Type:)f(MPI_Request)f(*/)75
557 y(MPI_REQUEST_NULL)75 614 y(/*)i(Type:)f(MPI_Op)g(*/)75
670 y(MPI_OP_NULL)75 727 y(/*)h(Type:)f(int)g(\(or)h(enum\))f(*/)75
783 y(MPI_ERRHANDLER_NULL)75 896 y(/*)h(Empty)f(group)g(*/)75
953 y(/*)h(Type:)f(MPI_Group)f(*/)75 1009 y(MPI_GROUP_EMPTY)75
1122 y(/*)i(topologies)e(\(C,)i(C++,)f(and)g(Fortran\))g(*/)75
1178 y(/*)h(Type:)f(int)g(\(or)h(enum\))f(*/)75 1235
y(MPI_GRAPH)75 1291 y(MPI_CART)75 1488 y Fo(A.3)59 b(T)-5
b(yp)r(edefs)75 1589 y Fn(The)15 b(follo)o(wing)h(are)f(de\014ned)i
(C++)e(t)o(yp)q(es,)g(also)g(included)j(in)e(the)g(\014le)g
Ff(mpi++.h)p Fn(.)75 1677 y Ff(/*)24 b(opaque)f(types)g(\(C)g(and)h
(C++\))f(*/)75 1734 y(MPI_Aint)75 1847 y(/*)h(prototypes)e(for)i
(user-defined)e(functions)g(\(C++\))i(*/)75 1903 y(typedef)f(int)g
(MPI_Copy_function\(MPI_Comm)e(&oldcomm,)791 1960 y(MPI_Comm)i
(&newcomm,)791 2016 y(int)g(&keyval,)791 2072 y(void)g(*extra_state\);)
75 2185 y(typedef)g(int)g(MPI_Delete_function\(MPI_Comm)d(&comm,)839
2242 y(int)j(&keyval,)839 2298 y(void)g(*extra_state\);)75
2411 y(typedef)g(void)g(MPI_Handler_function\(MPI_Com)o(m)e(&,)j(int)f
(&,)886 2468 y(...\);)75 2581 y(typedef)g(void)g
(MPI_User_function\(void)e(invec[],)815 2637 y(void)i(inoutvec[],)f
(int)i(&len,)815 2693 y(MPI_Datatype)e(&datatype\);)-32
46 y Fg(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 12 12
12 11 bop 75 -100 a Fn(12)856 b Fl(ANNEX)15 b(A.)30 b(LANGUA)o(GE)15
b(BINDING)h(\(C++\))75 49 y Fo(A.4)59 b(C++)19 b(Bindings)g(fo)n(r)h(P)
n(oint-to-P)n(oint)h(Communication)75 151 y Ff(int)i(MPI)p
245 151 15 2 v 17 w(Comm::Send\(const)f(void*)h(buf,)g(int)h(count,)f
(const)393 207 y(MPI)p 468 207 V 17 w(Datatype&)g(datatype,)f(int)i
(dest,)f(int)g(tag\))75 294 y(int)g(MPI)p 245 294 V 17
w(Comm::Recv\(void*)f(buf,)h(int)h(count,)f(const)g(MPI)p
1265 294 V 17 w(Datatype&)f(datatype,)393 350 y(int)i(source,)f(int)g
(tag,)g(MPI)p 969 350 V 17 w(Status&)g(status\))75 437
y(int)g(MPI)p 245 437 V 17 w(Comm::Bsend\(const)f(void*)h(buf,)g(int)h
(count,)f(const)393 493 y(MPI)p 468 493 V 17 w(Datatype&)g(datatype,)f
(int)i(dest,)f(int)g(tag\))75 579 y(int)g(MPI)p 245 579
V 17 w(Comm::Ssend\(const)f(void*)h(buf,)g(int)h(count,)f(const)393
636 y(MPI)p 468 636 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g
(tag\))75 722 y(int)g(MPI)p 245 722 V 17 w(Comm::Rsend\(const)f(void*)h
(buf,)g(int)h(count,)f(const)393 779 y(MPI)p 468 779
V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g(tag\))75
865 y(int)g(MPI)p 245 865 V 17 w(Comm::Isend\(const)f(void*)h(buf,)g
(int)h(count,)f(const)393 922 y(MPI)p 468 922 V 17 w(Datatype&)g
(datatype,)f(int)i(dest,)f(int)g(tag,)393 978 y(MPI)p
468 978 V 17 w(Request&)g(request\))75 1065 y(int)g(MPI)p
245 1065 V 17 w(Comm::Ibsend\(const)f(void*)h(buf,)g(int)h(count,)f
(const)393 1121 y(MPI)p 468 1121 V 17 w(Datatype&)g(datatype,)f(int)i
(dest,)f(int)g(tag,)393 1178 y(MPI)p 468 1178 V 17 w(Request&)g
(request\))75 1264 y(int)g(MPI)p 245 1264 V 17 w(Comm::Issend\(const)f
(void*)h(buf,)g(int)h(count,)f(const)393 1320 y(MPI)p
468 1320 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g(tag,)393
1377 y(MPI)p 468 1377 V 17 w(Request&)g(request\))75
1463 y(int)g(MPI)p 245 1463 V 17 w(Comm::Irsend\(const)f(void*)h(buf,)g
(int)h(count,)f(const)393 1520 y(MPI)p 468 1520 V 17
w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g(tag,)393
1576 y(MPI)p 468 1576 V 17 w(Request&)g(request\))75
1663 y(int)g(MPI)p 245 1663 V 17 w(Comm::Irecv\(void*)f(buf,)h(int)h
(count,)f(const)g(MPI)p 1289 1663 V 17 w(Datatype&)f(datatype,)393
1719 y(int)i(source,)f(int)g(tag,)g(MPI)p 969 1719 V
17 w(Request&)g(request\))75 1806 y(int)g(MPI)p 245 1806
V 17 w(Comm::Send)p 502 1806 V 16 w(init\(const)g(void*)g(buf,)g(int)g
(count,)h(const)393 1862 y(MPI)p 468 1862 V 17 w(Datatype&)f(datatype,)
f(int)i(dest,)f(int)g(tag,)393 1919 y(MPI)p 468 1919
V 17 w(Request&)g(request\))75 2005 y(int)g(MPI)p 245
2005 V 17 w(Comm::Bsend)p 526 2005 V 16 w(init\(const)f(void*)i(buf,)f
(int)g(count,)g(const)393 2061 y(MPI)p 468 2061 V 17
w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g(tag,)393
2118 y(MPI)p 468 2118 V 17 w(Request&)g(request\))75
2204 y(int)g(MPI)p 245 2204 V 17 w(Comm::Ssend)p 526
2204 V 16 w(init\(const)f(void*)i(buf,)f(int)g(count,)g(const)393
2261 y(MPI)p 468 2261 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)
g(tag,)393 2317 y(MPI)p 468 2317 V 17 w(Request&)g(request\))75
2404 y(int)g(MPI)p 245 2404 V 17 w(Comm::Rsend)p 526
2404 V 16 w(init\(const)f(void*)i(buf,)f(int)g(count,)g(const)393
2460 y(MPI)p 468 2460 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)
g(tag,)393 2517 y(MPI)p 468 2517 V 17 w(Request&)g(request\))75
2603 y(int)g(MPI)p 245 2603 V 17 w(Comm::Recv)p 502 2603
V 16 w(init\(void*)g(buf,)g(int)g(count,)g(const)h(MPI)p
1378 2603 V 16 w(Datatype&)f(datatype,)393 2660 y(int)h(source,)f(int)g
(tag,)g(MPI)p 969 2660 V 17 w(Request&)g(request\))1967
46 y Fg(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 13 13
13 12 bop 75 -100 a Fl(A.4.)34 b(C++)16 b(BINDINGS)g(F)o(OR)f
(POINT-TO-POINT)i(COMMUNICA)l(TION)333 b Fn(13)75 49
y Ff(int)23 b(MPI)p 245 49 15 2 v 17 w(Comm::Iprobe\(int)f(source,)h
(int)g(tag,)h(int&)f(flag,)g(MPI)p 1408 49 V 17 w(Status&)g(status\))75
136 y(int)g(MPI)p 245 136 V 17 w(Comm::Probe\(int)f(source,)h(int)g
(tag,)h(MPI)p 1122 136 V 16 w(Status&)f(status\))75 222
y(int)g(MPI)p 245 222 V 17 w(Comm::Sendrecv\(const)e(void)j(*sendbuf,)e
(int)i(sendcount,)e(const)393 279 y(MPI)p 468 279 V 17
w(Datatype&)h(sendtype,)f(int)i(dest,)f(int)g(sendtag,)g(void)g
(*recvbuf,)393 335 y(int)h(recvcount,)e(const)h(MPI)p
969 335 V 17 w(Datatype&)g(recvtype,)f(int)i(source,)393
392 y(int)g(recvtag,)e(MPI)p 778 392 V 17 w(Status&)h(status\))75
478 y(int)g(MPI)p 245 478 V 17 w(Comm::Sendrecv)p 598
478 V 15 w(replace\(void*)g(buf,)g(int)g(count,)g(const)393
534 y(MPI)p 468 534 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g
(sendtag,)g(int)h(source,)393 591 y(int)g(recvtag,)e(MPI)p
778 591 V 17 w(Status&)h(status\))75 677 y(int)g(MPI)p
245 677 V 17 w(Status::Get)p 526 677 V 16 w(count\(const)f(MPI)p
900 677 V 17 w(Datatype&)h(datatype,)f(int&)i(count\))f(const)75
764 y(int)g(MPI)p 245 764 V 17 w(Status::Test)p 550 764
V 16 w(cancelled\(int&)f(flag\))h(const)75 850 y(int)g(MPI)p
245 850 V 17 w(Request::Wait\(MPI)p 670 850 V 15 w(Status&)g(status\))
75 937 y(int)g(MPI)p 245 937 V 17 w(Request::Test\(int&)f(flag,)h(MPI)p
931 937 V 17 w(Status&)f(status\))h(const)75 1023 y(int)g(MPI)p
245 1023 V 17 w(Request::Request)p 646 1023 V 15 w(free\(void\))75
1110 y(int)g(MPI)p 245 1110 V 17 w(Request::Cancel\(void\))75
1196 y(int)g(MPI)p 245 1196 V 17 w(Request::Start\(void\))75
1283 y(int)g(::MPI)p 293 1283 V 17 w(Buffer)p 454 1283
V 16 w(attach\()g(void*)g(buffer,)g(int)h(size\))75 1369
y(int)f(::MPI)p 293 1369 V 17 w(Buffer)p 454 1369 V 16
w(detach\()g(void&*)g(buffer,)g(int&)g(size\))75 1455
y(int)g(::MPI)p 293 1455 V 17 w(Waitany\(int)f(count,)h(MPI)p
835 1455 V 17 w(Request)g(array)p 1163 1455 V 17 w(of)p
1228 1455 V 16 w(requests[],)g(int&)g(index,)393 1512
y(MPI)p 468 1512 V 17 w(Status&)g(status\))75 1598 y(int)g(::MPI)p
293 1598 V 17 w(Testany\(int)f(count,)h(MPI)p 835 1598
V 17 w(Request)g(array)p 1163 1598 V 17 w(of)p 1228 1598
V 16 w(requests[],)g(int&)g(index,)393 1655 y(int&)g(flag,)h(MPI)p
731 1655 V 16 w(Status&)f(status\))75 1741 y(int)g(::MPI)p
293 1741 V 17 w(Waitall\(int)f(count,)h(MPI)p 835 1741
V 17 w(Request)g(array)p 1163 1741 V 17 w(of)p 1228 1741
V 16 w(requests[],)393 1798 y(MPI)p 468 1798 V 17 w(Status)g(array)p
772 1798 V 16 w(of)p 836 1798 V 17 w(statuses[]\))75
1884 y(int)g(::MPI)p 293 1884 V 17 w(Testall\(int)f(count,)h(MPI)p
835 1884 V 17 w(Request)g(array)p 1163 1884 V 17 w(of)p
1228 1884 V 16 w(requests[],)g(int&)g(flag,)393 1941
y(MPI)p 468 1941 V 17 w(Status)g(array)p 772 1941 V 16
w(of)p 836 1941 V 17 w(statuses[]\))75 2027 y(int)g(::MPI)p
293 2027 V 17 w(Waitsome\(int)f(incount,)h(MPI)p 907
2027 V 17 w(Request&)f(array)p 1258 2027 V 17 w(of)p
1323 2027 V 17 w(requests,)393 2084 y(int&)h(outcount,)g(int)h(array)p
970 2084 V 16 w(of)p 1034 2084 V 17 w(indices[],)393
2140 y(MPI)p 468 2140 V 17 w(Status)f(array)p 772 2140
V 16 w(of)p 836 2140 V 17 w(statuses[]\))75 2226 y(int)g(::MPI)p
293 2226 V 17 w(Testsome\(int)f(incount,)h(MPI)p 907
2226 V 17 w(Request)g(array)p 1235 2226 V 16 w(of)p 1299
2226 V 17 w(requests[],)393 2283 y(int&)g(outcount,)g(int)h(array)p
970 2283 V 16 w(of)p 1034 2283 V 17 w(indices[],)393
2339 y(MPI)p 468 2339 V 17 w(Status)f(array)p 772 2339
V 16 w(of)p 836 2339 V 17 w(statuses[]\))75 2426 y(int)g(::MPI)p
293 2426 V 17 w(Startall\(int)f(count,)h(MPI)p 859 2426
V 17 w(Request)g(array)p 1187 2426 V 16 w(of)p 1251 2426
V 17 w(requests[]\))75 2512 y(int)g(MPI)p 245 2512 V
17 w(Datatype::Type)p 598 2512 V 15 w(contiguous\(int)f(count,)h(MPI)p
1210 2512 V 17 w(Datatype&)g(newtype\))g(const)75 2599
y(int)g(MPI)p 245 2599 V 17 w(Datatype::Type)p 598 2599
V 15 w(vector\(int)g(count,)g(int)g(blocklength,)g(int)g(stride,)393
2655 y(MPI)p 468 2655 V 17 w(Datatype&)g(newtype\))f(const)-32
46 y Fg(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 14 14
14 13 bop 75 -100 a Fn(14)856 b Fl(ANNEX)15 b(A.)30 b(LANGUA)o(GE)15
b(BINDING)h(\(C++\))75 49 y Ff(int)23 b(MPI)p 245 49
15 2 v 17 w(Datatype::Type)p 598 49 V 15 w(hvector\(int)g(count,)g(int)
g(blocklength,)g(MPI)p 1545 49 V 16 w(Aint)h(stride,)393
106 y(MPI)p 468 106 V 17 w(Datatype&)f(newtype\)const)75
192 y(int)g(MPI)p 245 192 V 17 w(Datatype::Type)p 598
192 V 15 w(indexed\(int)g(count,)g(int)g(array)p 1282
192 V 17 w(of)p 1347 192 V 17 w(blocklengths[],)393 249
y(int)h(array)p 612 249 V 16 w(of)p 676 249 V 17 w(displacements[],)e
(MPI)p 1171 249 V 16 w(Datatype&)h(newtype\))g(const)75
335 y(int)g(MPI)p 245 335 V 17 w(Datatype::Type)p 598
335 V 15 w(hindexed\(int)g(count,)g(int)g(array)p 1306
335 V 17 w(of)p 1371 335 V 17 w(blocklengths[],)393 392
y(MPI)p 468 392 V 17 w(Aint)g(array)p 724 392 V 17 w(of)p
789 392 V 17 w(displacements[],)e(MPI)p 1283 392 V 17
w(Datatype&)i(newtype\))g(const)75 534 y(int)g(::MPI)p
293 534 V 17 w(Type)p 406 534 V 17 w(struct\(int)f(count,)h(int)h
(array)p 1068 534 V 16 w(of)p 1132 534 V 17 w(blocklengths[],)393
591 y(MPI)p 468 591 V 17 w(Aint)f(array)p 724 591 V 17
w(of)p 789 591 V 17 w(displacements[],)393 647 y(MPI)p
468 647 V 17 w(Datatype)g(array)p 820 647 V 16 w(of)p
884 647 V 17 w(types[],)g(MPI)p 1188 647 V 17 w(Datatype&)f(newtype\))
75 734 y(int)h(::MPI)p 293 734 V 17 w(Address\(void*)f(location,)h(MPI)
p 955 734 V 16 w(Aint&)h(address\))75 820 y(int)f(MPI)p
245 820 V 17 w(Datatype::Type)p 598 820 V 15 w(extent\(int&)g(extent\))
g(const)75 907 y(int)g(MPI)p 245 907 V 17 w(Datatype::Type)p
598 907 V 15 w(size\(int&)g(size\))g(const)75 993 y(int)g(MPI)p
245 993 V 17 w(Datatype::Type)p 598 993 V 15 w(count\(int&)g(count\))g
(const)75 1080 y(int)g(MPI)p 245 1080 V 17 w(Datatype::Type)p
598 1080 V 15 w(lb\(int&)g(displacement\))f(const)75
1166 y(int)h(MPI)p 245 1166 V 17 w(Datatype::Type)p 598
1166 V 15 w(ub\(int&)g(displacement\))f(const)75 1253
y(int)h(MPI)p 245 1253 V 17 w(Datatype::Type)p 598 1253
V 15 w(commit\(void\))75 1339 y(int)g(MPI)p 245 1339
V 17 w(Datatype::Type)p 598 1339 V 15 w(free\(void\))75
1425 y(int)g(MPI)p 245 1425 V 17 w(Datatype::Get)p 574
1425 V 16 w(elements\(MPI)p 878 1425 V 15 w(Status)g(status,)g(int&)g
(count\))g(const)75 1512 y(int)g(MPI)p 245 1512 V 17
w(Comm::Pack\(const)f(void*)h(inbuf,)g(int)h(incount,)e(const)393
1568 y(MPI)p 468 1568 V 17 w(Datatype&)h(datatype,)f(void)i(*outbuf,)e
(int)i(outsize,)393 1625 y(int&)f(position\))g(const)75
1711 y(int)g(MPI)p 245 1711 V 17 w(Comm::Unpack\(const)f(void*)h
(inbuf,)g(int)g(insize,)g(int&)h(position,)393 1768 y(void)f(*outbuf,)g
(int)h(outcount,)e(const)i(MPI)p 1280 1768 V 16 w(Datatype&)f
(datatype\))393 1824 y(const)75 1911 y(int)g(MPI)p 245
1911 V 17 w(Comm::Pack)p 502 1911 V 16 w(size\(int)g(incount,)g(const)g
(MPI)p 1163 1911 V 17 w(Datatype&)f(datatype,)393 1967
y(int&)h(size\))h(const)75 2140 y Fo(A.5)59 b(C++)19
b(Bindings)g(fo)n(r)h(Collective)g(Communication)75 2242
y Ff(int)j(MPI)p 245 2242 V 17 w(Comm::Barrier\(void\))75
2328 y(int)g(MPI)p 245 2328 V 17 w(Comm::Bcast\(void*)f(buffer,)h(int)g
(count,)g(const)g(MPI)p 1360 2328 V 17 w(Datatype&)g(datatype,)393
2385 y(int)h(root\))75 2471 y(int)f(MPI)p 245 2471 V
17 w(Comm::Gather\(const)f(void*)h(sendbuf,)g(int)g(sendcount,)g(const)
393 2528 y(MPI)p 468 2528 V 17 w(Datatype&)g(sendtype,)f(void*)h
(recvbuf,)g(int)h(recvcount,)e(const)393 2584 y(MPI)p
468 2584 V 17 w(Datatype&)h(recvtype,)f(int)i(root\))75
2671 y(int)f(MPI)p 245 2671 V 17 w(Comm::Gatherv\(const)e(void*)j
(sendbuf,)e(int)i(sendcount,)e(const)1967 46 y Fg(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 15 15
15 14 bop 75 -100 a Fl(A.6.)34 b(C++)16 b(BINDINGS)g(F)o(OR)f(GR)o
(OUPS,)h(CONTEXTS,)f(AND)g(COMMUNICA)l(TORS)112 b Fn(15)393
49 y Ff(MPI)p 468 49 15 2 v 17 w(Datatype&)23 b(sendtype,)f(void*)h
(recvbuf,)g(int)h(recvcounts[],)393 106 y(int)g(displs[],)e(const)h
(MPI)p 945 106 V 17 w(Datatype&)g(recvtype,)f(int)i(root\))75
192 y(int)f(MPI)p 245 192 V 17 w(Comm::Scatter\(const)e(void*)j
(sendbuf,)e(int)i(sendcount,)e(const)393 249 y(MPI)p
468 249 V 17 w(Datatype&)h(sendtype,)f(void*)h(recvbuf,)g(int)h
(recvcount,)e(const)393 305 y(MPI)p 468 305 V 17 w(Datatype&)h
(recvtype,)f(int)i(root\))75 392 y(int)f(MPI)p 245 392
V 17 w(Comm::Scatterv\(const)e(void*)j(sendbuf,)e(int)i(sendcounts[],)e
(int)h(displs[],)393 448 y(const)g(MPI)p 611 448 V 17
w(Datatype&)g(sendtype,)f(void*)i(recvbuf,)e(int)i(recvcount,)393
504 y(const)f(MPI)p 611 504 V 17 w(Datatype&)g(recvtype,)f(int)i
(root\))75 591 y(int)f(MPI)p 245 591 V 17 w(Comm::Allgather\(const)e
(void*)i(sendbuf,)g(int)h(sendcount,)e(const)393 647
y(MPI)p 468 647 V 17 w(Datatype&)h(sendtype,)f(void*)h(recvbuf,)g(int)h
(recvcount,)e(const)393 704 y(MPI)p 468 704 V 17 w(Datatype&)h
(recvtype\))75 790 y(int)g(MPI)p 245 790 V 17 w
(Comm::Allgatherv\(const)e(void*)i(sendbuf,)g(int)g(sendcount,)g(const)
393 847 y(MPI)p 468 847 V 17 w(Datatype&)g(sendtype,)f(void*)h
(recvbuf,)g(int)h(recvcounts[],)393 903 y(int)g(displs[],)e(const)h
(MPI)p 945 903 V 17 w(Datatype&)g(recvtype\))75 990 y(int)g(MPI)p
245 990 V 17 w(Comm::Alltoall\(const)e(void*)j(sendbuf,)e(int)i
(sendcount,)e(const)393 1046 y(MPI)p 468 1046 V 17 w(Datatype&)h
(sendtype,)f(void*)h(recvbuf,)g(int)h(recvcount,)e(const)393
1103 y(MPI)p 468 1103 V 17 w(Datatype&)h(recvtype\))75
1189 y(int)g(MPI)p 245 1189 V 17 w(Comm::Alltoallv\(const)e(void*)i
(sendbuf,)g(int)h(sendcounts[],)393 1245 y(int)g(sdispls[],)e(const)h
(MPI)p 969 1245 V 17 w(Datatype&)g(sendtype,)f(void*)i(recvbuf,)393
1302 y(int)g(recvcounts[],)e(int)h(rdispls[],)g(const)g(MPI)p
1399 1302 V 17 w(Datatype&)f(recvtype\))75 1388 y(int)h(MPI)p
245 1388 V 17 w(Comm::Reduce\(const)f(void*)h(sendbuf,)g(void*)g
(recvbuf,)g(int)g(count,)g(const)393 1445 y(MPI)p 468
1445 V 17 w(Datatype&)g(datatype,)f(const)h(MPI)p 1177
1445 V 17 w(Op&)h(op,)f(int)h(root\))75 1531 y(int)f(MPI)p
245 1531 V 17 w(Op::Op)p 406 1531 V 17 w(create\(const)f(MPI)p
805 1531 V 17 w(User)p 918 1531 V 16 w(function&)h(function,)f(int)i
(commute\))75 1618 y(int)f(MPI)p 245 1618 V 17 w(Op::Op)p
406 1618 V 17 w(free\(void\))75 1704 y(int)g(MPI)p 245
1704 V 17 w(Comm::Allreduce\(const)e(void*)i(sendbuf,)g(void*)g
(recvbuf,)g(int)h(count,)393 1761 y(const)f(MPI)p 611
1761 V 17 w(Datatype&)g(datatype,)f(const)i(MPI)p 1321
1761 V 16 w(Op&)g(op\))75 1847 y(int)f(MPI)p 245 1847
V 17 w(Comm::Reduce)p 550 1847 V 16 w(scatter\(const)f(void*)h
(sendbuf,)g(void*)g(recvbuf,)393 1904 y(int)h(recvcounts[],)e(const)h
(MPI)p 1041 1904 V 17 w(Datatype&)f(datatype,)h(const)393
1960 y(MPI)p 468 1960 V 17 w(Op&)g(op\))75 2046 y(int)g(MPI)p
245 2046 V 17 w(Comm::Scan\(const)f(void*)h(sendbuf,)g(void*)g
(recvbuf,)g(int)g(count,)g(const)393 2103 y(MPI)p 468
2103 V 17 w(Datatype&)g(datatype,)f(const)h(MPI)p 1177
2103 V 17 w(Op&)h(op\))75 2276 y Fo(A.6)59 b(C++)19 b(Bindings)g(fo)n
(r)h(Groups,)h(Contexts,)g(and)e(Communicato)n(rs)75
2378 y Ff(int)k(MPI)p 245 2378 V 17 w(Group::Size\(int&)f(size\))h
(const)75 2464 y(int)g(MPI)p 245 2464 V 17 w(Group::Rank\(int&)f
(rank\))h(const)75 2551 y(int)g(MPI)p 245 2551 V 17 w(Group::Translate)
p 646 2551 V 15 w(ranks)g(\(int)h(n,)f(int)h(ranks1[],)e(const)393
2607 y(MPI)p 468 2607 V 17 w(Group&)h(group2,)g(int)g(ranks2[]\))g
(const)75 2693 y(int)g(MPI)p 245 2693 V 17 w(Group::Compare\(const)e
(MPI)p 835 2693 V 17 w(Group&)i(group2,)g(int&)g(result\))g(const)-32
46 y Fg(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 16 16
16 15 bop 75 -100 a Fn(16)856 b Fl(ANNEX)15 b(A.)30 b(LANGUA)o(GE)15
b(BINDING)h(\(C++\))75 49 y Ff(int)23 b(MPI)p 245 49
15 2 v 17 w(Comm::Group\(MPI)p 622 49 V 15 w(Group&)g(group\))g(const)
75 136 y(int)g(MPI)p 245 136 V 17 w(Group::Union\(const)f(MPI)p
788 136 V 16 w(Group&)h(group2,)g(MPI)p 1234 136 V 17
w(Group&)g(newgroup\))g(const)75 222 y(int)g(MPI)p 245
222 V 17 w(Group::Intersection\(const)e(MPI)p 955 222
V 16 w(Group&)i(group2,)g(MPI)p 1401 222 V 17 w(Group&)g(newgroup\))393
279 y(const)75 365 y(int)g(MPI)p 245 365 V 17 w
(Group::Difference\(const)e(MPI)p 907 365 V 17 w(Group&)i(group2,)g
(MPI)p 1354 365 V 16 w(Group&)g(newgroup\))393 422 y(const)75
508 y(int)g(MPI)p 245 508 V 17 w(Group::Incl\(int)f(n,)i(int)f
(ranks[],)g(MPI)p 1098 508 V 17 w(Group&)g(newgroup\))f(const)75
594 y(int)h(MPI)p 245 594 V 17 w(Group::Excl\(int)f(n,)i(int)f
(ranks[],)g(MPI)p 1098 594 V 17 w(Group&)g(newgroup\))f(const)75
681 y(int)h(MPI)p 245 681 V 17 w(Group::Range)p 550 681
V 16 w(incl\(int)g(n,)g(int)h(ranges[][3],)e(MPI)p 1330
681 V 17 w(Group&)h(newgroup\))f(const)75 824 y(int)h(MPI)p
245 824 V 17 w(Group::Range)p 550 824 V 16 w(excl\(int)g(n,)g(int)h
(ranges[][3],)e(MPI)p 1330 824 V 17 w(Group&)h(newgroup\))f(const)75
967 y(int)h(MPI)p 245 967 V 17 w(Group::Free\(void\))75
1053 y(int)g(MPI)p 245 1053 V 17 w(Comm::Size\(int&)f(size\))h(const)75
1140 y(int)g(MPI)p 245 1140 V 17 w(Comm::Rank\(int&)f(rank\))h(const)75
1226 y(int)g(MPI)p 245 1226 V 17 w(Comm::Compare\(const)e(MPI)p
811 1226 V 17 w(Comm&)i(comm1,)g(int&)h(result\))f(const)75
1313 y(int)g(MPI)p 245 1313 V 17 w(Comm::Dup\(const)f(MPI)p
716 1313 V 17 w(Comm&)h(comm,)g(MPI)p 1091 1313 V 17
w(Comm&)g(newcomm\))g(const)75 1399 y(int)g(MPI)p 245
1399 V 17 w(Comm::Create\(const)f(MPI)p 788 1399 V 16
w(Group&)h(group,)g(MPI)p 1210 1399 V 17 w(Comm&)g(newcomm\))g(const)75
1485 y(int)g(MPI)p 245 1485 V 17 w(Comm::Split\(int)f(color,)h(int)h
(key,)f(MPI)p 1098 1485 V 17 w(Comm&)g(newcomm\))g(const)75
1572 y(int)g(MPI)p 245 1572 V 17 w(Comm::Free\(void\))75
1658 y(int)g(MPI)p 245 1658 V 17 w(Comm::Test)p 502 1658
V 16 w(inter\(int&)g(flag\))g(const)75 1745 y(int)g(MPI)p
245 1745 V 17 w(Comm::Remote)p 550 1745 V 16 w(size\(int&)f(size\))i
(const)75 1831 y(int)f(MPI)p 245 1831 V 17 w(Comm::Remote)p
550 1831 V 16 w(group\(MPI)p 782 1831 V 16 w(Group&)g(group\))g(const)
75 1918 y(int)g(MPI)p 245 1918 V 17 w(Comm::Intercomm)p
622 1918 V 15 w(create\(int)g(local)p 1020 1918 V 16
w(leader,)g(const)g(MPI)p 1442 1918 V 17 w(Comm&)g(peer)p
1698 1918 V 17 w(comm,)393 1974 y(int)h(remote)p 636
1974 V 16 w(leader,)f(int)g(tag,)h(MPI)p 1130 1974 V
16 w(Comm&)g(newintercomm\))e(const)75 2061 y(int)h(MPI)p
245 2061 V 17 w(Comm::Intercomm)p 622 2061 V 15 w(merge\(int)g(high,)g
(MPI)p 1091 2061 V 17 w(Comm&)g(newintracomm\))f(const)75
2147 y(int)h(::MPI)p 293 2147 V 17 w(Keyval)p 454 2147
V 16 w(create\(const)g(MPI)p 853 2147 V 16 w(Copy)p 965
2147 V 17 w(function)g(*copy)p 1317 2147 V 16 w(fn,)h(const)393
2204 y(MPI)p 468 2204 V 17 w(Delete)p 629 2204 V 16 w(function)f
(*delete)p 1028 2204 V 16 w(fn,)h(int&)f(keyval,)g(void*)g(extra)p
1713 2204 V 17 w(state\))75 2290 y(int)g(::MPI)p 293
2290 V 17 w(Keyval)p 454 2290 V 16 w(free\(int&)g(keyval\))75
2376 y(int)g(MPI)p 245 2376 V 17 w(Comm::Attr)p 502 2376
V 16 w(put\(int)g(keyval,)g(void*)g(attribute)p 1259
2376 V 16 w(val\))75 2463 y(int)g(MPI)p 245 2463 V 17
w(Comm::Attr)p 502 2463 V 16 w(get\(int)g(keyval,)g(void&)g(*attribute)
p 1283 2463 V 16 w(val,)g(int&)g(flag\))h(const)75 2549
y(int)f(MPI)p 245 2549 V 17 w(Comm::Attr)p 502 2549 V
16 w(delete\(int)g(keyval\))1967 46 y Fg(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385
y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611
y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 17 17
17 16 bop 75 -100 a Fl(A.7.)34 b(C++)16 b(BINDINGS)g(F)o(OR)f(PR)o
(OCESS)h(TOPOLOGIES)630 b Fn(17)75 49 y Fo(A.7)59 b(C++)19
b(Bindings)g(fo)n(r)h(Pro)r(cess)h(T)-5 b(op)r(ologies)75
151 y Ff(int)23 b(MPI)p 245 151 15 2 v 17 w(Comm::Cart)p
502 151 V 16 w(create\(int)g(ndims,)g(int)g(dims[],)g(int)g(periods[],)
393 207 y(int)h(reorder,)e(MPI)p 778 207 V 17 w(Comm&)h(comm)p
1034 207 V 17 w(cart\))g(const)75 294 y(int)g(::MPI)p
293 294 V 17 w(Dims)p 406 294 V 17 w(create\(int)f(nnodes,)h(int)g
(ndims,)g(int)h(dims[]\))f(const)75 380 y(int)g(MPI)p
245 380 V 17 w(Comm::Graph)p 526 380 V 16 w(create\(int)f(nnodes,)h
(int)h(index[],)f(int)g(edges[],)393 437 y(int)h(reorder,)e(MPI)p
778 437 V 17 w(Comm&)h(comm)p 1034 437 V 17 w(graph\))g(const)75
523 y(int)g(MPI)p 245 523 V 17 w(Comm::Topo)p 502 523
V 16 w(test\(int&)g(status\))g(const)75 609 y(int)g(MPI)p
245 609 V 17 w(Comm::Graphdims)p 622 609 V 15 w(get\(int)g(nnodes[],)g
(int)g(nedges[]\))g(const)75 696 y(int)g(MPI)p 245 696
V 17 w(Comm::Graph)p 526 696 V 16 w(get\(int)g(maxindex,)f(int)i
(maxedges,)f(int)g(index[],)393 752 y(int)h(edges[]\))e(const)75
839 y(int)h(MPI)p 245 839 V 17 w(Comm::Cartdim)p 574
839 V 16 w(get\(int&)f(ndims\))h(const)75 925 y(int)g(MPI)p
245 925 V 17 w(Comm::Cart)p 502 925 V 16 w(get\(int)g(maxdims,)g(int)g
(dims[],)g(int)h(periods[],)393 982 y(int)g(coords[]\))e(const)75
1068 y(int)h(MPI)p 245 1068 V 17 w(Comm::Cart)p 502 1068
V 16 w(rank\(int)g(coords[],)f(int&)i(rank\))f(const)75
1155 y(int)g(MPI)p 245 1155 V 17 w(Comm::Cart)p 502 1155
V 16 w(coords\(int)g(rank,)g(int)g(maxdims,)g(int)g(coords[]\))g(const)
75 1241 y(int)g(MPI)p 245 1241 V 17 w(Comm::Graph)p 526
1241 V 16 w(neighbors)p 758 1241 V 16 w(count\(int)f(rank,)i(int&)f
(nneighbors\))f(const)75 1328 y(int)h(MPI)p 245 1328
V 17 w(Comm::Graph)p 526 1328 V 16 w(neighbors\(int)f(rank,)h(int)h
(maxneighbors,)e(int)h(neighbors[]\))393 1384 y(const)75
1470 y(int)g(MPI)p 245 1470 V 17 w(Comm::Cart)p 502 1470
V 16 w(shift\(int)g(direction,)f(int)i(disp,)f(int&)g(rank)p
1473 1470 V 17 w(source,)393 1527 y(int&)g(rank)p 611
1527 V 17 w(dest\))g(const)75 1613 y(int)g(MPI)p 245
1613 V 17 w(Comm::Cart)p 502 1613 V 16 w(sub\(int)g(remain)p
853 1613 V 16 w(dims[],)g(MPI)p 1132 1613 V 17 w(Comm&)g(newcomm\))g
(const)75 1700 y(int)g(MPI)p 245 1700 V 17 w(Comm::Cart)p
502 1700 V 16 w(map\(int)g(ndims,)g(int)g(dims[],)g(int)h(periods[],)e
(int&)i(newrank\))393 1756 y(const)75 1843 y(int)f(MPI)p
245 1843 V 17 w(Comm::Graph)p 526 1843 V 16 w(map\(int)g(nnodes,)g(int)
g(index[],)g(int)g(edges[],)g(int&)g(newrank\))393 1899
y(const)75 2072 y Fo(A.8)59 b(C++)19 b(Bindings)g(fo)n(r)h
(Environmental)g(Inquiry)75 2174 y Ff(int)j(::MPI)p 293
2174 V 17 w(Get)p 382 2174 V 17 w(processor)p 615 2174
V 16 w(name\(char)f(*name,)h(int&)h(resultlen\))75 2260
y(int)f(::MPI)p 293 2260 V 17 w(Errhandler)p 550 2260
V 16 w(create\(const)f(MPI)p 948 2260 V 17 w(Handler)p
1133 2260 V 16 w(function)h(*function,)393 2317 y(MPI)p
468 2317 V 17 w(Errhandler&)f(errhandler\))75 2403 y(int)h(MPI)p
245 2403 V 17 w(Comm::Errhandler)p 646 2403 V 15 w(set\(const)g(MPI)p
972 2403 V 17 w(Errhandler&)f(errhandler\))75 2490 y(int)h(MPI)p
245 2490 V 17 w(Comm::Errhandler)p 646 2490 V 15 w(get\(MPI)p
829 2490 V 16 w(Errhandler&)g(errhandler\))f(const)75
2576 y(int)h(::MPI)p 293 2576 V 17 w(Errhandler)p 550
2576 V 16 w(free\(MPI)p 758 2576 V 16 w(Errhandler&)f(errhandler\))75
2663 y(int)h(::MPI)p 293 2663 V 17 w(Error)p 430 2663
V 16 w(string\(int)g(errorcode,)f(char)i(*string,)f(int&)g(resultlen\))
-32 46 y Fg(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 18 18
18 17 bop 75 -100 a Fn(18)856 b Fl(ANNEX)15 b(A.)30 b(LANGUA)o(GE)15
b(BINDING)h(\(C++\))75 49 y Ff(int)23 b(::MPI)p 293 49
15 2 v 17 w(Error)p 430 49 V 16 w(class\(int)g(errorcode,)g(int&)g
(errorclass\))75 136 y(double)g(::MPI)p 365 136 V 17
w(Wtime\(void\))75 222 y(double)g(::MPI)p 365 222 V 17
w(Wtick\(void\))75 309 y(int)g(::MPI)p 293 309 V 17 w(Init\(int&)g
(argc,)g(char&)g(*argv[]\))75 395 y(int)g(::MPI)p 293
395 V 17 w(Finalize\(void\))75 482 y(int)g(::MPI)p 293
482 V 17 w(Initialized\(int&)f(flag\)const)75 568 y(int)h(MPI)p
245 568 V 17 w(Comm::Abort\(int)f(errorcode\))75 741
y Fo(A.9)59 b(C++)19 b(Bindings)g(fo)n(r)h(Pro\014ling)75
843 y Ff(int)j(::MPI)p 293 843 V 17 w(Pcontrol\(const)f(int)h(level,)g
Fa(:)8 b(:)g(:)e Ff(\))1967 46 y Fg(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385
y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611
y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF