Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

ClassDispatcher.h

00001 #ifndef ERIS_CLASS_DISPATCH_H 00002 #define ERIS_CLASS_DISPATCH_H 00003 00004 #include <Eris/Dispatcher.h> 00005 00006 #include <sigc++/object.h> 00007 00008 namespace Eris 00009 { 00010 // forward decls 00011 class TypeInfo; 00012 class Connection; 00013 00014 class ClassDispatcher : public Dispatcher, virtual public SigC::Object 00015 { 00016 public: 00017 ClassDispatcher(const std::string &nm, Connection *conn); 00018 virtual ~ClassDispatcher(); 00019 00020 virtual bool dispatch(DispatchContextDeque &dq); 00021 00022 virtual Dispatcher* addSubdispatch(Dispatcher *d, const std::string cl); 00023 virtual void rmvSubdispatch(Dispatcher *sub); 00024 00025 virtual Dispatcher* getSubdispatch(const std::string &nm); 00026 00027 virtual bool empty() 00028 { return _subs.empty(); } 00029 00030 static Dispatcher* newAnonymous(Connection *conn); 00031 protected: 00032 typedef struct { 00033 Dispatcher* sub; 00034 TypeInfo* type; 00035 } _Class; 00036 00037 virtual void purge(); 00038 00039 void boundType(TypeInfo *tp); 00040 void boundInsert(const _Class &cl); 00041 00042 typedef std::list<_Class> ClassDispatcherList; 00043 ClassDispatcherList _subs; 00044 Connection* _conn; 00045 }; 00046 00047 } 00048 00049 #endif

Generated on Thu Jul 29 08:12:34 2004 for Eris by doxygen 1.3.7