|
|
1.1 root 1: /*
2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
3:
1.1.1.3 ! root 4: Governed by the TrueCrypt License 2.5 the full text of which is contained
1.1 root 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:
1.1.1.2 root 14: // Execute code when leaving scope
15: #define finally_do(code) \
16: struct TC_JOIN(Finally,__LINE__) \
17: { \
18: TC_JOIN(~Finally,__LINE__) () { code } \
19: } \
20: TC_UNUSED_VAR \
21: TC_JOIN(finally,__LINE__)
1.1 root 22:
1.1.1.2 root 23: // Execute code with argument 'finally_arg' when leaving scope
24: #define finally_do_arg(argType, arg, code) \
25: struct TC_JOIN(Finally,__LINE__) \
1.1 root 26: { \
27: TC_JOIN(Finally,__LINE__) (argType a) : finally_arg (a) { } \
28: TC_JOIN(~Finally,__LINE__) () { code } \
29: argType finally_arg; \
1.1.1.2 root 30: } \
31: TC_UNUSED_VAR \
32: TC_JOIN(finally,__LINE__) (arg)
1.1 root 33:
1.1.1.2 root 34: #define finally_do_arg2(argType, arg, argType2, arg2, code) \
35: struct TC_JOIN(Finally,__LINE__) \
1.1 root 36: { \
37: TC_JOIN(Finally,__LINE__) (argType a, argType2 a2) : finally_arg (a), finally_arg2 (a2) { } \
38: TC_JOIN(~Finally,__LINE__) () { code } \
39: argType finally_arg; \
40: argType2 finally_arg2; \
1.1.1.2 root 41: } \
42: TC_UNUSED_VAR \
43: TC_JOIN(finally,__LINE__) (arg, arg2)
1.1 root 44:
45:
46: #endif // TC_HEADER_Platform_Finally
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.