no real changes, just add some comments

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58610 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-02-01 22:10:52 +00:00
parent 302c73511a
commit 111d41b2fa

View File

@@ -69,7 +69,8 @@ typedef int wxEventType;
#define wxEVT_ANY ((wxEventType)-1)
// this is used to make the event table entry type safe, so that for an event
// handler only a function with proper parameter list can be given.
// handler only a function with proper parameter list can be given. See also
// the wxEVENT_HANDLER_CAST-macro.
#define wxStaticCastEvent(type, val) static_cast<type>(val)
#define DECLARE_EVENT_TABLE_ENTRY(type, winid, idLast, fn, obj) \
@@ -99,48 +100,70 @@ extern WXDLLIMPEXP_BASE wxEventType wxNewEventType();
#undef wxEVENTS_COMPATIBILITY_2_8
#define wxEVENTS_COMPATIBILITY_2_8 1
// macros to create an event type depending on whether type safe events are
// enabled.
// New macros to create templatized event types:
#if wxEVENTS_COMPATIBILITY_2_8
// Define/Declare a wxEventType-based event type:
#define wxDEFINE_EVENT( name, type ) \
const wxEventType name( wxNewEventType() );
#define wxDECLARE_EXPORTED_EVENT( expdecl, name, type ) \
extern const expdecl wxEventType name;
// Define/Declare a wxEventType-based event type and initialize it with a
// predefined event type. (Only used for wxEVT_SPIN_XXX for backward
// compatibility)
#define wxDEFINE_EVENT_ALIAS( name, type, value ) \
const wxEventType name = value;
#define wxDECLARE_EXPORTED_EVENT_ALIAS( expdecl, name, type ) \
extern const expdecl wxEventType name;
// Declare a local (not exported) wxEventType-based event type:
#define wxDECLARE_LOCAL_EVENT( name, type ) \
wxDECLARE_EXPORTED_EVENT( wxEMPTY_PARAMETER_VALUE, name, type )
// Try to cast the given event handler to the correct handler type:
#define wxEVENT_HANDLER_CAST( functype, func ) \
( wxObjectEventFunction )( wxEventFunction )wxStaticCastEvent( functype, &func )
#else
// Define/Declare a templatized event type with the corresponding event as
// a nested typedef:
#define wxDEFINE_EVENT( name, type ) \
const wxTypedEventType< type > name( wxNewEventType() );
#define wxDECLARE_EXPORTED_EVENT( expdecl, name, type ) \
extern const expdecl wxTypedEventType< type > name;
// Define/Declare a templatized event type and initialize it with a
// predefined event type. (Only used for wxEVT_SPIN_XXX for backward
// compatibility)
#define wxDEFINE_EVENT_ALIAS( name, type, value ) \
const wxTypedEventType< type > name( value );
#define wxDECLARE_EXPORTED_EVENT_ALIAS( expdecl, name, type ) \
extern const expdecl wxTypedEventType< type > name;
// Declare a local (not exported) templatized event type:
#define wxDECLARE_LOCAL_EVENT( name, type ) \
wxDECLARE_EXPORTED_EVENT( wxEMPTY_PARAMETER_VALUE, name, type )
// Don't cast the given event handler so that wxEvtHandler::Connect() sees
// the actual type:
#define wxEVENT_HANDLER_CAST( functype, func ) \
( &func )
#endif
// template which associates the correct event object with the event type
// Template which associates the correct event object with the event type
#if !wxEVENTS_COMPATIBILITY_2_8
@@ -152,7 +175,9 @@ public:
wxTypedEventType(wxEventType type) { m_type = type; }
// used for static event tables
// Return a wxEventType reference for the initialization of the static
// event tables. See wxEventTableEntry::m_eventType for a more thorough
// explanation.
operator const wxEventType&() const { return m_type; }
private:
@@ -174,13 +199,13 @@ typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&);
typedef wxEventFunction wxObjectEventFunction;
// the functors which will be stored in the static/dynamic tables
// The event functor which is stored in the static and dynamic event tables:
class WXDLLIMPEXP_BASE wxEventFunctor
{
public:
virtual ~wxEventFunctor();
// this operator is used to actually invoke the event handler
// Invoke the actual event handler:
virtual void operator()(wxEvtHandler *, wxEvent &) = 0;
// this function tests whether this functor is matched, for the purpose of
@@ -2778,37 +2803,7 @@ public:
wxObject *userData = NULL,
wxEvtHandler *eventSink = NULL)
{ return Disconnect(wxID_ANY, eventType, func, userData, eventSink); }
#if !wxEVENTS_COMPATIBILITY_2_8
//
// Connect a function to an event:
//
template <typename EventType>
void Connect(int winid,
int lastId,
const EventType &eventType,
void (*func)(typename EventType::CorrespondingEvent&),
wxObject* userData = NULL)
{
wxEventFunctorFunction< EventType > *functor = wxNewEventFunctor( eventType, func );
Subscribe( winid, lastId, eventType, functor, userData );
}
template <typename EventType>
void Connect( int winid,
const EventType &eventType,
void ( *func )( typename EventType::CorrespondingEvent & ),
wxObject* userData = NULL )
{ Connect( winid, wxID_ANY, eventType, func, userData ); }
template <typename EventType>
void Connect( const EventType &eventType,
void ( *func )( typename EventType::CorrespondingEvent & ),
wxObject* userData = NULL )
{ Connect( wxID_ANY, wxID_ANY, eventType, func, userData ); }
//
// Connect a method to an event:
//
@@ -2900,6 +2895,34 @@ public:
Derived *eventSink = NULL )
{ Connect( sender, wxID_ANY, wxID_ANY, eventType, func, userData, eventSink ); }
//
// Connect a function to an event:
//
template <typename EventType>
void Connect(int winid,
int lastId,
const EventType &eventType,
void (*func)(typename EventType::CorrespondingEvent&),
wxObject* userData = NULL)
{
wxEventFunctorFunction< EventType > *functor = wxNewEventFunctor( eventType, func );
Subscribe( winid, lastId, eventType, functor, userData );
}
template <typename EventType>
void Connect( int winid,
const EventType &eventType,
void ( *func )( typename EventType::CorrespondingEvent & ),
wxObject* userData = NULL )
{ Connect( winid, wxID_ANY, eventType, func, userData ); }
template <typename EventType>
void Connect( const EventType &eventType,
void ( *func )( typename EventType::CorrespondingEvent & ),
wxObject* userData = NULL )
{ Connect( wxID_ANY, wxID_ANY, eventType, func, userData ); }
//
// Connect an arbitrary functor to an event:
//