summaryrefslogtreecommitdiffstats
path: root/lilv
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-11-23 03:39:05 +0000
committerDavid Robillard <d@drobilla.net>2012-11-23 03:39:05 +0000
commitc28f70ab84dcbc2a185b1dc9577ea97cb1042701 (patch)
tree8c23c46c9d7f8ea958c0220de24e9ed2d1127531 /lilv
parenta76bd27ee0a9e763654100b584b3506f4f53e0c0 (diff)
downloadlilv-c28f70ab84dcbc2a185b1dc9577ea97cb1042701.tar.gz
lilv-c28f70ab84dcbc2a185b1dc9577ea97cb1042701.tar.bz2
lilv-c28f70ab84dcbc2a185b1dc9577ea97cb1042701.zip
Add va_list variant of lilv_plugin_get_num_ports_of_class() (#758).
git-svn-id: http://svn.drobilla.net/lad/trunk/lilv@4858 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'lilv')
-rw-r--r--lilv/lilv.h14
-rw-r--r--lilv/lilvmm.hpp13
2 files changed, 23 insertions, 4 deletions
diff --git a/lilv/lilv.h b/lilv/lilv.h
index 30bb3f5..5ef5e59 100644
--- a/lilv/lilv.h
+++ b/lilv/lilv.h
@@ -21,6 +21,7 @@
#ifndef LILV_LILV_H
#define LILV_LILV_H
+#include <stdarg.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
@@ -858,6 +859,19 @@ uint32_t
lilv_plugin_get_num_ports_of_class(const LilvPlugin* p,
const LilvNode* class_1, ...);
+#ifndef SWIG
+/**
+ Variant of lilv_plugin_get_num_ports_of_class() that takes a va_list.
+
+ This function calls va_arg() on @p args but does not call va_end().
+*/
+LILV_API
+uint32_t
+lilv_plugin_get_num_ports_of_class_va(const LilvPlugin* p,
+ const LilvNode* class_1,
+ va_list args);
+#endif
+
/**
Return whether or not the plugin introduces (and reports) latency.
The index of the latency port can be found with lilv_plugin_get_latency_port
diff --git a/lilv/lilvmm.hpp b/lilv/lilvmm.hpp
index 67fbbc4..2ce29f8 100644
--- a/lilv/lilvmm.hpp
+++ b/lilv/lilvmm.hpp
@@ -206,10 +206,15 @@ struct Plugin {
me, min_values, max_values, def_values);
}
- inline unsigned get_num_ports_of_class(LilvNode* class_1,
- LilvNode* class_2) {
- // TODO: varargs
- return lilv_plugin_get_num_ports_of_class(me, class_1, class_2, NULL);
+ inline unsigned get_num_ports_of_class(LilvNode* class_1, ...) {
+ va_list args;
+ va_start(args, class_1);
+
+ const uint32_t count = lilv_plugin_get_num_ports_of_class_va(
+ me, class_1, args);
+
+ va_end(args);
+ return count;
}
const LilvPlugin* me;