Chapter 7

Jeff Squyres (jsquyres@lsc.nd.edu)
Wed, 22 May 1996 13:43:53 -0500 (EST)

Here is the text for Chapter 7, the C++ bindings. We do not yet have any
text for the Fortran 90 bindings, so that section has been left empty.

A lot of the text has been changed to clarify points raised at the last
forum meeting as well as bring out new issues that were also discussed at
the last forum.

Please note that the inter-language operability issue has still not been
settled; there is a nasty name clash problem (see section 7.1.6). Also
please note that the "const" constants issue hasn't been fully resolved
yet -- we'd like to hear from some more implementers first. Particularly,
the int vs. enum issue has not been resolved yet. Here's my $.02 on the
issue:

It shouldn't matter whether (for example) the return codes are const
ints or const enums, because both are constant in the eyes of the
compiler, both can be assigned initial values, and both provide better
type safety than #define.

Sorry this took so long -- we got caught up in finals and graduation.

{+} Jeff Squyres
{+} squyres@cse.nd.edu
{+} Perpetual Obsessive Notre Dame Student Craving Utter Madness.
{+} "I came to ND for 4 years and ended up staying for a decade."

------ Postscript 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.05.22:1343
%%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
25 122 df<13E01201EA0380EA0700120E5AA25AA25AA35AA91270A37EA27EA27E7EEA03
80EA01E012000B217A9C16>40 D<12C07E12707E7E7EA27EA2EA0380A3EA01C0A9EA0380
A3EA0700A2120EA25A5A5A5A5A0A217B9C16>I<1238127C127EA2123E120E121E121C12
7812F01260070B798416>44 D<127012F8A312700505788416>46
D<1238127CA312381200A812381278127CA2123C121CA21238127012E012400618799116
>59 D<3801F180EA07FBEA0FFFEA1F0FEA3C07EA38031270A200F0C7FC5AA77E38700380
A21238383C0700EA1F0FEA0FFE6C5AEA01F011197E9816>67 D<EAFFFEA3EA0380B3EAFF
FEA30F197D9816>73 D<38FC07E0EAFE0FA2383A0B80EA3B1BA513BBEA39B3A413F3EA38
E3A21303A538FE0FE0A313197F9816>77 D<EA7FF8EAFFFE6C7E381C0F80130314C01301
A313031480130F381FFF005B13F8001CC7FCA7127F487E6CC7FC12197F9816>80
D<EA1FE0487E487EEA783CEA300E1200A2EA03FE121FEA3E0E127012E0A3EA783E387FFF
E0EA3FE7EA0F8313127E9116>97 D<EA03F8EA0FFCEA1FFEEA3C1EEA780CEA70005AA57E
EA70071278EA3E0EEA1FFCEA0FF8EA03F010127D9116>99 D<133F5B7F1307A4EA03C7EA
0FF748B4FCEA3C1F487EEA700712E0A6EA700FA2EA3C1F381FFFE0380FE7F03807C7E014
197F9816>I<EA03E0EA0FF8EA1FFCEA3C1EEA780EEA700712E0B5FCA3EAE000A2EA7007
1278EA3C0FEA1FFEEA0FFCEA03F010127D9116>I<131FEB7F8013FFEA01E7EBC30013C0
A2EA7FFFB5FCA2EA01C0ACEA3FFE487E6C5A11197F9816>I<127E12FE127E120EA4133C
13FEEA0FFFEB87801303120EAA387FC7F038FFE7F8387FC7F01519809816>104
D<EA0180EA03C0A2EA0180C7FCA4EA7FC0A31201ACEA7FFFB5FC7E101A7D9916>I<EAFF
C0A31201B3B51280A311197E9816>108 D<38F9C38038FFEFC0EBFFE0EA3C78A2EA3870
AA38FE7CF8A2EB3C781512809116>I<EA7E3CEAFEFEEA7FFF380F87801303120EAA387F
C7F038FFE7F8387FC7F01512809116>I<EA03E0EA0FF8487EEA3C1E487EEA700738E003
80A5EAF00700701300EA780FEA3C1EEA1FFC6C5AEA03E011127E9116>I<EA0FECEA3FFC
127FEAF03CEAE01CA2EA7000EA7F80EA1FF0EA07F8EA003CEA600E12E012F0EAF81EEAFF
FC13F8EAC7E00F127D9116>115 D<12035AA4EA7FFFB5FCA20007C7FCA75BEB0380A3EB
8700EA03FE6C5A6C5A11177F9616>I<387F1FC000FF13E0007F13C0381C0700EA1E0FEA
0E0EA36C5AA4EA03B8A3EA01F0A26C5A13127F9116>118 D<387F1FC0133F131F380F1C
00EA073CEA03B813F012016C5A12017FEA03B8EA073C131CEA0E0E387F1FC038FF3FE038
7F1FC013127F9116>120 D<387F1FC038FF9FE0387F1FC0381C0700120E130EA212075B
A2EA039CA21398EA01B8A2EA00F0A35BA3485A1279127BEA7F806CC7FC123C131B7F9116
>I E /Fc 45 125 df<137E3801C180EA0301380703C0120EEB018090C7FCA5B512C0EA
0E01B0387F87F8151D809C17>12 D<EA6060EAF0F0EAF8F8EA6868EA0808A3EA1010A2EA
2020EA4040EA80800D0C7F9C15>34 D<13401380EA0100120212065AA25AA25AA2127012
60A312E0AC1260A312701230A27EA27EA27E12027EEA008013400A2A7D9E10>40
D<7E12407E7E12187EA27EA27EA213801201A313C0AC1380A312031300A21206A25AA25A
12105A5A5A0A2A7E9E10>I<1306ADB612E0A2D80006C7FCAD1B1C7E9720>43
D<126012F0A212701210A41220A212401280040C7C830C>I<EAFFE0A20B0280890E>I<12
6012F0A2126004047C830C>I<130113031306A3130CA31318A31330A31360A213C0A3EA
0180A3EA0300A31206A25AA35AA35AA35AA35AA210297E9E15>I<1306A3130FA3EB1780
A3EB23C0A3EB41E0A3EB80F0A200017FEB0078EBFFF83803007C0002133CA20006133E00
04131EA2000C131F121E39FF80FFF01C1D7F9C1F>65 D<90381F8080EBE0613801801938
070007000E13035A14015A00781300A2127000F01400A8007014801278A212386CEB0100
A26C13026C5B380180083800E030EB1FC0191E7E9C1E>67 D<B512FC380F003C140C1404
A214061402A213021400A3130613FE13061302A3140113001402A31406A2140C143CB512
FC181C7E9B1C>69 D<B512F8380F007814181408A2140C1404A213021400A3130613FE13
061302A490C7FCA77FEAFFF8161C7E9B1B>I<EAFFF0EA0F00B3A8EAFFF00C1C7F9B0F>
73 D<B46CEBFF80000FECF800A2390BC00178A33809E002A23808F004A3EB7808A3EB3C
10A3EB1E20A3EB0F40A2EB0780A3EB0300121C3AFF8307FF80211C7E9B26>77
D<B51280380F00E01478143C141C141EA5141C143C147814E0EBFF8090C7FCACEAFFF017
1C7E9B1C>80 D<007FB512C038700F010060130000401440A200C014201280A300001400
B1497E3803FFFC1B1C7F9B1E>84 D<EA0808EA1010EA2020EA4040A2EA8080A3EAB0B0EA
F8F8EA7878EA30300D0C7A9C15>92 D<EA1FC0EA3070EA78387F12301200A2EA01FCEA0F
1C12381270126000E01340A3EA603C38304E80381F870012127E9115>97
D<12FC121CAA137CEA1D86EA1E03381C018014C0130014E0A614C013011480381E0300EA
1906EA10F8131D7F9C17>I<EA07E0EA0C30EA18781230EA7030EA600012E0A61260EA70
041230EA1808EA0C30EA07C00E127E9112>I<133F1307AAEA03E7EA0C17EA180F487E12
70126012E0A61260127012306C5AEA0C373807C7E0131D7E9C17>I<EA03E0EA0C30EA18
18EA300CEA700EEA600612E0EAFFFEEAE000A41260EA70021230EA1804EA0C18EA03E00F
127F9112>I<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA7FE00F1D809C
0D>I<EB03803803C4C0EA0C38001C138038181800EA381CA4EA1818EA1C38EA0C30EA13
C00010C7FC12307EEA1FF813FF1480EA3003386001C0EAC000A33860018038300300EA1C
0EEA07F8121C7F9215>I<12FC121CAA137C1387EA1D03001E1380121CAD38FF9FF0141D
7F9C17>I<1218123CA21218C7FCA712FC121CB0EAFF80091D7F9C0C>I<13C0EA01E0A2EA
00C01300A7EA0FE01200B3A21260EAF0C012F1EA6180EA3E000B25839C0D>I<12FC121C
AAEB3FC0EB0F00130C13085B5B5B13E0121DEA1E70EA1C781338133C131C7F130F148038
FF9FE0131D7F9C16>I<12FC121CB3A9EAFF80091D7F9C0C>I<39FC7E07E0391C83883839
1D019018001EEBE01C001C13C0AD3AFF8FF8FF8021127F9124>I<EAFC7CEA1C87EA1D03
001E1380121CAD38FF9FF014127F9117>I<EA03F0EA0E1CEA1806487E00701380EA6001
00E013C0A600601380EA700300301300EA1806EA0E1CEA03F012127F9115>I<EAFC7CEA
1D86EA1E03381C018014C0130014E0A6EB01C0A21480381E0300EA1D06EA1CF890C7FCA7
B47E131A7F9117>I<EA03C1EA0C33EA180BEA300FEA7007A212E0A612601270EA300F12
18EA0C37EA07C7EA0007A7EB3FE0131A7E9116>I<EAFCE0EA1D30EA1E78A2EA1C301300
ACEAFFC00D127F9110>I<EA1F90EA3070EA4030EAC010A212E0EAF800EA7F80EA3FE0EA
0FF0EA00F8EA8038131812C0A2EAE010EAD060EA8FC00D127F9110>I<1204A4120CA212
1C123CEAFFE0EA1C00A91310A5120CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD
1307120CEA0E1B3803E3F014127F9117>I<38FF07E0383C0380381C0100A2EA0E02A26C
5AA3EA0388A213D8EA01D0A2EA00E0A3134013127F9116>I<39FF3FCFE0393C0F038038
1C07011500130B000E1382A21311000713C4A213203803A0E8A2EBC06800011370A2EB80
30000013201B127F911E>I<387F8FF0380F03801400EA0702EA0384EA01C813D8EA00F0
1370137813F8139CEA010E1202EA060738040380381E07C038FF0FF81512809116>I<38
FF07E0383C0380381C0100A2EA0E02A26C5AA3EA0388A213D8EA01D0A2EA00E0A31340A2
5BA212F000F1C7FC12F31266123C131A7F9116>I<EA7FFCEA70381260EA407013F013E0
EA41C012031380EA0700EA0F04120E121CEA3C0CEA380812701338EAFFF80E127F9112>
I<B812802901808B2A>124 D E /Fd 10 58 df<121FEA3180EA60C0EA4040EAC060A8EA
4040EA60C0EA3180EA1F000B107F8F0F>48 D<120C123C12CC120CACEAFF8009107E8F0F
>I<121FEA6180EA40C0EA806012C01200A213C0EA0180EA030012065AEA10201220EA7F
C012FF0B107F8F0F>I<121FEA2180EA60C0A2120013801201EA0F00EA00801340136012
C0A2EA8040EA6080EA1F000B107F8F0F>I<1203A25A5A120B121312331223124312C3EA
FFE0EA0300A4EA1FE00B107F8F0F>I<EA2080EA3F00122C1220A3122FEA3080EA2040EA
0060A312C0EA80C0EA6180EA1F000B107F8F0F>I<EA0780EA1840EA30C0126013005A12
CFEAF080EAE040EAC060A31240EA60C0EA3080EA1F000B107F8F0F>I<1240EA7FE013C0
EA8080A2EA010012025AA2120C1208A21218A50B117E900F>I<121FEA3180EA60C0A3EA
7180EA3F00120FEA3380EA61C0EAC060A3EA4040EA6080EA1F000B107F8F0F>I<121FEA
3180EA60C0EAC0401360A3EA40E01221EA1E6012001340EA60C01380EA4300123E0B107F
8F0F>I E /Fe 20 122 df<13011303A21306A3130CA31318A31330A31360A313C0A3EA
0180A3EA0300A31206A35AA35AA35AA35AA35AA3102D7DA117>47
D<131FA2497E133BA2EB7BC013731371EBF1E013E113E000017FA213C000031378A21380
00077FA21300380FFFFEA3381E000FA24814801407A24814C01403A24814E01B207F9F1E
>65 D<EB1FC0EBFFF84813FC3803E03C3807800C48C7FC121E123E123C127C1278A35AA8
1278A3127C123C123E121E6C13023807800E3803E03E3801FFFC6C13F0EB1FC017227DA0
1D>67 D<EAFFFCEBFF8014C038F007E0EB01F0EB00F81478143CA2141EA2140E140FA914
1EA3143C147C14F8EB01F0EB07E0B512C01480EBFC0018207B9F21>I<B512C0A300F0C7
FCABB5FCA300F0C7FCAF12207B9F1A>70 D<EA01FC3807FF804813C0EA1F03EA3C001400
5AA5127C123C123FEA1FE0EA0FFC6C7EEA01FF38003F80EB07C0130314E01301A514C0EA
C003EAF00738FC0F80387FFF00EA1FFEEA03F813227EA019>83 D<EA07E0EA3FF8EA7FFC
EA701EEA401FEA000FA3133FEA07FF121FEA7E0F12F812F0A3EAF83FEA7FFFEA3FEFEA1F
8F10147E9316>97 D<EA03F0EA0FFCEA1FFEEA3E0EEA3C02EA7800A25AA61278A2EA3C01
EA3E0FEA1FFFEA0FFEEA03F010147E9314>99 D<EA03F0EA0FFC487EEA3E1FEA3C071278
38700380B5FCA300F0C7FCA3127012786C5AEA3E076CB4FCEA07FEEA01F811147F9314>
101 D<3803E0F0EA0FFF5A383E3E00EA3C1E487EA5EA3C1EEA3E3EEA1FFC485AEA33E000
30C7FC1238EA3FFEEBFF806C13C04813E0387803F0EAF000A3EAF801387E07E0383FFFC0
000F1300EA03FC141E7F9317>103 D<12F0A41200A812F0B3A204207D9F0B>105
D<39F0FC07E039F3FE1FF039F7FF3FF839FE0FF07C39F807C03CA200F01380AE1E147D93
25>109 D<EAF1F8EAF3FCEAF7FEEAFC1FEAF80FA212F0AE10147D9317>I<EA01F8EA07FE
381FFF80383F0FC0EA3C03387801E0A238F000F0A6387801E0A2383C03C0EA3F0F381FFF
803807FE00EA01F814147F9317>I<EAF1F0EAF7FCB47EEAFC3E487E487E14801307A6EB
0F00A26C5AEAFC3EEAFFFCEAF7F8EAF1E000F0C7FCA9111D7D9317>I<EAF0E012F312F7
EAFF0012FCA25AA25AAC0B147D9310>114 D<EA07F0EA1FFC123FEA780C1300A3127CEA
3FC0EA1FF0EA0FF81203EA007C133CA212C0EAF07CEAFFF8EA7FF0EA0FC00E147F9311>
I<121EA6EAFFF0A3EA1E00AD1320EA1FF0120FEA07C00C1A7F9910>I<EAF00FAF131F13
3FB5FCEA7FEFEA3F0F10147D9317>I<38F003C0A238780780A2127C383C0F00A2121E13
1E120EEA0F1CA2EA073C1338EA03B8A213B0EA01F0A26C5AA2485AA3485A1207007FC7FC
127E127C121D7F9315>121 D E /Ff 17 121 df<1238127C12FEA3127C123807077C86
0F>46 D<13E01201120F12FF12F31203B3A4B51280A2111D7C9C1A>49
D<EA07F0EA1FFEEA383F387C1F8038FE0FC0A214E01307127C1238EA000F14C0A2EB1F80
1400133E13785B5B485A38038060EA0700120E4813E0381FFFC05A5AB5FCA2131D7D9C1A
>I<EA01FCEA07FF380E0F80001E13C0383F07E0A4381E0FC012001480EB1F00EA01FCA2
38000F80EB07C0EB03E014F014F81238127C12FEA214F012FC387807E0383C0FC0381FFF
803803FC00151D7E9C1A>I<EB01C013031307A2130F131F133B1373136313C3EA018312
03EA0703120E120C12181238127012E0B512FEA2380007C0A6EBFFFEA2171D7F9C1A>I<
1260387FFFF8A214F014E014C038E0018038C00300A21306C65A5B1338A21378137013F0
A21201A41203A66C5A6C5A151E7D9D1A>55 D<B612E0A23807E007140114001560157015
30A21460A2150014E013E113FFA213E113E01460150CA214001518A31538157815F8EC03
F0B6FCA21E1F7E9E22>69 D<EA07FCEA1FFF383F0F80EB07C0EB03E0A2120C1200137FEA
07FBEA1F03123C127C12F8A3EAFC05EA7E0D383FF8FE380FE07E17147F9319>97
D<B4FCA2121FAAEB1FC0EB7FF0EBE0F8EB807CEB007E143EA2143FA6143EA2147C138038
1EC1F8381C7FE038181F8018207E9F1D>I<EA01FE3807FF80380F83C0381E01E0383E00
F05A14F812FCB5FCA200FCC7FCA3127CA26C1318121E380F80703807FFE0C6138015147F
9318>101 D<121C123E127FA3123E121CC7FCA6B4FCA2121FB0EAFFE0A20B217EA00E>
105 D<B4FCA2121FB3AAEAFFE0A20B207E9F0E>108 D<3AFE0FE03F8090391FF07FC03A
1E70F9C3E09039407D01F0EB807E121FEB007CAC3AFFE3FF8FFEA227147D932C>I<38FE
0FC0EB3FE0381E61F0EBC0F81380EA1F00AD38FFE3FFA218147D931D>I<38FF1FC0EB7F
F0381FE1F8EB80FCEB007EA2143E143FA6143E147E147CEB80FCEBC1F8EB7FE0EB1F8090
C7FCA7EAFFE0A2181D7E931D>112 D<EA0180A31203A31207120F123FEAFFFCA2EA0F80
AA1386A5EA07CCEA03F8EA01F00F1D7F9C14>116 D<38FFE1FFA2380F80706C6C5A6D5A
3803E180EA01F36CB4C7FC137E133E133F497E136FEBC7C0380183E0380381F0380701F8
380E00FC39FF81FF80A219147F931C>120 D E /Fg 71 126 df<127012F8B012701200
A5127012F8A31270051C779B18>33 D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C
18>I<EA01C0EA07E0487EEA0E70487EA4EB73F0A213E3000F1380EBC70013871307EA1F
0E123FEA7B8EEA73DC12E1EAE0F8A2EB70701378EA70FC387FFFE0EA3FCF380F03C0141C
7F9B18>38 D<137013F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA45AA81270A47E
A27E121E7EEA0780EA03C0EA01F0120013700C24799F18>40 D<126012F012787E7E7EEA
07801203EA01C0A2EA00E0A41370A813E0A4EA01C0A2EA03801207EA0F00121E5A5A5A12
600C247C9F18>I<EA01C0A438C1C180EAF1C7EAF9CF387FFF00EA1FFCEA07F0A2EA1FFC
EA7FFF38F9CF80EAF1C7EAC1C13801C000A411147D9718>I<136013F0A7387FFFC0B512
E0A26C13C03800F000A7136013147E9718>I<121C123E127E127F123F121F1207120E12
1E127C12F81260080C788518>I<EA7FFFB51280A26C130011047D8F18>I<1230127812FC
A2127812300606778518>I<1303EB0780A2130F14005B131EA2133E133C137C1378A213
F85B12015B12035BA212075B120F90C7FCA25A121E123E123CA2127C127812F85AA21260
11247D9F18>I<EA01801203A21207120F123F12FF12FB12431203B0EA7FFCEAFFFEEA7F
FC0F1C7B9B18>49 D<EA03F0EA0FFEEA3FFF387C0F80387003C0EAE00138F000E0A21260
C7FCA2EB01C0A21303EB0780EB0F00131E5B5B5B485AEA07C0485A381E00E05AEA7FFFB5
FC7E131C7E9B18>I<EA07F8EA1FFE487E38780780EB03C013011230120013031480EB0F
00EA03FF5B7F38000780EB03C01301EB00E0A312F0A2EB01C01303387C0780383FFF006C
5AEA03F8131C7E9B18>I<1230127812FCA2127812301200A81230127812FCA212781230
0614779318>58 D<1218123C127EA2123C12181200A81218123C127EA2123E121E120E12
1C123C127812F01260071A789318>I<1303EB0780131FEB3F00137E485AEA03F0485AEA
1FC048C7FC127E5AA2127E7EEA1FC0EA07E06C7EEA01FCEA007E7FEB1F801307EB030011
187D9918>I<387FFFC0B512E0A3C8FCA4B512E0A36C13C0130C7E9318>I<137013F8A213
D8A2EA01DCA3138CEA038EA41306EA0707A4380FFF80A3EA0E03A2381C01C0A2387F07F0
38FF8FF8387F07F0151C7F9B18>65 D<EAFFFC13FF1480381C03C01301EB00E0A4130114
C01307381FFF80140014C0EA1C03EB00E014F01470A414F014E01303B512C01480EBFE00
141C7F9B18>I<EBF8E0EA03FEEA07FFEA0F07EA1E03EA3C01EA38005AA214005AA81270
14E0A27E123C381E01C0EA0F073807FF803803FE00EA00F8131C7E9B18>I<EA7FF8EAFF
FE6C7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114C01303EB0F80
387FFF00485AEA7FF8141C7F9B18>I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA
1C0EA390C7FCA21438A5B512F8A3151C7F9B18>I<B512E0A3EA1C00A41400A2131CA3EA
1FFCA3EA1C1CA390C7FCA7EAFFC0A3131C7E9B18>I<3801F1C0EA03FDEA0FFFEA1F0FEA
1C03123813011270A290C7FC5AA5EB0FF0131F130F387001C0A213031238A2EA1C07EA1F
0FEA0FFFEA03FDEA01F1141C7E9B18>I<387F07F038FF8FF8387F07F0381C01C0A9EA1F
FFA3EA1C01AA387F07F038FF8FF8387F07F0151C7F9B18>I<EA7FFFB512806C1300EA01
C0B3A4EA7FFFB512806C1300111C7D9B18>I<387F07F038FF87F8387F07F0381C03C0EB
07801400130E131E5B13385B13F0121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380A2EB
01C0387F03F038FF87F8387F03F0151C7F9B18>75 D<EA7FE012FF127F000EC7FCB11470
A5387FFFF0B5FC7E141C7F9B18>I<38FC01F8EAFE03A2383B06E0A4138EA2EA398CA213
DCA3EA38D8A213F81370A21300A638FE03F8A3151C7F9B18>I<387E07F038FF0FF8387F
07F0381D81C0A313C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07
EAFF87EA7F03151C7F9B18>I<EA0FF8EA3FFE487EEA780FEA700700F01380EAE003B0EA
F00700701300EA780FEA7FFF6C5AEA0FF8111C7D9B18>I<EAFFFEEBFF8014C0EA1C03EB
01E013001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>
I<EA0FF8EA3FFE487EEA780FEA700700F01380EAE003AEEAE1E3A2EAF0E73870F700EA78
7FEA7FFF6C5AEA0FFCEA001C131E130E130F7FA211227D9B18>I<EA7FF8EAFFFE6C7E38
1C0F80130314C01301A313031480130F381FFF005BA2EA1C0F7FEB0380A5149CA3387F01
F8EAFF81387F00F0161C7F9B18>I<3803F380EA1FFF5AEA7C0FEA7007EAE003A390C7FC
12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A2126012E0130100F013C0
38F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA238E07038A400001300B2
EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F01380783C03803FF806C
1300EA007C171C809B18>I<38FE03F8A338700070A36C13E0A513F8A2EA39DCA2001913
C0A3138CEA1D8DA4000D13801305EA0F07A2EA0E03151C7F9B18>87
D<387F8FE0139F138F380E0700120FEA070E138EEA039C13DCEA01F8A26C5AA2137013F0
7F120113DCEA039E138EEA070F7F000E13801303001E13C0387F07F038FF8FF8387F07F0
151C7F9B18>I<38FF07F8A3381C01C0EA1E03000E1380EA0F0700071300A2EA038EA2EA
01DCA3EA00F8A21370A9EA01FC487E6C5A151C7F9B18>I<EAFFF8A3EAE000B3ACEAFFF8
A30D24779F18>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 /Fh 33 90 df<801301A549C7FCA61306A3B612E0A2D80006C7FC5BA65BA65B1310
1B207B9A23>43 D<EAFFC0A20A027D8A0F>45 D<1230127812F81278127005057C840D>
I<1404140CA21418A21430A21460A214C0A2EB0180A2EB0300A21306A25BA25BA25BA25B
A25BA2485AA248C7FCA21206A35AA25AA25AA25AA25AA25A162D7EA117>I<137EEA01C3
38030180000713C0EA0E0014E05AA2EA3C0112381278A538F003C0A51480130712E01400
A2130E1260EA701CEA3038EA3870EA0FC0131F7C9D17>I<130C131C13FCEA0F381200A5
1370A613E0A6EA01C0A6EA038013C0EAFFFE0F1E7C9D17>I<EB3F80EBC1E0380100F000
0213785AA2000F137C1380A2EB00781206C712F814F0EB01E014C0EB0380EB0700130E5B
5B13605B485A380300201206000813405A383FFFC0481380B5FC161E7E9D17>I<137F38
0183C0380201E0380400F012075A1301A2000013E0A2EB03C01480EB0700130E13F8130E
7F148014C0130313071230127812F8A200F0138038800F00EA400E6C5AEA1878EA07E014
1F7D9D17>I<1460A214E0EB01C013031305130D13091311EB2380134313C31383EA0103
12023804070012081218121012201240B512F038000E00A55B131E3801FFE0141E7E9D17
>I<38018030EBFFE04813C0140013FC0002C7FCA35AA3137CEA058738060380EA0C0100
0813C0120014E0A4387003C012F812F000E01380EA800700401300130E6C5AEA1870EA07
C0141F7D9D17>I<1220383FFFE04813C0148038400100EAC00212805B485A5B5B5BA25B
120148C7FCA25A1206120EA2121E121CA2123CA35AA31230131F799D17>55
D<137EEA01C338030180000613C0120EEA1C00003C13E0A213011278A41303A2003813C0
1307EA1C0BEA0C133803E380EA0007A21400130E1260EAF01C1318485AEA8060EA41C000
3FC7FC131F7C9D17>57 D<141014181438A21478A214FCEB01BC143C130313021306EB04
3EEB081EA21310A21320801340A290B5FCEB800FD80100138014071202A25AA2000C14C0
123E39FF807FFC1E207E9F22>65 D<0007B5FC39007C01C0013C13E0EC00F04913F8A515
F0EBF00115E0EC03C0EC0F809038FFFE00EBF00F3901E007C0140315E01401A3EA03C014
03A215C01407EC0F80D807801300143EB512F01D1F7E9E20>I<903801F80890380E0618
903838013890387000F8484813784848137048481330A248C7FC5A121E003E1420003C14
00127CA45AA5007814401580A27EEC0100001C13027E0006130C6C13103801C0E0D8003F
C7FC1D217B9F21>I<0007B5FC39007C01E090383C00F0157849133CA2151EA3151F5BA6
4848131E153EA3153C157C4848137815F0A2EC01E0EC03C0EC07803907800F00143CB512
E0201F7E9E23>I<0007B512F839007C0078013C133815185B1508A414089038F01000A3
1430EBFFF0EBF0703801E020A4EC00081510485AA21520A2156015C0380780011407B612
801D1F7E9E1F>I<0007B512F839007C0078013C133815185B1508A59038F01000A31430
1470EBFFF03801E0601420A491C7FC485AA6485A7FEAFFFE1D1F7E9E1E>I<903801FC04
90380F030C90383C009C0170137C49133C4848133848481318120748C7FC5A121E003E14
10003C1400127CA45AA2EC7FFCEC03E000781301A2EC03C0A27EA2121C6C13076CEB0B80
380380113801E06039003F80001E217B9F24>I<3A07FFC7FFC03A007C00F800013C1378
A2495BA649485AA490B5FCEBF0014848485AA64848485AA6484848C7FC01C07F39FFF8FF
F8221F7E9E22>I<3807FFE038007C00133CA25BA65BA6485AA6485AA6485A7FEAFFFC13
1F7F9E10>I<3807FFF0D8007EC7FC133CA25BA65BA6485AA41580EC0100EA03C0A25C14
021406A23807801E147CB512FC191F7E9E1C>76 D<D807FCECFFC0D8007CECF800013CEB
0178A2014EEB02F0A21504A21508A20187EB11E0A21521A21541EB8380D80103495AA2EC
81031482EB01C214C400024A5A14C8A214D0EB00F0000613E04BC7FC000F01C07F3AFFE0
C1FFF82A1F7E9E2A>I<3A07FC01FFC03A003E003E001518A2014F1310A2EB4780A2EB43
C0A201835BEB81E0A2EB80F0A21478D801005B147C143CA2141EA200026D5AA31407A200
06130392C7FC000F7FEAFFE0221F7E9E22>I<EB03F8EB1E0EEB38079038E003803901C0
01C0000314E03807800048C712F0A2121E15F8123E123C127CA448EB01F0A4EC03E01278
15C01407007C1480003CEB0F00141E6C131C000E5B6C13F03803C3C0D800FEC7FC1D217B
9F23>I<0007B5FC39007C03C090383C01E0EC00F05B15F8A415F0EBF00115E0EC03C0EC
0780EC0F00EBFFF8D801E0C7FCA6485AA6485A7FEAFFFC1D1F7E9E1F>I<3807FFFC3800
7C0790383C03C0EC01E0137815F0A415E0EBF00315C0EC0780EC0F00143CEBFFF03801E0
30143880A3141E3803C03EA51502D807801304EBC01F39FFFC0F18C7EA03E01F207E9E21
>82 D<EB3F04EB60CC3801803C0003131C130048131800061308120EA31400120F7F13E0
EA07FE3803FF806C13C038007FE013071301130014F0A2004013E0A4006013C0EB0180EA
E00300F81300EAC60CEA81F816217D9F19>I<003FB512F0383C07800030143012603940
0F0010A212C01280A3D8001E1300A65BA65BA65B487E387FFFE01C1F7A9E21>I<39FFFC
3FF8390F8007C00007EB0300A2380F0002A6001E5BA6485BA600385BA35C003C5B121C5C
6C48C7FCEA0706EA01F81D20799E22>I<39FFF003FE391F8000F86CC712601540A26D13
800007130115001402A26D5A12035CA25C13E000015BA25CA26D5AD800F1C7FCA213F2A2
13FC137C1378A21370A213201F207A9E22>I<3A03FFC0FFC03A007F007E00013E133801
1E133015206D5B5D0281C7FCEB078214C6EB03C414E8EB01F0A2130080A2EB017CEB023C
1304EB0C1E1308EB101F497E01407FEBC00701807F38010003000780381F800739FFE01F
FE221F7F9E22>88 D<39FFF003FF391F8000F86CC712606D134000071480EBC001000314
00EBE00200015BEBF00C140800005B6D5AEB7860EB7C40EB3C80013FC7FC7F131EA3131C
133CA513381378137C380FFFC0201F7A9E22>I E /Fi 27 119 df<14C0A3495AA449C7
FCA41306A2B612E0A2D8000CC7FCA45BA45BA413201B1C7A9823>43
D<127012F8A212F012E005057B840E>46 D<14021406A2140E141EA2143F142F144FA214
8FEB010FA21302A21304130C13081310A201201380EB3FFFEB400713C01380EA0100A212
02A21206001E130F39FF807FF81D207E9F22>65 D<ECFE02903807818690381C004C4913
3C136049131C00011418485A48C7FC5A001E1410A2481400A25AA45AA415801270A2EC01
007E140200185B6C13186C1320380381C0D800FEC7FC1F217A9F21>67
D<48B512FE39001E001C150C1504A25BA490387808081500A21418495AEBFFF0EBF030A2
3801E020A3EC001048481320A21540A248481380140115001407380F001FB512FE1F1F7D
9E1F>69 D<D801FEEC7FC0D8001EECFC005E0117EB0178A20127EB02F01504A215080147
EB09E015111521A20187495AEB83801583A23A01038107801482A2148400024AC7FC1488
1490A2390401E01EA214C0000C1380001C143E3AFF8103FFC02A1F7D9E29>77
D<48B5FC39001E03C0EC00E0157015785BA44913F0A2EC01E015C09038F00700141EEBFF
F0EBF03848487E141E140E140F3803C01EA448485A1508A21510000F131C39FFF00C20C7
EA07C01D207D9E21>82 D<000FB512F0391E0780E00018142012101220EB0F0012601240
A2D8801E134000001400A35BA45BA45BA4485AA41203B5FC1C1F789E21>84
D<EBF180380389C038070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2
EA703C135C38308C80380F070013147C9317>97 D<EA0780123FEA0700A4120EA45AA213
F0EA1D0CEA3A0E123CEA380FA21270A4EAE01EA3131C133C1338EA607013E0EA31C0EA1F
0010207B9F15>I<137EEA01C138030080EA0E07121E001C1300EA3C0248C7FCA35AA5EA
70011302EA3004EA1838EA07C011147C9315>I<1478EB03F8EB0070A414E0A4EB01C0A2
13F1EA038938070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C
135C38308C80380F070015207C9F17>I<137CEA01C2EA0701120E121C123CEA3802EA78
0CEA7BF0EA7C0012F0A4127013011302EA3804EA1838EA07C010147C9315>I<1478EB01
9CEB033CA2EB07181400A2130EA53801FFE038001C00A45BA55BA65BA45B1201A25B1231
007BC7FC12F31266123C1629829F0E>I<EB3C60EBE2703801C1E0EA0380EA07005A380E
01C0121EA3383C0380A4EB0700A2EA1C0F1317EA0C2EEA03CEEA000EA25BA21230EA7838
485AEA60E0EA3F80141D7E9315>I<EA01E0120FEA01C0A4485AA448C7FCA2131E136338
0E8180380F01C0120EA2381C0380A438380700A3EB0E1000701320130C131CEB0C4000E0
13C03860070014207D9F17>I<13C0EA01E0A213C0C7FCA7120E12331223EA4380130012
471287120EA35AA3EA3840138012301270EA31001233121C0B1F7C9E0E>I<EA03C0121F
EA0380A4EA0700A4120EA45AA45AA45AA3127112E2A4126412380A207C9F0C>108
D<391C0F80F0392630C318394740640C903880680EEB0070A2008E495A120EA34848485A
A3ED70803A3803807100156115E115623970070066D83003133821147C9325>I<381C0F
80382630C0384740601380EB0070A2008E13E0120EA3381C01C0A3EB0384003813881408
1307EB031000701330383001C016147C931A>I<137CEA01C338030180000E13C0121E00
1C13E0123C1278A338F003C0A3EB07801400EA700F130EEA3018EA1870EA07C013147C93
17>I<3801C1E0380262183804741C1378EB701EA2EA08E01200A33801C03CA314383803
8078147014E0EBC1C038072380EB1E0090C7FCA2120EA45AA2EAFFC0171D809317>I<EA
1C1EEA26613847838013871307EB0300008EC7FC120EA35AA45AA45A123011147C9313>
114 D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0EA07F8EA03FCEA003E130E
1270EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>I<EA018013C0EA0380A4EA07
00A2EAFFF0EA0700120EA45AA45AA31320EA7040A21380A2EA3100121E0C1C7C9B0F>I<
000E13C0003313E0382301C0EA43811301124738870380120EA3381C0700A31410EB0E20
1218A2EA1C1E380C26403807C38014147C9318>I<380E0380EA3307002313C0EA438313
01EA470000871380120EA3381C0100A31302A25BA25BEA0E30EA03C012147C9315>I
E /Fj 36 122 df<1478137C13FC12013803C0005B1207A838FFFC78A3EA0780B3152480
A31A>12 D<497EB0B612FEA23900018000B01F227D9C26>43 D<EAFFE0A30B037F8C10>
45 D<12F0A404047B830E>I<13C01201120712FFA212FB1203B3A7B5FCA310227CA118>
49 D<EA03F0EA0FFC487EEA3C1F38300780007013C0EA600300E013E0EAC0011240A212
00A3EB03C0A2EB0780A2EB0F00131E5B5B5B485A5B485A48C7FC120E5A5A5AB512E0A313
227EA118>I<EA01F0EA07FCEA1FFFEA3E0F38380780387003C01220A21200A3EB0780A2
EB0F00131EEA03FC5B13FEEA000FEB0780EB03C0A2EB01E0A5128038C003C012E0387007
80EA3C0F381FFF00EA0FFCEA03F013237EA118>I<131FA2132FA2136F13EF13CF1201A2
EA038FA21207130F120F120E121E123CA21278A212F0B512F8A338000F00A915217FA018
>I<383FFF80A3003CC7FCA913F8EA3FFE7FEB0F80EA3E07383C03C01238380001E0A738
4003C0A212E038700780387C1F00EA3FFEEA0FFCEA03F013227EA018>I<137E48B4FC5A
EA07C148C7FC121EA25AA25AA213F8EAF1FEEAF7FF38FF0F80EAFC0738F803C0A2130100
F013E0A51270A21278EB03C01238003C1380EA1C07381F0F00EA0FFE6C5AEA01F013237E
A118>I<B512E0A3C7FCEB01C0EB038013071400130E131E131C133C13381378A25BA25B
1201A3485AA5485AA713217EA018>I<EAFFFCEBFF8014C038F007F01301EB0078143CA5
1438147814F0EB03E0B512C0140014C038F00FE0EB01F8EB0078143C141C141EA5143C14
7C14F8EB03F0B512E014C0EBFE0017237BA220>66 D<EB0FF0EB7FFC90B5FC3801F01F38
03C0074848C7FC48C8FC121E123E123CA25AA35AA91278A37EA2123E121E7E6C6C138038
03C0033801F00F6CB51200EB7FFCEB0FF019257DA31F>I<EAFFFEEBFFC08038F003F0EB
00F8147C80141E80A2EC0780A3EC03C0A915801407A3EC0F005C141E5C14FCEB03F8B512
E05C49C7FC1A237BA223>I<12F0B3B104237CA20D>73 D<00FC147E6C14FEA300F7EB01
DEA3EB800300F3149EA2EBC007A200F1141EA2EBE00F00F0130EA2EBF01EA2EB701CEB78
3CA2EB3838EB3C78A2EB1C70A2EB1EF0EB0EE0A2130FEB07C0A390C7FC1F237BA22A>77
D<EB1FC0EB7FF03801FFFC3803F07E3807C01F390F800F80391F0007C0001E130348EB01
E0A248EB00F0A30070147000F01478A9007814F0A3007C1301003C14E0003E1303001E14
C0001F1307390F800F803907C01F003803F07E6CB45A38007FF0EB1FC01D257DA324>79
D<EAFFFEEBFF8014C038F003E0EB00F01478A2143CA61478A214F0EB03E0B512C01480EB
FE0000F0C7FCAF16237BA21F>I<13FE3803FFC04813E0EA0F81381E0060481300A25AA5
127C123C123FEA1FC0EA0FFC6CB4FC0001138038003FC0EB07E0EB01F0130014F81478A6
00C013F07E38F801E0387E07C0383FFF80000F1300EA01FC15257EA31B>83
D<EA07E0EA1FF8EA3FFCEA381E1220EA000FA413FF1207121FEA3E0F127812F0A4EAF83F
EA7FFFEA3FEFEA1F8F10167E9517>97 D<12F0ADEAF1F0EAF7FCB47EEAFC1F487E38F007
80A2EB03C0A8EB0780A238F80F00EAFC3EEAFFFEEAF7F8EAF1F012237CA219>I<EA01FC
EA07FF481380EA1F03EA3C0148C7FCA2127012F0A61278A36C1340381F03C0EA0FFF6C13
803801FC0012167E9516>I<EB03C0ADEA03E3EA0FFBEA1FFFEA3F0FEA3C07EA7803A212
F0A81278A2EA3C07EA3E0FEA1FFFEA0FFBEA03E312237EA219>I<EA03F0EA07FCEA1FFE
EA3E0F383C0780EA7803A238F001C0B5FCA300F0C7FCA312701278A26C1380EA1F07EA0F
FF6C1300EA01F812167E9516>I<3801F0783807FFF85A381F1F00EA1E0F383C0780A538
1E0F00EA1F1FEA0FFE485AEA19F00038C7FCA2123CEA1FFEEBFFC014E04813F0EA7801EB
00F8481378A4007813F0383E03E0381FFFC06C13803801FC0015217F9518>103
D<12F0A41200A912F0B3A404237DA20B>105 D<12F0B3B104237DA20B>108
D<39F0F807C039F3FE1FF039F7FF3FF839FE0F707800FCEBE07C39F807C03CA200F01380
AF1E167C9527>I<EAF1F8EAF3FCEAF7FEEAFE1EEAF80FA212F0B010167C9519>I<EA01FC
EA07FF481380381F07C0383C01E0387800F0A20070137000F01378A6007813F0A2EA7C01
383E03E0381F07C0380FFF806C1300EA01FC15167F9518>I<EAF1F0EAF7FCB47EEAFC3F
EAF80F38F00780A214C01303A613071480130F00F81300EAFC3EEAFFFEEAF7F8EAF1F000
F0C7FCAA12207C9519>I<EAF0E012F312F7EAFF005A5A5AA25AAE0B167C9511>114
D<EA07F0EA1FFCEA3FFEEA3C0EEA78061300A2127C123F13F0EA1FF8EA0FFCEA01FEEA00
1F130FA312C0EAF81EEAFFFEEA3FFCEA0FF010167F9513>I<120FA6EAFFF8A3EA0F00AE
1308131CEA07FC13F8EA03E00E1C7F9B12>I<EAF00FB1131FEAF83FEA7FFF13CFEA1F0F
10167C9519>I<38F001E0A2387803C0A2127C383C0780A2121E14005B120F130EEA071E
139EEA039CA3EA019813D8EA00F85BA35BA212015BA2485A127F90C7FC127E13207F9516
>121 D E /Fk 70 124 df<90381F83E09038F06E303901C07878380380F8903800F030
48EB7000A7B612803907007000B2387FE3FF1D20809F1B>11 D<133FEBE0C0EA01C03803
81E0EA0701A290C7FCA6B512E0EA0700B2387FC3FE1720809F19>I<90381F81F89038F0
4F043901C07C06390380F80FEB00F05A0270C7FCA6B7FC3907007007B23A7FE3FE3FF024
20809F26>14 D<EA7038EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008A2EA2010EA
40200F0E7E9F17>34 D<127012F812FCA212741204A31208A21210A212201240060E7C9F
0D>39 D<132013401380EA0100120212065AA25AA25AA312701260A312E0AC1260A31270
1230A37EA27EA27E12027EEA0080134013200B2E7DA112>I<7E12407E7E7E120C7EA27E
A2EA0180A313C01200A313E0AC13C0A312011380A3EA0300A21206A25A12085A5A5A5A0B
2E7DA112>I<1306AFB612F0A2D80006C7FCAF1C207D9A23>43 D<127012F812FCA21274
1204A31208A21210A212201240060E7C840D>I<EAFFC0A20A027F8A0F>I<127012F8A312
7005057C840D>I<EA03F0EA0E1C487EEA1806EA380738700380A400F013C0AD00701380
A3EA780700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>48 D<EA01801203120F12F3
1203B3A6EA07C0EAFFFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00401380128000F0
13C0EAF803A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7FC000613405A5A
00101380EA3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F007813801307A2
EA380F12001400A2130E5B5BEA03F0EA003C130E130FEB0780A214C0122012F8A300F013
801240EB0F00EA200EEA1C3CEA03F0121F7E9D17>I<1306A2130EA2131E132EA2134E13
8EA2EA010E1202A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F
9D17>I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA180EEA10071480EA0003
A214C0A3127012F0A200E013801240EB0700EA2006EA100EEA0C38EA03E0121F7E9D17>
I<137CEA0182EA0701380E0380EA0C07121C3838030090C7FC12781270A2EAF1F0EAF21C
EAF406EAF807EB0380A200F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F012
1F7E9D17>I<1240387FFFC01480A238400100EA8002A25B485AA25B5BA25BA213C0A212
015B1203A41207A76CC7FC121F7D9D17>I<EA03F0EA0C0CEA1006EA3003382001801260
A3127038780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F38300F80EA6003
384001C012C01300A31480EA600100201300EA1002EA0C0CEA03F0121F7E9D17>I<EA03
F0EA0E18487E487E13071270EB038012F0A214C0A5EA7007A21238EA180BEA0E13EA03E3
38000380A3EB07001230EA7806130EEA700CEA2018EA1070EA0FC0121F7E9D17>I<1270
12F8A312701200AA127012F8A3127005147C930D>I<127012F8A312701200AA127012F0
12F8A212781208A31210A31220A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10
F0A3EB2078A3497EA3497EA2EBFFFE3801000FA30002EB0780A348EB03C0120E001FEB07
E039FFC03FFE1F207F9F22>65 D<B512E0380F80380007131E141F801580A515005C141E
5CEBFFF0EB803C80801580140715C0A51580140F15005C000F133CB512F01A1F7E9E20>
I<90380FC04090387030C03801C0093803800538070003000E1301001E1300121C123C00
7C1440A2127800F81400A91278007C1440A2123C121C001E1480120E6CEB010038038002
6C6C5A38007038EB0FC01A217D9F21>I<B512E0380F803C00077F1407EC038015C0EC01
E0A215F01400A215F8A915F0A3EC01E0A2EC03C01580EC0700140E000F133CB512E01D1F
7E9E23>I<B6FC380F800F00071303A28015801400A314801500A3138113FF13811380A4
EC0020A31540A315C0A2EC0180000F130FB6FC1B1F7E9E1F>I<B6FC380F800F00071303
A28015801400A4EC8000A4138113FF13811380A491C7FCA8487EEAFFFE191F7E9E1E>I<
39FFF8FFF8390F800F8000071400AC90B5FCEB800FAE000F148039FFF8FFF81D1F7E9E22
>72 D<EAFFFCEA0FC0EA0780B3A9EA0FC0EAFFFC0E1F7F9E10>I<B46CEB1FF8000F1580
00071500D805C0132FA3D804E0134FA20170138FA3903838010FA3EB1C02A3EB0E04A3EB
0708A3EB0390A2EB01E0A3380E00C0001FEC1F803AFFE0C1FFF8251F7E9E2A>77
D<39FF803FF83907C007C0EC03803905E00100A2EA04F01378A2133CA2131E130FA2EB07
81A2EB03C1EB01E1A2EB00F1A21479143DA2141FA28080A2000E7F121F38FFE0011D1F7E
9E22>I<EB1F80EBF0F03801C0383807801E48487E000E7F001E148048EB03C0A2007C14
E000781301A200F814F0A9007814E0007C1303A2003C14C0A26CEB0780000E1400000F5B
3807801E3801C0383800F0F0EB1F801C217D9F23>I<B512E0380F80780007131C141E80
1580A61500141E141C1478EBFFE00180C7FCAD487EEAFFFC191F7E9E1F>I<B57E380F80
F0000713788080A2141FA4141EA25C5C5CEBFF80EB81C0EB80E08014701478A3147CA315
04147E143E390FC01E0839FFFC0F10C7EA03E01E207E9E21>82 D<3807E080EA0C19EA10
07EA3003EA6001A212E01300A36C1300A21278127FEA3FF0EA1FFC6C7EEA03FF38001F80
1307EB03C0A213011280A400C01380130300E01300EAF006EACE0CEA81F812217D9F19>
I<007FB512E038780F010060EB006000401420A200C0143000801410A400001400B3497E
3807FFFE1C1F7E9E21>I<39FFFC3FF8390FC007C03907800380EC0100B3A300031302A2
EA01C05C6C6C5AEB7018EB3820EB0FC01D207E9E22>I<3BFFF07FF81FF03B1F800FC007
C03B0F0007800380EE010015C0D807801402A33A03C009E004A39039E010F00C00011508
A29038F0207800005DA2EC403C01785CA2ECC03E90393C801E40A390391F000F80A3011E
1307010E91C7FCA2010C7F010413022C207F9E2F>87 D<12FEA212C0B3B3A512FEA2072D
7CA10D>91 D<EA0804EA1008EA2010A2EA4020A2EA8040A3EAB85CEAFC7EA2EA7C3EEA38
1C0F0E7B9F17>I<12FEA21206B3B3A512FEA2072D7FA10D>I<EA1FE0EA3030EA7818131C
EA300E1200A313FEEA078EEA1E0E1238127800F01310A3131E127838386720380F83C014
147E9317>97 D<120E12FE120EAA133EEBC380380F01C0EB00E0120E1470A21478A61470
A214E0120F380D01C0380CC300EA083E15207F9F19>I<EA03F8EA0E0CEA1C1E1238130C
EA7000A212F0A61270A2EA3801A2EA1C02EA0E0CEA03F010147E9314>I<EB0380133F13
03AAEA03E3EA061BEA1C07EA3803A21270A212F0A61270A212381307121CEA0E1B3803E3
F815207E9F19>I<EA03F0EA0E1C487E487EA21270EB038012F0A2B5FC00F0C7FCA31270
A26C13801218380C0100EA0706EA01F811147F9314>I<137C13C6EA018F1203EA070613
00A7EAFFF0EA0700B2EA7FF01020809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA
780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381FFF806C13C0383001E0
38600070481330A4006013606C13C0381C03803803FC00141F7F9417>I<120E12FE120E
AA133E1343EB8180380F01C0A2120EAE38FFE7FC16207F9F19>I<121C121E123E121E12
1CC7FCA6120E127E120EB1EAFFC00A1F809E0C>I<13E0EA01F0A3EA00E01300A61370EA
07F012001370B3A31260EAF06013C0EA6180EA3F000C28829E0E>I<120E12FE120EAAEB
0FF0EB03C0140013025B5B5B1330137013F8EA0F38EA0E1C131E130E7F1480130314C014
E038FFCFF815207F9F18>I<120E12FE120EB3ABEAFFE00B20809F0C>I<390E1F01F039FE
618618390E81C81C390F00F00EA2000E13E0AE3AFFE7FE7FE023147F9326>I<EA0E3EEA
FE43380E8180380F01C0A2120EAE38FFE7FC16147F9319>I<EA01F8EA070E381C038038
3801C0A2387000E0A200F013F0A6007013E0A2383801C0A2381C038038070E00EA01F814
147F9317>I<EA0E3E38FEC380380F01C0EB00E0120E14F014701478A6147014F014E0EA
0F0114C0380EC300133E90C7FCA8EAFFE0151D7F9319>I<3803E080EA0619EA1C05EA3C
07EA38031278127012F0A61270127812381307EA1C0BEA0E13EA03E3EA0003A8EB3FF815
1D7E9318>I<EA0E78EAFE8CEA0F1EA2130CEA0E00AEEAFFE00F147F9312>I<EA1F90EA30
70EA4030EAC010A3EAE0001278EA7F80EA3FE0EA0FF0EA0070EA80381318A212C0A2EAE0
30EAD060EA8F800D147E9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1308A5EA
06101203EA01E00D1C7F9B12>I<380E01C0EAFE1FEA0E01AE13031206EA030D3801F1FC
16147F9319>I<38FF83F8381E01E0381C00C06C1380A338070100A2EA0382A3EA01C4A2
13ECEA00E8A21370A3132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020
000E1440A214C0D807071380130414E039038861001471EBC8733801D032143A3800F03C
EBE01CA2EB6018EB40081E147F9321>I<387FC3FC380F01E0000713C0148038038100EA
01C2EA00E413EC13781338133C137C134E1387EA010738030380380201C0000613E0121E
38FF07FE1714809318>I<38FF83F8381E01E0381C00C06C1380A338070100A2EA0382A3
EA01C4A213ECEA00E8A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>
I<EA3FFFEA380E1220131CEA403813781370EA00E0120113C0EA038012071301120E121E
EA1C03EA3802EA7006130EEAFFFE10147F9314>I<B512FC1601808C17>I
E /Fl 12 118 df<13201340EA0180120313001206120E5AA2123C1238A21278A312F85A
A97E1278A31238A2123C121CA27E12067E13801201EA004013200B297C9E13>40
D<7E12401230123812187E120E7EA213801203A213C0A313E01201A9120313C0A31380A2
12071300A2120E120C5A1238123012405A0B297D9E13>I<127812FCA412781200A61278
12FCA4127806127D910D>58 D<B512F814FF390FC01FC0EC07E0EC01F015F8140015FC15
7CA2157EA8157CA315F8A2EC01F0EC07E0EC1FC0B6120014F81F1C7E9B25>68
D<3807FFF0A238001F80B21230127812FCA21400EA783EEA387CEA0FF0141C7F9B19>74
D<EA03FCEA0E0EEA1C1F123C1278130E00F8C7FCA61278EB0180123C381C0300EA0E0EEA
03F811127E9115>99 D<EA01FCEA0F07381C0380383C01C0127814E012F8A2B5FC00F8C7
FCA31278007C1360123C6C13C0380F03803801FC0013127F9116>101
D<121E123FA4121EC7FCA6B4FCA2121FAEEAFFE0A20B1E7F9D0E>105
D<38FF0FC0EB31E0381F40F0EB80F8A21300AB38FFE7FFA218127F911B>110
D<EA01FC380F0780381C01C0003C13E0387800F0A200F813F8A6007813F0A2383C01E038
1E03C0380F07803801FC0015127F9118>I<EA1FD8EA3078EA601812E0A2EAF000EAFF80
EA7FE013F0EA1FF8EA07FCEA007CEAC01CA212E01318EAF830EACFC00E127E9113>115
D<38FF07F8A2EA1F00AC1301120F380786FFEA01F818127F911B>117
D E /Fm 2 64 df<B612E0A2D8000CC7FCB3A713041B1C7D9B21>62
D<1304130CB3A7B612E0A21B1C7D9B21>I E /Fn 48 122 df<EC0F80137E13FE120112
03D807C0C7FC5B120FA939FFFE0F80A3EA0F80B3A6192B7FAA1F>12
D<1438B2B712FEA3C70038C7FCB227277DA12E>43 D<12F8A5123812301270A21260A212
E0050C7B8410>I<EAFFFEA30F037F8E14>I<12F8A505057B8410>I<137E3801FF800007
13E04813F0381FC3F81300003E137CA2003C133C007C133EA20078131EA200F8131FAF00
78131E007C133EA46C137C003F13FC6C13F813C3380FFFF06C13E00001138038007E0018
297EA71D>48 D<13301370EA01F0120F12FFA212F11201B3ACB512E0A313287BA71D>I<
13FE3803FF80000F13C04813E0EB07F0383C01F8387800FC147C127000F0133EA2126012
20C7FCA3147CA2147814F8EB01F014E01303EB07C0EB0F80EB1F00133E5B5B485A485A5B
485A48C7FC121E5A387FFFFEA417287EA71D>I<137E3803FF804813E0001F13F0383F83
F8EA3E0048137C123812301210C7FCA214F8A21301EB03F0EB0FE03801FFC0148014C014
E0380001F8EB00FC147C143EA2141FA57E6C133E7E6C137E007C13FC383F01F8381FFFF0
6C13E0000313C03800FE0018297EA71D>I<EB07E0130F130B131BA2133BA21373A213F3
A2EA01E3A2120313C31207EA0F83A2EA1F03A2123EA2127CA212F8B6FCA4380003E0AA18
277EA61D>I<383FFFF8A4003EC7FCAA133EEBFF80003F13E014F013C1EB00F8147C123E
C7FC143EA712400060137C12E06C13F8EA7801387F07F0383FFFE0000F13C06C1300EA01
FC17287EA61D>I<EB0FE0EB3FF813FF5A3803F0183807E000EA0F8090C7FC5A123EA212
3C127C1302EB3FC038F8FFE000F913F000FB13F838FF80FC38FE007C143E5A143F141F5A
A41278127CA2141E003C133E123E001E137C001F13FC380FC1F83807FFF06C13E06C1380
38007E0018297EA71D>I<B6FCA4C7120F141E143C147814F814F0EB01E0130314C0EB07
80130F14005B131E133EA2133C137CA25BA35B1201A5485AA718277EA61D>I<137E3803
FFC04813E04813F0381F81F8383F00FC003E137C007E137E007C133EA56C137CA26C13F8
380FC3F03807FFE06C13C0A2000F13F0381F81F8383F00FC003E137C48133EA248131FA6
007C133EA2007E137E6C13FC381F81F8380FFFF06C13E06C13C038007E0018297EA71D>
I<137E3801FF80000713C04813E0381F83F0EB00F8003E137848137C143C0078133E12F8
A2141E141FA4143F7E127C147F7E383F01FF381FFFDF6C139F6C131F3803FC1E3800403E
1300A2147CA214F8A2EB01F0381803E0381E0FC0383FFF806C13006C5AEA03F818297EA7
1D>I<EB03F0A2497EA21478497EA3EB1E3E141EA2EB3E1F133C90387C0F80A213789038
F807C0A213F000016D7EA213E000036D7EA213C000076D7E90B5FCA24880903880007C90
C7FC4880A2121E003E80A2123C007CEC0F80A24815C01507A2222A7EA927>65
D<B512C014F814FE38F800FFEC1F80EC07C0EC03E0140115F0A214001401A215E01403EC
07C0EC1F80EC7F00B512FE14F88014FF39F8007FC0EC0FE0EC03F01401EC00F81578157C
A615F81401EC03F0EC0FE0EC3FC0B61280ECFE0014F01E2A7BA927>I<EB03FF010F13E0
013F13F890B5FC3801FE013903F80070D807E01310491300485A121F90C8FC123EA25AA4
5AAA127CA47EA27E7F120F6C7E6D1308D803F813383901FE01F86CB5FC013F13F0010F13
C0903803FE001D2C7CAA25>I<B512E014FC14FF39F8007F80EC0FC06E7EEC01F06E7EA2
157C81A2151E151FA2811680AA16005DA3153EA25DA25D4A5A4A5AEC0FC0EC3F80B6C7FC
14FC14E0212A7BA92A>I<B612C0A400F8C8FCAEB6FCA400F8C8FCB0B612E0A41B2A7BA9
23>I<B61280A400F8C8FCAFB512FCA400F8C8FCB3192A7BA921>I<EB03FE90380FFFC001
3F13F84913FC3801FE013903F8007CD807E01318491300485A121F90C8FC123EA2127E12
7CA35AA7EC3FFCA3127CEC007CA2127E123EA27E7F120F6C7E7FEA03F83901FE01FC3800
7FFF6D13F8010F13C0903803FE001E2C7CAA27>I<12F8B3B3A6052A7BA910>73
D<B4147CA27FA2EAFBC0A2EAF9E0A27F12F8A27F1378137C133C133E131E131F7F1480A2
EB07C0A2130314E0130114F0130014F81478147C143CA2143E141EA2140FA2EC07FCA214
03A21E2A7BA929>78 D<EB03FCEB0FFF013F13C090B512F03901FE07F83903F801FC3907
E0007E48487F497F48C7EA0F80A2003EEC07C0A248EC03E0A30078140100F815F0AA007C
EC03E0A3007E1407003E15C0A26CEC0F806D131F000F15006D5B6C6C137E3903F801FC39
01FE07F86CB55A013F13C06D5BD903FCC7FC242C7DAA2B>I<B512C014F814FE38F8007F
EC1F80EC07C0140315E0140115F0A615E01403A2EC07C0EC1F80EC7F00B512FE5C14F000
F8C8FCB21C2A7BA925>I<B512E014FC14FF39F8003F80EC0FC0EC03E0EC01F0A2EC00F8
A6EC01F0A2EC03E0140FEC3FC0B61280ECFE0014F814E0EAF801806D7EA2147C143C143E
141E141FEC0F80A2EC07C0A2EC03E0140115F0EC00F8A2157C1E2A7BA926>82
D<B712E0A4260001F0C7FCB3B3A2232A7EA928>84 D<EA01FC380FFF80003F13C014E038
3C03F0EA3001000013F81300A4130113FF1207121FEA3FC0EA7E005A5AA3EAFC01EA7E07
EA7FFF7EEA1FFCEA0FE0151B7E9A1C>97 D<EB7F803801FFE0000713F85A381FC078383F
0010003E13005AA35AA7127CA37E003F1318381FC078380FFFF87E000113E038007F8015
1B7E9A1A>99 D<143EAFEA01FCEA03FF000F13BE4813FE13C1383F007E003E133E5AA212
FC5AA77E127CA2007E137E6C13FEEA1FC113FF6C13BE3803FE3EEA01F8172A7EA91E>I<
13FCEA03FF4813804813C0381F87E0EA3F01383E00F05A1470481378B512F8A400F8C7FC
A31278127CA27E003F1318381FC0F8EA0FFF7E000113E038007F00151B7E9A1A>I<EB3F
C013FF5A5A3807E0005B485AA9EAFFFEA3EA0F80B3A6122A7FA912>I<90387C07803901
FF3FC0000713FF5A903883E000381F01F0A2383E00F8A56C485AA2380F83E013FF485B00
1D90C7FCEA1C7C003CC8FCA2123E381FFFE014F86C13FE487F481480387E003F007CEB0F
C0481307A46C130F007EEB1F80393F807F00381FFFFE6C5B000313F038007F801A287F9A
1D>I<12F8A51200AA12F8B3A9052A7CA90E>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 /Fo 29 122 df<EE07804C7EB3B1007FBB12F0BC12F8A4
6C1AF0C9D80FC0C9FCB3B1705A4D4E7AC05A>43 D<EA07C0EA1FF0EA3FF8EA7FFCA2EAFF
FEA5EA7FFCA2EA3FF8EA1FF0EA07C00F0F788E20>46 D<177017F81601A2160317F01607
17E0A2160F17C0161F1780A2163F17005E167EA216FE5E15015EA215035E15075EA2150F
5E151F5EA2153F93C7FC5D157EA215FE5D14015DA214035D14075DA2140F5D141F5D143F
92C8FCA25C147E14FE5CA213015C13035CA213075C130F5CA2131F5C133F91C9FCA25B13
7E13FE5BA212015B12035BA212075B120F5BA2121F5B123F90CAFCA25A127E12FE5AA25A
12782D677ACC3A>I<EC1FFC49B512C0010714F090391FF80FFC90393FE003FE90397F80
00FF4848C7EA7FC049143F00038248486E7EA248486E7EA2001F82A2003F82A249140700
7F82A600FF1780B3A3007F1700A66C6C4A5AA3001F5EA36C6C4A5AA200075E6C6C4A5A6D
147F6C5E6C9039C001FF8090273FE003FEC7FC90391FF80FFC0107B512F0010114C09026
001FFCC8FC31457CC33A>I<EC01E01403140F143F14FF130F0003B5FCB6FCA213F1EAFC
011200B3B3B1003FB71280A4294478C33A>I<EC3FF80103B5FC010F14C090393FF01FF0
90397FC007F849C66C7E48486D7E00036E7E48481580000FED7FC0121F003F16E05B007F
16F0163F17F8A212FFA217FCA517FEA4127F167FA2123FA2001F15FF7F120F00075C6C6C
EB03BF12016C6CEB073F90387FC01E90383FFFFC010F01F813FC010313E090C8FCA317F8
167FA2D801E015F0EA07F8486C15E0A2486CECFFC0A217805D4915004B5A6C48495A01E0
495A6C48495A6C6CEB7FE03A01FC01FF806CB6C7FC6D13FC011F13F0010390C8FC2F457B
C33A>57 D<B912C018FCF0FF8019E0D8001F90C7000313F805007FF03FFE727E1A807213
C0841AE0A2841AF0A84E13E0A21AC0601A804E13004E5A4E5A4E5A050313E0057F138092
B600FCC7FCF0FF8019F092C8EA7FFCF01FFF060713807213C01AE07213F07213F81AFCA2
F17FFEA31AFFA81AFEA219FF1AFC601AF84E13F04E13E04E13C0063F13804DB51200BA12
FC19F0198006F8C7FC48477CC653>66 D<DC7FFE1406030FB500C0131E037F02F8133E02
03B600FE137E020F903AF800FF80FE023F0180EB1FC1DAFFFCC7EA07F34901F0EC01FF01
0701C0EC007F4990C9123F4948161F4948160F49481607495A4818034A16015A48491600
A2485B1A7E5A91CBFC48193EA35A491800A312FFAD127FA37F6C191EA37E806C193E1A3C
6C7FA26C6D17787E6E17F06C18016D6C17E06D6CEE03C06D6CEE07806D6C6CED0F006D6D
153E010101F05D6D01FC4A5A91263FFF80EB0FF0020F01F8EB7FC0020390B6C7FCDA007F
14FC030F14E09226007FFEC8FC47497AC754>I<BA12F0A4D8001F902680000713F8EF00
7F181F180718031801A2180019FC197CA3193CA4191E1778A31900A317F8A31601160316
1F92B5FCA4ED801F160316011600A31778A694C8FCB2B712FEA43F477CC649>70
D<B712F0A4D8001FEB8000B3B3B3A9B712F0A424477DC62B>73 D<B712FEA4D8001F0180
C9FCB3B3A419F0A4F001E0A41803A31807A219C0180F181FA2183F187FEF01FF5F170F94
B51280BAFCA43C477CC646>76 D<B66C051FB512F86F5FA26F5FD8001FF3C000A2011E6D
17F7A26E6CEE01E7A26E6CEE03C7A36E6CEE0787A26E6CEE0F07A26E6D151EA26E6D153C
A36E6D1578A26E6D15F0A26F6CEC01E0A36F6CEC03C0A26F6CEC0780A26F6CEC0F00A26F
6D131EA36F6D5BA26F6D5BA26F6D5BA3706C485AA2706C485AA2706C485AA3706C48C7FC
A270139EA27013FCA2705BA3705BA2715AA2715AEB7F80B600C0043FB612F8715AA271C7
FC65477CC66E>I<B9FC18F818FEF0FFC0D8001F902680001F7F050113F8717FF03FFE72
7E1A80841AC0841AE0A21AF0A81AE0A31AC0601A80601A004E5AF0FFFC050313F0051F5B
92B7128006FCC7FC18E00380CAFCB3ABB712F0A444477CC64F>80
D<90380FFFF090B6FC000315C03A07F8007FF0486CEB1FFCED07FE486C6D7E838183816C
48816C5A6C5AC9FCA5157F023FB5FC0103B6FC011F13F090387FFE003801FFE0481380D8
0FFEC7FC485A5B123F485AA2485AA45DA26C6C5BED077F6C6C130F6C6C013E13F83C0FFF
80F83FFFE000039038FFF01FC6ECC00F90390FFE0003332E7CAD38>97
D<EB7FC0B5FCA412037EB3A2ED1FFC92B57E02C314F09139CFE01FFC9139DF0003FE02FC
6D7E4A6D13804AEC7FC04AEC3FE04A15F0EF1FF8A218FCA2EF0FFEA418FFAA18FEA318FC
171FA218F8EF3FF0A26EEC7FE06E15C06EECFF80023C491300D9FE1FEB07FE903AFC0FC0
3FF8D9F803B512E049C6148049D91FF8C7FC38487CC741>I<EFFF804BB5FCA4ED000782
B3A2EC1FFC49B51283010714E390391FFC03F390397FE0007FD9FF807F4890C7120F4848
80000781485AA2485A123FA25B127FA312FFAA127FA46C7EA2121FA26C7E00075D6C6C5C
6C6C5C6C6D137F6D6C01FB13C090273FF807E313FF010FB512C3010114039038003FF038
487CC741>100 D<EC1FFC49B512C0010714F090391FF80FFC90397FC001FE49486C7E48
90C7EA7F804848EC3FC04848EC1FE0120F484815F0160F003F16F8A25B007F150717FCA2
12FFA290B7FCA301F0C9FCA5127FA36C7EA2001F163CA26C7E17786C6C15F86C6CEC01F0
6C6DEB03E06C6DEB07C0D93FE0EB1F80903A1FFC01FF000107B512FC010014E0020F90C7
FC2E2E7DAD35>I<171FDA7FF0EBFFC00107B5000313E0011FECC7E7903B7FE03FFF0FF0
9039FF800FFC48EB00074848EB03FE00079238FF07E0496DEB03C0000FEE8000A2001F82
A8000F5EA2000793C7FC6D5B00035D6C6C495A6C6D485A9138E03FF0D801DFB512C0D803
C791C8FC9038C07FF04848CAFCA37FA27FA213F890B612F06C15FF17E06C8217FC6C826D
8148B812801207D80FF0C7001F13C0D81FC014014848EC007F007FEE3FE048C9FC171FA5
6C6CED3FC0A26C6CED7F806C6CEDFF00D80FF8EC03FED803FEEC0FF82601FFE0EBFFF06C
6CB612C0010F4AC7FCD9007F13C034447DAE3A>103 D<EB7FC0B5FCA412037EB3A2ED07
FE92383FFFC04B13F09139C1F81FF89139C3C00FFC9139C70007FE14CE02DC8002F87F18
805CA25CA35CB3A9B60081B6FCA438487BC741>I<137C48B4FC4813804813C0A24813E0
A56C13C0A26C13806C1300EA007C90C7FCACEB7FC0B5FCA412037EB3B2B6FCA418497CC8
20>I<EB7FC0B5FCA412037EB3B3B3A8B61280A419487CC720>108
D<9039FF8007FEB590383FFFC04B13F0913981F81FF8913983C00FFC00039039870007FE
6C138E029C8002B87F188014F0A25CA35CB3A9B60081B6FCA4382E7BAD41>110
D<EC0FFE49B512F0010714FC90391FF803FF90267FE00013C0D9FF80EB3FE04890C76C7E
48486E7E48486E7E000F82491403001F82003F17804980A2007F17C0A300FF17E0AA007F
17C0A46C6C4A1380A2001F17006D5C000F5E6C6C4A5A00035E6C6C4A5A6C6D495AD97FE0
EBFFC090261FFC0790C7FC0107B512FC010114F0D9001F90C8FC332E7DAD3A>I<90397F
C01FFCB590B57E02C314F09139CFE03FFC9139DF0007FE000301FC6D7E6C496D13804A6D
13C04AEC7FE04A15F0EF3FF8A2EF1FFCA218FEA2170FA218FFAA18FE171FA218FCA2173F
18F818F0177F6EECFFE06E15C06E4913806E49130002DFEB0FFE9139CFC03FF802C3B512
E002C01480DB1FF8C7FC92C9FCB0B67EA438427CAD41>I<90397F803F80B5EBFFE00281
13F8913883C3FC91388707FE0003138E6C90389C0FFF14B8A214F0A2ED07FE9138E003FC
ED01F892C7FCA25CB3A8B612E0A4282E7DAD2F>114 D<90390FFE01C090B512C7000314
FF3807F801390FC0007F48C7121F48140F007E1407A2150312FEA27E7F01E090C7FC13F8
387FFFC014FF6C14E015F86C806C14FF6C1580000115C06C6C14E0131F010014F0140391
38007FF80070141F00F0140F15077E1503A26C15F0A27E6CEC07E07F6DEB0FC001F0EB1F
80D8FEFCEBFF0039F87FFFFCD8F01F13F0D8E0031380252E7CAD2E>I<EB01E0A61303A3
1307A3130FA2131F133FA2137FEA01FF5A000F90B512C0B7FCA3C601E0C7FCB3A616F0A9
017F14E0ECF001133FED03C0D91FF8138090390FFE0F00903807FFFE01015B9038001FF0
24427EC12D>I<D97FC0ECFF80B549B5FCA40003EC00076C81B3AA5EA36C5D5EA26D6C13
3B013F02F313C090271FF803E313FF6DB51283010314039038003FF8382E7BAD41>I<B6
49B5FCA4000101C09038001FC06EEC0F806C17006E5C017F151E6E143E013F153C80011F
5D8017F8010F5D6E13016D5DED80036D5DEDC0076D5D15E06D4AC7FC15F05E027F131EED
F83E023F133CEDFC7C021F1378EDFEF8020F5B15FF6E5BA36E5BA26E5BA26E90C8FCA215
7EA2153CA2157C157815F85D1401001F5C383F8003D87FC05B38FFE0075D140F4AC9FC14
1E387FC07C495A383F03F06CB45A00071380D801FCCAFC38427EAD3D>121
D E /Fp 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 Fp(Chapter)31 b(7)75 568 y Fo(MPI)40
b(1.1)f(C++)g(/)g(F)-10 b(ortran)40 b(90)75 693 y(Language)f(Bindings)
75 933 y Fn(7.1)59 b(C++)19 b(Intro)r(duction)1875 1039
y Fm(>)p Fl(\(June\))75 1035 y Fk(This)14 b(section)g(presen)o(ts)f
(the)h(design)g(of)f(C++)h([1)o(,)f(2])f(bindings)k(for)c(MPI)i(1.1.)k
(The)c(C++)f(bindings)j(for)75 1091 y(MPI)g(1.1)f(functions)h(are)g
(listed)h(in)f(App)q(endix)i(A.)k(C++)16 b(bindings)i(for)d(MPI)h(2)g
(functions)g(are)g(listed)75 1148 y(in)g(their)g(resp)q(ectiv)o(e)g(c)o
(hapters.)75 1270 y Fj(7.1.1)49 b(Design)75 1355 y Fk(The)15
b(MPI)h(C++)f(bindings)i(w)o(ere)e(designed)i(in)f(accordance)f(to)g
(the)g(follo)o(wing)h(criteria:)131 1462 y(1.)22 b(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
1518 y(functional)20 b(in)o(terface)g(to)f(MPI.)g(The)h(set)f(of)g
(classes)h(should)h(b)q(e)f(as)f(small)i(as)e(p)q(ossible,)j(and)189
1575 y(the)15 b(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
1631 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 1725 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 1781
y(MPI-2.)131 1875 y(3.)i(The)16 b(C++)g(function)h(bindings)h(should)e
(seman)o(tically)h(and)g(syn)o(tactically)f(corresp)q(ond)h(to)e(the)
189 1932 y(MPI)21 b(functional)h(sp)q(eci\014cation.)40
b(T)l(o)21 b(the)h(greatest)e(exten)o(t)h(p)q(ossible,)j(the)d(C++)h
(functions)189 1988 y(should)16 b(b)q(e)g(mem)o(b)q(er)f(functions)h
(of)f(MPI)g(classes.)189 2094 y Fi(R)n(ationale.)62 b
Fk(There)20 b(are)e(three)h(principle)j(options)d(to)g(consider)g(for)g
(C++)g(language)g(bind-)189 2151 y(ings:)j(use)16 b(the)g(existing)h(C)
f(language)g(bindings,)i(pro)o(vide)e(a)g(comprehensiv)o(e)h(class)g
(library)l(,)f(or)189 2207 y(pro)o(vide)j(a)f(ligh)o(t)o(w)o(eigh)o(t)g
(set)h(of)f(MPI)g(ob)s(jects.)29 b(Using)19 b(the)g(existing)g(C)f
(bindings)i(has)f(signif-)189 2264 y(ican)o(t)f(dra)o(wbac)o(ks)e(in)j
(that)e(m)o(uc)o(h)h(of)f(the)h(expressiv)o(e)h(p)q(o)o(w)o(er)e(of)g
(the)h(C++)g(language)g(is)g(lost.)189 2320 y(While)h(pro)o(viding)g(a)
f(comprehensiv)o(e)h(class)g(library)g(w)o(ould)f(mak)o(e)g(user)g
(programming)f(more)189 2377 y(elegan)o(t,)f(it)g(is)h(not)f(suitable)h
(as)f(a)g Fi(binding)f Fk(since)i(a)f(binding)i(m)o(ust)e(pro)o(vide)g
(a)g(direct)h(and)f(un-)189 2433 y(am)o(biguous)e(mapping)g(to)g(the)g
(sp)q(eci\014ed)i(functionalit)o(y)f(of)f(MPI.)g(Pro)o(viding)g(a)g
(ligh)o(t)o(w)o(eigh)o(t)g(set)189 2489 y(of)j(MPI)g(ob)s(jects)g(that)
g(corresp)q(ond)h(to)f(the)g(basic)i(MPI)e(t)o(yp)q(es)h(is)g(the)f(b)q
(est)h(\014t)f(to)g(MPI's)g(im-)189 2546 y(plicit)h(ob)s(ject-based)f
(design;)h(metho)q(ds)f(can)g(b)q(e)g(supplied)i(for)d(these)h(ob)s
(jects)f(to)g(realize)i(MPI)189 2602 y(functionalit)o(y)l(.)189
2677 y(\()p Fi(End)d(of)i(r)n(ationale.)p Fk(\))964 2828
y(1)p eop
%%Page: 2 2
2 1 bop 75 -100 a Fk(2)315 b Fh(CHAPTER)15 b(7.)35 b(MPI)15
b(1.1)f(C++)i(/)f(F)o(OR)l(TRAN)h(90)e(LANGUA)o(GE)h(BINDINGS)75
49 y Fj(7.1.2)49 b(MPI)17 b(1.1)f(C++)h(Bindings)75 135
y Fk(The)f(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
192 y(set)i(of)h(classes)g(de\014ned)h(for)e(these)h(bindings)i
(corresp)q(onding)e(to)g(ob)s(jects)f(implicitly)j(used)f(b)o(y)e(MPI.)
75 248 y(Sp)q(eci\014cally)l(,)h(the)d(follo)o(wing)h(are)f(the)h
(classes)f(pro)o(vided)h(with)g(the)f(C++)h(language)f(bindings:)170
338 y Fg(class)24 b(MPI_Comm;)170 395 y(class)g(MPI_Datatype;)170
451 y(class)g(MPI_Errorhandler;)170 508 y(class)g(MPI_Group;)170
564 y(class)g(MPI_Op;)170 621 y(class)g(MPI_Request;)170
677 y(class)g(MPI_Status;)166 768 y Fk(T)l(o)14 b(main)o(tain)i
(consistency)g(with)f(the)g(binding)i(de\014nitions,)f(w)o(e)e(list)i
(the)f(C++)g(bindings)i(in)f(the)75 824 y(same)d(order)f(as)h(giv)o(en)
g(for)f(the)h(C)g(bindings)h(in)g([3)o(].)19 b(Note)12
b(that)h(the)f(functions)i(in)g(App)q(endix)h(A)e(do)f(not)75
881 y(use)17 b(p)q(olymorphism)h(or)e(o)o(v)o(erloading)g(for)g(the)h
(reasons)f(describ)q(ed)i(in)g(Section)f(7.1.1.)22 b(The)17
b(bindings)75 937 y(also)e(use)h(reference)g(and)f Fg(const)f
Fk(seman)o(tics)i(\(an)f(imp)q(ortan)o(t)f(feature)h(of)g(the)g(C++)h
(language\).)-1927 b Fl(\(June\))p Fm(?)166 994 y Fk(In)16
b(order)f(to)g(mak)o(e)g(the)h(function)g(list)g(less)g(cluttered,)g
(the)g(k)o(eyw)o(ord)f Fg(virtual)f Fk(has)h(b)q(een)i(omit-)75
1050 y(ted)h(from)g(eac)o(h)g(declaration)h(with)g(the)g(implicit)h
(understanding)g(that)d(all)j(mem)o(b)q(er)e(functions)h(are)75
1106 y Fg(virtual)e Fk(\(except)g(for)g(constructors)g(and)h(the)g
(assignmen)o(t)f(op)q(erator\).)26 b(This)18 b(allo)o(ws)g(class)g
(library)75 1163 y(ob)s(jects)d(to)f(b)q(e)i(deriv)o(ed)g(from)f(the)g
(MPI)g(ob)s(jects)g(in)h(order)f(to)f(pro)o(vide)i(additional)h
(functionalit)o(y)l(.)-160 1213 y Fl(\(June\))p Fm(>)75
1265 y Ff(Example)h(7.1)k Fg(class)i(foo_comm)e(:)i(public)f(class)g
(MPI_Comm)g({)75 1322 y(public:)123 1378 y(...)123 1435
y(Dup\(const)f(MPI_Comm&)h(comm\))g({)170 1491 y(//)h(Class)f(library)g
(functionality)170 1548 y(MPI_Comm::Dup\(comm\);)f(//)h(Call)g(base)h
(MPI)f(function)170 1604 y(//)h(More)f(class)h(library)e(functionality)
123 1660 y(})123 1717 y(...)75 1773 y(};)75 1894 y Fj(7.1.3)49
b(Semantics)75 1980 y Fe(F)o(unction)18 b(Scoping)47
b Fk(T)l(o)16 b(the)i(greatest)e(p)q(ossible)j(exten)o(t,)e(C++)g
(language)h(bindings)h(for)d(MPI)h(func-)75 2037 y(tions)11
b(should)h(b)q(e)g(mem)o(b)q(er)f(functions)h(of)f(the)g(sp)q
(eci\014ed)i(MPI)f(C++)f(classes.)19 b(The)12 b(bindings)g(presen)o
(ted)75 2093 y(in)20 b(App)q(endix)h(A)e(w)o(ere)f(generated)h(b)o(y)g
(applying)h(a)f(simple)h(set)f(of)f(name)h(generation)g(rules)h(to)e
(the)75 2150 y(MPI-1)d(function)i(sp)q(eci\014cations.)22
b(These)16 b(guidelines)i(ha)o(v)o(e)d(also)g(b)q(een)i(applied)g(to)e
(MPI-2)g(functions)75 2206 y(to)j(create)g(the)g(MPI-2)g(C++)h
(bindings)h(con)o(tained)f(in)g(other)f(c)o(hapters)g(of)f(this)i(do)q
(cumen)o(t.)30 b(While)75 2263 y(these)17 b(guidelines)i(ma)o(y)d(b)q
(e)h(su\016cien)o(t)h(in)f(most)f(cases)g(for)g(creating)h(C++)g
(bindings,)i(they)d(ma)o(y)g(not)75 2319 y(b)q(e)g(suitable)h(for)e
(all)i(situations.)k(In)c(cases)e(of)g(am)o(biguit)o(y)h(or)f(where)h
(a)g(sp)q(eci\014c)h(seman)o(tic)f(statemen)o(t)75 2375
y(is)g(desired,)g(these)f(guidelines)j(ma)o(y)d(b)q(e)g(sup)q(erseded)i
(as)e(the)g(situation)h(dictates.)131 2478 y(1.)22 b(If)c(the)h(MPI)f
(function)h(con)o(tains)f(one)h(or)f(more)f(scalar)i(MPI)f(handles)h
(in)h(the)e(argumen)o(t)g(list,)189 2534 y(the)13 b(function)h(should)g
(b)q(e)g(made)f(a)g(mem)o(b)q(er)g(function)h(of)f(an)g(MPI)g(class)g
(corresp)q(onding)h(to)f(one)189 2591 y(of)18 b(the)g(MPI)h(handles)g
(in)h(the)e(argumen)o(t)g(list.)31 b(In)19 b(the)f(case)h(when)g(there)
f(is)h(more)f(than)h(one)189 2647 y(candidate)12 b(class,)h(the)e(c)o
(hoice)i(of)e(whic)o(h)i(class)f(to)f(asso)q(ciate)g(the)h(mem)o(b)q
(er)g(function)g(will)i(usually)189 2704 y(b)q(e)k(ob)o(vious)g(from)f
(seman)o(tic)h(\(and)f(syn)o(tactic\))h(con)o(text.)26
b(The)18 b(mem)o(b)q(er)g(function)h(should)f(b)q(e)1967
46 y Fd(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 Fh(7.1.)34 b(C++)16 b(INTR)o(ODUCTION)1182
b Fk(3)189 49 y(named)18 b(according)g(to)f(the)h(corresp)q(onding)g
(MPI)g(function)g(name,)g(but)g(without)g(the)g(\\)p
Fg(MPI)p 1839 49 15 2 v 16 w Fk(")189 106 y(pre\014x)d(and)h(without)f
(the)g(ob)s(ject)g(name)g(pre\014x)h(\(if)f(applicable\).)189
195 y Ff(Example)i(7.2)23 b Fk(The)15 b(C++)h(binding)h(for)d
Fg(MPI)p 1014 195 V 17 w(COMM)p 1127 195 V 16 w(COMPARE\(\))g
Fk(is)i Fg(MPI)p 1491 195 V 16 w(Comm::Compare\(\))p
Fk(.)189 284 y(The)f(follo)o(wing)h(\\rules)g(of)e(th)o(um)o(b")h(can)g
(usually)i(b)q(e)f(applied:)208 369 y(\(a\))22 b(If)c(the)h(argumen)o
(t)f(list)h(con)o(tains)g(one)f(or)g(more)h(arra)o(ys)e(of)h(MPI)g
(handles,)j(these)d(arra)o(ys)289 426 y(should)e(b)q(e)g(left)f(in)h
(the)g(argumen)o(t)e(list,)i(ev)o(en)f(if)h(they)f(are)g(\\out")f
(paramem)o(ters.)205 491 y(\(b\))23 b(If)f(the)h(argumen)o(t)e(list)j
(con)o(tains)e(a)g(single)i(scalar)e(MPI)h(handle,)i(mak)o(e)d(the)g
(function)289 548 y(a)h(metho)q(d)i(of)e(the)h(MPI)g(ob)s(ject)g
(corresp)q(onding)h(to)e(the)h(MPI)g(handle)i(\(e.g.,)e
Fg(MPI)p 1837 548 V 17 w(-)289 604 y(Comm::Compare\(\))p
Fk(\).)210 669 y(\(c\))f(If)17 b(a)f(function)i(can)f(b)q(e)h(ob)o
(viously)f(assigned)h(to)e(a)g(particular)i(class)f(and)g(it)g(has)g(a)
g(single)289 726 y(argumen)o(t)12 b(of)i(that)f(t)o(yp)q(e,)g(that)g
(argumen)o(t)g(should)i(b)q(e)f(dropp)q(ed)h(from)e(the)g(argumen)o(t)g
(list)289 782 y(\(and)i(b)q(ecome)h Fg(this)p Fk(\).)205
847 y(\(d\))23 b(If)18 b(a)g(function)i(can)e(b)q(e)h(ob)o(viously)g
(assigned)g(to)f(a)g(particular)h(class)g(and)g(it)f(has)g(t)o(w)o(o)f
(or)289 904 y(more)i(argumen)o(ts)g(of)g(that)g(t)o(yp)q(e,)i(the)f
(\\out")f(v)m(ariable)i(should)g(b)q(e)f(dropp)q(ed)h(from)e(the)289
960 y(argumen)o(t)14 b(list)i(\(and)f(b)q(ecome)h Fg(this)p
Fk(\).)289 1036 y Ff(Example)h(7.3)23 b Fk(The)16 b(C++)h(binding)g
(for)f Fg(MPI)p 1118 1036 V 16 w(Comm)p 1230 1036 V 17
w(dup\(MPI)p 1415 1036 V 16 w(Comm)24 b(comm,)f(MPI)p
1766 1036 V 17 w(Comm)289 1092 y(*newcomm\))14 b Fk(b)q(ecomes)h
Fg(MPI)p 774 1092 V 17 w(Comm::Dup\(const)22 b(MPI)p
1245 1092 V 17 w(Comm&)h(comm\))p Fk(.)210 1168 y(\(e\))g(If)12
b(the)g(original)h(function)g(do)q(es)f(not)g(con)o(tain)g(an)o(y)g
(scalar)g(MPI)g(handles,)i(the)e(full)h(function)289
1224 y(name)i(should)h(b)q(e)g(retained.)289 1300 y Ff(Example)h(7.4)23
b Fk(The)10 b(C++)h(binding)h(for)e Fg(MPI)p 1095 1300
V 16 w(Buffer)p 1255 1300 V 17 w(attach\(void*)22 b(buffer,)h(int)g
(size\))289 1356 y Fk(b)q(ecomes)15 b Fg(::MPI)p 592
1356 V 17 w(Buffer)p 753 1356 V 16 w(attach\(void*)23
b(buffer,)f(int)i(size\))p Fk(.)1875 1377 y Fm(?)p Fl(\(June\))131
1457 y Fk(2.)e(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 1543 y(3.)22 b(Metho)q(ds)15
b(should)h(b)q(e)g(declared)h Fg(const)e Fk(if)g(they)h(return)f
(information)h(to)e(the)i(user)f(and)h(do)f(not)189 1599
y(c)o(hange)g(the)g(in)o(ternal)h(state)f(of)f(the)i(calling)h(ob)s
(ject.)131 1685 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 1742 y(declared)f Fg(const)p
Fk(.)131 1828 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 1884 y(tically)j(implied.)1875 1941
y Fm(>)p Fl(\(June\))131 1970 y Fk(6.)22 b(Arra)o(y)16
b(argumen)o(ts)g(should)i(b)q(e)g(denoted)g(with)f(square)g(brac)o(k)o
(ets)f(\()p Fg([])p Fk(\),)g(not)h(p)q(oin)o(ters,)h(as)f(this)189
2027 y(is)e(more)g(seman)o(ticly)h(precise.)1156 b Fm(?)p
Fl(\(June\))75 2143 y Fe(Cop)o(y)18 b(/)g(Assignment)h(Semantics)46
b Fk(The)19 b(cop)o(y)f(and)g(assignmen)o(t)g(seman)o(tics)g(in)h(C++)g
(should)g(b)q(e)f(as)75 2199 y(implicitly)25 b(sp)q(eci\014ed)e(b)o(y)f
(the)g(MPI-1)f(do)q(cumen)o(t)h(\(the)g(same)f(as)g(those)g(sp)q
(eci\014ed)j(b)o(y)e(the)f(C)h(and)75 2256 y(F)l(ortran)d(77)h
(bindings\).)37 b(That)19 b(is,)j(in)f(terms)f(of)g(cop)o(ying)h(and)f
(assignmen)o(t,)h(the)g(MPI)f(user)h(lev)o(el)75 2312
y(ob)s(jects)13 b(should)i(b)q(eha)o(v)o(e)f(lik)o(e)g(handles.)21
b(Cop)o(y)13 b(constructors)g(should)i(p)q(erform)e(handle-based)i
(copies.)189 2395 y Fi(A)n(dvic)n(e)g(to)h(implementors.)40
b Fk(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 2452 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 2508
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
Fi(End)19 b(of)189 2564 y(advic)n(e)d(to)g(implementors.)p
Fk(\))166 2647 y(The)g Fg(MPI)p 335 2647 V 17 w(Request)e
Fk(and)i Fg(MPI)p 695 2647 V 17 w(Status)f Fk(ob)s(jects)g(are)g
(exceptions)i(to)e(this)i(\\handle-based")f(rule.)75
2704 y(These)g(ob)s(jects)e(should)i(p)q(erform)f(deep)h(copies)g(for)f
(assignmen)o(t)g(and)g(cop)o(y)h(constructors.)-32 46
y Fd(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 Fk(4)315 b Fh(CHAPTER)15 b(7.)35 b(MPI)15
b(1.1)f(C++)i(/)f(F)o(OR)l(TRAN)h(90)e(LANGUA)o(GE)h(BINDINGS)75
49 y Fe(Construction)h(/)e(Destruction)h(Semantics)47
b Fk(The)14 b(construction)g(and)h(destruction)f(seman)o(tics)h(in)f
(C++)75 106 y(should)i(b)q(e)g(the)g(same)f(as)g(those)g(sp)q
(eci\014ed)j(b)o(y)d(the)h(C)f(and)g(F)l(ortran)g(77)f(bindings.)23
b(That)15 b(is,)g(in)i(terms)75 162 y(of)h(construction)h(and)g
(destruction)g(seman)o(tics,)g(the)f(MPI)h(user)g(lev)o(el)h(ob)s
(jects)d(should)j(b)q(eha)o(v)o(e)f(lik)o(e)75 219 y(handles.)-396
b Fl(\(June\))p Fm(?)189 325 y Fi(A)n(dvic)n(e)20 b(to)j(implementors.)
76 b Fk(Default)21 b(constructors)f(for)h(all)h(MPI)f(ob)s(jects)g
(should)h(create)189 381 y(corresp)q(onding)c Fg(MPI)p
558 381 15 2 v 17 w(*)p 599 381 V 17 w(NULL)g Fk(handles.)29
b(That)17 b(is,)i(when)f(an)g(MPI)g(ob)s(ject)f(is)h(instan)o(tiated,)h
(it)189 438 y(should)14 b(b)q(e)g(comparable)f(with)h(its)f(corresp)q
(onding)i Fg(MPI)p 1160 438 V 16 w(*)p 1200 438 V 17
w(NULL)p Fk(.)e(F)l(or)f(example,)i Fg(result)f Fk(in)h(the)189
494 y(follo)o(wing)i(co)q(de)f(fragmen)o(t)f(will)j(get)e(the)g(v)m
(alue)i Fg(MPI)p 1110 494 V 16 w(IDENT)p Fk(:)189 619
y Fg(void)23 b(foo\(void\))189 676 y({)236 732 y(int)h(result;)236
789 y(MPI_Comm)f(foo;)236 901 y(foo.Compare\(MPI_COMM_NULL,)e
(result\);)236 958 y(if)j(\(result)f(==)g(MPI_IDENT\))284
1014 y(cout)g(<<)h("foo)f(is)h(MPI_COMM_NULL")e(<<)h(endl;)189
1071 y(})189 1196 y Fk(The)c(destructor)f(for)g(eac)o(h)h(MPI)g(user)g
(lev)o(el)h(ob)s(ject)e(should)i Fi(not)e Fk(in)o(v)o(ok)o(e)h(the)g
(corresp)q(onding)189 1252 y Fg(MPI)p 264 1252 V 16 w(*)p
304 1252 V 17 w(free\(\))c Fk(function)h(\(if)f(it)h(exists\))f(for)f
(the)i(follo)o(wing)g(reasons:)231 1359 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
1432 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
1488 y(resp)q(onsibilit)o(y)c(of)e(the)g(user,)g(not)g(the)g(implemen)o
(tation.)-160 1538 y Fl(\(June\))p Fm(>)231 1561 y Fk(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
1618 y(in)o(tuitiv)o(e,)f(and)f(ma)o(y)f(not)g(b)q(e)i(what)e(the)h
(user)g(w)o(an)o(ts)e(\(this)i(also)g(a\013ects)f(the)h(cop)o(y)l(,)g
(assign-)289 1674 y(men)o(t,)h(and)g(construction)h(seman)o(tics\).)21
b(F)l(or)15 b(example,)h(the)g Fg(bar)f Fk(comm)o(unicator)h(that)e(is)
289 1730 y(created)g(at)g(the)h(b)q(eginning)i(of)d(the)g(function)i
(sho)o(wn)e(b)q(elo)o(w)h(is)g(freed)g(when)g(the)g(function)289
1787 y(exits,)g(whic)o(h)h(ma)o(y)e(trigger)h(a)g(collectiv)o(e)i(op)q
(eration:)289 1883 y Fg(void)23 b(foo\(\))289 1939 y({)336
1996 y(MPI_Comm)g(bar;)336 2052 y(bar.Dup\(MPI_COMM_WORLD\);)336
2109 y(//)h(Rest)f(of)h(the)f(function)336 2165 y(//)h(bar)f(goes)h
(out)f(of)h(scope)289 2222 y(})189 2328 y Fk(\()p Fi(End)15
b(of)i(advic)n(e)f(to)g(implementors.)p Fk(\))75 2448
y Fe(Compa)o(rison)k(Semantics)46 b Fk(Sev)o(eral)21
b(MPI)g(ob)s(jects)f(already)h(ha)o(v)o(e)f(MPI)g(functions)i(for)e
(comparison)75 2504 y(\(i.e.,)12 b Fg(MPI)p 251 2504
V 17 w(Comm::Compare\(\))d Fk(and)k Fg(MPI)p 795 2504
V 16 w(Group::Compare\(\))p Fk(\).)k(These)12 b(functions)h(can)f
(return)f(more)75 2561 y(than)20 b(t)o(w)o(o)f(v)m(alues;)24
b(a)c(b)q(o)q(olean)i(v)m(alue)f(is)g(not)f(su\016cien)o(t)i(to)d
(describ)q(e)j(their)f(relationship.)38 b(There-)75 2617
y(fore,)16 b(the)h(equalit)o(y)h(and)f(inequalit)o(y)i(op)q(erators)c
(\()p Fg(operator==\(\))g Fk(and)i Fg(operator!=\(\))p
Fk(\))e(m)o(ust)h(ha)o(v)o(e)75 2674 y(a)f(sligh)o(tly)h(di\013eren)o
(t)g(meaning)f(than)h(simply)g(\\equal")f(or)g(\\not)g(equal".)1967
46 y Fd(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 Fh(7.1.)34 b(C++)16 b(INTR)o(ODUCTION)1182
b Fk(5)166 49 y(Ho)o(w)o(ev)o(er,)16 b(man)o(y)h(C)g(and)h(F)l(ortran)e
(implemen)o(tations)i(that)f(use)g(p)q(oin)o(ters)h(or)f(in)o(tegers)g
(as)g(MPI)75 106 y(handles)i(indirectly)h(allo)o(w)d(the)h(use)g(of)f
(the)h Fg(==)f Fk(and)h Fg(!=)f Fk(op)q(erators;)g(the)h(only)g
(meaningful)h(b)q(o)q(olean)75 162 y(resp)q(onse)f(is)h
Fg(true)p Fk(,)f(whic)o(h)h(is)f(equiv)m(alen)o(t)i(to)d
Fg(MPI)p 970 162 15 2 v 17 w(IDENT)p Fk(.)g(As)h(suc)o(h,)g(it)h(is)f
(desirable)i(to)d(adopt)h(this)75 219 y(functionalit)o(y)h(in)o(to)f
(the)g(C++)g(bindings)i(so)e(as)f(to)g(remain)i(consisten)o(t)f(with)g
(C)g(and)g(F)l(ortran.)27 b(F)l(or)75 275 y(example,)19
b(after)e(the)h(assignmen)o(t)f(of)g(t)o(w)o(o)g Fg(MPI)p
914 275 V 16 w(Comm)h Fk(ob)s(jects)f(suc)o(h)h(as)f
Fg(a)24 b(=)f(b)p Fk(,)18 b(the)g(test)f Fg(\(a)24 b(==)f(b\))75
332 y Fk(should)16 b(return)f Fg(true)p Fk(.)1408 b Fm(?)p
Fl(\(June\))166 388 y Fk(Sev)o(eral)18 b(ob)s(jects)f(do)h(not)f(ha)o
(v)o(e)g(metho)q(ds)h(equiv)m(alen)o(t)h(to)e(the)h(C)f
Fg(MPI)p 1407 388 V 17 w(*)p 1448 388 V 17 w(compare\(\))f
Fk(functions)75 444 y(\(e.g.,)h Fg(MPI)p 267 444 V 17
w(Datatype)p Fk(\).)28 b(Since)19 b(no)f(other)g(form)g(of)g
(comparison)g(is)h(a)o(v)m(ailable,)h(and)e(since)i(a)d(simple)75
501 y(b)q(o)q(olean)23 b(answ)o(er)f(is)h(all)g(that)e(is)i(required,)i
(the)d(equalit)o(y)h(and)g(inequalit)o(y)h(op)q(erators)d(should)i(b)q
(e)75 557 y(o)o(v)o(erridden)16 b(to)f(pro)o(vide)i(this)f
(functionalit)o(y)l(.)23 b(This)16 b(is)h(also)e(consisten)o(t)h(with)h
(the)e(C)h(and)g(F)l(ortran)f(77)75 614 y(functionalit)o(y)l(.)1875
670 y Fm(>)p Fl(\(June\))-1881 b Fk(The)25 b(follo)o(wing)g(table)g
(summarizes)g(what)f(return)g(v)m(alues)i(mean)e(for)g
Fg(operator==\(\))f Fk(\(and)75 727 y Fg(operator!=\(\))p
Fk(\).)38 b(The)23 b(ob)s(jects)e(in)i(the)f(\014rst)g(column)h(only)f
(ha)o(v)o(e)g(t)o(w)o(o)e(p)q(ossible)k(outcomes)e(and)75
783 y(therefore)17 b(a)g(b)q(o)q(olean)h(result)f(is)h(su\016cien)o(t.)
26 b(The)18 b(ob)s(jects)e(in)i(the)f(second)h(column)g(return)f
Fg(true)g Fk(for)75 840 y Fg(operator==\(\))g Fk(if)j(the)f(ob)s(jects)
g(compared)g(are)g Fg(MPI)p 1034 840 V 17 w(IDENT)p Fk(,)f
Fg(false)g Fk(otherwise.)32 b(F)l(or)19 b(all)h(ob)s(jects,)75
896 y Fg(operator!=\(\))14 b Fk(returns)h(the)g(opp)q(osite)h(of)e
Fg(operator==\(\))p Fk(.)p 543 962 865 2 v 542 1018 2
57 v 568 1001 a(Standard)h(b)q(o)q(olean)p 943 1018 V
50 w(Chec)o(k)h(for)e Fg(MPI)p 1249 1001 15 2 v 17 w(IDENT)p
1407 1018 2 57 v 543 1020 865 2 v 542 1076 2 57 v 603
1059 a(MPI)p 678 1059 15 2 v 17 w(Datatype)p 943 1076
2 57 v 199 w(MPI)p 1158 1059 15 2 v 17 w(Comm)p 1407
1076 2 57 v 542 1133 V 675 1116 a(MPI)p 750 1116 15 2
v 17 w(Op)p 943 1133 2 57 v 259 w(MPI)p 1146 1116 15
2 v 17 w(Group)p 1407 1133 2 57 v 542 1189 V 627 1172
a(MPI)p 702 1172 15 2 v 17 w(Status)p 943 1189 2 57 v
1407 1189 V 542 1246 V 615 1229 a(MPI)p 690 1229 15 2
v 17 w(Request)p 943 1246 2 57 v 1407 1246 V 543 1247
865 2 v 75 1347 a Fe(Constants)48 b Fk(Constan)o(ts)13
b(should)j(b)q(e)f(singleton)h(ob)s(jects)e(and)h(should)g(b)q(e)h
(declared)g Fg(const)p Fk(.)i(The)d(only)75 1403 y(exceptions)j(to)d
(this)i(rule)h(are)e(the)h(follo)o(wing)g(ob)s(jects,)f(whic)o(h)h(do)g
(not)f(need)h(to)f(b)q(e)h(declared)h Fg(const)p Fk(:)75
1460 y Fg(MPI)p 150 1460 15 2 v 17 w(BOTTOM)p Fk(,)c
Fg(MPI)p 410 1460 V 17 w(COMM)p 523 1460 V 16 w(WORLD)p
Fk(,)g(and)i Fg(MPI)p 847 1460 V 16 w(COMM)p 959 1460
V 17 w(SELF)p Fk(.)189 1566 y Fi(R)n(ationale.)62 b Fk(The)19
b(three)g(ob)s(jects)f(men)o(tioned)i(ab)q(o)o(v)o(e)f(do)f(not)h(need)
h(to)e(b)q(e)i(declared)g Fg(const)189 1622 y Fk(b)q(ecause)14
b(some)e(implemen)o(tations)i(ma)o(y)e(need)i(to)f(c)o(hange)g(the)g
(in)o(ternal)g(state)f(of)h(these)g(ob)s(jects,)189 1679
y(particularly)j(in)g(the)f(case)h(of)e(dynamic)i(pro)q(cesses.)21
b(\()p Fi(End)15 b(of)i(r)n(ationale.)p Fk(\))166 1868
y Fl(Discussion:)j Fc(This)c(matter)f(ma)o(y)f(still)h(b)q(e)i(up)f
(for)g(debate.)25 b(If)16 b(implem)o(en)o(table,)e Fb(const)h
Fc(constan)o(ts)i(are)75 1924 y(extremely)d(useful)g(for)f
(optimization)e(and)j(seman)o(tic)f(purp)q(oses.)75 2129
y Fj(7.1.4)49 b(C++)16 b(Datat)o(yp)q(es)75 2214 y Fk(In)g(Section)g
(A.2,)e(sev)o(eral)i(new)f(datat)o(yp)q(es)g(are)f(in)o(tro)q(duced)j
(for)d(the)i(C++)f(bindings:)513 2317 y Fg(MPI)p 588
2317 V 17 w(BOOL)210 b(MPI)p 983 2317 V 17 w(DOUBLE)p
1144 2317 V 16 w(COMPLEX)513 2373 y(MPI)p 588 2373 V
17 w(LONG)p 701 2373 V 17 w(DOUBLE)49 b(MPI)p 983 2373
V 17 w(LONG)p 1096 2373 V 16 w(DOUBLE)p 1256 2373 V 17
w(COMPLEX)513 2430 y(MPI)p 588 2430 V 17 w(COMPLEX)166
2532 y Fk(These)20 b(datat)o(yp)q(es)f(are)g(included)j(b)q(ecause)f
(the)e(ANSI)i(C++)f(standard)f(de\014nes)i(these)e(t)o(yp)q(es;)75
2589 y(C++)k(compilers)g(can)g(b)q(e)g(exp)q(ected)g(to)f(supp)q(ort)g
(them)g(in)h(a)f(standard)g(manner.)41 b(Ho)o(w)o(ev)o(er,)23
b(in)75 2645 y(order)14 b(to)f(b)q(e)h(consisten)o(t)g(with)h(the)f(F)l
(ortran)e(treatmen)o(t)h(of)h(comparable)g(datat)o(yp)q(es,)f(not)g
(all)i(of)f(these)75 2701 y(datat)o(yp)q(es)h(are)h(not)f(eligible)k
(for)d(all)g(t)o(yp)q(es)g(of)g(reduction)h(op)q(erations.)22
b(The)16 b(tables)g(in)h(section)g(4.9.2)-32 46 y Fd(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 Fk(6)315 b Fh(CHAPTER)15 b(7.)35 b(MPI)15
b(1.1)f(C++)i(/)f(F)o(OR)l(TRAN)h(90)e(LANGUA)o(GE)h(BINDINGS)75
49 y Fk(of)f(the)g(MPI)g(1.1)g(do)q(cumen)o(t)g(sp)q(ecify)i(whic)o(h)f
(datat)o(yp)q(es)e(are)h(v)m(alid)i(for)e(whic)o(h)h(reduction)g(op)q
(erations;)75 106 y(the)g(follo)o(wing)h(table)g(sp)q(eci\014es)h(whic)
o(h)f(C++)g(datat)o(yp)q(es)e(are)h(v)m(alid)i(with)e(reduction)i(op)q
(erations:)191 208 y(Op)574 b(Allo)o(w)o(ed)16 b(T)o(yp)q(es)191
264 y Fg(MPI)p 266 264 15 2 v 17 w(SUM)p Fk(,)e Fg(MPI)p
454 264 V 17 w(PROD)261 b(MPI)p 900 264 V 17 w(DOUBLE)p
1061 264 V 16 w(COMPLEX)p Fk(,)14 b Fg(MPI)p 1344 264
V 17 w(LONG)p 1457 264 V 16 w(DOUBLE)p 1617 264 V 17
w(COMPLEX)191 321 y(MPI)p 266 321 V 17 w(LAND)p Fk(,)g
Fg(MPI)p 478 321 V 17 w(LOR)p Fk(,)g Fg(MPI)p 666 321
V 17 w(LXOR)49 b(MPI)p 900 321 V 17 w(BOOL)75 440 y Fj(7.1.5)g
(Inter-language)17 b(Op)q(erabilit)o(y)75 602 y Fl(Discussion:)47
b Fc(In)o(ter-language)17 b(op)q(erabilit)o(y)f(is)h(problematic)f(b)q
(ecause)j(of)d(name)g(clashing)h(issues.)29 b(F)m(or)17
b(in-)75 652 y(stance,)e(supp)q(ose)h(w)o(e)f(wish)f(to)g(call)g(a)g(C)
g(library)g(function)g(from)f(our)h(C++)h(MPI)g(program.)j(The)d(C)f
(function)75 702 y(migh)o(t)e(b)q(e)i(protot)o(yp)q(ed)h(\(sa)o(y)m(,)e
(in)g(the)i(C)e(library)h(header)g(\014les\))h(as)75
764 y Fb(void)21 b(foo\(MPI)p 341 764 14 2 v 14 w(Comm)g(comm,)g(int)g
(x,)g(int)h(y\);)75 826 y Fc(Ev)o(en)15 b(if)e(there)j(is)e(some)f
(easy)i(w)o(a)o(y)e(extract)j(the)e(C)g(handle)h(from)d(the)j(C++)g(ob)
r(ject,)f(there)i(is)e(no)g(w)o(a)o(y)f(to)h(pass)75
876 y(that)i(handle)f(to)h(the)h(function)e Fb(foo\(\))g
Fc(b)q(ecause)i(the)g(\014rst)f(argumen)o(t)f(to)g Fb(foo\(\))g
Fc(m)o(ust)g(b)q(e)h(of)f(t)o(yp)q(e)i Fb(MPI)p 1776
876 V 15 w(Comm)75 926 y Fc(|)c(whic)o(h)h(the)h(compiler)d(will)g
(require)j(to)f(b)q(e)g(an)g(ob)r(ject,)g(not)g(a)g(C)g(handle.)j(In)d
(other)h(w)o(ords,)e(a)h(call)75 988 y Fb(MPI)p 144 988
V 15 w(Comm)21 b(a;)75 1038 y(foo\(a.C)p 232 1038 V 14
w(handle\(\),)f(x,)i(y\);)75 1100 y Fc(cannot)14 b(w)o(ork)g(\(at)g
(least)g(not)f(without)h(generating)g(compiler)e(w)o(arnings/errors\).)
166 1157 y(A)17 b(w)o(ork)n(around)e(is)i(to)f(pro)o(vide)h(a)f(C)g
(handle)h(t)o(yp)q(e)g(corresp)q(onding)g(to)g(the)g(\\real")f(C)h
(handle)f(t)o(yp)q(e)h(and)75 1213 y(then)e(to)e(rewrite)i(the)g(C)f
(library)f(header)i(\014le)e(to)h(use)h(that)f(t)o(yp)q(e)g(in)g(its)g
(function)f(protot)o(yp)q(es.)75 1418 y Fj(7.1.6)49 b(Pro\014ling)75
1503 y Fk(The)13 b(C++)g(bindings)h(pro)o(vide)f(m)o(ultiple)i(en)o
(try)d(p)q(oin)o(ts)h(for)f(MPI)h(functions)g(b)o(y)f(de\014ning)j(an)d
(alternate)75 1560 y(set)k(of)f(classes)h(ha)o(ving)h
Fg(PMPI)p 591 1560 15 2 v 32 w Fk(pre\014x.)22 b(Alternate)16
b(en)o(try)g(p)q(oin)o(ts)g(for)g(globally-scop)q(ed)i(functions)e(are)
75 1616 y(similarly)23 b(pro)o(vided)f(b)o(y)f(an)g(alternate)g(set)g
(of)g(globally)i(scop)q(ed)f(functions)g(ha)o(ving)f
Fg(PMPI)p 1715 1616 V 38 w Fk(pre\014x.)75 1673 y(Pro\014ling)15
b(co)q(de)g(can)f(b)q(e)h(inserted)g(b)o(y)f(deriving)i(pro\014ling)f
(classes)g(from)f(the)g Fg(PMPI)p 1519 1673 V 31 w Fk(classes)g(and)h
(o)o(v)o(er-)75 1729 y(riding)h(mem)o(b)q(er)g(functions)g(as)f
(desired.)189 1835 y Fi(A)n(dvic)n(e)j(to)i(implementors.)63
b Fk(Pro)o(viding)19 b(t)o(w)o(o)f(en)o(try)g(p)q(oin)o(ts)i(can)f(b)q
(e)h(done)f(almost)f(trivially)189 1892 y(using)e(inheritance.)284
2004 y Fg(class)23 b(MPI_Comm)g(:)h(public)f(PMPI_Comm)f({)284
2061 y(//)i(constructors,)e(destructor,)g(assignment)h(are)g(not)h
(inherited)284 2117 y(})189 2230 y Fk(\()p Fi(End)15
b(of)i(advic)n(e)f(to)g(implementors.)p Fk(\))-160 2291
y Fl(\(June\))p Fm(?)75 2423 y Fn(7.2)59 b(F)n(ORTRAN)20
b(90)g(Intro)r(duction)75 2524 y Fk(Still)d(needs)f(to)f(b)q(e)g
(added.)1967 46 y Fd(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 Fo(Bibliograph)m(y)75 604 y Fk([1])22
b(Margaret)13 b(A.)h(Ellis)j(and)d(Bjarne)h(Stroustrup.)k
Fi(The)c(A)o(nnotate)n(d)g(C++)g(R)n(efer)n(enc)n(e)g(Manual)p
Fk(.)k(Ad-)146 660 y(dison)d(W)l(esley)l(,)g(1990.)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
Ff(netlib)p Fk(.)964 2828 y(7)p eop
%%Page: 8 8
8 7 bop 75 361 a Fp(Annex)32 b(A)75 568 y Fo(MPI)40 b(1.1)f(C++)g
(Language)g(Binding)75 809 y Fn(A.1)59 b(C++)19 b(Classes)75
910 y Fk(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 1002 y Fg(class)23
b(MPI_Comm;)75 1059 y(class)g(MPI_Datatype;)-160 1154
y Fl(\(June\))p Fm(>)75 1198 y Fg(class)g(MPI_Errorhandler;)-160
1251 y Fl(\(June\))p Fm(?)75 1349 y Fg(class)g(MPI_Group;)75
1405 y(class)g(MPI_Op;)75 1461 y(class)g(MPI_Request;)75
1518 y(class)g(MPI_Status;)166 1622 y Fk(Note)15 b(that)f
Fg(MPI)p 449 1622 15 2 v 17 w(Status)g Fk(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
1764 y Fn(A.2)59 b(De\014ned)20 b(Constants)75 1866 y
Fk(These)g(are)g(required)h(constan)o(ts,)f(de\014ned)i(in)f(the)f
(\014le)h Fg(mpi++.h)p Fk(.)33 b(F)l(or)20 b(brevit)o(y)l(,)h(the)f(t)o
(yp)q(es)g(of)g(the)75 1922 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)-160 1972 y Fl(\(June\))p
Fm(>)75 1979 y Fk(to)e(b)q(e)g Fg(const)g Fk(\(except)g(where)h(sp)q
(eci\014cally)i(noted\).)-160 2034 y Fl(\(June\))p Fm(?)75
2083 y Fg(//)24 b(return)f(codes)75 2139 y(//)h(Type:)f(int)g(\(or)h
(enum\))75 2195 y(MPI_SUCCESS)75 2252 y(MPI_ERR_BUFFER)75
2308 y(MPI_ERR_COUNT)75 2365 y(MPI_ERR_TYPE)75 2421 y(MPI_ERR_TAG)75
2478 y(MPI_ERR_COMM)75 2534 y(MPI_ERR_RANK)75 2591 y(MPI_ERR_REQUEST)75
2647 y(MPI_ERR_ROOT)75 2704 y(MPI_ERR_GROUP)964 2828
y Fk(8)p eop
%%Page: 9 9
9 8 bop 75 -100 a Fh(A.2.)29 b(DEFINED)15 b(CONST)l(ANTS)1156
b Fk(9)75 49 y Fg(MPI_ERR_OP)75 106 y(MPI_ERR_TOPOLOGY)75
162 y(MPI_ERR_DIMS)75 219 y(MPI_ERR_ARG)75 275 y(MPI_ERR_UNKNOWN)75
332 y(MPI_ERR_TRUNCATE)75 388 y(MPI_ERR_OTHER)75 444
y(MPI_ERR_INTERN)75 501 y(MPI_ERR_PENDING)75 557 y(MPI_ERR_LASTCODE)75
670 y(//)24 b(assorted)e(constants)1875 780 y Fm(>)p
Fl(\(June\))75 826 y Fg(//)i(Type:)f(MPI_Aint)75 882
y(//)h(MPI_BOTTOM)e(is)i(not)f(required)g(to)g(be)h(const)1875
942 y Fm(?)p Fl(\(June\))75 1038 y Fg(MPI_BOTTOM)75 1094
y(//)g(Type:)f(int)g(\(or)h(enum\))75 1151 y(MPI_PROC_NULL)75
1207 y(MPI_ANY_SOURCE)75 1264 y(MPI_ANY_TAG)75 1320 y(MPI_UNDEFINED)
1875 1430 y Fm(>)p Fl(\(June\))75 1475 y Fg(//)g(Type:)f(MPI_Datatype)
1875 1535 y Fm(?)p Fl(\(June\))75 1631 y Fg(MPI_UB)75
1687 y(MPI_LB)75 1800 y(//)h(Error-handling)e(specifiers)75
1857 y(//)i(Type:)f(int)g(\(or)h(enum\))75 1913 y(MPI_ERRORS_ARE_FATAL)
75 1970 y(MPI_ERRORS_RETURN)75 2083 y(//)g(Maximum)e(sizes)i(for)f
(strings)75 2139 y(//)h(Type:)f(int)75 2195 y(MPI_MAX_PROCESSOR_NAME)75
2252 y(MPI_MAX_ERROR_STRING)75 2365 y(//)h(elementary)e(datatypes)75
2421 y(//)i(Type:)f(MPI_Datatype)75 2478 y(MPI_CHAR)75
2534 y(MPI_SHORT)75 2591 y(MPI_INT)75 2647 y(MPI_LONG)75
2704 y(MPI_UNSIGNED_CHAR)-32 46 y Fd(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 Fk(10)714 b Fh(ANNEX)15 b(A.)30 b(MPI)16
b(1.1)e(C++)h(LANGUA)o(GE)g(BINDING)75 49 y Fg(MPI_UNSIGNED_SHORT)75
106 y(MPI_UNSIGNED)75 162 y(MPI_UNSIGNED_LONG)75 219
y(MPI_FLOAT)75 275 y(MPI_DOUBLE)75 332 y(MPI_LONG_DOUBLE)75
388 y(MPI_BYTE)75 444 y(MPI_PACKED)75 557 y(//)24 b(datatypes)e(for)i
(reduction)e(functions)75 614 y(//)i(Type:)f(MPI_Datatype)75
670 y(MPI_FLOAT_INT)75 727 y(MPI_DOUBLE_INT)75 783 y(MPI_LONG_INT)75
840 y(MPI_2INT)75 896 y(MPI_SHORT_INT)75 953 y(MPI_LONG_DOUBLE_INT)75
1065 y(//)h(optional)e(datatypes)75 1122 y(//)i(Type:)f(MPI_Datatype)75
1178 y(MPI_LONG_LONG_INT)75 1291 y(//)h(optional)e(datatypes)75
1348 y(//)i(Type:)f(MPI_Datatype)75 1404 y(MPI_BOOL)75
1461 y(MPI_LONG_DOUBLE)75 1517 y(MPI_COMPLEX)75 1574
y(MPI_DOUBLE_COMPLEX)75 1630 y(MPI_LONG_DOUBLE_COMPLEX)75
1743 y(//)h(reserved)e(communicators)75 1799 y(//)i(Type:)f(MPI_Comm)
-160 1902 y Fl(\(June\))p Fm(>)75 1941 y Fg(//)h(MPI_COMM_WORLD)e(and)h
(MPI_COMM_SELF)f(are)i(not)f(required)g(to)g(be)h(const)-160
1994 y Fl(\(June\))p Fm(?)75 2083 y Fg(MPI_COMM_WORLD)75
2139 y(MPI_COMM_SELF)75 2252 y(//)g(results)e(of)i(communicator)e(and)i
(group)f(comparisons)75 2308 y(//)h(Type:)f(int)g(\(or)h(enum\))75
2365 y(MPI_IDENT)75 2421 y(MPI_CONGRUENT)75 2478 y(MPI_SIMILAR)75
2534 y(MPI_UNEQUAL)75 2647 y(//)g(environmental)e(inquiry)h(keys)75
2704 y(//)h(Type:)f(int)g(\(or)h(enum\))1967 46 y Fd(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 Fh(A.3.)29 b(TYPEDEFS)1393 b Fk(11)75
49 y Fg(MPI_TAG_UB)75 106 y(MPI_IO)75 162 y(MPI_HOST)75
275 y(//)24 b(collective)e(operations)75 332 y(//)i(Type:)f(MPI_Op)75
388 y(MPI_MAX)75 444 y(MPI_MIN)75 501 y(MPI_SUM)75 557
y(MPI_PROD)75 614 y(MPI_MAXLOC)75 670 y(MPI_MINLOC)75
727 y(MPI_BAND)75 783 y(MPI_BOR)75 840 y(MPI_BXOR)75
896 y(MPI_LAND)75 953 y(MPI_LOR)75 1009 y(MPI_LXOR)75
1122 y(//)h(Null)f(handles)75 1178 y(//)h(Type:)f(MPI_Group)75
1235 y(MPI_GROUP_NULL)75 1291 y(//)h(Type:)f(MPI_Comm)75
1348 y(MPI_COMM_NULL)75 1404 y(//)h(Type:)f(MPI_Datatype)75
1461 y(MPI_DATATYPE_NULL)75 1517 y(//)h(Type:)f(MPI_Request)75
1574 y(MPI_REQUEST_NULL)75 1630 y(//)h(Type:)f(MPI_Op)75
1686 y(MPI_OP_NULL)75 1743 y(//)h(Type:)f(int)g(\(or)h(enum\))75
1799 y(MPI_ERRHANDLER_NULL)75 1912 y(//)g(Empty)f(group)75
1969 y(//)h(Type:)f(MPI_Group)75 2025 y(MPI_GROUP_EMPTY)75
2138 y(//)h(topologies)75 2195 y(//)g(Type:)f(int)g(\(or)h(enum\))75
2251 y(MPI_GRAPH)75 2307 y(MPI_CART)75 2506 y Fn(A.3)59
b(T)-5 b(yp)r(edefs)75 2607 y Fk(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
Fg(mpi++.h)p Fk(.)75 2704 y Fg(//)24 b(opaque)f(types)-32
46 y Fd(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 Fk(12)714 b Fh(ANNEX)15 b(A.)30 b(MPI)16
b(1.1)e(C++)h(LANGUA)o(GE)g(BINDING)75 49 y Fg(MPI_Aint)75
162 y(//)24 b(prototypes)e(for)i(user-defined)e(functions)75
219 y(typedef)h(int)g(MPI_Copy_function\(MPI_Comm)e(&oldcomm,)h
(MPI_Comm)h(&newcomm,)791 275 y(int)g(&keyval,)g(void)g
(*extra_state\);)75 388 y(typedef)g(int)g
(MPI_Delete_function\(MPI_Comm)d(&comm,)j(int)h(&keyval,)839
444 y(void)f(*extra_state\);)75 557 y(typedef)g(void)g
(MPI_Handler_function\(MPI_Com)o(m)e(&,)j(int)f(&,)h(...\);)75
670 y(typedef)f(void)g(MPI_User_function\(void)e(invec[],)i(void)g
(inoutvec[],)g(int)g(&len,)815 727 y(MPI_Datatype)f(&datatype\);)75
870 y Fn(A.4)59 b(C++)19 b(Bindings)g(fo)n(r)h(P)n(oint-to-P)n(oint)h
(Communication)75 971 y Fg(int)i(MPI)p 245 971 15 2 v
17 w(Comm::Send\(const)f(void*)h(buf,)g(int)h(count,)f(const)393
1028 y(MPI)p 468 1028 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)
g(tag\))75 1114 y(int)g(MPI)p 245 1114 V 17 w(Comm::Recv\(void*)f(buf,)
h(int)h(count,)f(const)g(MPI)p 1265 1114 V 17 w(Datatype&)f(datatype,)
393 1171 y(int)i(source,)f(int)g(tag,)g(MPI)p 969 1171
V 17 w(Status&)g(status\))75 1257 y(int)g(MPI)p 245 1257
V 17 w(Comm::Bsend\(const)f(void*)h(buf,)g(int)h(count,)f(const)393
1314 y(MPI)p 468 1314 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)
g(tag\))75 1400 y(int)g(MPI)p 245 1400 V 17 w(Comm::Ssend\(const)f
(void*)h(buf,)g(int)h(count,)f(const)393 1457 y(MPI)p
468 1457 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g(tag\))75
1543 y(int)g(MPI)p 245 1543 V 17 w(Comm::Rsend\(const)f(void*)h(buf,)g
(int)h(count,)f(const)393 1599 y(MPI)p 468 1599 V 17
w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g(tag\))75
1686 y(int)g(MPI)p 245 1686 V 17 w(Comm::Isend\(const)f(void*)h(buf,)g
(int)h(count,)f(const)393 1742 y(MPI)p 468 1742 V 17
w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g(tag,)393
1799 y(MPI)p 468 1799 V 17 w(Request&)g(request\))75
1885 y(int)g(MPI)p 245 1885 V 17 w(Comm::Ibsend\(const)f(void*)h(buf,)g
(int)h(count,)f(const)393 1942 y(MPI)p 468 1942 V 17
w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g(tag,)393
1998 y(MPI)p 468 1998 V 17 w(Request&)g(request\))75
2085 y(int)g(MPI)p 245 2085 V 17 w(Comm::Issend\(const)f(void*)h(buf,)g
(int)h(count,)f(const)393 2141 y(MPI)p 468 2141 V 17
w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g(tag,)393
2198 y(MPI)p 468 2198 V 17 w(Request&)g(request\))75
2284 y(int)g(MPI)p 245 2284 V 17 w(Comm::Irsend\(const)f(void*)h(buf,)g
(int)h(count,)f(const)393 2341 y(MPI)p 468 2341 V 17
w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g(tag,)393
2397 y(MPI)p 468 2397 V 17 w(Request&)g(request\))75
2483 y(int)g(MPI)p 245 2483 V 17 w(Comm::Irecv\(void*)f(buf,)h(int)h
(count,)f(const)g(MPI)p 1289 2483 V 17 w(Datatype&)f(datatype,)393
2540 y(int)i(source,)f(int)g(tag,)g(MPI)p 969 2540 V
17 w(Request&)g(request\))75 2626 y(int)g(MPI)p 245 2626
V 17 w(Comm::Send)p 502 2626 V 16 w(init\(const)g(void*)g(buf,)g(int)g
(count,)h(const)393 2683 y(MPI)p 468 2683 V 17 w(Datatype&)f(datatype,)
f(int)i(dest,)f(int)g(tag,)1967 46 y Fd(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 Fh(A.4.)34 b(C++)16 b(BINDINGS)g(F)o(OR)f
(POINT-TO-POINT)i(COMMUNICA)l(TION)333 b Fk(13)393 49
y Fg(MPI)p 468 49 15 2 v 17 w(Request&)23 b(request\))75
136 y(int)g(MPI)p 245 136 V 17 w(Comm::Bsend)p 526 136
V 16 w(init\(const)f(void*)i(buf,)f(int)g(count,)g(const)393
192 y(MPI)p 468 192 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g
(tag,)393 249 y(MPI)p 468 249 V 17 w(Request&)g(request\))75
335 y(int)g(MPI)p 245 335 V 17 w(Comm::Ssend)p 526 335
V 16 w(init\(const)f(void*)i(buf,)f(int)g(count,)g(const)393
392 y(MPI)p 468 392 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g
(tag,)393 448 y(MPI)p 468 448 V 17 w(Request&)g(request\))75
534 y(int)g(MPI)p 245 534 V 17 w(Comm::Rsend)p 526 534
V 16 w(init\(const)f(void*)i(buf,)f(int)g(count,)g(const)393
591 y(MPI)p 468 591 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)g
(tag,)393 647 y(MPI)p 468 647 V 17 w(Request&)g(request\))75
734 y(int)g(MPI)p 245 734 V 17 w(Comm::Recv)p 502 734
V 16 w(init\(void*)g(buf,)g(int)g(count,)g(const)h(MPI)p
1378 734 V 16 w(Datatype&)f(datatype,)393 790 y(int)h(source,)f(int)g
(tag,)g(MPI)p 969 790 V 17 w(Request&)g(request\))75
877 y(int)g(MPI)p 245 877 V 17 w(Comm::Iprobe\(int)f(source,)h(int)g
(tag,)h(int&)f(flag,)g(MPI)p 1408 877 V 17 w(Status&)g(status\))75
963 y(int)g(MPI)p 245 963 V 17 w(Comm::Probe\(int)f(source,)h(int)g
(tag,)h(MPI)p 1122 963 V 16 w(Status&)f(status\))75 1050
y(int)g(MPI)p 245 1050 V 17 w(Comm::Sendrecv\(const)e(void)j(*sendbuf,)
e(int)i(sendcount,)e(const)393 1106 y(MPI)p 468 1106
V 17 w(Datatype&)h(sendtype,)f(int)i(dest,)f(int)g(sendtag,)g(void)g
(*recvbuf,)393 1163 y(int)h(recvcount,)e(const)h(MPI)p
969 1163 V 17 w(Datatype&)g(recvtype,)f(int)i(source,)393
1219 y(int)g(recvtag,)e(MPI)p 778 1219 V 17 w(Status&)h(status\))75
1305 y(int)g(MPI)p 245 1305 V 17 w(Comm::Sendrecv)p 598
1305 V 15 w(replace\(void*)g(buf,)g(int)g(count,)g(const)393
1362 y(MPI)p 468 1362 V 17 w(Datatype&)g(datatype,)f(int)i(dest,)f(int)
g(sendtag,)g(int)h(source,)393 1418 y(int)g(recvtag,)e(MPI)p
778 1418 V 17 w(Status&)h(status\))75 1505 y(int)g(MPI)p
245 1505 V 17 w(Status::Get)p 526 1505 V 16 w(count\(const)f(MPI)p
900 1505 V 17 w(Datatype&)h(datatype,)f(int&)i(count\))f(const)1875
1601 y Fm(>)p Fl(\(June\))75 1591 y Fg(int)g(MPI)p 245
1591 V 17 w(Status::Test)p 550 1591 V 16 w(cancelled\(int&)f(flag\))
1875 1664 y Fm(?)p Fl(\(June\))75 1678 y Fg(int)h(MPI)p
245 1678 V 17 w(Request::Wait\(MPI)p 670 1678 V 15 w(Status&)g
(status\))1875 1774 y Fm(>)p Fl(\(June\))75 1764 y Fg(int)g(MPI)p
245 1764 V 17 w(Request::Test\(int&)f(flag,)h(MPI)p 931
1764 V 17 w(Status&)f(status\))1875 1837 y Fm(?)p Fl(\(June\))75
1851 y Fg(int)h(MPI)p 245 1851 V 17 w(Request::Request)p
646 1851 V 15 w(free\(void\))75 1937 y(int)g(MPI)p 245
1937 V 17 w(Request::Cancel\(void\))75 2024 y(int)g(MPI)p
245 2024 V 17 w(Request::Start\(void\))75 2110 y(int)g(::MPI)p
293 2110 V 17 w(Buffer)p 454 2110 V 16 w(attach\(void*)g(buffer,)f(int)
i(size\))1875 2203 y Fm(>)p Fl(\(June\))75 2196 y Fg(int)f(::MPI)p
293 2196 V 17 w(Buffer)p 454 2196 V 16 w(detach\(void*&)f(buffer,)h
(int&)h(size\))1875 2265 y Fm(?)p Fl(\(June\))75 2283
y Fg(int)f(::MPI)p 293 2283 V 17 w(Waitany\(int)f(count,)h(MPI)p
835 2283 V 17 w(Request)g(array)p 1163 2283 V 17 w(of)p
1228 2283 V 16 w(requests[],)g(int&)g(index,)393 2339
y(MPI)p 468 2339 V 17 w(Status&)g(status\))75 2426 y(int)g(::MPI)p
293 2426 V 17 w(Testany\(int)f(count,)h(MPI)p 835 2426
V 17 w(Request)g(array)p 1163 2426 V 17 w(of)p 1228 2426
V 16 w(requests[],)g(int&)g(index,)393 2482 y(int&)g(flag,)h(MPI)p
731 2482 V 16 w(Status&)f(status\))75 2569 y(int)g(::MPI)p
293 2569 V 17 w(Waitall\(int)f(count,)h(MPI)p 835 2569
V 17 w(Request)g(array)p 1163 2569 V 17 w(of)p 1228 2569
V 16 w(requests[],)393 2625 y(MPI)p 468 2625 V 17 w(Status)g(array)p
772 2625 V 16 w(of)p 836 2625 V 17 w(statuses[]\))-32
46 y Fd(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 Fk(14)714 b Fh(ANNEX)15 b(A.)30 b(MPI)16
b(1.1)e(C++)h(LANGUA)o(GE)g(BINDING)75 49 y Fg(int)23
b(::MPI)p 293 49 15 2 v 17 w(Testall\(int)f(count,)h(MPI)p
835 49 V 17 w(Request)g(array)p 1163 49 V 17 w(of)p 1228
49 V 16 w(requests[],)g(int&)g(flag,)393 106 y(MPI)p
468 106 V 17 w(Status)g(array)p 772 106 V 16 w(of)p 836
106 V 17 w(statuses[]\))-160 196 y Fl(\(June\))p Fm(>)75
192 y Fg(int)g(::MPI)p 293 192 V 17 w(Waitsome\(int)f(incount,)h(MPI)p
907 192 V 17 w(Request)g(array)p 1235 192 V 16 w(of)p
1299 192 V 17 w(requests[],)393 249 y(int&)g(outcount,)g(int)h(array)p
970 249 V 16 w(of)p 1034 249 V 17 w(indices[],)393 305
y(MPI)p 468 305 V 17 w(Status)f(array)p 772 305 V 16
w(of)p 836 305 V 17 w(statuses[]\))-160 345 y Fl(\(June\))p
Fm(?)75 392 y Fg(int)g(::MPI)p 293 392 V 17 w(Testsome\(int)f(incount,)
h(MPI)p 907 392 V 17 w(Request)g(array)p 1235 392 V 16
w(of)p 1299 392 V 17 w(requests[],)393 448 y(int&)g(outcount,)g(int)h
(array)p 970 448 V 16 w(of)p 1034 448 V 17 w(indices[],)393
504 y(MPI)p 468 504 V 17 w(Status)f(array)p 772 504 V
16 w(of)p 836 504 V 17 w(statuses[]\))75 591 y(int)g(::MPI)p
293 591 V 17 w(Startall\(int)f(count,)h(MPI)p 859 591
V 17 w(Request)g(array)p 1187 591 V 16 w(of)p 1251 591
V 17 w(requests[]\))75 677 y(int)g(MPI)p 245 677 V 17
w(Datatype::Type)p 598 677 V 15 w(contiguous\(int)f(count,)h(const)h
(MPI)p 1354 677 V 16 w(Datatype&)f(type\))75 764 y(int)g(MPI)p
245 764 V 17 w(Datatype::Type)p 598 764 V 15 w(vector\(int)g(count,)g
(int)g(blocklength,)g(int)g(stride,)g(const)393 820 y(MPI)p
468 820 V 17 w(Datatype&)g(type\))75 907 y(int)g(MPI)p
245 907 V 17 w(Datatype::Type)p 598 907 V 15 w(hvector\(int)g(count,)g
(int)g(blocklength,)g(MPI)p 1545 907 V 16 w(Aint)h(stride,)393
963 y(const)f(MPI)p 611 963 V 17 w(Datatype&)g(type\))75
1050 y(int)g(MPI)p 245 1050 V 17 w(Datatype::Type)p 598
1050 V 15 w(indexed\(int)g(count,)g(int)g(array)p 1282
1050 V 17 w(of)p 1347 1050 V 17 w(blocklengths[],)393
1106 y(int)h(array)p 612 1106 V 16 w(of)p 676 1106 V
17 w(displacements[],)e(const)h(MPI)p 1314 1106 V 17
w(Datatype&)f(type\))75 1193 y(int)h(MPI)p 245 1193 V
17 w(Datatype::Type)p 598 1193 V 15 w(hindexed\(int)g(count,)g(int)g
(array)p 1306 1193 V 17 w(of)p 1371 1193 V 17 w(blocklengths[],)393
1249 y(MPI)p 468 1249 V 17 w(Aint)g(array)p 724 1249
V 17 w(of)p 789 1249 V 17 w(displacements[],)e(const)j(MPI)p
1427 1249 V 16 w(Datatype&)f(type\))75 1335 y(int)g(MPI)p
245 1335 V 17 w(Datatype::MPI)p 574 1335 V 16 w(Type)p
686 1335 V 16 w(struct\(int)g(count,)g(int)g(array)p
1347 1335 V 17 w(of)p 1412 1335 V 17 w(blocklengths[],)393
1392 y(MPI)p 468 1392 V 17 w(Aint)g(array)p 724 1392
V 17 w(of)p 789 1392 V 17 w(displacements[],)393 1448
y(MPI)p 468 1448 V 17 w(Datatype)g(array)p 820 1448 V
16 w(of)p 884 1448 V 17 w(types[]\))75 1535 y(int)g(::MPI)p
293 1535 V 17 w(Address\(void*)f(location,)h(MPI)p 955
1535 V 16 w(Aint&)h(address\))75 1621 y(int)f(MPI)p 245
1621 V 17 w(Datatype::Type)p 598 1621 V 15 w(extent\(int&)g(extent\))g
(const)75 1708 y(int)g(MPI)p 245 1708 V 17 w(Datatype::Type)p
598 1708 V 15 w(size\(int&)g(size\))g(const)75 1794 y(int)g(MPI)p
245 1794 V 17 w(Datatype::Type)p 598 1794 V 15 w(count\(int&)g(count\))
g(const)75 1881 y(int)g(MPI)p 245 1881 V 17 w(Datatype::Type)p
598 1881 V 15 w(lb\(int&)g(displacement\))f(const)75
1967 y(int)h(MPI)p 245 1967 V 17 w(Datatype::Type)p 598
1967 V 15 w(ub\(int&)g(displacement\))f(const)75 2054
y(int)h(MPI)p 245 2054 V 17 w(Datatype::Type)p 598 2054
V 15 w(commit\(void\))75 2140 y(int)g(MPI)p 245 2140
V 17 w(Datatype::Type)p 598 2140 V 15 w(free\(void\))75
2226 y(int)g(MPI)p 245 2226 V 17 w(Datatype::Get)p 574
2226 V 16 w(elements\(const)f(MPI)p 1020 2226 V 16 w(Status&)h(status,)
g(int&)g(count\))h(const)-160 2316 y Fl(\(June\))p Fm(>)75
2313 y Fg(int)f(MPI)p 245 2313 V 17 w(Datatype::Pack\(const)e(void*)j
(inbuf,)f(int)g(incount,)g(void)g(*outbuf,)393 2369 y(int)h(outsize,)e
(int&)i(position,)e(const)i(MPI)p 1280 2369 V 16 w(Comm)g(&comm\))f
(const)75 2456 y(int)g(MPI)p 245 2456 V 17 w(Datatype::Unpack\(const)e
(void*)i(inbuf,)g(int)h(insize,)f(int&)g(position,)393
2512 y(void)g(*outbuf,)g(int)h(outcount,)e(const)i(MPI)p
1280 2512 V 16 w(Comm&)f(comm\))h(const)75 2599 y(int)f(MPI)p
245 2599 V 17 w(Datatype::Pack)p 598 2599 V 15 w(size\(int)g(incount,)g
(const)g(MPI)p 1258 2599 V 17 w(Datatype&)g(comm,)393
2655 y(int&)g(size\))h(const)-160 2689 y Fl(\(June\))p
Fm(?)1967 46 y Fd(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 Fh(A.5.)34 b(C++)16 b(BINDINGS)g(F)o(OR)f
(COLLECTIVE)i(COMMUNICA)l(TION)427 b Fk(15)75 49 y Fn(A.5)59
b(C++)19 b(Bindings)g(fo)n(r)h(Collective)g(Communication)75
151 y Fg(int)j(MPI)p 245 151 15 2 v 17 w(Comm::Barrier\(void\))75
237 y(int)g(MPI)p 245 237 V 17 w(Comm::Bcast\(void*)f(buffer,)h(int)g
(count,)g(const)g(MPI)p 1360 237 V 17 w(Datatype&)g(datatype,)393
294 y(int)h(root\))75 380 y(int)f(MPI)p 245 380 V 17
w(Comm::Gather\(const)f(void*)h(sendbuf,)g(int)g(sendcount,)g(const)393
437 y(MPI)p 468 437 V 17 w(Datatype&)g(sendtype,)f(void*)h(recvbuf,)g
(int)h(recvcount,)e(const)393 493 y(MPI)p 468 493 V 17
w(Datatype&)h(recvtype,)f(int)i(root\))75 579 y(int)f(MPI)p
245 579 V 17 w(Comm::Gatherv\(const)e(void*)j(sendbuf,)e(int)i
(sendcount,)e(const)393 636 y(MPI)p 468 636 V 17 w(Datatype&)h
(sendtype,)f(void*)h(recvbuf,)g(int)h(recvcounts[],)393
692 y(int)g(displs[],)e(const)h(MPI)p 945 692 V 17 w(Datatype&)g
(recvtype,)f(int)i(root\))75 779 y(int)f(MPI)p 245 779
V 17 w(Comm::Scatter\(const)e(void*)j(sendbuf,)e(int)i(sendcount,)e
(const)393 835 y(MPI)p 468 835 V 17 w(Datatype&)h(sendtype,)f(void*)h
(recvbuf,)g(int)h(recvcount,)e(const)393 892 y(MPI)p
468 892 V 17 w(Datatype&)h(recvtype,)f(int)i(root\))75
978 y(int)f(MPI)p 245 978 V 17 w(Comm::Scatterv\(const)e(void*)j
(sendbuf,)e(int)i(sendcounts[],)e(int)h(displs[],)393
1035 y(const)g(MPI)p 611 1035 V 17 w(Datatype&)g(sendtype,)f(void*)i
(recvbuf,)e(int)i(recvcount,)393 1091 y(const)f(MPI)p
611 1091 V 17 w(Datatype&)g(recvtype,)f(int)i(root\))75
1178 y(int)f(MPI)p 245 1178 V 17 w(Comm::Allgather\(const)e(void*)i
(sendbuf,)g(int)h(sendcount,)e(const)393 1234 y(MPI)p
468 1234 V 17 w(Datatype&)h(sendtype,)f(void*)h(recvbuf,)g(int)h
(recvcount,)e(const)393 1290 y(MPI)p 468 1290 V 17 w(Datatype&)h
(recvtype\))75 1377 y(int)g(MPI)p 245 1377 V 17 w
(Comm::Allgatherv\(const)e(void*)i(sendbuf,)g(int)g(sendcount,)g(const)
393 1433 y(MPI)p 468 1433 V 17 w(Datatype&)g(sendtype,)f(void*)h
(recvbuf,)g(int)h(recvcounts[],)393 1490 y(int)g(displs[],)e(const)h
(MPI)p 945 1490 V 17 w(Datatype&)g(recvtype\))75 1576
y(int)g(MPI)p 245 1576 V 17 w(Comm::Alltoall\(const)e(void*)j(sendbuf,)
e(int)i(sendcount,)e(const)393 1633 y(MPI)p 468 1633
V 17 w(Datatype&)h(sendtype,)f(void*)h(recvbuf,)g(int)h(recvcount,)e
(const)393 1689 y(MPI)p 468 1689 V 17 w(Datatype&)h(recvtype\))75
1776 y(int)g(MPI)p 245 1776 V 17 w(Comm::Alltoallv\(const)e(void*)i
(sendbuf,)g(int)h(sendcounts[],)393 1832 y(int)g(sdispls[],)e(const)h
(MPI)p 969 1832 V 17 w(Datatype&)g(sendtype,)f(void*)i(recvbuf,)393
1889 y(int)g(recvcounts[],)e(int)h(rdispls[],)g(const)g(MPI)p
1399 1889 V 17 w(Datatype&)f(recvtype\))75 1975 y(int)h(MPI)p
245 1975 V 17 w(Comm::Reduce\(const)f(void*)h(sendbuf,)g(void*)g
(recvbuf,)g(int)g(count,)g(const)393 2031 y(MPI)p 468
2031 V 17 w(Datatype&)g(datatype,)f(const)h(MPI)p 1177
2031 V 17 w(Op&)h(op,)f(int)h(root\))1875 2128 y Fm(>)p
Fl(\(June\))75 2118 y Fg(int)f(MPI)p 245 2118 V 17 w(Op::Create\(const)
f(MPI)p 740 2118 V 17 w(User)p 853 2118 V 16 w(function&)h(function,)g
(int)g(commute\))75 2204 y(int)g(MPI)p 245 2204 V 17
w(Op::Free\(void\))1875 2244 y Fm(?)p Fl(\(June\))75
2291 y Fg(int)g(MPI)p 245 2291 V 17 w(Comm::Allreduce\(const)e(void*)i
(sendbuf,)g(void*)g(recvbuf,)g(int)h(count,)393 2347
y(const)f(MPI)p 611 2347 V 17 w(Datatype&)g(datatype,)f(const)i(MPI)p
1321 2347 V 16 w(Op&)g(op\))75 2434 y(int)f(MPI)p 245
2434 V 17 w(Comm::Reduce)p 550 2434 V 16 w(scatter\(const)f(void*)h
(sendbuf,)g(void*)g(recvbuf,)393 2490 y(int)h(recvcounts[],)e(const)h
(MPI)p 1041 2490 V 17 w(Datatype&)f(datatype,)h(const)393
2547 y(MPI)p 468 2547 V 17 w(Op&)g(op\))75 2633 y(int)g(MPI)p
245 2633 V 17 w(Comm::Scan\(const)f(void*)h(sendbuf,)g(void*)g
(recvbuf,)g(int)g(count,)g(const)393 2690 y(MPI)p 468
2690 V 17 w(Datatype&)g(datatype,)f(const)h(MPI)p 1177
2690 V 17 w(Op&)h(op\))-32 46 y Fd(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 Fk(16)714 b Fh(ANNEX)15 b(A.)30 b(MPI)16
b(1.1)e(C++)h(LANGUA)o(GE)g(BINDING)75 49 y Fn(A.6)59
b(C++)19 b(Bindings)g(fo)n(r)h(Groups,)h(Contexts,)g(and)e(Communicato)
n(rs)75 151 y Fg(int)k(MPI)p 245 151 15 2 v 17 w(Group::Size\(int&)f
(size\))h(const)75 237 y(int)g(MPI)p 245 237 V 17 w(Group::Rank\(int&)f
(rank\))h(const)-160 327 y Fl(\(June\))p Fm(>)75 324
y Fg(int)g(MPI)p 245 324 V 17 w(Group::Translate)p 646
324 V 15 w(ranks)g(\(int)h(n,)f(int)h(ranks1[],)e(const)i(MPI)p
1545 324 V 16 w(Group&)f(group,)393 380 y(int)h(ranks2[]\))e(const)75
467 y(int)h(MPI)p 245 467 V 17 w(Group::Compare\(const)e(MPI)p
835 467 V 17 w(Group&)i(group,)g(int&)h(result\))e(const)75
553 y(int)h(MPI)p 245 553 V 17 w(Comm::Group\(MPI)p 622
553 V 15 w(Group&)g(group\))g(const)75 639 y(int)g(MPI)p
245 639 V 17 w(Group::Union\(const)f(MPI)p 788 639 V
16 w(Group&)h(group1,)g(const)h(MPI)p 1378 639 V 16 w(Group&)f
(group2\))75 726 y(int)g(MPI)p 245 726 V 17 w
(Group::Intersection\(const)e(MPI)p 955 726 V 16 w(Group&)i(group1,)g
(const)393 782 y(MPI)p 468 782 V 17 w(Group&)g(group2\))75
869 y(int)g(MPI)p 245 869 V 17 w(Group::Difference\(const)e(MPI)p
907 869 V 17 w(Group&)i(group1,)g(const)g(MPI)p 1497
869 V 17 w(Group&)g(group2\))-160 909 y Fl(\(June\))p
Fm(?)75 955 y Fg(int)g(MPI)p 245 955 V 17 w(Group::Incl\(int)f(n,)i
(int)f(ranks[],)g(const)g(MPI)p 1241 955 V 17 w(Group&)g(group\))75
1042 y(int)g(MPI)p 245 1042 V 17 w(Group::Excl\(int)f(n,)i(int)f
(ranks[],)g(const)g(MPI)p 1241 1042 V 17 w(Group&)g(group\))75
1128 y(int)g(MPI)p 245 1128 V 17 w(Group::Range)p 550
1128 V 16 w(incl\(int)g(n,)g(int)h(ranges[][3],)e(const)h(MPI)p
1473 1128 V 17 w(Group&)g(group\))75 1215 y(int)g(MPI)p
245 1215 V 17 w(Group::Range)p 550 1215 V 16 w(excl\(int)g(n,)g(int)h
(ranges[][3],)e(const)h(MPI)p 1473 1215 V 17 w(Group&)g(group\))75
1301 y(int)g(MPI)p 245 1301 V 17 w(Group::Free\(void\))75
1388 y(int)g(MPI)p 245 1388 V 17 w(Comm::Size\(int&)f(size\))h(const)75
1474 y(int)g(MPI)p 245 1474 V 17 w(Comm::Rank\(int&)f(rank\))h(const)
-160 1558 y Fl(\(June\))p Fm(>)75 1560 y Fg(int)g(MPI)p
245 1560 V 17 w(Comm::Compare\(const)e(MPI)p 811 1560
V 17 w(Comm&)i(comm,)h(int&)f(result\))g(const)75 1647
y(int)g(MPI)p 245 1647 V 17 w(Comm::Dup\(const)f(MPI)p
716 1647 V 17 w(Comm&)h(comm\))-160 1687 y Fl(\(June\))p
Fm(?)75 1733 y Fg(int)g(MPI)p 245 1733 V 17 w(Comm::Create\(const)f
(MPI)p 788 1733 V 16 w(Comm&)i(comm,)f(const)g(MPI)p
1306 1733 V 17 w(Group&)g(group\))75 1820 y(int)g(MPI)p
245 1820 V 17 w(Comm::Split\(const)f(MPI)p 764 1820 V
17 w(Comm&)h(comm,)g(int)g(color,)g(int)h(key\))75 1906
y(int)f(MPI)p 245 1906 V 17 w(Comm::Free\(void\))75 1993
y(int)g(MPI)p 245 1993 V 17 w(Comm::Test)p 502 1993 V
16 w(inter\(int&)g(flag\))g(const)75 2079 y(int)g(MPI)p
245 2079 V 17 w(Comm::Remote)p 550 2079 V 16 w(size\(int&)f(size\))i
(const)75 2166 y(int)f(MPI)p 245 2166 V 17 w(Comm::Remote)p
550 2166 V 16 w(group\(MPI)p 782 2166 V 16 w(Group&)g(group\))g(const)
75 2252 y(int)g(MPI)p 245 2252 V 17 w(Comm::Intercomm)p
622 2252 V 15 w(create\(const)g(MPI)p 1020 2252 V 16
w(Comm&)h(local)p 1300 2252 V 16 w(comm,)f(int)h(local)p
1675 2252 V 16 w(leader,)393 2309 y(const)f(MPI)p 611
2309 V 17 w(Comm&)g(peer)p 867 2309 V 17 w(comm,)g(int)h(remote)p
1267 2309 V 16 w(leader,)f(int)g(tag\))75 2395 y(int)g(MPI)p
245 2395 V 17 w(Comm::Intercomm)p 622 2395 V 15 w(merge\(const)g(MPI)p
996 2395 V 16 w(Comm&)h(intercomm,)e(int)i(high\))-160
2485 y Fl(\(June\))p Fm(>)75 2482 y Fg(int)f(::MPI)p
293 2482 V 17 w(Keyval)p 454 2482 V 16 w(create\(const)g(MPI)p
853 2482 V 16 w(Copy)p 965 2482 V 17 w(function)g(&copy)p
1317 2482 V 16 w(fn,)h(const)393 2538 y(MPI)p 468 2538
V 17 w(Delete)p 629 2538 V 16 w(function)f(*delete)p
1028 2538 V 16 w(fn,)h(int&)f(keyval,)g(void*)g(extra)p
1713 2538 V 17 w(state\))-160 2578 y Fl(\(June\))p Fm(?)75
2624 y Fg(int)g(::MPI)p 293 2624 V 17 w(Keyval)p 454
2624 V 16 w(free\(int&)g(keyval\))1967 46 y Fd(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 Fh(A.7.)34 b(C++)16 b(BINDINGS)g(F)o(OR)f(PR)o
(OCESS)h(TOPOLOGIES)630 b Fk(17)75 49 y Fg(int)23 b(MPI)p
245 49 15 2 v 17 w(Comm::Attr)p 502 49 V 16 w(put\(int)g(keyval,)g
(void*)g(attribute)p 1259 49 V 16 w(val\))1875 146 y
Fm(>)p Fl(\(June\))75 136 y Fg(int)g(MPI)p 245 136 V
17 w(Comm::Attr)p 502 136 V 16 w(get\(int)g(keyval,)g(void*&)g
(attribute)p 1283 136 V 16 w(val,)g(int&)g(flag\))h(const)1875
233 y Fm(>)p Fl(\(June\))75 222 y Fg(int)f(MPI)p 245
222 V 17 w(Comm::Attr)p 502 222 V 16 w(delete\(int)g(keyval\))75
395 y Fn(A.7)59 b(C++)19 b(Bindings)g(fo)n(r)h(Pro)r(cess)h(T)-5
b(op)r(ologies)75 497 y Fg(int)23 b(MPI)p 245 497 V 17
w(Comm::Cart)p 502 497 V 16 w(create\(const)f(MPI)p 900
497 V 17 w(Com&)h(comm)p 1132 497 V 17 w(old,)g(int)h(ndims,)f(int)g
(dims[],)393 553 y(int)h(periods[],)e(int)i(reorder\))1875
650 y Fm(>)p Fl(\(June\))75 640 y Fg(int)f(::MPI)p 293
640 V 17 w(Dims)p 406 640 V 17 w(create\(int)f(nnodes,)h(int)g(ndims,)g
(int)h(dims[]\))1875 712 y Fm(?)p Fl(\(June\))75 726
y Fg(int)f(MPI)p 245 726 V 17 w(Comm::Graph)p 526 726
V 16 w(create\(const)f(MPI)p 924 726 V 17 w(Comm&)h(comm)p
1180 726 V 17 w(old,)g(int)g(nnodes,)393 783 y(int)h(index[],)e(int)i
(edges[],)f(int)g(reorder\))75 869 y(int)g(MPI)p 245
869 V 17 w(Comm::Topo)p 502 869 V 16 w(test\(int&)g(status\))g(const)75
956 y(int)g(MPI)p 245 956 V 17 w(Comm::Graphdims)p 622
956 V 15 w(get\(int)g(nnodes[],)g(int)g(nedges[]\))g(const)75
1042 y(int)g(MPI)p 245 1042 V 17 w(Comm::Graph)p 526
1042 V 16 w(get\(int)g(maxindex,)f(int)i(maxedges,)f(int)g(index[],)393
1099 y(int)h(edges[]\))e(const)75 1185 y(int)h(MPI)p
245 1185 V 17 w(Comm::Cartdim)p 574 1185 V 16 w(get\(int&)f(ndims\))h
(const)75 1271 y(int)g(MPI)p 245 1271 V 17 w(Comm::Cart)p
502 1271 V 16 w(get\(int)g(maxdims,)g(int)g(dims[],)g(int)h(periods[],)
393 1328 y(int)g(coords[]\))e(const)75 1414 y(int)h(MPI)p
245 1414 V 17 w(Comm::Cart)p 502 1414 V 16 w(rank\(int)g(coords[],)f
(int&)i(rank\))f(const)75 1501 y(int)g(MPI)p 245 1501
V 17 w(Comm::Cart)p 502 1501 V 16 w(coords\(int)g(rank,)g(int)g
(maxdims,)g(int)g(coords[]\))g(const)75 1587 y(int)g(MPI)p
245 1587 V 17 w(Comm::Graph)p 526 1587 V 16 w(neighbors)p
758 1587 V 16 w(count\(int)f(rank,)i(int&)f(nneighbors\))f(const)75
1674 y(int)h(MPI)p 245 1674 V 17 w(Comm::Graph)p 526
1674 V 16 w(neighbors\(int)f(rank,)h(int)h(maxneighbors,)e(int)h
(neighbors[]\))393 1730 y(const)75 1817 y(int)g(MPI)p
245 1817 V 17 w(Comm::Cart)p 502 1817 V 16 w(shift\(int)g(direction,)f
(int)i(disp,)f(int&)g(rank)p 1473 1817 V 17 w(source,)393
1873 y(int&)g(rank)p 611 1873 V 17 w(dest\))g(const)75
1960 y(int)g(MPI)p 245 1960 V 17 w(Comm::Cart)p 502 1960
V 16 w(sub\(const)g(MPI)p 829 1960 V 16 w(Comm&)h(comm,)f(int)g(remain)
p 1371 1960 V 17 w(dims[]\))75 2046 y(int)g(MPI)p 245
2046 V 17 w(Comm::Cart)p 502 2046 V 16 w(map\(int)g(ndims,)g(int)g
(dims[],)g(int)h(periods[],)e(int&)i(newrank\))393 2102
y(const)75 2189 y(int)f(MPI)p 245 2189 V 17 w(Comm::Graph)p
526 2189 V 16 w(map\(int)g(nnodes,)g(int)g(index[],)g(int)g(edges[],)g
(int&)g(newrank\))393 2245 y(const)75 2419 y Fn(A.8)59
b(C++)19 b(Bindings)g(fo)n(r)h(Environmental)g(Inquiry)1875
2532 y Fm(>)p Fl(\(June\))75 2520 y Fg(int)j(::MPI)p
293 2520 V 17 w(Get)p 382 2520 V 17 w(processor)p 615
2520 V 16 w(name\(char*&)f(name,)h(int&)h(resultlen\))75
2606 y(int)f(MPI)p 245 2606 V 17 w(Errhandler::Create\(const)e(MPI)p
931 2606 V 17 w(Handler)p 1116 2606 V 16 w(function)i(*function\))75
2693 y(int)g(MPI)p 245 2693 V 17 w(Comm::Errhandler)p
646 2693 V 15 w(set\(const)g(MPI)p 972 2693 V 17 w(Errhandler&)f
(errhandler\))-32 46 y Fd(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 Fk(18)714 b Fh(ANNEX)15 b(A.)30 b(MPI)16
b(1.1)e(C++)h(LANGUA)o(GE)g(BINDING)75 49 y Fg(int)23
b(MPI)p 245 49 15 2 v 17 w(Comm::Errhandler)p 646 49
V 15 w(get\(MPI)p 829 49 V 16 w(Errhandler&)g(errhandler\))f(const)75
136 y(int)h(MPI)p 245 136 V 17 w(Errhandler::Free\(void\))-160
169 y Fl(\(June\))p Fm(?)75 222 y Fg(int)g(::MPI)p 293
222 V 17 w(Error)p 430 222 V 16 w(string\(int)g(errorcode,)f(char*)i
(string,)f(int&)g(resultlen\))75 309 y(int)g(::MPI)p
293 309 V 17 w(Error)p 430 309 V 16 w(class\(int)g(errorcode,)g(int&)g
(errorclass\))75 395 y(int)g(double)g(::MPI)p 460 395
V 17 w(Wtime\(void\))75 482 y(int)g(double)g(::MPI)p
460 482 V 17 w(Wtick\(void\))-160 565 y Fl(\(June\))p
Fm(>)75 568 y Fg(int)g(::MPI)p 293 568 V 17 w(Init\(int&)g(argc,)g
(char**&)g(argv\))75 654 y(int)g(::MPI)p 293 654 V 17
w(Finalize\(void\))75 741 y(int)g(::MPI)p 293 741 V 17
w(Initialized\(int&)f(flag\))-160 781 y Fl(\(June\))p
Fm(?)75 827 y Fg(int)h(MPI)p 245 827 V 17 w(Comm::Abort\(int)f
(errorcode\))75 1001 y Fn(A.9)59 b(C++)19 b(Bindings)g(fo)n(r)h
(Pro\014ling)75 1102 y Fg(int)j(::MPI)p 293 1102 V 17
w(Pcontrol\(const)f(int)h(level,)g Fa(:)8 b(:)g(:)e Fg(\))1967
46 y Fd(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