ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/FAS/src/event.cpp
(Generate patch)

Comparing trunk/FAS/src/event.cpp (file contents):
Revision 91 by tim, Tue Aug 20 17:54:47 2002 UTC vs.
Revision 92 by tim, Tue Aug 20 23:26:55 2002 UTC

# Line 15 | Line 15
15   *
16   ************************************************************************
17   *Description:
18 < *
18 > *
19   ***********************************************************************/
20   #include "event.h"
21   /***********************************************************************
# Line 59 | Line 59 | void TEventItem::RemoveHandler(PEventHandler handler)
59    {
60      _handlers.erase(i);
61    }
62 + }
63  
64 +
65 + void TEventItem::ExecuteHandler(int eventType, TEvenPoster *poster, void *extra)
66 + {
67 +  PEventHandler handler;
68 +  switch (_object->GetEventObjectType())
69 +  {
70 +    case TEventObjectType::BaseEventObject :
71 +      CallHandler<TEventObject>(_object, _handlers, eventType, poster, extra);
72 +      break;
73 +    default:
74 +      ;
75 +  }
76   }
77   /***********************************************************************
78   * Class TEventItems
# Line 75 | Line 88 | void TEventItems::Clear()
88    }
89  
90    _items.clear();
78 }
79
80 TEventItems::TEventItems()
81 {
82  Clear();
83
84  SetType(TEventType::Unknown);
91   }
92  
93   TEventItems::TEventItems(int eventType)
# Line 161 | Line 167 | TEventItem *TEventItems::GetEventItem(TEventObject *ob
167    {
168      return NULL;
169    }
164
170   }
166 void TEventItems::Dispatch(TEventDispatcher *dispatcher, void *extra)
167 {
171  
172 + void TEventItems::Dispatch(int eventType, TEvenPoster *poster, void *extra)
173 + {
174 +  for(int i=0; i < Count(); i++)
175 +    _items[i]->ExecuteHandler(eventType, poster, extra);
176   }
177 +
178   /***********************************************************************
179   * Class TEventTable
180   ***********************************************************************/
# Line 269 | Line 277 | void TEventTable::Dispatch(int eventType,
277   }
278  
279   void TEventTable::Dispatch(int eventType,
280 <                            TEventDispatcher *dispatcher, void *extra)
280 >                            TEvenPoster *poster, void *extra)
281   {
282    TEventItems *items;
283  
# Line 277 | Line 285 | void TEventTable::Dispatch(int eventType,
285  
286    if (items != NULL)
287    {
288 <    items->Dispatch(dispatcher, extra);
288 >    items->Dispatch(eventType,poster, extra);
289    }
290    else
291    {
# Line 296 | Line 304 | void TEventObject::Register(int eventType, TEventObjec
304   void TEventObject::Register(int eventType, TEventObject *object,
305                              PEventHandler handler)
306   {
307 <  _table->AddItem(eventType, object, handler);
307 >  if (_table != NULL)
308 >    _table->AddItem(eventType, object, handler);
309   }
310  
311   void TEventObject::UnRegister(int eventType, TEventObject *object,
312                                PEventHandler handler)
313   {
314 <  _table->RemoveItem(eventType, object, handler);
314 >  if (_table != NULL)
315 >    _table->RemoveItem(eventType, object, handler);
316   }
317  
318   void TEventObject::UnRegister(int eventType, TEventObject *object)
319   {
320 <  _table->RemoveItem(eventType, object);
320 >  if (_table != NULL)
321 >    _table->RemoveItem(eventType, object);
322   }
323  
324   void TEventObject::UnRegister(TEventObject *object)
325   {
326 <  _table->RemoveItem(object);
326 >  if (_table != NULL)
327 >    _table->RemoveItem(object);
328   }
329   /***********************************************************************
330 < * Class TEventDispatcher
330 > * Class TEvenPoster
331   ***********************************************************************/
332 < void TEventDispatcher::Dispatch(int eventType,
333 <                                TEventDispatcher *dispatcher,void *extra)
332 > void TEvenPoster::PostEvent(int eventType,
333 >                                TEvenPoster *poster, void *extra)
334   {
335 <  _table->Dispatch(eventType, dispatcher, extra);
335 >  if (_table != NULL)
336 >    _table->Dispatch(eventType, poster, extra);
337   }
338  
339 +
340 + template<class T> CallHandler(T *object, const vector<PEventHandler>& handlers,
341 +                      int eventType, TEvenPoster *poster, void *extra)
342 + {
343 +  PEventHandler handler;
344 +
345 +  for(int i=0; i<handlers.size(); i++)
346 +  {
347 +    handler = handlers[i];
348 +    (object->*handler)(eventType, poster, extra);
349 +  }
350 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines