refactored plugin api; refactored callback library; added signals library

git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@44 8a3a26a2-13c4-0310-b231-cf6edde360e5
This commit is contained in:
spog
2006-04-09 17:15:13 +00:00
parent ba55f1bbf6
commit 6ee91d153e
127 changed files with 3723 additions and 2092 deletions

View 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;
void attach(Observer& observer);
void detach(Observer& observer);
};
class EntityCopyingVisitor : public Entity::Visitor