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

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