X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d83eeece0ee86a3ad81096d894a560647cef0d3a..b76f0023ae275de2d71ed735a95d2ecb81d4ea74:/include/wx/ptr_scpd.h?ds=sidebyside diff --git a/include/wx/ptr_scpd.h b/include/wx/ptr_scpd.h index ff287cfad4..d0a24daec3 100644 --- a/include/wx/ptr_scpd.h +++ b/include/wx/ptr_scpd.h @@ -182,5 +182,32 @@ void name::reset(T * p){ \ } \ } +// ---------------------------------------------------------------------------- +// "Tied" scoped pointer: same as normal one but also sets the value of +// some other variable to the pointer value +// ---------------------------------------------------------------------------- + +#define wxDEFINE_TIED_SCOPED_PTR_TYPE(T) \ + wxDEFINE_SCOPED_PTR_TYPE(T); \ + class T ## TiedPtr : public T ## Ptr \ + { \ + public: \ + T ## TiedPtr(T **pp, T *p) \ + : T ## Ptr(p), m_pp(pp) \ + { \ + m_pOld = *pp; \ + *pp = p; \ + } \ + \ + ~ T ## TiedPtr() \ + { \ + *m_pp = m_pOld; \ + } \ + \ + private: \ + T **m_pp; \ + T *m_pOld; \ + } + #endif // __WX_SCOPED_POINTER__