]> sigrok.org Git - libsigrok.git/commitdiff
java: Fix SWIG warnings due to dodgy %extend redefinitions.
authorMartin Ling <redacted>
Tue, 20 Oct 2015 20:05:36 +0000 (21:05 +0100)
committerMartin Ling <redacted>
Tue, 20 Oct 2015 20:12:29 +0000 (21:12 +0100)
If we're going to %extend these methods, we need to firstly ignore the
originals, and secondly implement all possible argument combinations.

This fixes the rest of bug #417.

bindings/java/org/sigrok/core/classes/classes.i

index 5cf258369ecb929a0fb6f4a26178878cc237c750..34323b16a8df7f24131cde337b38360f3aba1a69 100644 (file)
@@ -208,31 +208,69 @@ MAP_COMMON(const sigrok::ConfigKey *, Glib::VariantBase, ConfigKey, Variant)
 }
 
 /* Support Driver.scan() with no arguments. */
+%ignore sigrok::Driver::scan;
+
 %extend sigrok::Driver {
   std::vector<std::shared_ptr<sigrok::HardwareDevice> > scan()
   {
     std::map<const sigrok::ConfigKey *, Glib::VariantBase> options;
     return $self->scan(options);
   }
+
+  std::vector<std::shared_ptr<sigrok::HardwareDevice> > scan(
+    std::map<const sigrok::ConfigKey *, Glib::VariantBase> options)
+  {
+    return $self->scan(options);
+  }
 }
 
-/* Support InputFormat.create_input() with no options. */
+/* Support InputFormat.create_input() with or without options. */
+%ignore sigrok::InputFormat::create_input;
+
 %extend sigrok::InputFormat {
   std::shared_ptr<sigrok::Input> create_input()
   {
-    std::map<std::string, Glib::VariantBase> options;
+    return $self->create_input();
+  }
+
+  std::shared_ptr<sigrok::Input> create_input(
+    std::map<std::string, Glib::VariantBase> options)
+  {
     return $self->create_input(options);
   }
 }
 
-/* Support OutputFormat.create_output(device) with no options. */
+/* Support OutputFormat.create_output() with or without options. */
+%ignore sigrok::OutputFormat::create_output;
+
 %extend sigrok::OutputFormat {
   std::shared_ptr<sigrok::Output> create_output(
     std::shared_ptr<sigrok::Device> device)
   {
-    std::map<std::string, Glib::VariantBase> options;
+    return $self->create_output(device);
+  }
+
+  std::shared_ptr<sigrok::Output> create_output(
+    std::shared_ptr<sigrok::Device> device,
+    std::map<std::string, Glib::VariantBase> options)
+  {
     return $self->create_output(device, options);
   }
+
+  std::shared_ptr<sigrok::Output> create_output(
+    std::string filename,
+    std::shared_ptr<sigrok::Device> device)
+  {
+    return $self->create_output(filename, device);
+  }
+
+  std::shared_ptr<sigrok::Output> create_output(
+    std::string filename,
+    std::shared_ptr<sigrok::Device> device,
+    std::map<std::string, Glib::VariantBase> options)
+  {
+    return $self->create_output(filename, device, options);
+  }
 }
 
 /* Pass JNIEnv parameter to C++ extension methods requiring it. */