git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54385 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        scopeguard.h
 | 
						|
// Purpose:     interface of global functions
 | 
						|
// Author:      wxWidgets team
 | 
						|
// RCS-ID:      $Id$
 | 
						|
// Licence:     wxWindows license
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
/** @ingroup group_funcmacro_misc */
 | 
						|
//@{
 | 
						|
/**
 | 
						|
    This macro ensures that the global @a function with 0, 1, 2 or more
 | 
						|
    parameters (up to some implementation-defined limit) is executed on scope
 | 
						|
    exit, whether due to a normal function return or because an exception has
 | 
						|
    been thrown. A typical example of its usage:
 | 
						|
 | 
						|
    @code
 | 
						|
    void *buf = malloc(size);
 | 
						|
    wxON_BLOCK_EXIT1(free, buf);
 | 
						|
    @endcode
 | 
						|
 | 
						|
    Please see the original article by Andrei Alexandrescu and Petru Marginean
 | 
						|
    published in December 2000 issue of C/C++ Users Journal for more details.
 | 
						|
 | 
						|
    @see wxON_BLOCK_EXIT_OBJ0()
 | 
						|
 | 
						|
    @header{wx/scopeguard.h}
 | 
						|
*/
 | 
						|
#define wxON_BLOCK_EXIT0(function)
 | 
						|
#define wxON_BLOCK_EXIT1(function, p1)
 | 
						|
#define wxON_BLOCK_EXIT2(function, p1, p2)
 | 
						|
//@}
 | 
						|
 | 
						|
/** @ingroup group_funcmacro_misc */
 | 
						|
//@{
 | 
						|
/**
 | 
						|
    This family of macros is similar to wxON_BLOCK_EXIT0(), but calls a method
 | 
						|
    of the given object instead of a free function.
 | 
						|
 | 
						|
    @header{wx/scopeguard.h}
 | 
						|
*/
 | 
						|
#define wxON_BLOCK_EXIT_OBJ0(object, method)
 | 
						|
#define wxON_BLOCK_EXIT_OBJ1(object, method, p1)
 | 
						|
#define wxON_BLOCK_EXIT_OBJ2(object, method, p1, p2)
 | 
						|
//@}
 | 
						|
 | 
						|
/** @ingroup group_funcmacro_misc */
 | 
						|
//@{
 | 
						|
/**
 | 
						|
    This family of macros is similar to wxON_BLOCK_OBJ0(), but calls a method
 | 
						|
    of @c this object instead of a method of the specified object.
 | 
						|
 | 
						|
    @header{wx/scopeguard.h}
 | 
						|
*/
 | 
						|
#define wxON_BLOCK_EXIT_THIS0(method)
 | 
						|
#define wxON_BLOCK_EXIT_THIS1(method, p1)
 | 
						|
#define wxON_BLOCK_EXIT_THIS2(method, p1, p2)
 | 
						|
//@}
 | 
						|
 | 
						|
/** @ingroup group_funcmacro_misc */
 | 
						|
//@{
 | 
						|
/**
 | 
						|
    This macro sets a variable to the specified value on scope exit.
 | 
						|
 | 
						|
    Example of usage:
 | 
						|
    @code
 | 
						|
    void foo()
 | 
						|
    {
 | 
						|
        bool isDoingSomething = true;
 | 
						|
        {
 | 
						|
            wxON_BLOCK_EXIT_SET(isDoingSomething, false);
 | 
						|
            ... do something ...
 | 
						|
        }
 | 
						|
        ... isDoingSomething is false now ...
 | 
						|
    }
 | 
						|
    @endcode
 | 
						|
 | 
						|
    @see wxON_BLOCK_EXIT_OBJ0(), wxON_BLOCK_EXIT_NULL()
 | 
						|
 | 
						|
    @header{wx/scopeguard.h}
 | 
						|
*/
 | 
						|
#define wxON_BLOCK_EXIT_SET(var, value)
 | 
						|
 | 
						|
/**
 | 
						|
    This macro sets the pointer passed to it as argument to NULL on scope exit.
 | 
						|
 | 
						|
    It must be used instead of wxON_BLOCK_EXIT_SET() when the value being set
 | 
						|
    is @c NULL.
 | 
						|
 | 
						|
    @header{wx/scopeguard.h}
 | 
						|
 */
 | 
						|
#define wxON_BLOCK_EXIT_NULL(ptr)
 | 
						|
 | 
						|
//@}
 | 
						|
 |