]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - include/ientity.h
- Updated UFA:Plugin (mattn2)
[xonotic/netradiant.git] / include / ientity.h
index 34a5638dc9f8c3016012b8fa82fad9a54df45ad7..444e377dd76c9e1a1ba044f4618310b581657ea3 100644 (file)
@@ -29,11 +29,30 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 class EntityClass;
 
+typedef Callback1<const char*> KeyObserver;
+
+class EntityKeyValue
+{
+public:
+  virtual const char* c_str() const = 0;
+  virtual void assign(const char* other) = 0;
+  virtual void attach(const KeyObserver& observer) = 0;
+  virtual void detach(const KeyObserver& observer) = 0;
+};
+
 class Entity
 {
 public:
   STRING_CONSTANT(Name, "Entity");
 
+  class Observer
+  {
+  public:
+    virtual void insert(const char* key, EntityKeyValue& value) = 0;
+    virtual void erase(const char* key, EntityKeyValue& value) = 0;
+    virtual void clear() { };
+  };
+
   class Visitor
   {
   public:
@@ -45,6 +64,8 @@ public:
   virtual void setKeyValue(const char* key, const char* value) = 0;
   virtual const char* getKeyValue(const char* key) const = 0;
   virtual bool isContainer() const = 0;
+  virtual void attach(Observer& observer) = 0;
+  virtual void detach(Observer& observer) = 0;
 };
 
 class EntityCopyingVisitor : public Entity::Visitor