JIMS: plug extraction
[scilab.git] / scilab / modules / external_objects_java / src / jni / ScilabJavaObject.hxx
1 /* Generated by GIWS (version 2.0.2) with command:
2 giws -e -r -f ScilabObjects.giws.xml
3 */
4 /*
5
6 This is generated code.
7
8 This software is a computer program whose purpose is to hide the complexity
9 of accessing Java objects/methods from C++ code.
10
11 This software is governed by the CeCILL-B license under French law and
12 abiding by the rules of distribution of free software.  You can  use,
13 modify and/ or redistribute the software under the terms of the CeCILL-B
14 license as circulated by CEA, CNRS and INRIA at the following URL
15 "http://www.cecill.info".
16
17 As a counterpart to the access to the source code and  rights to copy,
18 modify and redistribute granted by the license, users are provided only
19 with a limited warranty  and the software's author,  the holder of the
20 economic rights,  and the successive licensors  have only  limited
21 liability.
22
23 In this respect, the user's attention is drawn to the risks associated
24 with loading,  using,  modifying and/or developing or reproducing the
25 software by the user in light of its specific status of free software,
26 that may mean  that it is complicated to manipulate,  and  that  also
27 therefore means  that it is reserved for developers  and  experienced
28 professionals having in-depth computer knowledge. Users are therefore
29 encouraged to load and test the software's suitability as regards their
30 requirements in conditions enabling the security of their systems and/or
31 data to be ensured and,  more generally, to use and operate it in the
32 same conditions as regards security.
33
34 The fact that you are presently reading this means that you have had
35 knowledge of the CeCILL-B license and that you accept its terms.
36 */
37
38
39 #ifndef __ORG_SCILAB_MODULES_EXTERNAL_OBJECTS_JAVA_SCILABJAVAOBJECT__
40 #define __ORG_SCILAB_MODULES_EXTERNAL_OBJECTS_JAVA_SCILABJAVAOBJECT__
41 #include <iostream>
42 #include <string>
43 #include <string.h>
44 #include <stdlib.h>
45 #include <jni.h>
46
47 #include "GiwsException.hxx"
48
49 #if defined(_MSC_VER) /* Defined anyway with Visual */
50 #include <Windows.h>
51 #else
52 typedef signed char byte;
53 #endif
54
55
56 #ifndef GIWSEXPORT
57 # if defined(_MSC_VER) || defined(__WIN32__) || defined(__CYGWIN__)
58 #   if defined(STATIC_LINKED)
59 #     define GIWSEXPORT
60 #   else
61 #     define GIWSEXPORT __declspec(dllexport)
62 #   endif
63 # else
64 #   if __GNUC__ >= 4
65 #     define GIWSEXPORT __attribute__ ((visibility ("default")))
66 #   else
67 #     define GIWSEXPORT
68 #   endif
69 # endif
70 #endif
71
72 namespace org_scilab_modules_external_objects_java
73 {
74 class GIWSEXPORT ScilabJavaObject
75 {
76
77 private:
78     JavaVM * jvm;
79
80 protected:
81     jmethodID jintinvokejintintjstringjava_lang_StringjintArray_intintID; // cache method id
82     jmethodID jintextractjintintjintArray_intintID; // cache method id
83     jmethodID voidinitScilabJavaObjectID; // cache method id
84     jmethodID voidgarbageCollectID; // cache method id
85     jmethodID jstringgetRepresentationjintintID; // cache method id
86     jmethodID jbooleanisValidJavaObjectjintintID; // cache method id
87     jmethodID voidenableTracejstringjava_lang_StringID; // cache method id
88     jmethodID voiddisableTraceID; // cache method id
89     jmethodID voidsetFieldjintintjstringjava_lang_StringjintintID; // cache method id
90     jmethodID jintgetFieldjintintjstringjava_lang_StringID; // cache method id
91     jmethodID jintgetFieldTypejintintjstringjava_lang_StringID; // cache method id
92     jmethodID jintjavaCastjintintjstringjava_lang_StringID; // cache method id
93     jmethodID jintjavaCastjintintjintintID; // cache method id
94     jmethodID jstringgetClassNamejintintID; // cache method id
95     jmethodID jintgetArrayElementjintintjintArray_intintID; // cache method id
96     jmethodID voidsetArrayElementjintintjintArray_intintjintintID; // cache method id
97     jmethodID voidremoveScilabJavaObjectjintintID; // cache method id
98     jmethodID voidlimitDirectBufferjintintID; // cache method id
99     jmethodID jintisUnwrappablejintintID; // cache method id
100     jmethodID jintwrapjdoubledoubleID; // cache method id
101     jmethodID jintwrapjdoubleArray_doubledoubleID; // cache method id
102     jmethodID jintwrapjobjectArray__doubledoubleID; // cache method id
103     jmethodID jintwrapjintintID; // cache method id
104     jmethodID jintwrapjintArray_intintID; // cache method id
105     jmethodID jintwrapjobjectArray__intintID; // cache method id
106     jmethodID jintwrapjbytebyteID; // cache method id
107     jmethodID jintwrapjbyteArray_bytebyteID; // cache method id
108     jmethodID jintwrapjobjectArray__bytebyteID; // cache method id
109     jmethodID jintwrapjshortshortID; // cache method id
110     jmethodID jintwrapjshortArray_shortshortID; // cache method id
111     jmethodID jintwrapjobjectArray__shortshortID; // cache method id
112     jmethodID jintwrapjstringjava_lang_StringID; // cache method id
113     jmethodID jintwrapjobjectArray_java_lang_Stringjava_lang_StringID; // cache method id
114     jclass stringArrayClass;
115     jmethodID jintwrapjobjectArray__java_lang_Stringjava_lang_StringID; // cache method id
116     jmethodID jintwrapjbooleanbooleanID; // cache method id
117     jmethodID jintwrapjbooleanArray_booleanbooleanID; // cache method id
118     jmethodID jintwrapjobjectArray__booleanbooleanID; // cache method id
119     jmethodID jintwrapjcharcharID; // cache method id
120     jmethodID jintwrapjcharArray_charcharID; // cache method id
121     jmethodID jintwrapjobjectArray__charcharID; // cache method id
122     jmethodID jintwrapjfloatfloatID; // cache method id
123     jmethodID jintwrapjfloatArray_floatfloatID; // cache method id
124     jmethodID jintwrapjobjectArray__floatfloatID; // cache method id
125     jmethodID jintwrapjlonglongID; // cache method id
126     jmethodID jintwrapjlongArray_longlongID; // cache method id
127     jmethodID jintwrapjobjectArray__longlongID; // cache method id
128     jmethodID jdoubleunwrapDoublejintintID; // cache method id
129     jmethodID jdoubleArray_unwrapRowDoublejintintID; // cache method id
130     jmethodID jobjectArray__unwrapMatDoublejintintID; // cache method id
131     jmethodID jintunwrapIntjintintID; // cache method id
132     jmethodID jintArray_unwrapRowIntjintintID; // cache method id
133     jmethodID jobjectArray__unwrapMatIntjintintID; // cache method id
134     jmethodID jlongunwrapUIntjintintID; // cache method id
135     jmethodID jlongArray_unwrapRowUIntjintintID; // cache method id
136     jmethodID jobjectArray__unwrapMatUIntjintintID; // cache method id
137     jmethodID jbyteunwrapBytejintintID; // cache method id
138     jmethodID jbyteArray_unwrapRowBytejintintID; // cache method id
139     jmethodID jobjectArray__unwrapMatBytejintintID; // cache method id
140     jmethodID jshortunwrapUBytejintintID; // cache method id
141     jmethodID jshortArray_unwrapRowUBytejintintID; // cache method id
142     jmethodID jobjectArray__unwrapMatUBytejintintID; // cache method id
143     jmethodID jshortunwrapShortjintintID; // cache method id
144     jmethodID jshortArray_unwrapRowShortjintintID; // cache method id
145     jmethodID jobjectArray__unwrapMatShortjintintID; // cache method id
146     jmethodID jintunwrapUShortjintintID; // cache method id
147     jmethodID jintArray_unwrapRowUShortjintintID; // cache method id
148     jmethodID jobjectArray__unwrapMatUShortjintintID; // cache method id
149     jmethodID jstringunwrapStringjintintID; // cache method id
150     jmethodID jobjectArray_unwrapRowStringjintintID; // cache method id
151     jmethodID jobjectArray__unwrapMatStringjintintID; // cache method id
152     jmethodID jbooleanunwrapBooleanjintintID; // cache method id
153     jmethodID jbooleanArray_unwrapRowBooleanjintintID; // cache method id
154     jmethodID jobjectArray__unwrapMatBooleanjintintID; // cache method id
155     jmethodID jcharunwrapCharjintintID; // cache method id
156     jmethodID jcharArray_unwrapRowCharjintintID; // cache method id
157     jmethodID jobjectArray__unwrapMatCharjintintID; // cache method id
158     jmethodID jfloatunwrapFloatjintintID; // cache method id
159     jmethodID jfloatArray_unwrapRowFloatjintintID; // cache method id
160     jmethodID jobjectArray__unwrapMatFloatjintintID; // cache method id
161     jmethodID jlongunwrapLongjintintID; // cache method id
162     jmethodID jlongArray_unwrapRowLongjintintID; // cache method id
163     jmethodID jobjectArray__unwrapMatLongjintintID; // cache method id
164
165
166
167     jobject instance;
168     jclass instanceClass; // cache class
169
170
171     // Caching (if any)
172
173
174     /**
175     * Get the environment matching to the current thread.
176     */
177     virtual JNIEnv * getCurrentEnv();
178
179 public:
180     // Constructor
181     /**
182     * Create a wrapping of the object from a JNIEnv.
183     * It will call the default constructor
184     * @param JEnv_ the Java Env
185     */
186     ScilabJavaObject(JavaVM * jvm_);
187
188     /**
189     * Create a wrapping of an already existing object from a JNIEnv.
190     * The object must have already been instantiated
191     * @param JEnv_ the Java Env
192     * @param JObj the object
193     */
194     ScilabJavaObject(JavaVM * jvm_, jobject JObj);
195
196
197     /**
198     * This is a fake constructor to avoid the constructor
199     * chaining when dealing with extended giws classes
200     */
201 #ifdef FAKEGIWSDATATYPE
202     ScilabJavaObject(fakeGiwsDataType::fakeGiwsDataType /* unused */) {}
203 #endif
204
205     // Destructor
206     ~ScilabJavaObject();
207
208     // Generic method
209     // Synchronization methods
210     /**
211     * Enter monitor associated with the object.
212     * Equivalent of creating a "synchronized(obj)" scope in Java.
213     */
214     void synchronize();
215
216     /**
217     * Exit monitor associated with the object.
218     * Equivalent of ending a "synchronized(obj)" scope.
219     */
220     void endSynchronize();
221
222     // Methods
223     static int invoke(JavaVM * jvm_, int id, char const* methodName, int const* args, int argsSize);
224
225     static int extract(JavaVM * jvm_, int id, int const* args, int argsSize);
226
227     static void initScilabJavaObject(JavaVM * jvm_);
228
229     static void garbageCollect(JavaVM * jvm_);
230
231     static char* getRepresentation(JavaVM * jvm_, int id);
232
233     static bool isValidJavaObject(JavaVM * jvm_, int id);
234
235     static void enableTrace(JavaVM * jvm_, char const* filename);
236
237     static void disableTrace(JavaVM * jvm_);
238
239     static void setField(JavaVM * jvm_, int id, char const* fieldName, int idarg);
240
241     static int getField(JavaVM * jvm_, int id, char const* fieldName);
242
243     static int getFieldType(JavaVM * jvm_, int id, char const* fieldName);
244
245     static int javaCast(JavaVM * jvm_, int id, char const* objName);
246
247     static int javaCast(JavaVM * jvm_, int id, int classId);
248
249     static char* getClassName(JavaVM * jvm_, int id);
250
251     static int getArrayElement(JavaVM * jvm_, int id, int const* index, int indexSize);
252
253     static void setArrayElement(JavaVM * jvm_, int id, int const* index, int indexSize, int idArg);
254
255     static void removeScilabJavaObject(JavaVM * jvm_, int id);
256
257     static void limitDirectBuffer(JavaVM * jvm_, int id);
258
259     static int isUnwrappable(JavaVM * jvm_, int id);
260
261     static int wrap(JavaVM * jvm_, double x);
262
263     static int wrap(JavaVM * jvm_, double const* x, int xSize);
264
265     static int wrap(JavaVM * jvm_, double const* const* x, int xSize, int xSizeCol);
266
267     static int wrap(JavaVM * jvm_, int x);
268
269     static int wrap(JavaVM * jvm_, int const* x, int xSize);
270
271     static int wrap(JavaVM * jvm_, int const* const* x, int xSize, int xSizeCol);
272
273     static int wrap(JavaVM * jvm_, byte x);
274
275     static int wrap(JavaVM * jvm_, byte const* x, int xSize);
276
277     static int wrap(JavaVM * jvm_, byte const* const* x, int xSize, int xSizeCol);
278
279     static int wrap(JavaVM * jvm_, short x);
280
281     static int wrap(JavaVM * jvm_, short const* x, int xSize);
282
283     static int wrap(JavaVM * jvm_, short const* const* x, int xSize, int xSizeCol);
284
285     static int wrap(JavaVM * jvm_, char const* x);
286
287     static int wrap(JavaVM * jvm_, char const* const* x, int xSize);
288
289     static int wrap(JavaVM * jvm_, char const* const* const* x, int xSize, int xSizeCol);
290
291     static int wrap(JavaVM * jvm_, bool x);
292
293     static int wrap(JavaVM * jvm_, bool const* x, int xSize);
294
295     static int wrap(JavaVM * jvm_, bool const* const* x, int xSize, int xSizeCol);
296
297     static int wrap(JavaVM * jvm_, unsigned short x);
298
299     static int wrap(JavaVM * jvm_, unsigned short const* x, int xSize);
300
301     static int wrap(JavaVM * jvm_, unsigned short const* const* x, int xSize, int xSizeCol);
302
303     static int wrap(JavaVM * jvm_, float x);
304
305     static int wrap(JavaVM * jvm_, float const* x, int xSize);
306
307     static int wrap(JavaVM * jvm_, float const* const* x, int xSize, int xSizeCol);
308
309     static int wrap(JavaVM * jvm_, long long x);
310
311     static int wrap(JavaVM * jvm_, long long const* x, int xSize);
312
313     static int wrap(JavaVM * jvm_, long long const* const* x, int xSize, int xSizeCol);
314
315     static double unwrapDouble(JavaVM * jvm_, int x);
316
317     static double* unwrapRowDouble(JavaVM * jvm_, int x);
318
319     static double** unwrapMatDouble(JavaVM * jvm_, int x);
320
321     static int unwrapInt(JavaVM * jvm_, int x);
322
323     static int* unwrapRowInt(JavaVM * jvm_, int x);
324
325     static int** unwrapMatInt(JavaVM * jvm_, int x);
326
327     static long long unwrapUInt(JavaVM * jvm_, int x);
328
329     static long long* unwrapRowUInt(JavaVM * jvm_, int x);
330
331     static long long** unwrapMatUInt(JavaVM * jvm_, int x);
332
333     static byte unwrapByte(JavaVM * jvm_, int x);
334
335     static byte* unwrapRowByte(JavaVM * jvm_, int x);
336
337     static byte** unwrapMatByte(JavaVM * jvm_, int x);
338
339     static short unwrapUByte(JavaVM * jvm_, int x);
340
341     static short* unwrapRowUByte(JavaVM * jvm_, int x);
342
343     static short** unwrapMatUByte(JavaVM * jvm_, int x);
344
345     static short unwrapShort(JavaVM * jvm_, int x);
346
347     static short* unwrapRowShort(JavaVM * jvm_, int x);
348
349     static short** unwrapMatShort(JavaVM * jvm_, int x);
350
351     static int unwrapUShort(JavaVM * jvm_, int x);
352
353     static int* unwrapRowUShort(JavaVM * jvm_, int x);
354
355     static int** unwrapMatUShort(JavaVM * jvm_, int x);
356
357     static char* unwrapString(JavaVM * jvm_, int x);
358
359     static char** unwrapRowString(JavaVM * jvm_, int x);
360
361     static char*** unwrapMatString(JavaVM * jvm_, int x);
362
363     static bool unwrapBoolean(JavaVM * jvm_, int x);
364
365     static bool* unwrapRowBoolean(JavaVM * jvm_, int x);
366
367     static bool** unwrapMatBoolean(JavaVM * jvm_, int x);
368
369     static unsigned short unwrapChar(JavaVM * jvm_, int x);
370
371     static unsigned short* unwrapRowChar(JavaVM * jvm_, int x);
372
373     static unsigned short** unwrapMatChar(JavaVM * jvm_, int x);
374
375     static float unwrapFloat(JavaVM * jvm_, int x);
376
377     static float* unwrapRowFloat(JavaVM * jvm_, int x);
378
379     static float** unwrapMatFloat(JavaVM * jvm_, int x);
380
381     static long long unwrapLong(JavaVM * jvm_, int x);
382
383     static long long* unwrapRowLong(JavaVM * jvm_, int x);
384
385     static long long** unwrapMatLong(JavaVM * jvm_, int x);
386
387
388     /**
389     * Get class name to use for static methods
390     * @return class name to use for static methods
391     */
392
393     static const std::string className()
394     {
395         return "org/scilab/modules/external_objects_java/ScilabJavaObject";
396     }
397
398 };
399
400
401 }
402 #endif