00001 #ifndef _abstractworld_hh_ 00002 #define _abstractworld_hh_ 00003 00004 #include "object.hh" 00005 #include "element.hh" 00006 #include "event.hh" 00007 #include "context.hh" 00008 00009 namespace anoid { 00010 namespace base { 00011 00012 class AbstractWorld: public Object { 00013 public: 00014 virtual Object *loadObject(const std::string &name) = 0; 00020 virtual int getFreshID() = 0; 00026 virtual double getTime() = 0; 00027 virtual double getG() = 0; 00032 virtual vector<Object*>::iterator begin() = 0; 00033 virtual vector<Object*>::iterator end() = 0; 00034 virtual vector<Element*>::iterator beginE() = 0; 00035 virtual vector<Element*>::iterator endE() = 0; 00040 virtual void send(Event *e) = 0; 00046 virtual void listen(Object *o, const std::string &m) = 0; 00047 virtual void fireEvents() = 0; 00053 virtual Event *loadEvent(const std::string &name) = 0; 00061 virtual Event *loadEvent(const std::string &name, config::Configuration &c) = 0; 00067 virtual Event *sendEvent(const std::string &name) = 0; 00074 virtual Event *sendEvent(const std::string &name, Object *o1) = 0; 00082 virtual Event *sendEvent(const std::string &name, Object *o1, Object *o2) = 0; 00091 virtual Event *sendEvent(const std::string &name, Object *o1, Object *o2, Object *o3) = 0; 00092 virtual context::Context *getContext() = 0; 00093 }; 00094 00095 }; 00096 }; 00097 00098 #endif