X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7fa7088e4ccf5820b29ced3388e5e5b205be773a..3e8ec9540118e43f48507ba2f222a3f8e361b4bb:/interface/scopeguard.h diff --git a/interface/scopeguard.h b/interface/scopeguard.h index 495ed93199..e8c88a7989 100644 --- a/interface/scopeguard.h +++ b/interface/scopeguard.h @@ -10,7 +10,7 @@ //@{ /** 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 + 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: @@ -44,3 +44,52 @@ #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) + +//@} +