1 /* dstep -I/path/to/ndk-r9d/platforms/android-9/arch-x86/usr/include -I/path/to/ndk-r9d/toolchains/llvm-3.4/prebuilt/linux-x86/lib/clang/3.4/include /path/to/ndk-r9d/platforms/android-9/arch-x86/usr/include/jni.h -o jni.d*/
2
3 module jni;
4
5 version (Android):
6 extern (C):
7 @system:
8 nothrow:
9 @nogc:
10
11 import core.stdc.stdarg;
12
13 alias ubyte jboolean;
14 alias byte jbyte;
15 alias ushort jchar;
16 alias short jshort;
17 alias int jint;
18 alias long jlong;
19 alias float jfloat;
20 alias double jdouble;
21 alias jint jsize;
22 alias void* jobject;
23 alias jobject jclass;
24 alias jobject jstring;
25 alias jobject jarray;
26 alias jarray jobjectArray;
27 alias jarray jbooleanArray;
28 alias jarray jbyteArray;
29 alias jarray jcharArray;
30 alias jarray jshortArray;
31 alias jarray jintArray;
32 alias jarray jlongArray;
33 alias jarray jfloatArray;
34 alias jarray jdoubleArray;
35 alias jobject jthrowable;
36 alias jobject jweak;
37 alias _jfieldID* jfieldID;
38 alias _jmethodID* jmethodID;
39 alias const(JNINativeInterface)* C_JNIEnv;
40 alias const(JNINativeInterface)* JNIEnv;
41 alias const(JNIInvokeInterface)* JavaVM;
42
43 enum jobjectRefType
44 {
45 JNIInvalidRefType = 0,
46 JNILocalRefType = 1,
47 JNIGlobalRefType = 2,
48 JNIWeakGlobalRefType = 3
49 }
50
51 enum JNI_FALSE = 0;
52 enum JNI_TRUE = 1;
53 enum JNI_VERSION_1_1 = 0x00010001;
54 enum JNI_VERSION_1_2 = 0x00010002;
55 enum JNI_VERSION_1_4 = 0x00010004;
56 enum JNI_VERSION_1_6 = 0x00010006;
57 enum JNI_OK = 0;
58 enum JNI_ERR = -1;
59 enum JNI_EDETACHED = -2;
60 enum JNI_EVERSION = -3;
61 enum JNI_COMMIT = 1;
62 enum JNI_ABORT = 2;
63
64 struct JNINativeMethod
65 {
66 const(char)* name;
67 const(char)* signature;
68 void* fnPtr;
69 }
70
71 struct JNINativeInterface
72 {
73 void* reserved0;
74 void* reserved1;
75 void* reserved2;
76 void* reserved3;
77 jint function(JNIEnv*) GetVersion;
78 jclass function(JNIEnv*, const(char)*, jobject, const(jbyte)*, jsize) DefineClass;
79 jclass function(JNIEnv*, const(char)*) FindClass;
80 jmethodID function(JNIEnv*, jobject) FromReflectedMethod;
81 jfieldID function(JNIEnv*, jobject) FromReflectedField;
82 jobject function(JNIEnv*, jclass, jmethodID, jboolean) ToReflectedMethod;
83 jclass function(JNIEnv*, jclass) GetSuperclass;
84 jboolean function(JNIEnv*, jclass, jclass) IsAssignableFrom;
85 jobject function(JNIEnv*, jclass, jfieldID, jboolean) ToReflectedField;
86 jint function(JNIEnv*, jthrowable) Throw;
87 jint function(JNIEnv*, jclass, const(char)*) ThrowNew;
88 jthrowable function(JNIEnv*) ExceptionOccurred;
89 void function(JNIEnv*) ExceptionDescribe;
90 void function(JNIEnv*) ExceptionClear;
91 void function(JNIEnv*, const(char)*) FatalError;
92 jint function(JNIEnv*, jint) PushLocalFrame;
93 jobject function(JNIEnv*, jobject) PopLocalFrame;
94 jobject function(JNIEnv*, jobject) NewGlobalRef;
95 void function(JNIEnv*, jobject) DeleteGlobalRef;
96 void function(JNIEnv*, jobject) DeleteLocalRef;
97 jboolean function(JNIEnv*, jobject, jobject) IsSameObject;
98 jobject function(JNIEnv*, jobject) NewLocalRef;
99 jint function(JNIEnv*, jint) EnsureLocalCapacity;
100 jobject function(JNIEnv*, jclass) AllocObject;
101 jobject function(JNIEnv*, jclass, jmethodID, ...) NewObject;
102 jobject function(JNIEnv*, jclass, jmethodID, va_list) NewObjectV;
103 jobject function(JNIEnv*, jclass, jmethodID, jvalue*) NewObjectA;
104 jclass function(JNIEnv*, jobject) GetObjectClass;
105 jboolean function(JNIEnv*, jobject, jclass) IsInstanceOf;
106 jmethodID function(JNIEnv*, jclass, const(char)*, const(char)*) GetMethodID;
107 jobject function(JNIEnv*, jobject, jmethodID, ...) CallObjectMethod;
108 jobject function(JNIEnv*, jobject, jmethodID, va_list) CallObjectMethodV;
109 jobject function(JNIEnv*, jobject, jmethodID, jvalue*) CallObjectMethodA;
110 jboolean function(JNIEnv*, jobject, jmethodID, ...) CallBooleanMethod;
111 jboolean function(JNIEnv*, jobject, jmethodID, va_list) CallBooleanMethodV;
112 jboolean function(JNIEnv*, jobject, jmethodID, jvalue*) CallBooleanMethodA;
113 jbyte function(JNIEnv*, jobject, jmethodID, ...) CallByteMethod;
114 jbyte function(JNIEnv*, jobject, jmethodID, va_list) CallByteMethodV;
115 jbyte function(JNIEnv*, jobject, jmethodID, jvalue*) CallByteMethodA;
116 jchar function(JNIEnv*, jobject, jmethodID, ...) CallCharMethod;
117 jchar function(JNIEnv*, jobject, jmethodID, va_list) CallCharMethodV;
118 jchar function(JNIEnv*, jobject, jmethodID, jvalue*) CallCharMethodA;
119 jshort function(JNIEnv*, jobject, jmethodID, ...) CallShortMethod;
120 jshort function(JNIEnv*, jobject, jmethodID, va_list) CallShortMethodV;
121 jshort function(JNIEnv*, jobject, jmethodID, jvalue*) CallShortMethodA;
122 jint function(JNIEnv*, jobject, jmethodID, ...) CallIntMethod;
123 jint function(JNIEnv*, jobject, jmethodID, va_list) CallIntMethodV;
124 jint function(JNIEnv*, jobject, jmethodID, jvalue*) CallIntMethodA;
125 jlong function(JNIEnv*, jobject, jmethodID, ...) CallLongMethod;
126 jlong function(JNIEnv*, jobject, jmethodID, va_list) CallLongMethodV;
127 jlong function(JNIEnv*, jobject, jmethodID, jvalue*) CallLongMethodA;
128 jfloat function(JNIEnv*, jobject, jmethodID, ...) CallFloatMethod;
129 jfloat function(JNIEnv*, jobject, jmethodID, va_list) CallFloatMethodV;
130 jfloat function(JNIEnv*, jobject, jmethodID, jvalue*) CallFloatMethodA;
131 jdouble function(JNIEnv*, jobject, jmethodID, ...) CallDoubleMethod;
132 jdouble function(JNIEnv*, jobject, jmethodID, va_list) CallDoubleMethodV;
133 jdouble function(JNIEnv*, jobject, jmethodID, jvalue*) CallDoubleMethodA;
134 void function(JNIEnv*, jobject, jmethodID, ...) CallVoidMethod;
135 void function(JNIEnv*, jobject, jmethodID, va_list) CallVoidMethodV;
136 void function(JNIEnv*, jobject, jmethodID, jvalue*) CallVoidMethodA;
137 jobject function(JNIEnv*, jobject, jclass, jmethodID, ...) CallNonvirtualObjectMethod;
138 jobject function(JNIEnv*, jobject, jclass, jmethodID, va_list) CallNonvirtualObjectMethodV;
139 jobject function(JNIEnv*, jobject, jclass, jmethodID, jvalue*) CallNonvirtualObjectMethodA;
140 jboolean function(JNIEnv*, jobject, jclass, jmethodID, ...) CallNonvirtualBooleanMethod;
141 jboolean function(JNIEnv*, jobject, jclass, jmethodID, va_list) CallNonvirtualBooleanMethodV;
142 jboolean function(JNIEnv*, jobject, jclass, jmethodID, jvalue*) CallNonvirtualBooleanMethodA;
143 jbyte function(JNIEnv*, jobject, jclass, jmethodID, ...) CallNonvirtualByteMethod;
144 jbyte function(JNIEnv*, jobject, jclass, jmethodID, va_list) CallNonvirtualByteMethodV;
145 jbyte function(JNIEnv*, jobject, jclass, jmethodID, jvalue*) CallNonvirtualByteMethodA;
146 jchar function(JNIEnv*, jobject, jclass, jmethodID, ...) CallNonvirtualCharMethod;
147 jchar function(JNIEnv*, jobject, jclass, jmethodID, va_list) CallNonvirtualCharMethodV;
148 jchar function(JNIEnv*, jobject, jclass, jmethodID, jvalue*) CallNonvirtualCharMethodA;
149 jshort function(JNIEnv*, jobject, jclass, jmethodID, ...) CallNonvirtualShortMethod;
150 jshort function(JNIEnv*, jobject, jclass, jmethodID, va_list) CallNonvirtualShortMethodV;
151 jshort function(JNIEnv*, jobject, jclass, jmethodID, jvalue*) CallNonvirtualShortMethodA;
152 jint function(JNIEnv*, jobject, jclass, jmethodID, ...) CallNonvirtualIntMethod;
153 jint function(JNIEnv*, jobject, jclass, jmethodID, va_list) CallNonvirtualIntMethodV;
154 jint function(JNIEnv*, jobject, jclass, jmethodID, jvalue*) CallNonvirtualIntMethodA;
155 jlong function(JNIEnv*, jobject, jclass, jmethodID, ...) CallNonvirtualLongMethod;
156 jlong function(JNIEnv*, jobject, jclass, jmethodID, va_list) CallNonvirtualLongMethodV;
157 jlong function(JNIEnv*, jobject, jclass, jmethodID, jvalue*) CallNonvirtualLongMethodA;
158 jfloat function(JNIEnv*, jobject, jclass, jmethodID, ...) CallNonvirtualFloatMethod;
159 jfloat function(JNIEnv*, jobject, jclass, jmethodID, va_list) CallNonvirtualFloatMethodV;
160 jfloat function(JNIEnv*, jobject, jclass, jmethodID, jvalue*) CallNonvirtualFloatMethodA;
161 jdouble function(JNIEnv*, jobject, jclass, jmethodID, ...) CallNonvirtualDoubleMethod;
162 jdouble function(JNIEnv*, jobject, jclass, jmethodID, va_list) CallNonvirtualDoubleMethodV;
163 jdouble function(JNIEnv*, jobject, jclass, jmethodID, jvalue*) CallNonvirtualDoubleMethodA;
164 void function(JNIEnv*, jobject, jclass, jmethodID, ...) CallNonvirtualVoidMethod;
165 void function(JNIEnv*, jobject, jclass, jmethodID, va_list) CallNonvirtualVoidMethodV;
166 void function(JNIEnv*, jobject, jclass, jmethodID, jvalue*) CallNonvirtualVoidMethodA;
167 jfieldID function(JNIEnv*, jclass, const(char)*, const(char)*) GetFieldID;
168 jobject function(JNIEnv*, jobject, jfieldID) GetObjectField;
169 jboolean function(JNIEnv*, jobject, jfieldID) GetBooleanField;
170 jbyte function(JNIEnv*, jobject, jfieldID) GetByteField;
171 jchar function(JNIEnv*, jobject, jfieldID) GetCharField;
172 jshort function(JNIEnv*, jobject, jfieldID) GetShortField;
173 jint function(JNIEnv*, jobject, jfieldID) GetIntField;
174 jlong function(JNIEnv*, jobject, jfieldID) GetLongField;
175 jfloat function(JNIEnv*, jobject, jfieldID) GetFloatField;
176 jdouble function(JNIEnv*, jobject, jfieldID) GetDoubleField;
177 void function(JNIEnv*, jobject, jfieldID, jobject) SetObjectField;
178 void function(JNIEnv*, jobject, jfieldID, jboolean) SetBooleanField;
179 void function(JNIEnv*, jobject, jfieldID, jbyte) SetByteField;
180 void function(JNIEnv*, jobject, jfieldID, jchar) SetCharField;
181 void function(JNIEnv*, jobject, jfieldID, jshort) SetShortField;
182 void function(JNIEnv*, jobject, jfieldID, jint) SetIntField;
183 void function(JNIEnv*, jobject, jfieldID, jlong) SetLongField;
184 void function(JNIEnv*, jobject, jfieldID, jfloat) SetFloatField;
185 void function(JNIEnv*, jobject, jfieldID, jdouble) SetDoubleField;
186 jmethodID function(JNIEnv*, jclass, const(char)*, const(char)*) GetStaticMethodID;
187 jobject function(JNIEnv*, jclass, jmethodID, ...) CallStaticObjectMethod;
188 jobject function(JNIEnv*, jclass, jmethodID, va_list) CallStaticObjectMethodV;
189 jobject function(JNIEnv*, jclass, jmethodID, jvalue*) CallStaticObjectMethodA;
190 jboolean function(JNIEnv*, jclass, jmethodID, ...) CallStaticBooleanMethod;
191 jboolean function(JNIEnv*, jclass, jmethodID, va_list) CallStaticBooleanMethodV;
192 jboolean function(JNIEnv*, jclass, jmethodID, jvalue*) CallStaticBooleanMethodA;
193 jbyte function(JNIEnv*, jclass, jmethodID, ...) CallStaticByteMethod;
194 jbyte function(JNIEnv*, jclass, jmethodID, va_list) CallStaticByteMethodV;
195 jbyte function(JNIEnv*, jclass, jmethodID, jvalue*) CallStaticByteMethodA;
196 jchar function(JNIEnv*, jclass, jmethodID, ...) CallStaticCharMethod;
197 jchar function(JNIEnv*, jclass, jmethodID, va_list) CallStaticCharMethodV;
198 jchar function(JNIEnv*, jclass, jmethodID, jvalue*) CallStaticCharMethodA;
199 jshort function(JNIEnv*, jclass, jmethodID, ...) CallStaticShortMethod;
200 jshort function(JNIEnv*, jclass, jmethodID, va_list) CallStaticShortMethodV;
201 jshort function(JNIEnv*, jclass, jmethodID, jvalue*) CallStaticShortMethodA;
202 jint function(JNIEnv*, jclass, jmethodID, ...) CallStaticIntMethod;
203 jint function(JNIEnv*, jclass, jmethodID, va_list) CallStaticIntMethodV;
204 jint function(JNIEnv*, jclass, jmethodID, jvalue*) CallStaticIntMethodA;
205 jlong function(JNIEnv*, jclass, jmethodID, ...) CallStaticLongMethod;
206 jlong function(JNIEnv*, jclass, jmethodID, va_list) CallStaticLongMethodV;
207 jlong function(JNIEnv*, jclass, jmethodID, jvalue*) CallStaticLongMethodA;
208 jfloat function(JNIEnv*, jclass, jmethodID, ...) CallStaticFloatMethod;
209 jfloat function(JNIEnv*, jclass, jmethodID, va_list) CallStaticFloatMethodV;
210 jfloat function(JNIEnv*, jclass, jmethodID, jvalue*) CallStaticFloatMethodA;
211 jdouble function(JNIEnv*, jclass, jmethodID, ...) CallStaticDoubleMethod;
212 jdouble function(JNIEnv*, jclass, jmethodID, va_list) CallStaticDoubleMethodV;
213 jdouble function(JNIEnv*, jclass, jmethodID, jvalue*) CallStaticDoubleMethodA;
214 void function(JNIEnv*, jclass, jmethodID, ...) CallStaticVoidMethod;
215 void function(JNIEnv*, jclass, jmethodID, va_list) CallStaticVoidMethodV;
216 void function(JNIEnv*, jclass, jmethodID, jvalue*) CallStaticVoidMethodA;
217 jfieldID function(JNIEnv*, jclass, const(char)*, const(char)*) GetStaticFieldID;
218 jobject function(JNIEnv*, jclass, jfieldID) GetStaticObjectField;
219 jboolean function(JNIEnv*, jclass, jfieldID) GetStaticBooleanField;
220 jbyte function(JNIEnv*, jclass, jfieldID) GetStaticByteField;
221 jchar function(JNIEnv*, jclass, jfieldID) GetStaticCharField;
222 jshort function(JNIEnv*, jclass, jfieldID) GetStaticShortField;
223 jint function(JNIEnv*, jclass, jfieldID) GetStaticIntField;
224 jlong function(JNIEnv*, jclass, jfieldID) GetStaticLongField;
225 jfloat function(JNIEnv*, jclass, jfieldID) GetStaticFloatField;
226 jdouble function(JNIEnv*, jclass, jfieldID) GetStaticDoubleField;
227 void function(JNIEnv*, jclass, jfieldID, jobject) SetStaticObjectField;
228 void function(JNIEnv*, jclass, jfieldID, jboolean) SetStaticBooleanField;
229 void function(JNIEnv*, jclass, jfieldID, jbyte) SetStaticByteField;
230 void function(JNIEnv*, jclass, jfieldID, jchar) SetStaticCharField;
231 void function(JNIEnv*, jclass, jfieldID, jshort) SetStaticShortField;
232 void function(JNIEnv*, jclass, jfieldID, jint) SetStaticIntField;
233 void function(JNIEnv*, jclass, jfieldID, jlong) SetStaticLongField;
234 void function(JNIEnv*, jclass, jfieldID, jfloat) SetStaticFloatField;
235 void function(JNIEnv*, jclass, jfieldID, jdouble) SetStaticDoubleField;
236 jstring function(JNIEnv*, const(jchar)*, jsize) NewString;
237 jsize function(JNIEnv*, jstring) GetStringLength;
238 const(jchar)* function(JNIEnv*, jstring, jboolean*) GetStringChars;
239 void function(JNIEnv*, jstring, const(jchar)*) ReleaseStringChars;
240 jstring function(JNIEnv*, const(char)*) NewStringUTF;
241 jsize function(JNIEnv*, jstring) GetStringUTFLength;
242 const(char)* function(JNIEnv*, jstring, jboolean*) GetStringUTFChars;
243 void function(JNIEnv*, jstring, const(char)*) ReleaseStringUTFChars;
244 jsize function(JNIEnv*, jarray) GetArrayLength;
245 jobjectArray function(JNIEnv*, jsize, jclass, jobject) NewObjectArray;
246 jobject function(JNIEnv*, jobjectArray, jsize) GetObjectArrayElement;
247 void function(JNIEnv*, jobjectArray, jsize, jobject) SetObjectArrayElement;
248 jbooleanArray function(JNIEnv*, jsize) NewBooleanArray;
249 jbyteArray function(JNIEnv*, jsize) NewByteArray;
250 jcharArray function(JNIEnv*, jsize) NewCharArray;
251 jshortArray function(JNIEnv*, jsize) NewShortArray;
252 jintArray function(JNIEnv*, jsize) NewIntArray;
253 jlongArray function(JNIEnv*, jsize) NewLongArray;
254 jfloatArray function(JNIEnv*, jsize) NewFloatArray;
255 jdoubleArray function(JNIEnv*, jsize) NewDoubleArray;
256 jboolean* function(JNIEnv*, jbooleanArray, jboolean*) GetBooleanArrayElements;
257 jbyte* function(JNIEnv*, jbyteArray, jboolean*) GetByteArrayElements;
258 jchar* function(JNIEnv*, jcharArray, jboolean*) GetCharArrayElements;
259 jshort* function(JNIEnv*, jshortArray, jboolean*) GetShortArrayElements;
260 jint* function(JNIEnv*, jintArray, jboolean*) GetIntArrayElements;
261 jlong* function(JNIEnv*, jlongArray, jboolean*) GetLongArrayElements;
262 jfloat* function(JNIEnv*, jfloatArray, jboolean*) GetFloatArrayElements;
263 jdouble* function(JNIEnv*, jdoubleArray, jboolean*) GetDoubleArrayElements;
264 void function(JNIEnv*, jbooleanArray, jboolean*, jint) ReleaseBooleanArrayElements;
265 void function(JNIEnv*, jbyteArray, jbyte*, jint) ReleaseByteArrayElements;
266 void function(JNIEnv*, jcharArray, jchar*, jint) ReleaseCharArrayElements;
267 void function(JNIEnv*, jshortArray, jshort*, jint) ReleaseShortArrayElements;
268 void function(JNIEnv*, jintArray, jint*, jint) ReleaseIntArrayElements;
269 void function(JNIEnv*, jlongArray, jlong*, jint) ReleaseLongArrayElements;
270 void function(JNIEnv*, jfloatArray, jfloat*, jint) ReleaseFloatArrayElements;
271 void function(JNIEnv*, jdoubleArray, jdouble*, jint) ReleaseDoubleArrayElements;
272 void function(JNIEnv*, jbooleanArray, jsize, jsize, jboolean*) GetBooleanArrayRegion;
273 void function(JNIEnv*, jbyteArray, jsize, jsize, jbyte*) GetByteArrayRegion;
274 void function(JNIEnv*, jcharArray, jsize, jsize, jchar*) GetCharArrayRegion;
275 void function(JNIEnv*, jshortArray, jsize, jsize, jshort*) GetShortArrayRegion;
276 void function(JNIEnv*, jintArray, jsize, jsize, jint*) GetIntArrayRegion;
277 void function(JNIEnv*, jlongArray, jsize, jsize, jlong*) GetLongArrayRegion;
278 void function(JNIEnv*, jfloatArray, jsize, jsize, jfloat*) GetFloatArrayRegion;
279 void function(JNIEnv*, jdoubleArray, jsize, jsize, jdouble*) GetDoubleArrayRegion;
280 void function(JNIEnv*, jbooleanArray, jsize, jsize, const(jboolean)*) SetBooleanArrayRegion;
281 void function(JNIEnv*, jbyteArray, jsize, jsize, const(jbyte)*) SetByteArrayRegion;
282 void function(JNIEnv*, jcharArray, jsize, jsize, const(jchar)*) SetCharArrayRegion;
283 void function(JNIEnv*, jshortArray, jsize, jsize, const(jshort)*) SetShortArrayRegion;
284 void function(JNIEnv*, jintArray, jsize, jsize, const(jint)*) SetIntArrayRegion;
285 void function(JNIEnv*, jlongArray, jsize, jsize, const(jlong)*) SetLongArrayRegion;
286 void function(JNIEnv*, jfloatArray, jsize, jsize, const(jfloat)*) SetFloatArrayRegion;
287 void function(JNIEnv*, jdoubleArray, jsize, jsize, const(jdouble)*) SetDoubleArrayRegion;
288 jint function(JNIEnv*, jclass, const(JNINativeMethod)*, jint) RegisterNatives;
289 jint function(JNIEnv*, jclass) UnregisterNatives;
290 jint function(JNIEnv*, jobject) MonitorEnter;
291 jint function(JNIEnv*, jobject) MonitorExit;
292 jint function(JNIEnv*, JavaVM**) GetJavaVM;
293 void function(JNIEnv*, jstring, jsize, jsize, jchar*) GetStringRegion;
294 void function(JNIEnv*, jstring, jsize, jsize, char*) GetStringUTFRegion;
295 void* function(JNIEnv*, jarray, jboolean*) GetPrimitiveArrayCritical;
296 void function(JNIEnv*, jarray, void*, jint) ReleasePrimitiveArrayCritical;
297 const(jchar)* function(JNIEnv*, jstring, jboolean*) GetStringCritical;
298 void function(JNIEnv*, jstring, const(jchar)*) ReleaseStringCritical;
299 jweak function(JNIEnv*, jobject) NewWeakGlobalRef;
300 void function(JNIEnv*, jweak) DeleteWeakGlobalRef;
301 jboolean function(JNIEnv*) ExceptionCheck;
302 jobject function(JNIEnv*, void*, jlong) NewDirectByteBuffer;
303 void* function(JNIEnv*, jobject) GetDirectBufferAddress;
304 jlong function(JNIEnv*, jobject) GetDirectBufferCapacity;
305 jobjectRefType function(JNIEnv*, jobject) GetObjectRefType;
306 }
307
308 struct _JNIEnv
309 {
310 const(JNINativeInterface)* functions;
311 }
312
313 struct JNIInvokeInterface
314 {
315 void* reserved0;
316 void* reserved1;
317 void* reserved2;
318 jint function(JavaVM*) DestroyJavaVM;
319 jint function(JavaVM*, JNIEnv**, void*) AttachCurrentThread;
320 jint function(JavaVM*) DetachCurrentThread;
321 jint function(JavaVM*, void**, jint) GetEnv;
322 jint function(JavaVM*, JNIEnv**, void*) AttachCurrentThreadAsDaemon;
323 }
324
325 struct _JavaVM
326 {
327 const(JNIInvokeInterface)* functions;
328 }
329
330 struct JavaVMAttachArgs
331 {
332 jint version_;
333 const(char)* name;
334 jobject group;
335 }
336
337 struct JavaVMOption
338 {
339 const(char)* optionString;
340 void* extraInfo;
341 }
342
343 struct JavaVMInitArgs
344 {
345 jint version_;
346 jint nOptions;
347 JavaVMOption* options;
348 jboolean ignoreUnrecognized;
349 }
350
351 struct _jfieldID;
352 struct _jmethodID;
353
354 union jvalue
355 {
356 jboolean z;
357 jbyte b;
358 jchar c;
359 jshort s;
360 jint i;
361 jlong j;
362 jfloat f;
363 jdouble d;
364 jobject l;
365 }
366
367 jint JNI_OnLoad(JavaVM* vm, void* reserved);
368 void JNI_OnUnload(JavaVM* vm, void* reserved);