]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/checkeddelete.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/checkeddelete.h
3 // Purpose: wxCHECKED_DELETE() macro
4 // Author: Vadim Zeitlin
6 // Copyright: (c) 2002-2009 wxWidgets dev team
7 // Licence: wxWindows licence
8 ///////////////////////////////////////////////////////////////////////////////
10 #ifndef _WX_CHECKEDDELETE_H_
11 #define _WX_CHECKEDDELETE_H_
15 // TODO: provide wxCheckedDelete[Array]() template functions too
17 // ----------------------------------------------------------------------------
18 // wxCHECKED_DELETE and wxCHECKED_DELETE_ARRAY macros
19 // ----------------------------------------------------------------------------
22 checked deleters are used to make sure that the type being deleted is really
23 a complete type.: otherwise sizeof() would result in a compile-time error
25 do { ... } while ( 0 ) construct is used to have an anonymous scope
26 (otherwise we could have name clashes between different "complete"s) but
27 still force a semicolon after the macro
30 #define wxCHECKED_DELETE(ptr) \
31 wxSTATEMENT_MACRO_BEGIN \
32 typedef char complete[sizeof(*ptr)] WX_ATTRIBUTE_UNUSED; \
36 #define wxCHECKED_DELETE_ARRAY(ptr) \
37 wxSTATEMENT_MACRO_BEGIN \
38 typedef char complete[sizeof(*ptr)] WX_ATTRIBUTE_UNUSED; \
43 #endif // _WX_CHECKEDDELETE_H_