// Author: Vadim Zeitlin
// Modified by:
// Created: 03.07.2003
-// RCS-ID: $Id$
// Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#else
-// namespace support was first implemented in gcc-2.95,
-// so avoid using it for older versions.
-#if !defined(__GNUC__) || wxCHECK_GCC_VERSION(2, 95)
-
-#define wxHAS_NAMESPACES
-
namespace wxPrivate
{
-#else
-#define wxPrivate
-#endif
// in the original implementation this was a member template function of
// ScopeGuardImplBase but gcc 2.8 which is still used for OS/2 doesn't
// support member templates and so we must make it global
void Use(const T& WXUNUSED(t))
{
}
-#if !defined(__GNUC__) || wxCHECK_GCC_VERSION(2, 95)
} // namespace wxPrivate
-#endif
#define wxPrivateOnScopeExit(n) wxPrivate::OnScopeExit(n)
#define wxPrivateUse(n) wxPrivate::Use(n)
// setting a variable to some value on block exit
// ----------------------------------------------------------------------------
-#ifdef wxHAS_NAMESPACES
-
namespace wxPrivate
{
// empty class just to be able to define a reference to it
-class VariableSetterBase { };
+class VariableSetterBase : public wxScopeGuardImplBase { };
typedef const VariableSetterBase& VariableSetter;
{
}
- ~VariableSetterImpl()
- {
- m_var = m_value;
- }
+ ~VariableSetterImpl() { wxPrivateOnScopeExit(*this); }
+
+ void Execute() { m_var = m_value; }
private:
T& m_var;
{
}
- ~VariableNullerImpl()
- {
- m_var = NULL;
- }
+ ~VariableNullerImpl() { wxPrivateOnScopeExit(*this); }
+
+ void Execute() { m_var = NULL; }
private:
T& m_var;
return wxPrivate::VariableNullerImpl<T>(var);
}
-#endif // wxHAS_NAMESPACES
-
// ============================================================================
// macros for declaring unnamed scoped guards (which can't be dismissed)
// ============================================================================