From f7368e7850307de97b024238a4f520afe1150c8b Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 26 Jul 2007 09:32:49 +0000 Subject: Add const find interface to Raul::Table, fix bugs. Use Raul::Table on Ingen client side instead of std::map for objects, plugins. Work on renaming (still broken). git-svn-id: http://svn.drobilla.net/lad/ingen@634 a436a847-0d15-0410-975c-d299462d15a1 --- src/libs/client/ObjectModel.hpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'src/libs/client/ObjectModel.hpp') diff --git a/src/libs/client/ObjectModel.hpp b/src/libs/client/ObjectModel.hpp index 03abafba..fe0f223c 100644 --- a/src/libs/client/ObjectModel.hpp +++ b/src/libs/client/ObjectModel.hpp @@ -19,7 +19,6 @@ #define OBJECTMODEL_H #include -#include #include #include #include @@ -29,16 +28,16 @@ #include #include #include +#include -using std::string; using std::map; using std::find; -using std::cout; using std::cerr; using std::endl; +using std::string; using std::find; using Raul::Atom; using Raul::Path; namespace Ingen { namespace Client { -typedef map MetadataMap; +typedef Raul::Table MetadataMap; /** Base class for all GraphObject models (NodeModel, PatchModel, PortModel). @@ -59,34 +58,43 @@ public: const Atom& get_metadata(const string& key) const; void set_metadata(const string& key, const Atom& value) - { _metadata[key] = value; metadata_update_sig.emit(key, value); } + { _metadata.insert(make_pair(key, value)); metadata_update_sig.emit(key, value); } + + typedef Raul::Table > Children; const MetadataMap& metadata() const { return _metadata; } + const Children& children() const { return _children; } inline const Path& path() const { return _path; } SharedPtr parent() const { return _parent; } + SharedPtr get_child(const string& name) const; + // Signals sigc::signal metadata_update_sig; + sigc::signal > new_child_sig; + sigc::signal > removed_child_sig; sigc::signal destroyed_sig; + sigc::signal renamed_sig; protected: friend class Store; ObjectModel(const Path& path); - virtual void set_path(const Path& p) { _path = p; } + virtual void set_path(const Path& p) { _path = p; } virtual void set_parent(SharedPtr p) { assert(p); _parent = p; } - virtual void add_child(SharedPtr c) = 0; - virtual void remove_child(SharedPtr c) = 0; + virtual void add_child(SharedPtr c); + virtual bool remove_child(SharedPtr c); void add_metadata(const MetadataMap& data); void set(SharedPtr model); - Path _path; + Path _path; SharedPtr _parent; MetadataMap _metadata; + Children _children; }; -- cgit v1.2.1