00001 #ifndef _object_hh_ 00002 #define _object_hh_ 00003 00004 #include <string> 00005 #include <vector> 00006 #include "base.hh" 00007 #include "configuration.hh" 00008 00009 #ifndef NULL 00010 #define NULL 0 00011 #endif 00012 00013 #ifndef null 00014 #define null 0 00015 #endif 00016 00017 namespace anoid { 00018 namespace base { 00019 00020 class AbstractWorld; 00021 class Message; 00022 00028 class Object: public loader::Base { 00029 protected: 00030 int ID; 00031 Object *parent; 00032 AbstractWorld *world; 00033 std::vector<Object*> children; 00034 public: 00038 Object *getParent() { return parent; } 00042 AbstractWorld *getWorld() { return world; } 00047 virtual Object *add(Object *o); 00052 Object(int i = 0); 00058 virtual void init(config::Configuration &c); 00063 virtual void update(); 00068 virtual void redraw(); 00074 virtual void receive(Message *m); 00075 void listen(const std::string &m); 00076 }; 00077 00078 }; 00079 }; 00080 00081 #endif