Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | 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 Sun Sep 4 14:14:04 2005 for Eris by  doxygen 1.4.4