From: Martin Ling Date: Tue, 11 Nov 2014 14:50:55 +0000 (+0000) Subject: bindings: Use new %attributevector and %attributemap macros. X-Git-Tag: libsigrok-0.4.0~796 X-Git-Url: http://sigrok.org/gitweb/?p=libsigrok.git;a=commitdiff_plain;h=062430a2fbd74a7ff153b77d92523daae9ec18a7 bindings: Use new %attributevector and %attributemap macros. --- diff --git a/bindings/java/org/sigrok/core/classes/classes.i b/bindings/java/org/sigrok/core/classes/classes.i index 4fe326d1..22e6e256 100644 --- a/bindings/java/org/sigrok/core/classes/classes.i +++ b/bindings/java/org/sigrok/core/classes/classes.i @@ -377,4 +377,13 @@ typedef jobject jsourcecallback; } %include "doc.i" + +%define %attributevector(Class, Type, Name, Get) +%attributeval(sigrok::Class, Type, Name, Get); +%enddef + +%define %attributemap(Class, Type, Name, Get) +%attributeval(sigrok::Class, Type, Name, Get); +%enddef + %include "bindings/swig/classes.i" diff --git a/bindings/python/sigrok/core/classes.i b/bindings/python/sigrok/core/classes.i index 27060cd1..3c327e4d 100644 --- a/bindings/python/sigrok/core/classes.i +++ b/bindings/python/sigrok/core/classes.i @@ -359,6 +359,14 @@ std::map dict_to_map_options(PyObject *dict, %include "doc.i" +%define %attributevector(Class, Type, Name, Get) +%attributeval(sigrok::Class, Type, Name, Get); +%enddef + +%define %attributemap(Class, Type, Name, Get) +%attributeval(sigrok::Class, Type, Name, Get); +%enddef + %include "../../../swig/classes.i" /* Support Driver.scan() with keyword arguments. */ diff --git a/bindings/swig/classes.i b/bindings/swig/classes.i index 1bbba90f..07ec9139 100644 --- a/bindings/swig/classes.i +++ b/bindings/swig/classes.i @@ -160,11 +160,11 @@ typedef std::map map_ConfigKey_Variant; } -%attributeval(sigrok::Context, +%attributemap(Context, map_string_Driver, drivers, drivers); -%attributeval(sigrok::Context, +%attributemap(Context, map_string_InputFormat, input_formats, input_formats); -%attributeval(sigrok::Context, +%attributemap(Context, map_string_OutputFormat, output_formats, output_formats); %attributestring(sigrok::Context, @@ -196,27 +196,27 @@ typedef std::map %attributestring(sigrok::Option, std::string, description, description); /* Currently broken on Python due to some issue with variant typemaps. */ -/* %attributeval(sigrok::Option, +/* %attributevector(Option, Glib::VariantBase, default_value, default_value); */ -%attributeval(sigrok::Option, +%attributevector(Option, std::vector, values, values); %attributestring(sigrok::OutputFormat, std::string, name, name); %attributestring(sigrok::OutputFormat, std::string, description, description); -%attributeval(sigrok::OutputFormat, +%attributemap(OutputFormat, map_string_Option, options, options); %attributestring(sigrok::Device, std::string, vendor, vendor); %attributestring(sigrok::Device, std::string, model, model); %attributestring(sigrok::Device, std::string, version, version); -%attributeval(sigrok::Device, +%attributevector(Device, std::vector >, channels, channels); -%attributeval(sigrok::Device, map_string_ChannelGroup, +%attributemap(Device, map_string_ChannelGroup, channel_groups, channel_groups); /* Using %attributestring for shared_ptr attribute. See @@ -230,17 +230,17 @@ typedef std::map %attribute(sigrok::Channel, unsigned int, index, index); %attributestring(sigrok::ChannelGroup, std::string, name, name); -%attributeval(sigrok::ChannelGroup, +%attributevector(ChannelGroup, std::vector >, channels, channels); %attributestring(sigrok::Trigger, std::string, name, name); -%attributeval(sigrok::Trigger, +%attributevector(Trigger, std::vector >, stages, stages); %attribute(sigrok::TriggerStage, int, number, number); -%attributeval(sigrok::TriggerStage, +%attributevector(TriggerStage, std::vector >, matches, matches); @@ -249,7 +249,7 @@ typedef std::map %attribute(sigrok::TriggerMatch, const sigrok::TriggerMatchType *, type, type); %attribute(sigrok::TriggerMatch, float, value, value); -%attributeval(sigrok::Session, +%attributevector(Session, std::vector >, devices, devices); @@ -263,12 +263,12 @@ typedef std::map %attributestring(sigrok::Packet, std::shared_ptr, payload, payload); -%attributeval(sigrok::Meta, map_ConfigKey_Variant, config, config); +%attributemap(Meta, map_ConfigKey_Variant, config, config); %attribute(sigrok::Analog, int, num_samples, num_samples); %attribute(sigrok::Analog, const sigrok::Quantity *, mq, mq); %attribute(sigrok::Analog, const sigrok::Unit *, unit, unit); -%attributeval(sigrok::Analog, std::vector, mq_flags, mq_flags); +%attributevector(Analog, std::vector, mq_flags, mq_flags); %include "libsigrok/libsigrok.hpp"