|
Boost : |
From: Maxim Egorushkin (e-maxim_at_[hidden])
Date: 2003-09-24 15:33:42
"Dumbnose" <dumbnose_at_[hidden]> wrote in message
news:Law10-OE48pmrsMdOkT00002773_at_hotmail.com...
> I hadn't set out to do this. I couldn't find the download for the code
from
> the original article. So, I was just sitting at a coffe shop to
reimplement
> it as described in the article. I got sick of cutting and pasting and
> decided to do this instead. I only tried it with Visual C++ 7.1 so far.
> Once I get a few minutes, I will check it with Comeau and GCC (I've been
at
> work for two days straight, so I'm a little slap happy right now). I am
> attaching my implementation as well as the basic tests I created for it.
>
> John
Whoa!.. boost::function<> based implementation looks too heavy for me.
I use something much more lightweight (I haven't posted the code here as I
thought there won't be any interest).
begin 666 scope_guard.hpp
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O#0HO+R!S8V]P95]G=6%R9"YH<' -"@T*(W!R86=M82!O;F-E#0H-
M"B\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+PT*#0IN86UE<W!A8V4@=71I; T*>PT*#0HO+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\-"@T*;F%M
M97-P86-E(&1E=&%I; T*>PT*#0HO+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\-"@T*8VQA<W,@<V-O<&5?9W5A
M<F1?8F%S90T*>PT*<'5B;&EC._at_T*"79O:60_at_8V]M;6ET*"D_at_8V]N<W0-"@E[
M#0H)"61O7W)O;&QB86-K7R ](&9A;'-E.PT*"7T-"@T*<')O=&5C=&5D._at_T*
M"7-C;W!E7V=U87)D7V)A<V4H*0T*"0DZ"61O7W)O;&QB86-K7RAT<G5E*0T*
M"7M]#0H-"@EM=71A8FQE(&)O;VP_at_9&]?<F]L;&)A8VM?.PT*?3L-"@T*+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O#0H-"G1E;7!L871E/&-L87-S($8^#0IC;&%S<R!S8V]P95]G=6%R9%]I
M;7!L(#H@<'5B;&EC('-C;W!E7V=U87)D7V)A<V4-"GL-"G!U8FQI8SH-"@EE
M>'!L:6-I="!S8V]P95]G=6%R9%]I;7!L*&-O;G-T($8F(&8I#0H)"3H)<F]L
M;&)A8VM?*&8I#0H)>WT-"@T*"7YS8V]P95]G=6%R9%]I;7!L*"D-"@E[#0H)
M"6EF*&1O7W)O;&QB86-K7RD-"@D)"7)O;&QB86-K7R_at_[hidden]*"7T-"@T*<')I
M=F%T93H-"@E&(')O;&QB86-K7SL-"GT[#0H-"B\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+PT*#0I]("\O(&YA
M;65S<&%C92!D971A:6P-"@T*+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O#0H-"G1Y<&5D968_at_8V]N<W0_at_9&5T
M86EL.CIS8V]P95]G=6%R9%]B87-E)B!S8V]P95]G=6%R9#L-"@T*=&5M<&QA
M=&4\8VQA<W,@1CX-"FEN;&EN92!D971A:6PZ.G-C;W!E7V=U87)D7VEM<&P\
M1CX@;6%K95]G=6%R9"AC;VYS="!&)B!F*0T*>PT*"7)E='5R;B!D971A:6PZ
M.G-C;W!E7V=U87)D7VEM<&P\1CXH9BD[#0I]#0H-"B\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+PT*#0I]("\O
M(&YA;65S<&%C92!U=&EL#0H-"B\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
;+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+PT*
`
end
begin 666 test.cpp
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O#0HO+R!T97-T+F-P< T*#0HC:6YC;'5D92 \=VEN9&]W<RYH/@T*
M#0HC9&5F:6YE($)/3U-47T))3D1?14Y!0DQ%7U-41$-!3$P-"B-I;F-L=61E
M(#QB;V]S="]B:6YD+FAP<#X-"B-I;F-L=61E(#QB;V]S="]R968N:'!P/@T*
M#0HC:6YC;'5D92 B<V-O<&5?9W5A<F0N:'!P(@T*#0HO+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\-"@T*=7-I
M;F<@=71I;#HZ<V-O<&5?9W5A<F0[#0IU<VEN9R!U=&EL.CIM86ME7V=U87)D
M.PT*#0HO+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\-"@T*=F]I9"!T97-T7S$H*0T*>PT*"79O:60J(' @/2 P
M.PT*#0H)+R\@<&%S<R!A(')E9F5R96YC92!T;R!P+"!D969E<B!C86QL('1O
M(&9R964H<"D-"@ES8V]P95]G=6%R9"!G*&UA:V5?9W5A<F0H8F]O<W0Z.F)I
M;F0H)F9R964L(&)O;W-T.CIR968H<"DI*2D[#0H-"@EP(#T@;6%L;&]C*#!X
M,3 I.PT*#0H)+R\@?F<@8V%L;',@9G)E92AP*0T*?0T*#0HO+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\-"@T*
M=F]I9"!T97-T7S(H*0T*>PT*"79O:60@*G @/2 P.PT*#0H)<" ](&UA;&QO
M8R_at_P>#$P*3L@+R\@*#$I#0H)+R\@<&%S<R!T:&4_at_8W5R<F5N="!P('9A;'5E
M+"!D969E<B!C86QL('1O(&9R964H<"D-"@ES8V]P95]G=6%R9"!G,2AM86ME
M7V=U87)D*&)O;W-T.CIB:6YD*"9F<F5E+"!P*2DI.PT*#0H)<" ](&UA;&QO
M8R_at_P>#$P*3L@+R\@*#(I#0H)+R\@<&%S<R!T:&4_at_8W5R<F5N="!P('9A;'5E
M+"!D969E<B!C86QL('1O(&9R964H<"D-"@ES8V]P95]G=6%R9"!G,BAM86ME
M7V=U87)D*&)O;W-T.CIB:6YD*"9F<F5E+"!P*2DI.PT*#0H)<" ](&UA;&QO
M8R_at_P>#$P*3L@+R\@*#,I#0H)+R\@<&%S<R!T:&4_at_8W5R<F5N="!P('9A;'5E
M+"!D969E<B!C86QL('1O(&9R964H<"D-"@ES8V]P95]G=6%R9"!G,RAM86ME
M7V=U87)D*&)O;W-T.CIB:6YD*"9F<F5E+"!P*2DI.R -"@T*"2\O('YG,R!C
M86QL<R!F<F5E*' I+"!P(#T]("@S*0T*"2\O('YG,R!C86QL<R!F<F5E*' I
M+"!P(#T]("@R*0T*"2\O('YG,R!C86QL<R!F<F5E*' I+"!P(#T]("@Q*0T*
M?0T*#0HO+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\-"@T*=F]I9"!T97-T7S,H*0T*>PT*"3HZ0V]);FET:6%L
M:7IE*# I.PT*#0H)+R\@9&5F97(@8V%L;"!T;R Z.D-O56YI;FET:6%L:7IE
M*"D-"@ES8V]P95]G=6%R9"!G,2AM86ME7V=U87)D*&)O;W-T.CIB:6YD*"8Z
M.D-O56YI;FET:6%L:7IE*2DI.R -"@T*"2\O('YG,2!C86QL<R Z.D-O56YI
M;FET:6%L:7IE*"D-"GT-"@T*+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O#0H-"G9O:60@=&5S=%\T*"D-"GL-
M"@EV;VED*B!P(#T_at_[hidden](96%P06QL;V,H.CI'9710<F]C97-S2&5A<"@I+" P
M+" P>#$P*3L-"@D-"@DO+R!D969E<B!C86QL('1O(#HZ2&5A<$9R964H.CI'
M9710<F]C97-S2&5A<"@I+" P+"!P*0T*"7-C;W!E7V=U87)D(&<Q*&UA:V5?
M9W5A<F0H8F]O<W0Z.F)I;F0H)CHZ2&5A<$9R964L(#HZ1V5T4')O8V5S<TAE
M87 H*2P@,"P@<"DI*3L@+R\@*#$I#0H-"@DO+R!^9S$@8V%L;',@.CI(96%P
M1G)E92_at_Z.D=E=%!R;V-E<W-(96%P*"DL(' I+" Z.D=E=%!R;V-E<W-(96%P
M*"D@/3T@*#$I+"!P(#T]("@Q*0T*?0T*#0HO+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\-"@T*:6YT(&UA:6XH
M*0T*>PT*"71E<W1?,2_at_[hidden]*"71E<W1?,B_at_[hidden]*"71E<W1?,R_at_[hidden]*"71E
M<W1?-"@I.PT*#0H)<F5T=7)N(# [#0I]#0H-"B\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
F+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+PT*#0H`
`
end
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk