| Version: 3.1.5

Classes | Macros | Functions
scopeguard.h File Reference

## Classes
class | wxScopeGuard
| Scope guard is an object which allows executing an action on scope exit. More...

## Macros
#define | wxON_BLOCK_EXIT(function, ...)
| Ensure that the global function with a few (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. More...
#define | wxON_BLOCK_EXIT0(function)
#define | wxON_BLOCK_EXIT1(function, p1)
#define | wxON_BLOCK_EXIT2(function, p1, p2)
#define | wxON_BLOCK_EXIT3(function, p1, p2, p3)
#define | wxON_BLOCK_EXIT_OBJ(object, method, ...)
| This family of macros is similar to wxON_BLOCK_EXIT(), but calls a method of the given object instead of a free function. More...
#define | wxON_BLOCK_EXIT_OBJ0(object, method)
#define | wxON_BLOCK_EXIT_OBJ1(object, method, p1)
#define | wxON_BLOCK_EXIT_OBJ2(object, method, p1, p2)
#define | wxON_BLOCK_EXIT_OBJ3(object, method, p1, p2, p3)
#define | wxON_BLOCK_EXIT_THIS(method, ...)
| This family of macros is similar to wxON_BLOCK_OBJ(), but calls a method of `this` object instead of a method of the specified object. More...
#define | wxON_BLOCK_EXIT_THIS0(method)
#define | wxON_BLOCK_EXIT_THIS1(method, p1)
#define | wxON_BLOCK_EXIT_THIS2(method, p1, p2)
#define | wxON_BLOCK_EXIT_THIS3(method, p1, p2, p3)
#define | wxON_BLOCK_EXIT_SET(var, value)
| This macro sets a variable to the specified value on scope exit. More...
#define | wxON_BLOCK_EXIT_NULL(ptr)
| This macro sets the pointer passed to it as argument to NULL on scope exit. More...

## Functions
template<typename F , typename P1 , ... , typename PN >
wxScopeGuard | wxMakeGuard (F func, P1 p1,..., PN pN)
| Returns a scope guard object which will call the specified function with the given parameters on scope exit. More...

## Macro Definition Documentation

## ◆ wxON_BLOCK_EXIT

#define wxON_BLOCK_EXIT | ( |  | function,
|  |  | ...
| ) |  |

Ensure that the global function with a few (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:

void *buf = malloc(size);
wxON_BLOCK_EXIT1(free, buf);
wxON_BLOCK_EXIT1
#define wxON_BLOCK_EXIT1(function, p1)
Definition: scopeguard.h:80

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 also
  wxON_BLOCK_EXIT_OBJ0()

Include file:

    #include <wx/scopeguard.h>

## ◆ wxON_BLOCK_EXIT0

#define wxON_BLOCK_EXIT0 | ( |  | function | ) |

## ◆ wxON_BLOCK_EXIT1

#define wxON_BLOCK_EXIT1 | ( |  | function,
|  |  | p1
| ) |  |

## ◆ wxON_BLOCK_EXIT2

#define wxON_BLOCK_EXIT2 | ( |  | function,
|  |  | p1,
|  |  | p2
| ) |  |

## ◆ wxON_BLOCK_EXIT3

#define wxON_BLOCK_EXIT3 | ( |  | function,
|  |  | p1,
|  |  | p2,
|  |  | p3
| ) |  |

## ◆ wxON_BLOCK_EXIT_NULL

#define wxON_BLOCK_EXIT_NULL | ( |  | ptr | ) |

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 `NULL`.

Include file:

    #include <wx/scopeguard.h>

## ◆ wxON_BLOCK_EXIT_OBJ

#define wxON_BLOCK_EXIT_OBJ | ( |  | object,
|  |  | method,
|  |  | ...
| ) |  |

This family of macros is similar to wxON_BLOCK_EXIT(), but calls a method of the given object instead of a free function.

Include file:

    #include <wx/scopeguard.h>

## ◆ wxON_BLOCK_EXIT_OBJ0

#define wxON_BLOCK_EXIT_OBJ0 | ( |  | object,
|  |  | method
| ) |  |

## ◆ wxON_BLOCK_EXIT_OBJ1

#define wxON_BLOCK_EXIT_OBJ1 | ( |  | object,
|  |  | method,
|  |  | p1
| ) |  |

## ◆ wxON_BLOCK_EXIT_OBJ2

#define wxON_BLOCK_EXIT_OBJ2 | ( |  | object,
|  |  | method,
|  |  | p1,
|  |  | p2
| ) |  |

## ◆ wxON_BLOCK_EXIT_OBJ3

#define wxON_BLOCK_EXIT_OBJ3 | ( |  | object,
|  |  | method,
|  |  | p1,
|  |  | p2,
|  |  | p3
| ) |  |

## ◆ wxON_BLOCK_EXIT_SET

#define wxON_BLOCK_EXIT_SET | ( |  | var,
|  |  | value
| ) |  |

This macro sets a variable to the specified value on scope exit.

Example of usage:

void foo()
{
bool isDoingSomething = true;
{
wxON_BLOCK_EXIT_SET(isDoingSomething, false);
... do something ...
}
... isDoingSomething is false now ...
}
wxON_BLOCK_EXIT_SET
#define wxON_BLOCK_EXIT_SET(var, value)
This macro sets a variable to the specified value on scope exit.
Definition: scopeguard.h:140

Notice that value is copied, i.e. stored by value, so it can be a temporary object returned by a function call, for example.

See also
  wxON_BLOCK_EXIT_OBJ0(), wxON_BLOCK_EXIT_NULL()

Include file:

    #include <wx/scopeguard.h>

## ◆ wxON_BLOCK_EXIT_THIS

#define wxON_BLOCK_EXIT_THIS | ( |  | method,
|  |  | ...
| ) |  |

This family of macros is similar to wxON_BLOCK_OBJ(), but calls a method of `this` object instead of a method of the specified object.

Include file:

    #include <wx/scopeguard.h>

## ◆ wxON_BLOCK_EXIT_THIS0

#define wxON_BLOCK_EXIT_THIS0 | ( |  | method | ) |

## ◆ wxON_BLOCK_EXIT_THIS1

#define wxON_BLOCK_EXIT_THIS1 | ( |  | method,
|  |  | p1
| ) |  |

## ◆ wxON_BLOCK_EXIT_THIS2

#define wxON_BLOCK_EXIT_THIS2 | ( |  | method,
|  |  | p1,
|  |  | p2
| ) |  |

## ◆ wxON_BLOCK_EXIT_THIS3

#define wxON_BLOCK_EXIT_THIS3 | ( |  | method,
|  |  | p1,
|  |  | p2,
|  |  | p3
| ) |  |

## Function Documentation

## ◆ wxMakeGuard()

template<typename F , typename P1 , ... , typename PN >

wxScopeGuard wxMakeGuard | ( | F | func,
|  | P1 | p1,
|  |  | ...,
|  | PN | pN
| ) |  |

Returns a scope guard object which will call the specified function with the given parameters on scope exit.

This function is overloaded to take several parameters up to some implementation-defined (but relatively low) limit.

The func should be a functor taking parameters of the types P1, ..., PN, i.e. the expression `func(p1, ..., pN)` should be valid.