X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fpbd%2Fproperty_list.cc;h=efae95e45e4e17e7ad16510832b6cabd1a83ee03;hb=9907d25ea572f008fcb626eb7cc7ffa4cf9e1d82;hp=5c0de4bacfc776254cb7458398d01cdf9d8706de;hpb=7b2975244165b4ffd1dcf4080c1be4c8dcbc6708;p=ardour.git diff --git a/libs/pbd/property_list.cc b/libs/pbd/property_list.cc index 5c0de4bacf..efae95e45e 100644 --- a/libs/pbd/property_list.cc +++ b/libs/pbd/property_list.cc @@ -27,6 +27,20 @@ using namespace PBD; PropertyList::PropertyList() : _property_owner (true) { + +} + +PropertyList::PropertyList (PropertyList const & other) + : std::map (other) + , _property_owner (other._property_owner) +{ + if (_property_owner) { + /* make our own copies of the properties */ + clear (); + for (std::map::const_iterator i = other.begin(); i != other.end(); ++i) { + insert (std::make_pair (i->first, i->second->clone ())); + } + } } PropertyList::~PropertyList () @@ -39,13 +53,13 @@ PropertyList::~PropertyList () } void -PropertyList::get_changes (XMLNode* history_node) +PropertyList::get_changes_as_xml (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", + DEBUG_TRACE (DEBUG::Properties, string_compose ("Add changes to %1 for %2\n", history_node->name(), i->second->property_name())); - i->second->get_change (history_node); + i->second->get_changes_as_xml (history_node); } } @@ -53,7 +67,15 @@ bool PropertyList::add (PropertyBase* prop) { return insert (value_type (prop->property_id(), prop)).second; -} +} + +void +PropertyList::invert () +{ + for (iterator i = begin(); i != end(); ++i) { + i->second->invert (); + } +} OwnedPropertyList::OwnedPropertyList () {