doubango/branches/2.0/doubango/bindings/java/java.i

93 lines
2.5 KiB
OpenEdge ABL

/* File : java.i
* http://www.swig.org/Doc1.3/Java.html
*/
// http://www.swig.org/Doc1.3/Java.html#enumerations
%include "enums.swg"
%javaconst(1);
//================== Mapping void* (Java to C) as ByteBuffer
%typemap(jni) void * "jbyteArray"
%typemap(jtype) void * "java.nio.ByteBuffer"
%typemap(jstype) void * "java.nio.ByteBuffer"
%typemap(javain) void * "$javainput"
%typemap(javaout) void * { return $jnicall; }
// (From Java to C)
%typemap(in) void * %{
$1 = jenv->GetDirectBufferAddress($input);
%}
// (From C to Java)
//%typemap(out) void * %{
// $result = $1;
//%}
%typemap(javadirectorin) void * "$jniinput"
//==================
%typemap(javacode) SipMessage %{
public byte[] getSipContent() {
final int clen = (int)this.getSipContentLength();
if(clen>0){
final java.nio.ByteBuffer buffer = java.nio.ByteBuffer.allocateDirect(clen);
final int read = (int)this.getSipContent(buffer, clen);
final byte[] bytes = new byte[read];
buffer.get(bytes, 0, read);
return bytes;
}
return null;
}
%}
%typemap(javacode) SipSession %{
protected java.nio.ByteBuffer getByteBuffer(byte[] bytes) {
if(bytes != null){
final java.nio.ByteBuffer byteBuffer = java.nio.ByteBuffer.allocateDirect(bytes.length);
byteBuffer.put(bytes);
return byteBuffer;
}
return null;
}
%}
%typemap(javacode) PublicationSession %{
public boolean Publish(byte[] bytes) {
if(bytes != null){
final java.nio.ByteBuffer byteBuffer = this.getByteBuffer(bytes);
return this.publish(byteBuffer, bytes.length);
}
return false;
}
%}
%typemap(javacode) XcapMessage %{
public byte[] getXcapContent() {
final int clen = (int)this.getXcapContentLength();
if(clen>0){
final java.nio.ByteBuffer buffer = java.nio.ByteBuffer.allocateDirect(clen);
final int read = (int)this.getXcapContent(buffer, clen);
final byte[] bytes = new byte[read];
buffer.get(bytes, 0, read);
return bytes;
}
return null;
}
%}
%typemap(javacode) T140CallbackData %{
public byte[] getData() {
final int size = (int)this.getSize();
if(size > 0){
final java.nio.ByteBuffer buffer = java.nio.ByteBuffer.allocateDirect(size);
final int read = (int)this.getData(buffer, size);
final byte[] bytes = new byte[read];
buffer.get(bytes, 0, read);
return bytes;
}
return null;
}
%}
%include ../_common/tinyWRAP.i