summaryrefslogtreecommitdiff
path: root/libs/pbd/property_list.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-03-02 00:00:00 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-03-02 00:00:00 +0000
commitdb8b575c30845bafc34b87bacd52129c95d1c478 (patch)
tree7a521b7795cc6cc4e41d717a0feabd1aefb83e1f /libs/pbd/property_list.cc
parent3540594dc53137eb9e857f9e3c1309382a6d7bef (diff)
the mega-properties/SequenceProperty patch. split is broken at present (right hand starts has start-in-source of zero)
git-svn-id: svn://localhost/ardour2/branches/3.0@6718 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/pbd/property_list.cc')
-rw-r--r--libs/pbd/property_list.cc69
1 files changed, 69 insertions, 0 deletions
diff --git a/libs/pbd/property_list.cc b/libs/pbd/property_list.cc
new file mode 100644
index 0000000000..ffe1170dd5
--- /dev/null
+++ b/libs/pbd/property_list.cc
@@ -0,0 +1,69 @@
+/*
+ Copyright (C) 2010 Paul Davis
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include "pbd/debug.h"
+#include "pbd/compose.h"
+#include "pbd/property_list.h"
+#include "pbd/xml++.h"
+
+using namespace PBD;
+
+PropertyList::PropertyList()
+ : _property_owner (true)
+{
+}
+
+PropertyList::~PropertyList ()
+{
+ if (_property_owner) {
+ for (iterator i = begin (); i != end (); ++i) {
+ delete i->second;
+ }
+ }
+}
+
+void
+PropertyList::add_history_state (XMLNode* history_node)
+{
+ for (const_iterator i = begin(); i != end(); ++i) {
+ DEBUG_TRACE (DEBUG::Properties, string_compose ("Add before/after to %1 for %2\n",
+ history_node->name(),
+ i->second->property_name()));
+ i->second->add_history_state (history_node);
+ }
+}
+
+bool
+PropertyList::add (PropertyBase* prop)
+{
+ return insert (value_type (prop->property_id(), prop)).second;
+}
+
+OwnedPropertyList::OwnedPropertyList ()
+{
+ _property_owner = false;
+}
+
+bool
+OwnedPropertyList::add (PropertyBase& p)
+{
+ return insert (value_type (p.property_id (), &p)).second;
+}
+
+