summaryrefslogtreecommitdiffstats
path: root/src/client/ObjectModel.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2010-02-02 20:37:50 +0000
committerDavid Robillard <d@drobilla.net>2010-02-02 20:37:50 +0000
commita645d2b8be4d7d31f6eef1649156b166a01e0c31 (patch)
tree3d83c08e9a5460cc6582482bcfc673dff956a1e7 /src/client/ObjectModel.hpp
parent653679e967f11a0e008521885fcaf6994d2961fa (diff)
downloadingen-a645d2b8be4d7d31f6eef1649156b166a01e0c31.tar.gz
ingen-a645d2b8be4d7d31f6eef1649156b166a01e0c31.tar.bz2
ingen-a645d2b8be4d7d31f6eef1649156b166a01e0c31.zip
Use Glib string interning (quarks) to make Path/URI operator== very fast.
This avoids a ton of string comparison overhead in Ingen when setting various properties (e.g. "ingen:value" was compared several times every time a port value was changed, now this is just a single pointer comparison and the full round trip of a value change does no string comparison at all, but is still property based and RDFey). git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2408 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/client/ObjectModel.hpp')
-rw-r--r--src/client/ObjectModel.hpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/client/ObjectModel.hpp b/src/client/ObjectModel.hpp
index 7ce19e9c..2c1fd23e 100644
--- a/src/client/ObjectModel.hpp
+++ b/src/client/ObjectModel.hpp
@@ -61,9 +61,9 @@ public:
Resource& meta() { return _meta; }
const Resource& meta() const { return _meta; }
- const Raul::URI meta_uri() const { return _meta.uri(); }
- const Raul::Path path() const { return _path; }
- const Raul::Symbol symbol() const { return _path.name(); }
+ const Raul::URI& meta_uri() const { return _meta.uri(); }
+ const Raul::Path& path() const { return _path; }
+ const Raul::Symbol& symbol() const { return _symbol; }
SharedPtr<ObjectModel> parent() const { return _parent; }
bool polyphonic() const;
@@ -89,8 +89,12 @@ protected:
virtual void set(SharedPtr<ObjectModel> model);
ResourceImpl _meta;
- Raul::Path _path;
+
SharedPtr<ObjectModel> _parent;
+
+private:
+ Raul::Path _path;
+ Raul::Symbol _symbol;
};