Boost logo

Boost :

From: Philippe A. Bouchard (philippeb_at_[hidden])
Date: 2002-07-21 16:40:56


Hello Boost,

1) I wanted to show you a benchmark showing shared pointer differences
between squad_ptr<> and shared_ptr<>. shared_ptr<> is not derived from
counted_base because I wanted to point out that squad_ptr<> is easier to use
with typenames like int, float, ... and keeps its rapidity. Compilation of
'g++ -lrt benchmark.cpp' on Intel 1.4 GHz reports:

Ressources required by shared_tr<>:
Arena 0:
system bytes = 115104
in use bytes = 113032
Total (incl. mmap):
system bytes = 115104
in use bytes = 113032
max mmap regions = 0
max mmap bytes = 0
list shared_ptr<> took 3303000 nanoseconds to construct.
list shared_ptr<> took 2424000 nanoseconds to copy.
list shared_ptr<> took 2612000 nanoseconds to destroy.

Ressources required by squad_tr<>:
Arena 0:
system bytes = 131488
in use bytes = 50040
Total (incl. mmap):
system bytes = 131488
in use bytes = 50040
max mmap regions = 0
max mmap bytes = 0
list squad_ptr<> took 1251000 nanoseconds to construct.
list squad_ptr<> took 979000 nanoseconds to copy.
list squad_ptr<> took 1262000 nanoseconds to destroy.

2) prefix<> is the type used when squad_ptr<>::element_type and
plist<>::node are instanciated. It is the prefix of a variable; the space
allocated before the variable is constructed. This allows to construct
member variables using their different time consuming constructors without
depending on temporary variables and copy constructors.

3) testplist.cpp shows another advantage of using prefix<> when nodes of a
list are instanciated. You won't need pointers.

4) Other things:
    - 'squad_ptr' was chosen as a name because it's a group of pointers
taking care of the same object; they work collectively.
    - The macro squad_new is a valid macro usage IMO. It is for code
simplification and operator new are globally defined anyways, even in a
namespace. Forward declarations of squad_new which will become impossible
is the only drawback.
    - Removing squad_new is possible.
    - Too bad operator new cannot use the scope of a namespace. Why?

Thanks,

Philippe A. Bouchard

begin 666 squad_ptr.h
M+RH*(" @5&AI<R!F:6QE(&ES('!A<G0@;V8@=&AE($9$22!L:6)R87)I97,*
M(" @0V]P>7)I9VAT("AC*2 R,# R(%!H:6QI<'!E($$N($)O=6-H87)D(#QP
M:&EL:7!P94!F;W)N=7_at_N8V]M/@H*(" @5&AI<R!L:6)R87)Y(&ES(&9R964@
M<V]F='=A<F4[('EO=2!C86X@<F5D:7-T<FEB=71E(&ET(&%N9"]O<@H@("!M
M;V1I9GD@:70@=6YD97(@=&AE('1E<FUS(&]F('1H92!'3E4_at_3&EB<F%R>2!'
M96YE<F%L(%!U8FQI8PH@("!,:6-E;G-E('9E<G-I;VX@,B!A<R!P=6)L:7-H
M960_at_8GD@=&AE($9R964_at_4V]F='=A<F4_at_1F]U;F1A=&EO;BX*"B @(%1H:7,@
M;&EB<F%R>2!I<R!D:7-T<FEB=71E9"!I;B!T:&4@:&]P92!T:&%T(&ET('=I
M;&P_at_8F4@=7-E9G5L+ H@("!B=70_at_5TE42$]55"!!3ED_at_5T%24D%.5%D[('=I
M=&AO=70_at_979E;B!T:&4@:6UP;&EE9"!W87)R86YT>2!O9_at_H@("!-15)#2$%.
M5$%"24Q)5%D@;W(@1DE43D534R!&3U(@02!005)424-53$%2(%!54E!/4T4N
M("!3964@=&AE($=.50H@("!,:6)R87)Y($=E;F5R86P_at_4'5B;&EC($QI8V5N
M<V4_at_9F]R(&UO<F4_at_9&5T86EL<RX*"B @(%EO=2!S:&]U;&0@:&%V92!R96-E
M:79E9"!A(&-O<'D@;V8@=&AE($=.52!,:6)R87)Y($=E;F5R86P_at_4'5B;&EC
M($QI8V5N<V4*(" @86QO;F<@=VET:"!T:&ES(&QI8G)A<GD[('-E92!T:&4@
M9FEL92!#3U!924Y'+DQ)0BX@($EF(&YO="P@=W)I=&4@=&\*(" @=&AE($9R
M964_at_4V]F='=A<F4_at_1F]U;F1A=&EO;BP_at_26YC+BP_at_-3D@5&5M<&QE(%!L86-E
M("T_at_4W5I=&4@,S,P+ H@("!";W-T;VXL($U!(# R,3$Q+3$S,#<L(%5302X*
M*B\*"@HC:69N9&5F(%-154%$7U!44E]("B-D969I;F4_at_4U%5041?4%127T@*
M"@HC:6YC;'5D92 B<')E9FEX+F_at_B"@H*;F%M97-P86-E(&9D:0I["@H*=&5M
M<&QA=&4@/'1Y<&5N86UE(%]4<#X*"7-T<G5C="!S<75A9%]P='(["@H*=&5M
M<&QA=&4@/'1Y<&5N86UE(%]4<#X*"7-T<G5C="!S<75A9%]T87)G970_at_.B!P
M<F5F:7@\7U1P/@H)>PH)"69R:65N9"!C;&%S<R!S<75A9%]P='(\7U1P/CL*
M"@H)"7-Q=6%D7W1A<F=E="@I(#H@;5]C;W5N=&5R*#$I"@D)>PH)"7T*"@EP
M<FEV871E._at_H)"6QO;F<@;5]C;W5N=&5R.PH)?3L*"@IT96UP;&%T92 \='EP
M96YA;64_at_7U1P/@H)<W1R=6-T('-Q=6%D7W!T<@H)>PH)"71Y<&5D968_at_7U1P
M('9A;'5E7W1Y<&4["@H)"71Y<&5D968@<W%U861?=&%R9V5T/'9A;'5E7W1Y
M<&4^(&5L96UE;G1?='EP93L*"@H)"7-Q=6%D7W!T<BAE;&5M96YT7W1Y<&4@
M*B!A7W @/2 P*2 Z(&U?<'1R*&%?<"D*"0E["@D)?0H*"0ES<75A9%]P='(H
M<W%U861?<'1R(&-O;G-T("8_at_85]P*2 Z(&U?<'1R*&%?<"YS:&%R92_at_I*0H)
M"7L*"0E]"@H)"71E;7!L871E(#QT>7!E;F%M92!?5' Q/@H)"0ES<75A9%]P
M='(H<W%U861?<'1R/%]4<#$^(&-O;G-T("8_at_85]P*2 Z(&U?<'1R*&%?<"YS
M:&%R92_at_I*0H)"0E["@D)"7T*"@D)<W%U861?<'1R("8@;W!E<F%T;W(@/2 H
M<W%U861?<'1R(&-O;G-T("8_at_85]P*0H)"7L*"0D):68@*"8_at_85]P("$]('1H
M:7,I"@D)"7L*"0D)"7)E<V5T*&%?<"YS:&%R92_at_I*3L*"0D)?0H)"0ER971U
M<FX@*B!T:&ES.PH)"7T*"@D)=&5M<&QA=&4@/'1Y<&5N86UE(%]4<#$^"@D)
M"7-Q=6%D7W!T<B F(&]P97)A=&]R(#T@*'-Q=6%D7W!T<CQ?5' Q/B!C;VYS
M=" F(&%?<"D*"0D)>PH)"0D):68@*&%?<"YG970H*2 A/2!T:&ES+3YG970H
M*2D*"0D)"7L*"0D)"0ER97-E="AA7W N<VAA<F4H*2D["@D)"0E]"@D)"0ER
M971U<FX@*B!T:&ES.PH)"0E]"@H)"7YS<75A9%]P='(H*0H)"7L*"0D):68@
M*&U?<'1R("8F("$@+2T@;5]P='(M/FU?8V]U;G1E<BD*"0D)>PH)"0D)9&5L
M971E(&U?<'1R.PH)"0E]"@D)?0H*"0EV86QU95]T>7!E("8@;W!E<F%T;W(@
M*B H*2!C;VYS= H)"7L*"0D)<F5T=7)N("H@<F5I;G1E<G!R971?8V%S=#QV
M86QU95]T>7!E("H^*&U?<'1R*3L*"0E]"@H)"79A;'5E7W1Y<&4@*B!O<&5R
M871O<B M/B H*2!C;VYS= H)"7L*"0D)<F5T=7)N(')E:6YT97)P<F5T7V-A
M<W0\=F%L=65?='EP92 J/BAM7W!T<BD["@D)?0H*"0EV86QU95]T>7!E("H@
M9V5T*"D_at_8V]N<W0*"0E["@D)"7)E='5R;B!R96EN=&5R<')E=%]C87-T/'9A
M;'5E7W1Y<&4@*CXH;5]P='(I.PH)"7T*"@D)96QE;65N=%]T>7!E("H@<VAA
M<F4H*2!C;VYS= H)"7L*"0D):68@*&U?<'1R*0H)"0E["@D)"0DK*R!M7W!T
M<BT^;5]C;W5N=&5R.PH)"0E]"@D)"7)E='5R;B!M7W!T<CL*"0E]"@H)"79O
M:60@<F5S970H96QE;65N=%]T>7!E("H_at_85]P(#T@,"D*"0E["@D)"6EF("AM
M7W!T<B F)B A("TM(&U?<'1R+3YM7V-O=6YT97(I"@D)"7L*"0D)"61E;&5T
M92!M7W!T<CL*"0D)?0H)"0EM7W!T<B ](&%?<#L*"0E]"@H)<')I=F%T93H*
M"0EE;&5M96YT7W1Y<&4@*B!M7W!T<CL*"7T["@H*(V1E9FEN92!S<75A9%]N
M97<H7U1Y<&4L(%]#;VYS=')U8W1O<BD@<F5I;G1E<G!R971?8V%S=#QS<75A
M9%]T87)G970\7U1Y<&4^("H^*&YE=R H;F5W('-Q=6%D7W1A<F=E=#Q?5'EP
?93XI(%]#;VYS=')U8W1O<BD*"@I]"@H*(V5N9&EF"@``
`
end

begin 666 mutable_ptr.h
M+RH*(" @5&AI<R!F:6QE(&ES('!A<G0@;V8@=&AE($9$22!L:6)R87)I97,*
M(" @0V]P>7)I9VAT("AC*2 R,# R(%!H:6QI<'!E($$N($)O=6-H87)D(#QP
M:&EL:7!P94!F;W)N=7_at_N8V]M/@H*(" @5&AI<R!L:6)R87)Y(&ES(&9R964@
M<V]F='=A<F4[('EO=2!C86X@<F5D:7-T<FEB=71E(&ET(&%N9"]O<@H@("!M
M;V1I9GD@:70@=6YD97(@=&AE('1E<FUS(&]F('1H92!'3E4_at_3&EB<F%R>2!'
M96YE<F%L(%!U8FQI8PH@("!,:6-E;G-E('9E<G-I;VX@,B!A<R!P=6)L:7-H
M960_at_8GD@=&AE($9R964_at_4V]F='=A<F4_at_1F]U;F1A=&EO;BX*"B @(%1H:7,@
M;&EB<F%R>2!I<R!D:7-T<FEB=71E9"!I;B!T:&4@:&]P92!T:&%T(&ET('=I
M;&P_at_8F4@=7-E9G5L+ H@("!B=70_at_5TE42$]55"!!3ED_at_5T%24D%.5%D[('=I
M=&AO=70_at_979E;B!T:&4@:6UP;&EE9"!W87)R86YT>2!O9_at_H@("!-15)#2$%.
M5$%"24Q)5%D@;W(@1DE43D534R!&3U(@02!005)424-53$%2(%!54E!/4T4N
M("!3964@=&AE($=.50H@("!,:6)R87)Y($=E;F5R86P_at_4'5B;&EC($QI8V5N
M<V4_at_9F]R(&UO<F4_at_9&5T86EL<RX*"B @(%EO=2!S:&]U;&0@:&%V92!R96-E
M:79E9"!A(&-O<'D@;V8@=&AE($=.52!,:6)R87)Y($=E;F5R86P_at_4'5B;&EC
M($QI8V5N<V4*(" @86QO;F<@=VET:"!T:&ES(&QI8G)A<GD[('-E92!T:&4@
M9FEL92!#3U!924Y'+DQ)0BX@($EF(&YO="P@=W)I=&4@=&\*(" @=&AE($9R
M964_at_4V]F='=A<F4_at_1F]U;F1A=&EO;BP_at_26YC+BP_at_-3D@5&5M<&QE(%!L86-E
M("T_at_4W5I=&4@,S,P+ H@("!";W-T;VXL($U!(# R,3$Q+3$S,#<L(%5302X*
M*B\*"@HC:69N9&5F($U55$%"3$5?4%127T@*(V1E9FEN92!-551!0DQ%7U!4
M4E]("@H*;F%M97-P86-E(&9D:0I["@H*=&5M<&QA=&4@/'1Y<&5N86UE(%]4
M<#X*"7-T<G5C="!M=71A8FQE7W!T<@H)>PH)"71Y<&5D968_at_7U1P(&5L96UE
M;G1?='EP93L*"@H)"6UU=&%B;&5?<'1R*&5L96UE;G1?='EP92 J(&%?<" ]
M(# I(#H@;5]P='(H85]P*0H)"7L*"0E]"@H)"6UU=&%B;&5?<'1R*&UU=&%B
M;&5?<'1R(&-O;G-T("8_at_85]P*2 Z(&U?<'1R*&%?<"YR96QE87-E*"DI"@D)
M>PH)"7T*"@D)=&5M<&QA=&4@/'1Y<&5N86UE(%]4<#$^"@D)"6UU=&%B;&5?
M<'1R*&UU=&%B;&5?<'1R/%]4<#$^(&-O;G-T("8_at_85]P*2 Z(&U?<'1R*&%?
M<"YR96QE87-E*"DI"@D)"7L*"0D)?0H*"0EM=71A8FQE7W!T<B F(&]P97)A
M=&]R(#T@*&UU=&%B;&5?<'1R(&-O;G-T("8_at_85]P*0H)"7L*"0D):68@*"8@
M85]P("$]('1H:7,I"@D)"7L*"0D)"7)E<V5T*&%?<"YR96QE87-E*"DI.PH)
M"0E]"@D)"7)E='5R;B J('1H:7,["@D)?0H*"0ET96UP;&%T92 \='EP96YA
M;64_at_7U1P,3X*"0D);75T86)L95]P='(@)B!O<&5R871O<B ]("AM=71A8FQE
M7W!T<CQ?5' Q/B!C;VYS=" F(&%?<"D*"0D)>PH)"0D):68@*&%?<"YG970H
M*2 A/2!T:&ES+3YG970H*2D*"0D)"7L*"0D)"0ER97-E="AA7W N<F5L96%S
M92_at_I*3L*"0D)"7T*"0D)"7)E='5R;B J('1H:7,["@D)"7T*"@D)?FUU=&%B
M;&5?<'1R*"D*"0E["@D)"61E;&5T92!M7W!T<CL*"0E]"@H)"65L96UE;G1?
M='EP92 F(&]P97)A=&]R("H@*"D_at_8V]N<W0*"0E["@D)"7)E='5R;B J(&U?
M<'1R.PH)"7T*"@D)96QE;65N=%]T>7!E("H@;W!E<F%T;W(@+3X@*"D_at_8V]N
M<W0*"0E["@D)"7)E='5R;B!M7W!T<CL*"0E]"@H)"65L96UE;G1?='EP92 J
M(&=E="@I(&-O;G-T"@D)>PH)"0ER971U<FX@;5]P='(["@D)?0H*"0EE;&5M
M96YT7W1Y<&4@*B!R96QE87-E*"D_at_8V]N<W0*"0E["@D)"65L96UE;G1?='EP
M92 J('1M<" ](&U?<'1R.PH)"0EM7W!T<B ](# ["@D)"7)E='5R;B!T;7 [
M"@D)?0H*"0EV;VED(')E<V5T*&5L96UE;G1?='EP92 J(&%?<" ](# I"@D)
M>PH)"0ED96QE=&4@;5]P='(["@D)"6U?<'1R(#T_at_85]P.PH)"7T*"@EP<FEV
M871E._at_H)"6UU=&%B;&4_at_96QE;65N=%]T>7!E("H@;5]P='(["@E].PH*"GT*
)"@HC96YD:68*
`
end

begin 666 prefix.h
M+RH*(" @5&AI<R!F:6QE(&ES('!A<G0@;V8@=&AE($9$22!L:6)R87)I97,*
M(" @0V]P>7)I9VAT("AC*2 R,# R(%!H:6QI<'!E($$N($)O=6-H87)D(#QP
M:&EL:7!P94!F;W)N=7_at_N8V]M/@H*(" @5&AI<R!L:6)R87)Y(&ES(&9R964@
M<V]F='=A<F4[('EO=2!C86X@<F5D:7-T<FEB=71E(&ET(&%N9"]O<@H@("!M
M;V1I9GD@:70@=6YD97(@=&AE('1E<FUS(&]F('1H92!'3E4_at_3&EB<F%R>2!'
M96YE<F%L(%!U8FQI8PH@("!,:6-E;G-E('9E<G-I;VX@,B!A<R!P=6)L:7-H
M960_at_8GD@=&AE($9R964_at_4V]F='=A<F4_at_1F]U;F1A=&EO;BX*"B @(%1H:7,@
M;&EB<F%R>2!I<R!D:7-T<FEB=71E9"!I;B!T:&4@:&]P92!T:&%T(&ET('=I
M;&P_at_8F4@=7-E9G5L+ H@("!B=70_at_5TE42$]55"!!3ED_at_5T%24D%.5%D[('=I
M=&AO=70_at_979E;B!T:&4@:6UP;&EE9"!W87)R86YT>2!O9_at_H@("!-15)#2$%.
M5$%"24Q)5%D@;W(@1DE43D534R!&3U(@02!005)424-53$%2(%!54E!/4T4N
M("!3964@=&AE($=.50H@("!,:6)R87)Y($=E;F5R86P_at_4'5B;&EC($QI8V5N
M<V4_at_9F]R(&UO<F4_at_9&5T86EL<RX*"B @(%EO=2!S:&]U;&0@:&%V92!R96-E
M:79E9"!A(&-O<'D@;V8@=&AE($=.52!,:6)R87)Y($=E;F5R86P_at_4'5B;&EC
M($QI8V5N<V4*(" @86QO;F<@=VET:"!T:&ES(&QI8G)A<GD[('-E92!T:&4@
M9FEL92!#3U!924Y'+DQ)0BX@($EF(&YO="P@=W)I=&4@=&\*(" @=&AE($9R
M964_at_4V]F='=A<F4_at_1F]U;F1A=&EO;BP_at_26YC+BP_at_-3D@5&5M<&QE(%!L86-E
M("T_at_4W5I=&4@,S,P+ H@("!";W-T;VXL($U!(# R,3$Q+3$S,#<L(%5302X*
M*B\*"@HC:69N9&5F(%!2149)6%]("B-D969I;F4_at_4%)%1DE87T@*"@HC:6YC
M;'5D92 \;F5W/@H*"FYA;65S<&%C92!F9&D*>PH*"G1E;7!L871E(#QT>7!E
M;F%M92!?5#X*"7-T<G5C="!P<F5F:7@*"7L*"0ET>7!E9&5F(%]4('9A;'5E
M7W1Y<&4["@H*"0EP<F5F:7_at_H*0H)"7L*"0E]"@H)"7YP<F5F:7_at_H*0H)"7L*
M"0D)*'1H:7,M/BIP7W9A;'5E*2Y^=F%L=65?='EP92_at_[hidden])"7T*"@EP<F]T
M96-T960Z"@D)=F%L=65?='EP92 F(&=E="@I"@D)>PH)"0ER971U<FX@*'1H
M:7,M/BIP7W9A;'5E*3L*"0E]"@H)"79A;'5E7W1Y<&4_at_8V]N<W0@)B!G970H
M*2!C;VYS= H)"7L*"0D)<F5T=7)N("AT:&ES+3XJ<%]V86QU92D["@D)?0H*
M"7!R:79A=&4Z"@D)<')E9FEX*'!R969I>"!C;VYS=" F*3L*"@D)8VAA<B!M
M7V)U9F9E<EMS:7IE;V8H=F%L=65?='EP92E=.PH*"0ES=&%T:6,@=F%L=65?
M='EP92!P<F5F:7_at_[hidden]@8V]N<W0@<%]V86QU92 ](')E:6YT97)P<F5T7V-A
M<W0\=F%L=65?='EP92!P<F5F:7_at_[hidden]^*"8@<')E9FEX.CIM7V)U9F9E<BD[
M"@E].PH*"G1E;7!L871E(#QT>7!E;F%M92!?5#X*"79O:60@*B!O<&5R871O
M<B!N97<@*'-I>F5?="!A7W,L('!R969I>#Q?5#X@)B!A7W I"@E["@D)<F5T
;=7)N("8_at_85]P.PH)?0H*"GT*"@HC96YD:68*
`
end

begin 666 benchmark.cpp
M(VEN8VQU9&4@/&QI<W0^"B-I;F-L=61E(#QI;W-T<F5A;3X*(VEN8VQU9&4@
M(G!R969I>"YH(@HC:6YC;'5D92 B<W%U861?<'1R+F_at_B"B-I;F-L=61E(#QB
M;V]S="]S:&%R961?<'1R+FAP<#X*(VEN8VQU9&4@/&)O;W-T+V1E=&%I;"]S
M:&%R961?8V]U;G0N:'!P/@HC:6YC;'5D92 \=&EM92YH/@HC:6YC;'5D92 \
M;6%L;&]C+F@^"@IU<VEN9R!N86UE<W!A8V4@<W1D.PIU<VEN9R!N86UE<W!A
M8V4_at_9F1I.PIU<VEN9R!N86UE<W!A8V4_at_8F]O<W0["@IS=')U8W0_at_5 I["@EI
M;G0@:3L*"@ES=&%T:6,@:6YT(&-O;G-T('1E<W0@/2 Q,# ["@H)5"AI;G0@
M82D_at_.B!I*&$I"@E["@D)9F]R("AI;G0@:2 ](# [(&D@/"!T97-T.R K*R!I
M*2![?0H)?0H*"50H5"!C;VYS=" F(&$I(#H@:2AA+FDI"@E["@D)9F]R("AI
M;G0@:2 ](# [(&D@/"!T97-T.R K*R!I*2![?0H)?0H*"7Y4*"D*"7L*"0EF
M;W(@*&EN="!I(#T@,#L@:2 \('1E<W0[("LK(&DI('M]"@E]"GT["@II;G0@
M;6%I;B_at_I"GL*"7-T<G5C="!T:6UE<W!E8R!R97-;,ET["@H)8V]U=" \/"!E
M;F1L(#P\(")297-S;W5R8V5S(')E<75I<F5D(&)Y('-H87)E9%]T<CP^.B(@
M/#P_at_96YD;#L*"7L*"0EL:7-T/"!S:&%R961?<'1R/%0^(#X@)B!L*"H@;F5W
M(&QI<W0\('-H87)E9%]P='(\5#X@/BD["@H)"7L*"0D)8VQO8VM?9V5T=&EM
M92A#3$]#2U]214%,5$E-12P@)B!R97-;,%TI.PH*"0D)9F]R("AI;G0@:2 ]
M(# [(&D@/" Q,# P.R K*R!I*0H)"0E["@D)"0EL+G!U<VA?8F%C:RAS:&%R
M961?<'1R/%0^*&YE=R!4*&DI*2D["@D)"7T*"@D)"6-L;V-K7V=E='1I;64H
M0TQ/0TM?4D5!3%1)344L("8@<F5S6S%=*3L*"@D)"6UA;&QO8U]S=&%T<R_at_I
M.PH*"0D)8V]U=" \/" B;&ES="!S:&%R961?<'1R/#X@=&]O:R B(#P\("AR
M97-;,5TN='9?;G-E8R M(')E<ULP72YT=E]N<V5C*2 \/" B(&YA;F]S96-O
M;F1S('1O(&-O;G-T<G5C="XB(#P\(&5N9&P["@D)?0H*"0E["@D)"6-L;V-K
M7V=E='1I;64H0TQ/0TM?4D5!3%1)344L("8@<F5S6S!=*3L*"@D)"6QI<W0\
M('-H87)E9%]P='(\5#X@/BAL+F)E9VEN*"DL(&PN96YD*"DI.PH*"0D)8VQO
M8VM?9V5T=&EM92A#3$]#2U]214%,5$E-12P@)B!R97-;,5TI.PH*"0D)8V]U
M=" \/" B;&ES="!S:&%R961?<'1R/#X@=&]O:R B(#P\("AR97-;,5TN='9?
M;G-E8R M(')E<ULP72YT=E]N<V5C*2 \/" B(&YA;F]S96-O;F1S('1O(&-O
M<'DN(B \/"!E;F1L.PH)"7T*"@D)>PH)"0EC;&]C:U]G971T:6UE*$-,3T-+
M7U)%04Q424U%+" F(')E<ULP72D["@H)"0EL+GYL:7-T/"!S:&%R961?<'1R
M/%0^(#XH*3L*"@D)"6-L;V-K7V=E='1I;64H0TQ/0TM?4D5!3%1)344L("8@
M<F5S6S%=*3L*"@D)"6-O=70@/#P@(FQI<W0@<VAA<F5D7W!T<CP^('1O;VL@
M(B \/" H<F5S6S%=+G1V7VYS96,@+2!R97-;,%TN='9?;G-E8RD@/#P@(B!N
M86YO<V5C;VYD<R!T;R!D97-T<F]Y+B(@/#P_at_96YD;#L*"0E]"@E]"@H)8V]U
M=" \/"!E;F1L(#P\(")297-S;W5R8V5S(')E<75I<F5D(&)Y('-Q=6%D7W1R
M/#XZ(B \/"!E;F1L.PH)>PH)"6QI<W0\('-Q=6%D7W!T<CQ4/B ^("8@;"@J
M(&YE=R!L:7-T/"!S<75A9%]P='(\5#X@/BD["@H)"7L*"0D)8VQO8VM?9V5T
M=&EM92A#3$]#2U]214%,5$E-12P@)B!R97-;,%TI.PH*"0D)9F]R("AI;G0@
M:2 ](# [(&D@/" Q,# P.R K*R!I*0H)"0E["@D)"0EL+G!U<VA?8F%C:RAS
M<75A9%]N97<H5"P_at_5"AI*2DI.PH)"0E]"@H)"0EC;&]C:U]G971T:6UE*$-,
M3T-+7U)%04Q424U%+" F(')E<ULQ72D["@H)"0EM86QL;V-?<W1A=',H*3L*
M"@D)"6-O=70@/#P@(FQI<W0@<W%U861?<'1R/#X@=&]O:R B(#P\("AR97-;
M,5TN='9?;G-E8R M(')E<ULP72YT=E]N<V5C*2 \/" B(&YA;F]S96-O;F1S
M('1O(&-O;G-T<G5C="XB(#P\(&5N9&P["@D)?0H*"0E["@D)"6-L;V-K7V=E
M='1I;64H0TQ/0TM?4D5!3%1)344L("8@<F5S6S!=*3L*"@D)"6QI<W0\('-Q
M=6%D7W!T<CQ4/B ^*&PN8F5G:6XH*2P@;"YE;F0H*2D["@H)"0EC;&]C:U]G
M971T:6UE*$-,3T-+7U)%04Q424U%+" F(')E<ULQ72D["@H)"0EC;W5T(#P\
M(")L:7-T('-Q=6%D7W!T<CP^('1O;VL@(B \/" H<F5S6S%=+G1V7VYS96,@
M+2!R97-;,%TN='9?;G-E8RD@/#P@(B!N86YO<V5C;VYD<R!T;R!C;W!Y+B(@
M/#P_at_96YD;#L*"0E]"@H)"7L*"0D)8VQO8VM?9V5T=&EM92A#3$]#2U]214%,
M5$E-12P@)B!R97-;,%TI.PH*"0D);"Y^;&ES=#P@<W%U861?<'1R/%0^(#XH
M*3L*"@D)"6-L;V-K7V=E='1I;64H0TQ/0TM?4D5!3%1)344L("8@<F5S6S%=
M*3L*"@D)"6-O=70@/#P@(FQI<W0@<W%U861?<'1R/#X@=&]O:R B(#P\("AR
M97-;,5TN='9?;G-E8R M(')E<ULP72YT=E]N<V5C*2 \/" B(&YA;F]S96-O
M;F1S('1O(&1E<W1R;WDN(B \/"!E;F1L.PH)"7T*"7T*"@ER971U<FX@,#L*
"?0H`
`
end

begin 666 testplist.cpp
M(VEN8VQU9&4@/&QI<W0^"B-I;F-L=61E(#QI;W-T<F5A;3X*(VEN8VQU9&4@
M(G!R969I>"YH(@HC:6YC;'5D92 B<W%U861?<'1R+F_at_B"B-I;F-L=61E(#QB
M;V]S="]S:&%R961?<'1R+FAP<#X*"G5S:6YG(&YA;65S<&%C92!S=&0["G5S
M:6YG(&YA;65S<&%C92!F9&D["@IS=')U8W0_at_5 I["@EI;G0@:3L*"@E4*&EN
M="!A*2 Z(&DH82D*"7L*"0EC;W5T(#P\(%]?4%)%5%197T953D-424].7U\@
M/#P_at_96YD;#L*"0EF;W(@*&EN="!I(#T@,#L@:2 \(#$P,# P,# P,#L@*RL@
M:2D@>WT*"7T*"@E4*%0_at_8V]N<W0@)B!A*2 Z(&DH82YI*0H)>PH)"6-O=70@
M/#P_at_7U]04D545%E?1E5.0U1)3TY?7R \/"!E;F1L.PH)"69O<B H:6YT(&D@
M/2 P.R!I(#P@,3 P,# P,# P.R K*R!I*2![?0H)?0H*"7Y4*"D*"7L*"0EC
M;W5T(#P\(%]?4%)%5%197T953D-424].7U\@/#P_at_96YD;#L*"7T*?3L*"G1E
M;7!L871E(#QT>7!E;F%M92!?5#X*"7-T<G5C="!P;&ES= H)>PH)"7-T<G5C
M="!N;V1E.PH*"0EP<F5F:7@\7U0^("8@<'5S:%]B86-K*"D*"0E["@D)"6U?
M;&%S=" ]('-Q=6%D7VYE=RAN;V1E+"!N;V1E*&U?;&%S="DI.PH)"0ER971U
M<FX@*B!M7VQA<W0["@D)?0H*"0E?5" F(&)A8VLH*0H)"7L*"0D)<F5T=7)N
M(&U?;&%S="T^9V5T*"D["@D)?0H*"7!R:79A=&4Z"@D)<W1R=6-T(&YO9&4@
M.B!P<F5F:7@\7U0^"@D)>PH)"0EF<FEE;F0_at_8VQA<W,@<&QI<W0["@H)"0EN
M;V1E*'-Q=6%D7W!T<CQN;V1E/B!A7W I(#H@;5]N97AT*&%?<"D@>WT*"@D)
M<')I=F%T93H*"0D)<W%U861?<'1R/&YO9&4^(&U?;F5X=#L*"0E].PH*"0ES
M<75A9%]P='(\;F]D93X@;5]L87-T.PH)?3L*"FEN="!M86EN*"D*>PH)8V]U
M=" \/"!E;F1L(#P\("(Q.B B(#P\(&5N9&P["@E["@D)<W%U861?<'1R/%0^
M(' @/2!S<75A9%]N97<H5"P_at_5"@Y*2D["@H)"6-O=70@/#P@(BAP+3YI(#T]
M("(@/#P@<"T^:2 \/" B*2(@/#P_at_96YD;#L*"7T*"@EC;W5T(#P\(&5N9&P@
M/#P@(C(Z("(@/#P_at_96YD;#L*"7L*"0EP;&ES=#Q4/B!D.PH*"0EN97<@*&0N
M<'5S:%]B86-K*"DI(%0H-BD["@D);F5W("AD+G!U<VA?8F%C:R_at_I*2!4*#<I
M.PH)"6YE=R H9"YP=7-H7V)A8VLH*2D_at_5"@X*3L*"@D)8V]U=" \/" B*&0N
M8F%C:R_at_I(#T]("(@/#P_at_9"YB86-K*"DN:2 \/" B*2(@/#P_at_96YD;#L*"7T*
"?0H`
`
end


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk