From 0aea5288cd1b96949d8d996e8d8bad6111963328 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sat, 3 Sep 2016 22:11:19 +1000 Subject: Use XMLNode::get/set_property API in PBD::Controllable --- libs/pbd/controllable.cc | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'libs/pbd') diff --git a/libs/pbd/controllable.cc b/libs/pbd/controllable.cc index 38554bd24a..60e43ab688 100644 --- a/libs/pbd/controllable.cc +++ b/libs/pbd/controllable.cc @@ -22,6 +22,8 @@ #include "pbd/xml++.h" #include "pbd/error.h" #include "pbd/locale_guard.h" +#include "pbd/types_convert.h" +#include "pbd/string_convert.h" #include "pbd/i18n.h" @@ -108,7 +110,6 @@ Controllable::get_state () { XMLNode* node = new XMLNode (xml_node_name); LocaleGuard lg; - char buf[64]; /* Waves' "Pressure3" has a parameter called "ยต-iness" * which causes a parser error : Input is not proper UTF-8, indicate encoding ! @@ -119,12 +120,10 @@ Controllable::get_state () // this is not reloaded from XML, but it must be present because it is // used to find and identify XML nodes by various Controllable-derived objects - node->add_property (X_("name"), _name); - - node->add_property (X_("id"), id().to_s()); - node->add_property (X_("flags"), enum_2_string (_flags)); - snprintf (buf, sizeof (buf), "%2.12f", get_save_value()); - node->add_property (X_("value"), buf); + node->set_property (X_("name"), _name); + node->set_property (X_("id"), id()); + node->set_property (X_("flags"), _flags); + node->set_property (X_("value"), get_save_value()); if (_extra_xml) { node->add_child_copy (*_extra_xml); @@ -137,25 +136,20 @@ int Controllable::set_state (const XMLNode& node, int /*version*/) { LocaleGuard lg; - const XMLProperty* prop; Stateful::save_extra_xml (node); set_id (node); - if ((prop = node.property (X_("flags"))) != 0) { - _flags = (Flag) ((_flags & Controllable::RealTime) | string_2_enum (prop->value(), _flags)); + if (node.get_property (X_("flags"), _flags)) { + _flags = Flag(_flags | (_flags & Controllable::RealTime)); } - if ((prop = node.property (X_("value"))) != 0) { - float val; - - if (sscanf (prop->value().c_str(), "%f", &val) == 1) { + float val; + if (node.get_property (X_("value"), val)) { set_value (val, NoGroup); - } - } - - return 0; + } + return 0; } void -- cgit v1.2.3