00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef ARCHON_X3D_EVENT_SOURCE_H
00021 #define ARCHON_X3D_EVENT_SOURCE_H
00022
00023 #include <list>
00024
00025 #include <archon/util/mutex.H>
00026
00027 namespace Archon
00028 {
00029 namespace X3D
00030 {
00031 struct RouteTail;
00032 struct Event;
00033
00034
00035 struct EventSource
00036 {
00044 bool addRoute(const RouteTail *);
00045
00049 void delRoute(const RouteTail *);
00050
00062 bool delRouteMatch(const RouteTail *);
00063
00067 void cascadeEvent(const Event *) const;
00068
00069 void clear();
00070
00071 private:
00072 Mutex mutex;
00073 list<Ref<const RouteTail> > routes;
00074 };
00075 }
00076 }
00077
00078 #endif // ARCHON_X3D_EVENT_SOURCE_H