Removed golang stringing for signed/unsigned char

With this change, generated code for golang treats char* as a string but
treats signed char* and unsigned char* as normal pointers. This seems to
fit better with the expected behavior, as the latter are more often used
as non-string data.
This commit is contained in:
Rick Luddy 2015-08-25 09:17:19 -04:00
commit a1e385694e

View file

@ -426,57 +426,41 @@
/* Strings. */ /* Strings. */
%typemap(gotype) %typemap(gotype)
char *, char *&, char[ANY], char[], char *, char *&, char[ANY], char[] "string"
signed char *, signed char *&, signed char[ANY], signed char[],
unsigned char *, unsigned char *&, unsigned char[ANY], unsigned char[]
"string"
/* Needed to avoid confusion with the way the go module handles /* Needed to avoid confusion with the way the go module handles
references. */ references. */
%typemap(gotype) char&, unsigned char& "*byte" %typemap(gotype) char& "*byte"
%typemap(gotype) signed char& "*int8"
%typemap(in) %typemap(in)
char *, char[ANY], char[], char *, char[ANY], char[]
signed char *, signed char[ANY], signed char[],
unsigned char *, unsigned char[ANY], unsigned char[]
%{ $1 = ($1_ltype)$input.p; %} %{ $1 = ($1_ltype)$input.p; %}
%typemap(in) char *&, signed char *&, unsigned char *& %typemap(in) char *&
%{ $1 = ($1_ltype)$input.p; %} %{ $1 = ($1_ltype)$input.p; %}
%typemap(out,fragment="AllocateString") %typemap(out,fragment="AllocateString")
char *, char *&, char[ANY], char[], char *, char *&, char[ANY], char[]
signed char *, signed char *&, signed char[ANY], signed char[],
unsigned char *, unsigned char *&, unsigned char[ANY], unsigned char[]
%{ $result = Swig_AllocateString((char*)$1, $1 ? strlen((char*)$1) : 0); %} %{ $result = Swig_AllocateString((char*)$1, $1 ? strlen((char*)$1) : 0); %}
%typemap(goout,fragment="CopyString") %typemap(goout,fragment="CopyString")
char *, char *&, char[ANY], char[], char *, char *&, char[ANY], char[]
signed char *, signed char *&, signed char[ANY], signed char[],
unsigned char *, unsigned char *&, unsigned char[ANY], unsigned char[]
%{ $result = swigCopyString($1) %} %{ $result = swigCopyString($1) %}
%typemap(directorin,fragment="AllocateString") %typemap(directorin,fragment="AllocateString")
char *, char *&, char[ANY], char[], char *, char *&, char[ANY], char[]
signed char *, signed char *&, signed char[ANY], signed char[],
unsigned char *, unsigned char *&, unsigned char[ANY], unsigned char[]
%{ %{
$input = Swig_AllocateString((char*)$1, $1 ? strlen((char*)$1) : 0); $input = Swig_AllocateString((char*)$1, $1 ? strlen((char*)$1) : 0);
%} %}
%typemap(godirectorin,fragment="CopyString") %typemap(godirectorin,fragment="CopyString")
char *, char *&, char[ANY], char[], char *, char *&, char[ANY], char[]
signed char *, signed char *&, signed char[ANY], signed char[],
unsigned char *, unsigned char *&, unsigned char[ANY], unsigned char[]
%{ %{
$result = swigCopyString($input) $result = swigCopyString($input)
%} %}
%typemap(directorout) %typemap(directorout)
char *, char *&, char[ANY], char[], char *, char *&, char[ANY], char[]
signed char *, signed char *&, signed char[ANY], signed char[],
unsigned char *, unsigned char *&, unsigned char[ANY], unsigned char[]
%{ $result = ($1_ltype)$input.p; %} %{ $result = ($1_ltype)$input.p; %}
/* String & length */ /* String & length */