summaryrefslogtreecommitdiff
path: root/Lib/go/cdata.i
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2015-02-09 07:55:19 +0000
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2015-02-11 23:34:16 +0000
commit2947b711d9a0c9d7e85d18c4c89c6bfc25df938f (patch)
treedd70b6f74681e65bf5618819665db733a5f868be /Lib/go/cdata.i
parent1ef899a57bf57c0d5c28d5cacf3bdc24be14877c (diff)
downloadswig-2947b711d9a0c9d7e85d18c4c89c6bfc25df938f.tar.gz
Warning fixes in Go cdata library
GCC warnings -Wpointer-to-int-cast and -Wdeclaration-after-statement
Diffstat (limited to 'Lib/go/cdata.i')
-rw-r--r--Lib/go/cdata.i14
1 files changed, 10 insertions, 4 deletions
diff --git a/Lib/go/cdata.i b/Lib/go/cdata.i
index cd7b253b9..b4411af97 100644
--- a/Lib/go/cdata.i
+++ b/Lib/go/cdata.i
@@ -11,13 +11,19 @@ typedef struct SWIGCDATA {
} SWIGCDATA;
%}
+%fragment("cdata", "header") %{
+struct swigcdata {
+ intgo size;
+ void *data;
+};
+%}
+
%typemap(gotype) SWIGCDATA "[]byte"
%typemap(imtype) SWIGCDATA "uint64"
-%typemap(out) SWIGCDATA %{
- struct swigcdata { intgo size; void* data; } *swig_out;
- swig_out = (struct swigcdata*)malloc(sizeof(*swig_out));
+%typemap(out, fragment="cdata") SWIGCDATA(struct swigcdata *swig_out) %{
+ swig_out = (struct swigcdata *)malloc(sizeof(*swig_out));
if (swig_out) {
swig_out->size = $1.len;
swig_out->data = malloc(swig_out->size);
@@ -25,7 +31,7 @@ typedef struct SWIGCDATA {
memcpy(swig_out->data, $1.data, swig_out->size);
}
}
- $result = (unsigned long long)swig_out;
+ $result = *(long long *)(void **)&swig_out;
%}
%typemap(goout) SWIGCDATA %{