00001 00002 #ifndef __ATTRIBUTES_H__ 00003 #define __ATTRIBUTES_H__ 00004 00005 #include <magic/mobject.h> 00006 #include <magic/mstring.h> 00007 #include <magic/mexception.h> 00008 00009 BEGIN_NAMESPACE (MagiC); 00010 00011 // Externals 00012 template<class K, class V> class Map; 00013 00014 00017 class Attributed { 00018 public: 00019 Attributed (); 00020 ~Attributed (); 00021 00022 void setAttribute (const String& key, Object* value); 00023 00026 const Object& getAttribute (const String& key) const; 00027 00030 Object& getAttribute (const String& key); 00031 00034 const Object* getAttributep (const String& key) const; 00035 00036 bool hasAttribute (const String& key) const; 00037 00038 private: 00039 Attributed (const Attributed& orig) {FORBIDDEN} 00040 void operator= (const Attributed& orig) {FORBIDDEN} 00041 00042 Map<String,Object>* mAttributes; 00043 }; 00044 00045 END_NAMESPACE; 00046 00047 #endif 00048