|
|
1.1 ! root 1: /* ! 2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved. ! 3: ! 4: Governed by the TrueCrypt License 2.4 the full text of which is contained ! 5: in the file License.txt included in TrueCrypt binary and source code ! 6: distribution packages. ! 7: */ ! 8: ! 9: #ifndef TC_HEADER_Platform_Finally ! 10: #define TC_HEADER_Platform_Finally ! 11: ! 12: #include "PlatformBase.h" ! 13: ! 14: // Execute defined code when leaving scope ! 15: #define finally_do(code) struct TC_JOIN(Finally,__LINE__) { TC_JOIN(~Finally,__LINE__) () { code } } TC_JOIN(finally,__LINE__) ! 16: ! 17: // Execute defined code with argument 'finally_arg' when leaving scope ! 18: #define finally_do_arg(argType, arg, code) struct TC_JOIN(Finally,__LINE__) \ ! 19: { \ ! 20: TC_JOIN(Finally,__LINE__) (argType a) : finally_arg (a) { } \ ! 21: TC_JOIN(~Finally,__LINE__) () { code } \ ! 22: argType finally_arg; \ ! 23: } TC_JOIN(finally,__LINE__) (arg) ! 24: ! 25: #define finally_do_arg2(argType, arg, argType2, arg2, code) struct TC_JOIN(Finally,__LINE__) \ ! 26: { \ ! 27: TC_JOIN(Finally,__LINE__) (argType a, argType2 a2) : finally_arg (a), finally_arg2 (a2) { } \ ! 28: TC_JOIN(~Finally,__LINE__) () { code } \ ! 29: argType finally_arg; \ ! 30: argType2 finally_arg2; \ ! 31: } TC_JOIN(finally,__LINE__) (arg, arg2) ! 32: ! 33: //#define finally_do_arg2(argType, arg, argType2, arg2, code) struct TC_JOIN(Finally,__LINE__) { argType finally_arg; TC_JOIN(Finally,__LINE__) (argType a) : finally_arg (a) { } TC_JOIN(~Finally,__LINE__) () { code } } TC_JOIN(finally,__LINE__) (arg) ! 34: ! 35: #endif // TC_HEADER_Platform_Finally
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.