|
|
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.