2008-03-08 13:52:38 +00:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
2008-03-08 14:43:31 +00:00
|
|
|
// Name: scopeguard.h
|
2008-03-10 15:24:38 +00:00
|
|
|
// Purpose: interface of global functions
|
2008-03-08 14:43:31 +00:00
|
|
|
// Author: wxWidgets team
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Licence: wxWindows license
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
2008-03-23 18:24:32 +00:00
|
|
|
/** @ingroup group_funcmacro_misc */
|
2008-03-08 14:43:31 +00:00
|
|
|
//@{
|
2008-03-08 13:52:38 +00:00
|
|
|
/**
|
2008-03-23 18:24:32 +00:00
|
|
|
This macro ensures that the global @a function with 0, 1, 2 or more
|
|
|
|
parameters (up to some implementaton-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:
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-08 13:52:38 +00:00
|
|
|
@code
|
|
|
|
void *buf = malloc(size);
|
2008-03-23 18:24:32 +00:00
|
|
|
wxON_BLOCK_EXIT1(free, buf);
|
2008-03-08 13:52:38 +00:00
|
|
|
@endcode
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-08 13:52:38 +00:00
|
|
|
Please see the original article by Andrei Alexandrescu and Petru Marginean
|
2008-03-23 18:24:32 +00:00
|
|
|
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.
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-23 18:24:32 +00:00
|
|
|
@header{wx/scopeguard.h}
|
2008-03-08 13:52:38 +00:00
|
|
|
*/
|
2008-03-23 18:24:32 +00:00
|
|
|
#define wxON_BLOCK_EXIT_OBJ0(object, method)
|
|
|
|
#define wxON_BLOCK_EXIT_OBJ1(object, method, p1)
|
|
|
|
#define wxON_BLOCK_EXIT_OBJ2(object, method, p1, p2)
|
2008-03-08 13:52:38 +00:00
|
|
|
//@}
|
|
|
|
|