summarylogtreecommitdiffstats
path: root/fix_swig4_java_bindings.patch
blob: b1392afc22973e39514b69e9a470de8675ee5619 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
From e803574173bdac8a7f33085a648c29eaf248a394 Mon Sep 17 00:00:00 2001
From: Uwe Hermann <uwe@hermann-uwe.de>
Date: Sat, 4 Apr 2020 21:54:13 +0200
Subject: [PATCH 1/1] bindings/java: Fix build issue with SWIG 4.x.

Tested with SWIG 3.x and SWIG 4.x.

This fixes bug #1527.
---
 bindings/java/org/sigrok/core/classes/classes.i | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/bindings/java/org/sigrok/core/classes/classes.i b/bindings/java/org/sigrok/core/classes/classes.i
index 75793b25..e953fe5d 100644
--- a/bindings/java/org/sigrok/core/classes/classes.i
+++ b/bindings/java/org/sigrok/core/classes/classes.i
@@ -94,10 +94,18 @@ VECTOR(std::shared_ptr<sigrok::HardwareDevice>, HardwareDevice)
   "java.util.Map<JKey, JValue>"
 
 %typemap(javain,
+/* SWIG 4.0.0 changed the std::map wrappers in an incompatible way. */
+#if SWIG_VERSION >= 0x040000
+    pre="  $javaclassname temp$javainput = new $javaclassname();
+    for (java.util.Map.Entry<JKey, JValue> entry : $javainput.entrySet())
+      temp$javainput.put(entry.getKey(), entry.getValue());",
+    pgcppname="temp$javainput")
+#else
     pre="  $javaclassname temp$javainput = new $javaclassname();
     for (java.util.Map.Entry<JKey, JValue> entry : $javainput.entrySet())
       temp$javainput.set(entry.getKey(), entry.getValue());",
     pgcppname="temp$javainput")
+#endif
   std::map< CKey, CValue > "$javaclassname.getCPtr(temp$javainput)"
 
 %typemap(javaout) std::map< CKey, CValue > {
-- 
2.24.0.rc2