Fix (char *STRING, size_t LENGTH) typemaps to accept NULL string
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13736 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
2c74c90430
commit
593c708a78
4 changed files with 28 additions and 8 deletions
|
|
@ -4,6 +4,9 @@ See the RELEASENOTES file for a summary of changes in each release.
|
|||
|
||||
Version 2.0.9 (in progress)
|
||||
===========================
|
||||
2012-09-06: wsfulton
|
||||
[Java] Fix (char *STRING, size_t LENGTH) typemaps to accept NULL string.
|
||||
|
||||
2012-08-26: drjoe
|
||||
[R] make ExternalReference slot ref to contain reference
|
||||
|
||||
|
|
|
|||
|
|
@ -15,8 +15,10 @@ class Callback {
|
|||
public:
|
||||
virtual ~Callback() {}
|
||||
virtual void run(char* dataBufferAA, int sizeAA, char* dataBufferBB, int sizeBB) {
|
||||
memset(dataBufferAA, -1, sizeAA);
|
||||
memset(dataBufferBB, -1, sizeBB);
|
||||
if (dataBufferAA)
|
||||
memset(dataBufferAA, -1, sizeAA);
|
||||
if (dataBufferBB)
|
||||
memset(dataBufferBB, -1, sizeBB);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -45,6 +47,9 @@ public:
|
|||
}
|
||||
return sum;
|
||||
}
|
||||
void call_null() {
|
||||
_callback->run(NULL, 0, NULL, 0);
|
||||
}
|
||||
};
|
||||
|
||||
%}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,11 @@ public class director_binary_string_runme {
|
|||
|
||||
if (sum != 9*2*8 + 13*3*5)
|
||||
throw new RuntimeException("Unexpected sum: " + sum);
|
||||
|
||||
new Callback().run(null, null);
|
||||
callback = new DirectorBinaryStringCallback();
|
||||
caller.setCallback(callback);
|
||||
caller.call_null();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -32,11 +37,13 @@ class DirectorBinaryStringCallback extends Callback {
|
|||
@Override
|
||||
public void run(byte[] dataBufferAA, byte[] dataBufferBB)
|
||||
{
|
||||
for (int i = 0; i < dataBufferAA.length; i++)
|
||||
dataBufferAA[i] = (byte)(dataBufferAA[i] * 2);
|
||||
if (dataBufferAA != null)
|
||||
for (int i = 0; i < dataBufferAA.length; i++)
|
||||
dataBufferAA[i] = (byte)(dataBufferAA[i] * 2);
|
||||
|
||||
for (int i = 0; i < dataBufferBB.length; i++)
|
||||
dataBufferBB[i] = (byte)(dataBufferBB[i] * 3);
|
||||
if (dataBufferBB != null)
|
||||
for (int i = 0; i < dataBufferBB.length; i++)
|
||||
dataBufferBB[i] = (byte)(dataBufferBB[i] * 3);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1301,11 +1301,16 @@ SWIG_PROXY_CONSTRUCTOR(true, true, SWIGTYPE)
|
|||
%typemap(javain) (char *STRING, size_t LENGTH) "$javainput"
|
||||
%typemap(freearg) (char *STRING, size_t LENGTH) ""
|
||||
%typemap(in) (char *STRING, size_t LENGTH) {
|
||||
if ($input) {
|
||||
$1 = (char *) JCALL2(GetByteArrayElements, jenv, $input, 0);
|
||||
$2 = (size_t) JCALL1(GetArrayLength, jenv, $input);
|
||||
$2 = (size_t) JCALL1(GetArrayLength, jenv, $input);
|
||||
} else {
|
||||
$1 = 0;
|
||||
$2 = 0;
|
||||
}
|
||||
}
|
||||
%typemap(argout) (char *STRING, size_t LENGTH) {
|
||||
JCALL3(ReleaseByteArrayElements, jenv, $input, (jbyte *)$1, 0);
|
||||
if ($input) JCALL3(ReleaseByteArrayElements, jenv, $input, (jbyte *)$1, 0);
|
||||
}
|
||||
%typemap(directorin, descriptor="[B") (char *STRING, size_t LENGTH) {
|
||||
jbyteArray jb = (jenv)->NewByteArray($2);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue