| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: wx/checkeddelete.h
- // Purpose: wxCHECKED_DELETE() macro
- // Author: Vadim Zeitlin
- // Created: 2009-02-03
- // Copyright: (c) 2002-2009 wxWidgets dev team
- // Licence: wxWindows licence
- ///////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_CHECKEDDELETE_H_
- #define _WX_CHECKEDDELETE_H_
- #include "wx/cpp.h"
- // TODO: provide wxCheckedDelete[Array]() template functions too
- // ----------------------------------------------------------------------------
- // wxCHECKED_DELETE and wxCHECKED_DELETE_ARRAY macros
- // ----------------------------------------------------------------------------
- /*
- checked deleters are used to make sure that the type being deleted is really
- a complete type.: otherwise sizeof() would result in a compile-time error
- do { ... } while ( 0 ) construct is used to have an anonymous scope
- (otherwise we could have name clashes between different "complete"s) but
- still force a semicolon after the macro
- */
- #define wxCHECKED_DELETE(ptr) \
- wxSTATEMENT_MACRO_BEGIN \
- typedef char complete[sizeof(*ptr)] WX_ATTRIBUTE_UNUSED; \
- delete ptr; \
- wxSTATEMENT_MACRO_END
- #define wxCHECKED_DELETE_ARRAY(ptr) \
- wxSTATEMENT_MACRO_BEGIN \
- typedef char complete[sizeof(*ptr)] WX_ATTRIBUTE_UNUSED; \
- delete [] ptr; \
- wxSTATEMENT_MACRO_END
- #endif // _WX_CHECKEDDELETE_H_
|