From 60ee8378ded76a8c8d61d0f9014284a9c66a1758 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sun, 28 Aug 2016 20:02:32 +1000 Subject: [PATCH] Use XMLNode::get/set_property API in ARDOUR::Playlist class --- libs/ardour/playlist.cc | 84 ++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 47 deletions(-) diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 8191982156..2ff6c431d1 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -24,7 +24,7 @@ #include -#include "pbd/convert.h" +#include "pbd/types_convert.h" #include "pbd/stateful_diff_command.h" #include "pbd/strsplit.h" #include "pbd/xml++.h" @@ -38,6 +38,7 @@ #include "ardour/playlist_factory.h" #include "ardour/playlist_source.h" #include "ardour/transient_detector.h" +#include "ardour/types_convert.h" #include "ardour/session_playlists.h" #include "ardour/source_factory.h" @@ -105,16 +106,16 @@ RegionListProperty::get_content_as_xml (boost::shared_ptr region, XMLNod code, so we can just store ID here. */ - node.add_property ("id", region->id().to_s ()); + node.set_property ("id", region->id()); } boost::shared_ptr RegionListProperty::get_content_from_xml (XMLNode const & node) const { - XMLProperty const * prop = node.property ("id"); - assert (prop); - - PBD::ID id (prop->value ()); + PBD::ID id; + if (!node.get_property ("id", id)) { + assert (false); + } boost::shared_ptr ret = _playlist.region_by_id (id); @@ -2201,9 +2202,7 @@ Playlist::find_next_region (framepos_t frame, RegionPoint point, int dir) XMLNode *child; XMLNodeList nlist; XMLNodeConstIterator niter; - XMLPropertyList plist; XMLPropertyConstIterator piter; - XMLProperty const * prop; boost::shared_ptr region; string region_name; bool seen_region_nodes = false; @@ -2218,36 +2217,31 @@ Playlist::find_next_region (framepos_t frame, RegionPoint point, int dir) freeze (); - plist = node.properties(); - set_id (node); - for (piter = plist.begin(); piter != plist.end(); ++piter) { + std::string name; + if (node.get_property (X_("name"), name)) { + _name = name; + _set_sort_id (); + } - prop = *piter; + /* XXX legacy session: fix up later */ + node.get_property (X_("orig-diskstream-id"), _orig_track_id); - if (prop->name() == X_("name")) { - _name = prop->value(); - _set_sort_id (); - } else if (prop->name() == X_("orig-diskstream-id")) { - /* XXX legacy session: fix up later */ - _orig_track_id = prop->value (); - } else if (prop->name() == X_("orig-track-id")) { - _orig_track_id = prop->value (); - } else if (prop->name() == X_("frozen")) { - _frozen = string_is_affirmative (prop->value()); - } else if (prop->name() == X_("combine-ops")) { - _combine_ops = atoi (prop->value()); - } else if (prop->name() == X_("shared-with-ids")) { - string shared_ids = prop->value (); - if (!shared_ids.empty()) { - vector result; - ::split (shared_ids, result, ','); - vector::iterator it = result.begin(); - for (; it != result.end(); ++it) { - _shared_with_ids.push_back (PBD::ID(*it)); - } - } + node.get_property (X_("orig-track-id"), _orig_track_id); + node.get_property (X_("frozen"), _frozen); + + node.get_property (X_("combine-ops"), _combine_ops); + + string shared_ids; + if (node.get_property (X_("shared-with-ids"), shared_ids)) { + if (!shared_ids.empty()) { + vector result; + ::split (shared_ids, result, ','); + vector::iterator it = result.begin(); + for (; it != result.end(); ++it) { + _shared_with_ids.push_back (PBD::ID(*it)); + } } } @@ -2263,13 +2257,12 @@ Playlist::find_next_region (framepos_t frame, RegionPoint point, int dir) seen_region_nodes = true; - if ((prop = child->property ("id")) == 0) { + ID id; + if (!child->get_property ("id", id)) { error << _("region state node has no ID, ignored") << endmsg; continue; } - ID id = prop->value (); - if ((region = region_by_id (id))) { region->suspend_property_changes (); @@ -2327,13 +2320,11 @@ XMLNode& Playlist::state (bool full_state) { XMLNode *node = new XMLNode (X_("Playlist")); - char buf[64]; - node->add_property (X_("id"), id().to_s()); - node->add_property (X_("name"), _name); - node->add_property (X_("type"), _type.to_string()); - - node->add_property (X_("orig-track-id"), _orig_track_id.to_s ()); + node->set_property (X_("id"), id()); + node->set_property (X_("name"), name()); + node->set_property (X_("type"), _type); + node->set_property (X_("orig-track-id"), _orig_track_id); string shared_ids; list::const_iterator it = _shared_with_ids.begin(); @@ -2344,14 +2335,13 @@ Playlist::state (bool full_state) shared_ids.erase(0,1); } - node->add_property (X_("shared-with-ids"), shared_ids); - node->add_property (X_("frozen"), _frozen ? "yes" : "no"); + node->set_property (X_("shared-with-ids"), shared_ids); + node->set_property (X_("frozen"), _frozen); if (full_state) { RegionReadLock rlock (this); - snprintf (buf, sizeof (buf), "%u", _combine_ops); - node->add_property ("combine-ops", buf); + node->set_property ("combine-ops", _combine_ops); for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { node->add_child_nocopy ((*i)->get_state());