From 67c2d56207de2b3609658561184a1cf8d327260e Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 14 Sep 2011 22:57:21 +0000 Subject: Support integer minimum, maximum, and default port values in lilv_plugin_get_port_ranges_float. git-svn-id: http://svn.drobilla.net/lad/trunk/lilv@3461 a436a847-0d15-0410-975c-d299462d15a1 --- src/plugin.c | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/plugin.c b/src/plugin.c index 8b86e04..6a245e2 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -457,20 +457,35 @@ lilv_plugin_get_port_ranges_float(const LilvPlugin* p, for (uint32_t i = 0; i < p->num_ports; ++i) { lilv_port_get_range(p, p->ports[i], defptr, minptr, maxptr); - if (min_values) - min_values[i] = lilv_node_is_float(min) - ? lilv_node_as_float(min) - : NAN; - - if (max_values) - max_values[i] = lilv_node_is_float(max) - ? lilv_node_as_float(max) - : NAN; - - if (def_values) - def_values[i] = lilv_node_is_float(def) - ? lilv_node_as_float(def) - : NAN; + if (min_values) { + if (lilv_node_is_float(min)) { + min_values[i] = lilv_node_as_float(min); + } else if (lilv_node_is_int(min)) { + min_values[i] = lilv_node_as_int(min); + } else { + min_values[i] = NAN; + } + } + + if (max_values) { + if (lilv_node_is_float(max)) { + max_values[i] = lilv_node_as_float(max); + } else if (lilv_node_is_int(max)) { + max_values[i] = lilv_node_as_int(max); + } else { + max_values[i] = NAN; + } + } + + if (def_values) { + if (lilv_node_is_float(def)) { + def_values[i] = lilv_node_as_float(def); + } else if (lilv_node_is_int(def)) { + def_values[i] = lilv_node_as_int(def); + } else { + def_values[i] = NAN; + } + } lilv_node_free(def); lilv_node_free(min); -- cgit v1.2.1