summaryrefslogtreecommitdiffstats
path: root/bindings/java/java.i
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/java/java.i')
-rw-r--r--bindings/java/java.i93
1 files changed, 93 insertions, 0 deletions
diff --git a/bindings/java/java.i b/bindings/java/java.i
new file mode 100644
index 0000000..da617d7
--- /dev/null
+++ b/bindings/java/java.i
@@ -0,0 +1,93 @@
+/* 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 \ No newline at end of file
OpenPOWER on IntegriCloud