Implement wx-prefixed macros versions of DECLARE_EVENT_TABLE, BEGIN_EVENT_TABLE* and END_EVENT_TABLE macros.
Implement compatibility aliases for non-prefixed macro names. Require a final semicolon where possible. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64533 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -79,25 +79,12 @@ typedef int wxEventType;
|
||||
// the wxEVENT_HANDLER_CAST-macro.
|
||||
#define wxStaticCastEvent(type, val) static_cast<type>(val)
|
||||
|
||||
#define DECLARE_EVENT_TABLE_ENTRY(type, winid, idLast, fn, obj) \
|
||||
#define wxDECLARE_EVENT_TABLE_ENTRY(type, winid, idLast, fn, obj) \
|
||||
wxEventTableEntry(type, winid, idLast, wxNewEventTableFunctor(type, fn), obj)
|
||||
|
||||
#define DECLARE_EVENT_TABLE_TERMINATOR() \
|
||||
#define wxDECLARE_EVENT_TABLE_TERMINATOR() \
|
||||
wxEventTableEntry(wxEVT_NULL, 0, 0, 0, 0)
|
||||
|
||||
// obsolete event declaration/definition macros, we don't need them any longer
|
||||
// but we keep them for compatibility as it doesn't cost us anything anyhow
|
||||
#define BEGIN_DECLARE_EVENT_TYPES()
|
||||
#define END_DECLARE_EVENT_TYPES()
|
||||
#define DECLARE_EXPORTED_EVENT_TYPE(expdecl, name, value) \
|
||||
extern expdecl const wxEventType name;
|
||||
#define DECLARE_EVENT_TYPE(name, value) \
|
||||
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, name, value)
|
||||
#define DECLARE_LOCAL_EVENT_TYPE(name, value) \
|
||||
DECLARE_EXPORTED_EVENT_TYPE(wxEMPTY_PARAMETER_VALUE, name, value)
|
||||
#define DEFINE_EVENT_TYPE(name) const wxEventType name = wxNewEventType();
|
||||
#define DEFINE_LOCAL_EVENT_TYPE(name) DEFINE_EVENT_TYPE(name)
|
||||
|
||||
// generate a new unique event type
|
||||
extern WXDLLIMPEXP_BASE wxEventType wxNewEventType();
|
||||
|
||||
@@ -277,7 +264,7 @@ wxNewEventFunctor(const wxEventType& WXUNUSED(evtType),
|
||||
return new wxObjectEventFunctor(method, handler);
|
||||
}
|
||||
|
||||
// This version is used by DECLARE_EVENT_TABLE_ENTRY()
|
||||
// This version is used by wxDECLARE_EVENT_TABLE_ENTRY()
|
||||
inline wxObjectEventFunctor *
|
||||
wxNewEventTableFunctor(const wxEventType& WXUNUSED(evtType),
|
||||
wxObjectEventFunction method)
|
||||
@@ -611,7 +598,7 @@ wxMakeEventFunctor(const EventTag&,
|
||||
method, handler);
|
||||
}
|
||||
|
||||
// Create an event functor for the event table via DECLARE_EVENT_TABLE_ENTRY:
|
||||
// Create an event functor for the event table via wxDECLARE_EVENT_TABLE_ENTRY:
|
||||
// in this case we don't have the handler (as it's always the same as the
|
||||
// object which generated the event) so we must use Class as its type
|
||||
template <typename EventTag, typename Class, typename EventArg>
|
||||
@@ -3568,20 +3555,20 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
|
||||
// N.B. In GNU-WIN32, you *have* to take the address of a member function
|
||||
// (use &) or the compiler crashes...
|
||||
|
||||
#define DECLARE_EVENT_TABLE() \
|
||||
private: \
|
||||
static const wxEventTableEntry sm_eventTableEntries[]; \
|
||||
protected: \
|
||||
static const wxEventTable sm_eventTable; \
|
||||
virtual const wxEventTable* GetEventTable() const; \
|
||||
static wxEventHashTable sm_eventHashTable; \
|
||||
virtual wxEventHashTable& GetEventHashTable() const;
|
||||
#define wxDECLARE_EVENT_TABLE() \
|
||||
private: \
|
||||
static const wxEventTableEntry sm_eventTableEntries[]; \
|
||||
protected: \
|
||||
static const wxEventTable sm_eventTable; \
|
||||
virtual const wxEventTable* GetEventTable() const; \
|
||||
static wxEventHashTable sm_eventHashTable; \
|
||||
virtual wxEventHashTable& GetEventHashTable() const
|
||||
|
||||
// N.B.: when building DLL with Borland C++ 5.5 compiler, you must initialize
|
||||
// sm_eventTable before using it in GetEventTable() or the compiler gives
|
||||
// E2233 (see http://groups.google.com/groups?selm=397dcc8a%241_2%40dnews)
|
||||
|
||||
#define BEGIN_EVENT_TABLE(theClass, baseClass) \
|
||||
#define wxBEGIN_EVENT_TABLE(theClass, baseClass) \
|
||||
const wxEventTable theClass::sm_eventTable = \
|
||||
{ &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] }; \
|
||||
const wxEventTable *theClass::GetEventTable() const \
|
||||
@@ -3591,7 +3578,7 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
|
||||
{ return theClass::sm_eventHashTable; } \
|
||||
const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
|
||||
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE1(theClass, baseClass, T1) \
|
||||
#define wxBEGIN_EVENT_TABLE_TEMPLATE1(theClass, baseClass, T1) \
|
||||
template<typename T1> \
|
||||
const wxEventTable theClass<T1>::sm_eventTable = \
|
||||
{ &baseClass::sm_eventTable, &theClass<T1>::sm_eventTableEntries[0] }; \
|
||||
@@ -3606,7 +3593,7 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
|
||||
template<typename T1> \
|
||||
const wxEventTableEntry theClass<T1>::sm_eventTableEntries[] = { \
|
||||
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE2(theClass, baseClass, T1, T2) \
|
||||
#define wxBEGIN_EVENT_TABLE_TEMPLATE2(theClass, baseClass, T1, T2) \
|
||||
template<typename T1, typename T2> \
|
||||
const wxEventTable theClass<T1, T2>::sm_eventTable = \
|
||||
{ &baseClass::sm_eventTable, &theClass<T1, T2>::sm_eventTableEntries[0] }; \
|
||||
@@ -3621,7 +3608,7 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
|
||||
template<typename T1, typename T2> \
|
||||
const wxEventTableEntry theClass<T1, T2>::sm_eventTableEntries[] = { \
|
||||
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE3(theClass, baseClass, T1, T2, T3) \
|
||||
#define wxBEGIN_EVENT_TABLE_TEMPLATE3(theClass, baseClass, T1, T2, T3) \
|
||||
template<typename T1, typename T2, typename T3> \
|
||||
const wxEventTable theClass<T1, T2, T3>::sm_eventTable = \
|
||||
{ &baseClass::sm_eventTable, &theClass<T1, T2, T3>::sm_eventTableEntries[0] }; \
|
||||
@@ -3636,7 +3623,7 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
|
||||
template<typename T1, typename T2, typename T3> \
|
||||
const wxEventTableEntry theClass<T1, T2, T3>::sm_eventTableEntries[] = { \
|
||||
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE4(theClass, baseClass, T1, T2, T3, T4) \
|
||||
#define wxBEGIN_EVENT_TABLE_TEMPLATE4(theClass, baseClass, T1, T2, T3, T4) \
|
||||
template<typename T1, typename T2, typename T3, typename T4> \
|
||||
const wxEventTable theClass<T1, T2, T3, T4>::sm_eventTable = \
|
||||
{ &baseClass::sm_eventTable, &theClass<T1, T2, T3, T4>::sm_eventTableEntries[0] }; \
|
||||
@@ -3651,7 +3638,7 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
|
||||
template<typename T1, typename T2, typename T3, typename T4> \
|
||||
const wxEventTableEntry theClass<T1, T2, T3, T4>::sm_eventTableEntries[] = { \
|
||||
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE5(theClass, baseClass, T1, T2, T3, T4, T5) \
|
||||
#define wxBEGIN_EVENT_TABLE_TEMPLATE5(theClass, baseClass, T1, T2, T3, T4, T5) \
|
||||
template<typename T1, typename T2, typename T3, typename T4, typename T5> \
|
||||
const wxEventTable theClass<T1, T2, T3, T4, T5>::sm_eventTable = \
|
||||
{ &baseClass::sm_eventTable, &theClass<T1, T2, T3, T4, T5>::sm_eventTableEntries[0] }; \
|
||||
@@ -3666,7 +3653,7 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
|
||||
template<typename T1, typename T2, typename T3, typename T4, typename T5> \
|
||||
const wxEventTableEntry theClass<T1, T2, T3, T4, T5>::sm_eventTableEntries[] = { \
|
||||
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE7(theClass, baseClass, T1, T2, T3, T4, T5, T6, T7) \
|
||||
#define wxBEGIN_EVENT_TABLE_TEMPLATE7(theClass, baseClass, T1, T2, T3, T4, T5, T6, T7) \
|
||||
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> \
|
||||
const wxEventTable theClass<T1, T2, T3, T4, T5, T6, T7>::sm_eventTable = \
|
||||
{ &baseClass::sm_eventTable, &theClass<T1, T2, T3, T4, T5, T6, T7>::sm_eventTableEntries[0] }; \
|
||||
@@ -3681,7 +3668,7 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
|
||||
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> \
|
||||
const wxEventTableEntry theClass<T1, T2, T3, T4, T5, T6, T7>::sm_eventTableEntries[] = { \
|
||||
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE8(theClass, baseClass, T1, T2, T3, T4, T5, T6, T7, T8) \
|
||||
#define wxBEGIN_EVENT_TABLE_TEMPLATE8(theClass, baseClass, T1, T2, T3, T4, T5, T6, T7, T8) \
|
||||
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> \
|
||||
const wxEventTable theClass<T1, T2, T3, T4, T5, T6, T7, T8>::sm_eventTable = \
|
||||
{ &baseClass::sm_eventTable, &theClass<T1, T2, T3, T4, T5, T6, T7, T8>::sm_eventTableEntries[0] }; \
|
||||
@@ -3696,7 +3683,8 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
|
||||
template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> \
|
||||
const wxEventTableEntry theClass<T1, T2, T3, T4, T5, T6, T7, T8>::sm_eventTableEntries[] = { \
|
||||
|
||||
#define END_EVENT_TABLE() DECLARE_EVENT_TABLE_TERMINATOR() };
|
||||
#define wxEND_EVENT_TABLE() \
|
||||
wxDECLARE_EVENT_TABLE_TERMINATOR() };
|
||||
|
||||
/*
|
||||
* Event table macros
|
||||
@@ -3710,7 +3698,7 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
|
||||
// - id1, id2 ids of the first/last id
|
||||
// - fn the function (should be cast to the right type)
|
||||
#define wx__DECLARE_EVT2(evt, id1, id2, fn) \
|
||||
DECLARE_EVENT_TABLE_ENTRY(evt, id1, id2, fn, NULL),
|
||||
wxDECLARE_EVENT_TABLE_ENTRY(evt, id1, id2, fn, NULL),
|
||||
#define wx__DECLARE_EVT1(evt, id, fn) \
|
||||
wx__DECLARE_EVT2(evt, id, wxID_ANY, fn)
|
||||
#define wx__DECLARE_EVT0(evt, fn) \
|
||||
@@ -4022,4 +4010,39 @@ WXDLLIMPEXP_CORE wxWindow* wxFindFocusDescendant(wxWindow* ancestor);
|
||||
|
||||
#endif // wxUSE_GUI
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Compatibility macro aliases
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// deprecated variants _not_ requiring a semicolon after them and without wx prefix
|
||||
// (note that also some wx-prefixed macro do _not_ require a semicolon because
|
||||
// it's not always possible to force the compire to require it)
|
||||
|
||||
#define DECLARE_EVENT_TABLE_ENTRY(type, winid, idLast, fn, obj) \
|
||||
wxDECLARE_EVENT_TABLE_ENTRY(type, winid, idLast, fn, obj)
|
||||
#define DECLARE_EVENT_TABLE_TERMINATOR() wxDECLARE_EVENT_TABLE_TERMINATOR()
|
||||
#define DECLARE_EVENT_TABLE() wxDECLARE_EVENT_TABLE();
|
||||
#define BEGIN_EVENT_TABLE(a,b) wxBEGIN_EVENT_TABLE(a,b)
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE1(a,b,c) wxBEGIN_EVENT_TABLE_TEMPLATE1(a,b,c)
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE2(a,b,c,d) wxBEGIN_EVENT_TABLE_TEMPLATE1(a,b,c,d)
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE3(a,b,c,d,e) wxBEGIN_EVENT_TABLE_TEMPLATE1(a,b,c,d,e)
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE4(a,b,c,d,e,f) wxBEGIN_EVENT_TABLE_TEMPLATE1(a,b,c,d,e,f)
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE5(a,b,c,d,e,f,g) wxBEGIN_EVENT_TABLE_TEMPLATE1(a,b,c,d,e,f,g)
|
||||
#define BEGIN_EVENT_TABLE_TEMPLATE6(a,b,c,d,e,f,g,h) wxBEGIN_EVENT_TABLE_TEMPLATE1(a,b,c,d,e,f,g,h)
|
||||
#define END_EVENT_TABLE() wxEND_EVENT_TABLE()
|
||||
|
||||
// other obsolete event declaration/definition macros; we don't need them any longer
|
||||
// but we keep them for compatibility as it doesn't cost us anything anyhow
|
||||
#define BEGIN_DECLARE_EVENT_TYPES()
|
||||
#define END_DECLARE_EVENT_TYPES()
|
||||
#define DECLARE_EXPORTED_EVENT_TYPE(expdecl, name, value) \
|
||||
extern expdecl const wxEventType name;
|
||||
#define DECLARE_EVENT_TYPE(name, value) \
|
||||
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, name, value)
|
||||
#define DECLARE_LOCAL_EVENT_TYPE(name, value) \
|
||||
DECLARE_EXPORTED_EVENT_TYPE(wxEMPTY_PARAMETER_VALUE, name, value)
|
||||
#define DEFINE_EVENT_TYPE(name) const wxEventType name = wxNewEventType();
|
||||
#define DEFINE_LOCAL_EVENT_TYPE(name) DEFINE_EVENT_TYPE(name)
|
||||
|
||||
#endif // _WX_EVENT_H_
|
||||
|
Reference in New Issue
Block a user