Merge remote-tracking branch 'origin/master' into light_property
[scilab.git] / scilab / modules / graphic_objects / src / jni / DataLoader.i
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2010-2012 - DIGITEO - Pierre LANDO
4  * This file must be used under the terms of the CeCILL.
5  * This source file is licensed as described in the file COPYING, which
6  * you should have received as part of this distribution.  The terms
7  * are also available at
8  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
9  */
10
11 %module DataLoader
12
13 %include "arrays_java.i"
14
15 %define NIO_BUFFER_TYPEMAP(CTYPE, LABEL, BUFFERTYPE)
16   %typemap(jni) CTYPE* LABEL "jobject"
17   %typemap(jtype) CTYPE* LABEL "BUFFERTYPE"
18   %typemap(jstype) CTYPE* LABEL "BUFFERTYPE"
19   %typemap(javain,        pre="    assert $javainput.isDirect() : \"Buffer must be allocated direct.\";") CTYPE* LABEL "$javainput"
20   %typemap(javaout) CTYPE* LABEL {
21       return $jnicall;
22   }
23   %typemap(in) CTYPE* LABEL {
24     $1 = (*jenv)->GetDirectBufferAddress(jenv, $input);
25     if ($1 == NULL) {
26       SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
27     }
28   }
29   %typemap(memberin) CTYPE* LABEL {
30     if ($input) {
31       $1 = $input;
32     } else {
33       $1 = 0;
34     }
35   }
36 %enddef
37
38 /*
39 NIO_BUFFER_TYPEMAP(void, BUFF, java.nio.Buffer);
40 NIO_BUFFER_TYPEMAP(char, BUFF, java.nio.ByteBuffer);
41 NIO_BUFFER_TYPEMAP(char, CBUFF, java.nio.CharBuffer);
42 NIO_BUFFER_TYPEMAP(short, BUFF, java.nio.ShortBuffer);
43 NIO_BUFFER_TYPEMAP(unsigned short, BUFF, java.nio.IntBuffer);
44 NIO_BUFFER_TYPEMAP(unsigned int, BUFF, java.nio.LongBuffer);
45 NIO_BUFFER_TYPEMAP(long, BUFF, java.nio.IntBuffer);
46 NIO_BUFFER_TYPEMAP(unsigned long, BUFF, java.nio.LongBuffer);
47 NIO_BUFFER_TYPEMAP(long long, BUFF, java.nio.LongBuffer);
48 NIO_BUFFER_TYPEMAP(double, BUFF, java.nio.DoubleBuffer);
49 */
50 NIO_BUFFER_TYPEMAP(int, BUFF, java.nio.IntBuffer);
51 NIO_BUFFER_TYPEMAP(unsigned char, BUFF, java.nio.ByteBuffer);
52 NIO_BUFFER_TYPEMAP(float, BUFF, java.nio.FloatBuffer);
53 #undef NIO_BUFFER_TYPEMAP
54
55 %pragma(java) jniclasscode=%{
56   static {
57     try {
58         System.loadLibrary("scigraphic_objects");
59     } catch (UnsatisfiedLinkError e) {
60       System.err.println("Native library failed to load. \n" + e);
61       System.exit(1);
62     }
63   }
64 %}
65
66 %apply int* BUFF {int* buffer};
67 %apply unsigned char* BUFF {unsigned char* buffer};
68 %apply float* BUFF {float* buffer};
69 %apply float* BUFF {float* position};
70
71 %typemap(jni) JavaDirectBuffer "jobject"
72 %typemap(jtype) JavaDirectBuffer "java.nio.ByteBuffer"
73 %typemap(jstype) JavaDirectBuffer "java.nio.ByteBuffer"
74
75 %typemap(out) JavaDirectBuffer {
76     if ($1.address)
77     {
78         jresult = (*jenv)->NewDirectByteBuffer(jenv, $1.address, $1.size);
79     }
80  }
81
82 %typemap(javaout) JavaDirectBuffer {
83     return $jnicall;
84 }
85
86 %ignore JavaDirectBuffer;
87
88 %include "../../includes/DataLoader.hxx"
89
90 %inline
91 %{
92   #include "DataLoader.hxx"
93 %}