OpenBarnyard
 
Loading...
Searching...
No Matches
TEvent.cpp
Go to the documentation of this file.
1#include "ToshiPCH.h"
2
3//-----------------------------------------------------------------------------
4// Enables memory debugging.
5// Note: Should be the last include!
6//-----------------------------------------------------------------------------
8
10
11void TGenericListener::Connect( TGenericEmitter& a_rEmitter, void* a_pCaller, t_Callback a_pCallback, TINT a_iPriority )
12{
13 TASSERT( IsLinked() == TFALSE );
14 m_pCaller = a_pCaller;
15 m_pCallback = a_pCallback;
16 SetPriority( a_iPriority );
17 a_rEmitter.GetListeners().Insert( this );
18}
19
21{
22 Remove();
23 m_pCaller = TNULL;
24 m_pCallback = TNULL;
25}
26
31
32void TGenericListener::Execute( void* pOwner, void* pData )
33{
34 m_pCallback( m_pCaller, pOwner, pData );
35}
36
38{
39 if ( !m_Listeners.IsEmpty() )
40 {
41 for ( auto it = m_Listeners.Begin(); it != m_Listeners.End(); it++ )
42 {
43 it->Disconnect();
44 }
45 }
46
48}
49
50void TGenericEmitter::Create( void* a_pOwner )
51{
52 m_pOwner = a_pOwner;
53}
54
55void TGenericEmitter::Throw( void* a_pData )
56{
57 auto pListener = m_Listeners.Begin();
58
59 while ( pListener != m_Listeners.End() )
60 {
61 auto pNextListener = pListener->Next();
62 pListener->Execute( m_pOwner, a_pData );
63 pListener = pNextListener;
64 }
65}
66
68{
69 Create( a_pOwner );
70}
71
76
#define TASSERT(X,...)
Definition Defines.h:138
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
#define TNULL
Definition Typedefs.h:23
int TINT
Definition Typedefs.h:7
#define TFALSE
Definition Typedefs.h:24
void Insert(TNode *a_pNode, TINT iPriority)
Definition TPriList.cpp:66
void Disconnect()
Definition TEvent.cpp:20
void Connect(TGenericEmitter &a_rEmitter, void *a_pCaller, t_Callback a_pCallback, TINT a_iPriority)
Definition TEvent.cpp:11
TBOOL(__stdcall *)(void *a_pCaller, void *a_pOwner, void *a_pData) t_Callback
Definition TEvent.h:11
friend class TGenericEmitter
Definition TEvent.h:12
void Destroy()
Definition TEvent.cpp:37
void Create(void *a_pOwner)
Definition TEvent.cpp:50
void Throw(void *a_pData)
Definition TEvent.cpp:55
TPriList< TGenericListener > m_Listeners
Definition TEvent.h:45
TPriList< TGenericListener > & GetListeners()
Definition TEvent.h:41
void * m_pOwner
Definition TEvent.h:46