diff options
Diffstat (limited to 'dnn/Source.h')
-rwxr-xr-x | dnn/Source.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/dnn/Source.h b/dnn/Source.h new file mode 100755 index 0000000..ab5d55c --- /dev/null +++ b/dnn/Source.h @@ -0,0 +1,72 @@ +/* + * DNN - Data News Network + * + * by Stephane Chatty + * + * Copyright 1993-1996 + * Centre d'Etudes de la Navigation Aerienne (CENA) + * + * Event sources. + * + * $Id$ + * $CurLog$ + */ + +#ifndef DnnSource_H_ +#define DnnSource_H_ + +#include "cplus_bugs.h" +template <class ITEM> class CcuArrayOf; +template <class ITEM> class CcuHashTableOf; +class DnnTrigger; +class DnnEvent; +class DnnBaseReaction; + + +class DnnEventSource { +protected: + DnnEventSource (); +virtual ~DnnEventSource (); + void Emit (DnnEvent*); +virtual void DispatchEvent (DnnEvent*) = 0; +}; + +class DnnEventSelector { +public: + DnnEventSelector (); +virtual ~DnnEventSelector (); +virtual DnnTrigger* FindTrigger (DnnEvent*) = 0; +}; + +typedef int (*DnnIntExtractor) (DnnEvent*); + +class DnnEventIntSelector : public DnnEventSelector { +protected: + DnnIntExtractor IdExtractor; + int MaxSize; + CcuArrayOf<DnnTrigger> *Triggers; +public: + DnnEventIntSelector (DnnIntExtractor, int); + ~DnnEventIntSelector (); + DnnTrigger* UseTrigger (int); + void UnuseTrigger (int, DnnBaseReaction*); + DnnTrigger* FindTrigger (DnnEvent*); +}; + +typedef void* (*DnnPtrExtractor) (DnnEvent*); + +class DnnEventPtrSelector : public DnnEventSelector { +protected: + DnnPtrExtractor PtrExtractor; + int TblSize; + CcuHashTableOf<DnnTrigger> *Triggers; +public: + DnnEventPtrSelector (DnnPtrExtractor, int); + ~DnnEventPtrSelector (); + DnnTrigger* UseTrigger (void*); + void UnuseTrigger (void*, DnnBaseReaction*); + DnnTrigger* FindTrigger (DnnEvent*); +}; + + +#endif /* DnnSource_H_ */ |