From 4675e82dae45a70ee27bf11d10aa6872485c8847 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 8 Oct 2007 02:57:21 +0000 Subject: Eliminate redundant object collections (ObjectModel having a separate collection of its children). Fix renaming/creation of children (fix ticket 97). git-svn-id: http://svn.drobilla.net/lad/ingen@844 a436a847-0d15-0410-975c-d299462d15a1 --- src/libs/client/ObjectModel.hpp | 23 ++++++++++++++--------- 1 file changed, 14 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 9ac3e686..ede796e4 100644 --- a/src/libs/client/ObjectModel.hpp +++ b/src/libs/client/ObjectModel.hpp @@ -30,6 +30,7 @@ #include #include #include "interface/GraphObject.hpp" +#include "Store.hpp" using std::string; using Raul::Atom; @@ -38,6 +39,8 @@ using Raul::Path; namespace Ingen { namespace Client { +class Store; + /** Base class for all GraphObject models (NodeModel, PatchModel, PortModel). * @@ -59,16 +62,18 @@ public: void set_metadata(const string& key, const Atom& value) { _metadata.insert(make_pair(key, value)); signal_metadata.emit(key, value); } - typedef Raul::Table > Children; - const MetadataMap& metadata() const { return _metadata; } - const Children& children() const { return _children; } const Path path() const { return _path; } const string name() const { return _path.name(); } SharedPtr parent() const { return _parent; } bool polyphonic() const { return _polyphonic; } - SharedPtr get_child(const string& name) const; + typedef Store::Objects::iterator iterator; + typedef Store::Objects::const_iterator const_iterator; + + const_iterator children_begin() const; + const_iterator children_end() const; + SharedPtr find_child(const string& name) const; // Signals sigc::signal > signal_new_child; @@ -81,24 +86,24 @@ public: protected: friend class Store; - ObjectModel(const Path& path, bool polyphonic); + ObjectModel(Store& store, const Path& path, bool polyphonic); virtual void set_path(const Path& p) { _path = p; signal_renamed.emit(); } virtual void set_parent(SharedPtr p) { assert(p); _parent = p; } - virtual void add_child(SharedPtr c); - virtual bool remove_child(SharedPtr c); - + virtual void add_child(SharedPtr c) {} + virtual bool remove_child(SharedPtr c) { return true; } + void add_metadata(const MetadataMap& data); void set_polyphonic(bool); void set(SharedPtr model); + Store& _store; Path _path; bool _polyphonic; SharedPtr _parent; MetadataMap _metadata; - Children _children; }; -- cgit v1.2.1