projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
removing unnecessary - and incorrect - override, fixes #14319
[wxWidgets.git]
/
include
/
wx
/
scopeguard.h
diff --git
a/include/wx/scopeguard.h
b/include/wx/scopeguard.h
index baa33fb799d78ef4f776b43ed40d2062016c11d3..434c89768d58d4ed29d12fe1476e3c15b9630d9e 100644
(file)
--- a/
include/wx/scopeguard.h
+++ b/
include/wx/scopeguard.h
@@
-51,17
+51,8
@@
#else
#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
{
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
// 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
@@
-84,9
+75,7
@@
namespace wxPrivate
void Use(const T& WXUNUSED(t))
{
}
void Use(const T& WXUNUSED(t))
{
}
-#if !defined(__GNUC__) || wxCHECK_GCC_VERSION(2, 95)
} // namespace wxPrivate
} // namespace wxPrivate
-#endif
#define wxPrivateOnScopeExit(n) wxPrivate::OnScopeExit(n)
#define wxPrivateUse(n) wxPrivate::Use(n)
#define wxPrivateOnScopeExit(n) wxPrivate::OnScopeExit(n)
#define wxPrivateUse(n) wxPrivate::Use(n)
@@
-397,13
+386,11
@@
wxMakeObjGuard(Obj& obj, MemFun memFun, P1 p1, P2 p2, P3 p3)
// setting a variable to some value on block exit
// ----------------------------------------------------------------------------
// 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
namespace wxPrivate
{
// empty class just to be able to define a reference to it
-class VariableSetterBase { };
+class VariableSetterBase
: public wxScopeGuardImplBase
{ };
typedef const VariableSetterBase& VariableSetter;
typedef const VariableSetterBase& VariableSetter;
@@
-411,20
+398,19
@@
template <typename T, typename U>
class VariableSetterImpl : public VariableSetterBase
{
public:
class VariableSetterImpl : public VariableSetterBase
{
public:
- VariableSetterImpl(T& var,
const U&
value)
+ VariableSetterImpl(T& var,
U
value)
: m_var(var),
m_value(value)
{
}
: m_var(var),
m_value(value)
{
}
- ~VariableSetterImpl()
- {
- m_var = m_value;
- }
+ ~VariableSetterImpl() { wxPrivateOnScopeExit(*this); }
+
+ void Execute() { m_var = m_value; }
private:
T& m_var;
private:
T& m_var;
- const U
&
m_value;
+ const U m_value;
// suppress the warning about assignment operator not being generated
VariableSetterImpl<T, U>& operator=(const VariableSetterImpl<T, U>&);
// suppress the warning about assignment operator not being generated
VariableSetterImpl<T, U>& operator=(const VariableSetterImpl<T, U>&);
@@
-439,10
+425,9
@@
public:
{
}
{
}
- ~VariableNullerImpl()
- {
- m_var = NULL;
- }
+ ~VariableNullerImpl() { wxPrivateOnScopeExit(*this); }
+
+ void Execute() { m_var = NULL; }
private:
T& m_var;
private:
T& m_var;
@@
-454,7
+439,7
@@
private:
template <typename T, typename U>
inline
template <typename T, typename U>
inline
-wxPrivate::VariableSetterImpl<T, U> wxMakeVarSetter(T& var,
const U&
value)
+wxPrivate::VariableSetterImpl<T, U> wxMakeVarSetter(T& var,
U
value)
{
return wxPrivate::VariableSetterImpl<T, U>(var, value);
}
{
return wxPrivate::VariableSetterImpl<T, U>(var, value);
}
@@
-469,8
+454,6
@@
wxPrivate::VariableNullerImpl<T> wxMakeVarNuller(T& var)
return wxPrivate::VariableNullerImpl<T>(var);
}
return wxPrivate::VariableNullerImpl<T>(var);
}
-#endif // wxHAS_NAMESPACES
-
// ============================================================================
// macros for declaring unnamed scoped guards (which can't be dismissed)
// ============================================================================
// ============================================================================
// macros for declaring unnamed scoped guards (which can't be dismissed)
// ============================================================================