Annotation of truecrypt/platform/finally.h, revision 1.1.1.3

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.