blob: defd6dde8ff7f61cbd1808c80d6f6423b411b423 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @author Intel, Gregory Shimansky
*/
#ifndef _JNI_DIRECT_H_
#define _JNI_DIRECT_H_
#include <apr_ring.h>
#include <apr_pools.h>
#include "open/types.h"
#include "jni.h"
#include "open/types.h"
#include "class_member.h"
typedef struct JavaVM_Internal JavaVM_Internal;
typedef struct JNIEnv_Internal JNIEnv_Internal;
struct JavaVM_Internal : public JavaVM_External {
apr_pool_t * pool;
Global_Env * vm_env;
APR_RING_ENTRY(JavaVM_Internal) link;
void* reserved;
};
struct JNIEnv_Internal : public JNIEnv_External {
JavaVM_Internal* vm;
void *reserved0;
};
struct _jfieldID : public Field {
};
jmethodID reflection_unreflect_method(JNIEnv *jenv, jobject ref_method);
jmethodID reflection_unreflect_constructor(JNIEnv *jenv, jobject ref_constructor);
jfieldID reflection_unreflect_field(JNIEnv *jenv, jobject ref_field);
jobject reflection_reflect_method(JNIEnv *jenv, Method_Handle method);
jobject reflection_reflect_constructor(JNIEnv *jenv, Method_Handle constructor);
jobject reflection_reflect_field(JNIEnv *jenv, Field_Handle field);
VMEXPORT jclass JNICALL DefineClass(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len);
VMEXPORT jclass JNICALL FindClass(JNIEnv *env, const char *name);
VMEXPORT jclass JNICALL GetObjectClass(JNIEnv *env, jobject obj);
VMEXPORT jboolean JNICALL IsAssignableFrom(JNIEnv *env, jclass clazz1, jclass clazz2);
VMEXPORT jclass JNICALL GetSuperclass(JNIEnv *env, jclass clazz);
VMEXPORT jobject JNICALL NewGlobalRef(JNIEnv *env, jobject obj);
VMEXPORT void JNICALL DeleteGlobalRef(JNIEnv *env, jobject globalRef);
VMEXPORT void JNICALL DeleteLocalRef(JNIEnv *env, jobject localRef);
VMEXPORT jobject JNICALL AllocObject(JNIEnv *env, jclass clazz);
VMEXPORT jobject JNICALL NewObject(JNIEnv *env,
jclass clazz,
jmethodID methodID,
...);
VMEXPORT jobject JNICALL NewObjectV(JNIEnv *env,
jclass clazz,
jmethodID methodID,
va_list args);
VMEXPORT jobject JNICALL NewObjectA(JNIEnv *env,
jclass clazz,
jmethodID methodID,
jvalue *args);
VMEXPORT jstring JNICALL NewString(JNIEnv *env,
const jchar *unicodeChars,
jsize length);
VMEXPORT jstring JNICALL NewStringUTF(JNIEnv *env,
const char *bytes);
VMEXPORT jboolean JNICALL IsSameObject(JNIEnv *env,
jobject ref1,
jobject ref2);
VMEXPORT jint JNICALL PushLocalFrame(JNIEnv *env, jint cap);
VMEXPORT jobject JNICALL PopLocalFrame(JNIEnv *env, jobject res);
VMEXPORT jobject JNICALL NewLocalRef(JNIEnv *env, jobject ref);
VMEXPORT jint JNICALL EnsureLocalCapacity(JNIEnv *env,
jint capacity);
VMEXPORT jboolean JNICALL IsInstanceOf(JNIEnv *env,
jobject obj,
jclass clazz);
VMEXPORT jfieldID JNICALL GetFieldID(JNIEnv *env,
jclass clazz,
const char *name,
const char *sig);
VMEXPORT jfieldID JNICALL GetStaticFieldID(JNIEnv *env,
jclass clazz,
const char *name,
const char *sig);
VMEXPORT jmethodID JNICALL GetMethodID(JNIEnv *env,
jclass clazz,
const char *name,
const char *sig);
VMEXPORT jmethodID JNICALL GetStaticMethodID(JNIEnv *env,
jclass clazz,
const char *name,
const char *sig);
// This function is not part of the standard JNI interface, but we can use
// it internally. It is faster and, IMHO, more convenient to use.
// 20020923: This method looks up the class using the bootstrap loader,
// which is incorrect
VMEXPORT jfieldID JNICALL GetFieldID_Quick(JNIEnv *env,
const char *class_name,
const char *field_name,
const char *sig);
VMEXPORT jboolean JNICALL GetBooleanField (JNIEnv *env, jobject obj, jfieldID fieldID);
VMEXPORT jbyte JNICALL GetByteField (JNIEnv *env, jobject obj, jfieldID fieldID);
VMEXPORT jchar JNICALL GetCharField (JNIEnv *env, jobject obj, jfieldID fieldID);
VMEXPORT jshort JNICALL GetShortField (JNIEnv *env, jobject obj, jfieldID fieldID);
VMEXPORT jint JNICALL GetIntField (JNIEnv *env, jobject obj, jfieldID fieldID);
VMEXPORT jlong JNICALL GetLongField (JNIEnv *env, jobject obj, jfieldID fieldID);
VMEXPORT jfloat JNICALL GetFloatField (JNIEnv *env, jobject obj, jfieldID fieldID);
VMEXPORT jdouble JNICALL GetDoubleField (JNIEnv *env, jobject obj, jfieldID fieldID);
VMEXPORT jobject JNICALL GetObjectField (JNIEnv *env, jobject obj, jfieldID fieldID);
// Nonstandard
VMEXPORT jboolean JNICALL GetBooleanFieldOffset (JNIEnv *env, jobject obj, jint offset);
VMEXPORT jbyte JNICALL GetByteFieldOffset (JNIEnv *env, jobject obj, jint offset);
VMEXPORT jchar JNICALL GetCharFieldOffset (JNIEnv *env, jobject obj, jint offset);
VMEXPORT jshort JNICALL GetShortFieldOffset (JNIEnv *env, jobject obj, jint offset);
VMEXPORT jint JNICALL GetIntFieldOffset (JNIEnv *env, jobject obj, jint offset);
VMEXPORT jlong JNICALL GetLongFieldOffset (JNIEnv *env, jobject obj, jint offset);
VMEXPORT jfloat JNICALL GetFloatFieldOffset (JNIEnv *env, jobject obj, jint offset);
VMEXPORT jdouble JNICALL GetDoubleFieldOffset (JNIEnv *env, jobject obj, jint offset);
VMEXPORT jobject JNICALL GetObjectFieldOffset (JNIEnv *env, jobject obj, jint offset);
VMEXPORT void JNICALL SetBooleanField (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean value);
VMEXPORT void JNICALL SetByteField (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte value);
VMEXPORT void JNICALL SetCharField (JNIEnv *env, jobject obj, jfieldID fieldID, jchar value);
VMEXPORT void JNICALL SetShortField (JNIEnv *env, jobject obj, jfieldID fieldID, jshort value);
VMEXPORT void JNICALL SetIntField (JNIEnv *env, jobject obj, jfieldID fieldID, jint value);
VMEXPORT void JNICALL SetLongField (JNIEnv *env, jobject obj, jfieldID fieldID, jlong value);
VMEXPORT void JNICALL SetFloatField (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat value);
VMEXPORT void JNICALL SetDoubleField (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble value);
VMEXPORT void JNICALL SetObjectField (JNIEnv *env, jobject obj, jfieldID fieldID, jobject value);
// Nonstandard
VMEXPORT void JNICALL SetBooleanFieldOffset (JNIEnv *env, jobject obj, jint offset, jboolean value);
VMEXPORT void JNICALL SetByteFieldOffset (JNIEnv *env, jobject obj, jint offset, jbyte value);
VMEXPORT void JNICALL SetCharFieldOffset (JNIEnv *env, jobject obj, jint offset, jchar value);
VMEXPORT void JNICALL SetShortFieldOffset (JNIEnv *env, jobject obj, jint offset, jshort value);
VMEXPORT void JNICALL SetIntFieldOffset (JNIEnv *env, jobject obj, jint offset, jint value);
VMEXPORT void JNICALL SetLongFieldOffset (JNIEnv *env, jobject obj, jint offset, jlong value);
VMEXPORT void JNICALL SetFloatFieldOffset (JNIEnv *env, jobject obj, jint offset, jfloat value);
VMEXPORT void JNICALL SetDoubleFieldOffset (JNIEnv *env, jobject obj, jint offset, jdouble value);
VMEXPORT void JNICALL SetObjectFieldOffset (JNIEnv *env, jobject obj, jint offset, jobject value);
VMEXPORT jboolean JNICALL GetStaticBooleanField (JNIEnv *env, jclass clazz, jfieldID fieldID);
VMEXPORT jbyte JNICALL GetStaticByteField (JNIEnv *env, jclass clazz, jfieldID fieldID);
VMEXPORT jchar JNICALL GetStaticCharField (JNIEnv *env, jclass clazz, jfieldID fieldID);
VMEXPORT jshort JNICALL GetStaticShortField (JNIEnv *env, jclass clazz, jfieldID fieldID);
VMEXPORT jint JNICALL GetStaticIntField (JNIEnv *env, jclass clazz, jfieldID fieldID);
VMEXPORT jlong JNICALL GetStaticLongField (JNIEnv *env, jclass clazz, jfieldID fieldID);
VMEXPORT jfloat JNICALL GetStaticFloatField (JNIEnv *env, jclass clazz, jfieldID fieldID);
VMEXPORT jdouble JNICALL GetStaticDoubleField (JNIEnv *env, jclass clazz, jfieldID fieldID);
VMEXPORT jobject JNICALL GetStaticObjectField (JNIEnv *env, jclass clazz, jfieldID fieldID);
VMEXPORT void JNICALL SetStaticBooleanField (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value);
VMEXPORT void JNICALL SetStaticByteField (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value);
VMEXPORT void JNICALL SetStaticCharField (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value);
VMEXPORT void JNICALL SetStaticShortField (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value);
VMEXPORT void JNICALL SetStaticIntField (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value);
VMEXPORT void JNICALL SetStaticLongField (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value);
VMEXPORT void JNICALL SetStaticFloatField (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value);
VMEXPORT void JNICALL SetStaticDoubleField (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value);
VMEXPORT void JNICALL SetStaticObjectField (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value);
VMEXPORT jsize JNICALL GetArrayLength(JNIEnv *env, jarray array);
VMEXPORT jboolean * JNICALL GetBooleanArrayElements (JNIEnv *env, jbooleanArray array, jboolean *isCopy);
VMEXPORT jbyte * JNICALL GetByteArrayElements (JNIEnv *env, jbyteArray array, jboolean *isCopy);
VMEXPORT jchar * JNICALL GetCharArrayElements (JNIEnv *env, jcharArray array, jboolean *isCopy);
VMEXPORT jshort * JNICALL GetShortArrayElements (JNIEnv *env, jshortArray array, jboolean *isCopy);
VMEXPORT jint * JNICALL GetIntArrayElements (JNIEnv *env, jintArray array, jboolean *isCopy);
VMEXPORT jlong * JNICALL GetLongArrayElements (JNIEnv *env, jlongArray array, jboolean *isCopy);
VMEXPORT jfloat * JNICALL GetFloatArrayElements (JNIEnv *env, jfloatArray array, jboolean *isCopy);
VMEXPORT jdouble * JNICALL GetDoubleArrayElements (JNIEnv *env, jdoubleArray array, jboolean *isCopy);
VMEXPORT jobject JNICALL GetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize index);
VMEXPORT void JNICALL SetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize index, jobject value);
VMEXPORT void JNICALL ReleaseBooleanArrayElements(JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode);
VMEXPORT void JNICALL ReleaseByteArrayElements (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode);
VMEXPORT void JNICALL ReleaseCharArrayElements (JNIEnv *env, jcharArray array, jchar *elems, jint mode);
VMEXPORT void JNICALL ReleaseShortArrayElements (JNIEnv *env, jshortArray array, jshort *elems, jint mode);
VMEXPORT void JNICALL ReleaseIntArrayElements (JNIEnv *env, jintArray array, jint *elems, jint mode);
VMEXPORT void JNICALL ReleaseLongArrayElements (JNIEnv *env, jlongArray array, jlong *elems, jint mode);
VMEXPORT void JNICALL ReleaseFloatArrayElements (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode);
VMEXPORT void JNICALL ReleaseDoubleArrayElements (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode);
VMEXPORT void JNICALL GetBooleanArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jboolean *buf);
VMEXPORT void JNICALL GetByteArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jbyte *buf);
VMEXPORT void JNICALL GetCharArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jchar *buf);
VMEXPORT void JNICALL GetShortArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jshort *buf);
VMEXPORT void JNICALL GetIntArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jint *buf);
VMEXPORT void JNICALL GetLongArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jlong *buf);
VMEXPORT void JNICALL GetFloatArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jfloat *buf);
VMEXPORT void JNICALL GetDoubleArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jdouble *buf);
VMEXPORT void JNICALL SetBooleanArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jboolean *buf);
VMEXPORT void JNICALL SetByteArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jbyte *buf);
VMEXPORT void JNICALL SetCharArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jchar *buf);
VMEXPORT void JNICALL SetShortArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jshort *buf);
VMEXPORT void JNICALL SetIntArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jint *buf);
VMEXPORT void JNICALL SetLongArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jlong *buf);
VMEXPORT void JNICALL SetFloatArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jfloat *buf);
VMEXPORT void JNICALL SetDoubleArrayRegion (JNIEnv *env, jobjectArray array,
jsize start, jsize len,
jdouble *buf);
VMEXPORT jbooleanArray JNICALL NewBooleanArray (JNIEnv *env, jsize length);
VMEXPORT jbyteArray JNICALL NewByteArray (JNIEnv *env, jsize length);
VMEXPORT jcharArray JNICALL NewCharArray (JNIEnv *env, jsize length);
VMEXPORT jshortArray JNICALL NewShortArray (JNIEnv *env, jsize length);
VMEXPORT jintArray JNICALL NewIntArray (JNIEnv *env, jsize length);
VMEXPORT jlongArray JNICALL NewLongArray (JNIEnv *env, jsize length);
VMEXPORT jfloatArray JNICALL NewFloatArray (JNIEnv *env, jsize length);
VMEXPORT jdoubleArray JNICALL NewDoubleArray (JNIEnv *env, jsize length);
VMEXPORT jarray JNICALL NewObjectArray(JNIEnv *env,
jsize length,
jclass elementClass,
jobject initialElement);
VMEXPORT jsize JNICALL GetStringLength(JNIEnv *env, jstring string);
VMEXPORT const jchar * JNICALL GetStringChars(JNIEnv *env, jstring string, jboolean *isCopy);
VMEXPORT void JNICALL ReleaseStringChars(JNIEnv *env, jstring string, const jchar *chars);
VMEXPORT jsize JNICALL GetStringUTFLength(JNIEnv *env, jstring string);
VMEXPORT const char * JNICALL GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy);
VMEXPORT void JNICALL ReleaseStringUTFChars(JNIEnv *env, jstring string, const char *utf);
VMEXPORT void JNICALL CallVoidMethod (JNIEnv *env, jobject obj, jmethodID methodID, ...);
VMEXPORT void JNICALL CallVoidMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
VMEXPORT void JNICALL CallVoidMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
VMEXPORT jobject JNICALL CallObjectMethod (JNIEnv *env, jobject obj, jmethodID methodID, ...);
VMEXPORT jobject JNICALL CallObjectMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
VMEXPORT jobject JNICALL CallObjectMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
VMEXPORT jboolean JNICALL CallBooleanMethod (JNIEnv *env, jobject obj, jmethodID methodID, ...);
VMEXPORT jboolean JNICALL CallBooleanMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
VMEXPORT jboolean JNICALL CallBooleanMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
VMEXPORT jbyte JNICALL CallByteMethod (JNIEnv *env, jobject obj, jmethodID methodID, ...);
VMEXPORT jbyte JNICALL CallByteMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
VMEXPORT jbyte JNICALL CallByteMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
VMEXPORT jchar JNICALL CallCharMethod (JNIEnv *env, jobject obj, jmethodID methodID, ...);
VMEXPORT jchar JNICALL CallCharMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
VMEXPORT jchar JNICALL CallCharMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
VMEXPORT jshort JNICALL CallShortMethod (JNIEnv *env, jobject obj, jmethodID methodID, ...);
VMEXPORT jshort JNICALL CallShortMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
VMEXPORT jshort JNICALL CallShortMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
VMEXPORT jint JNICALL CallIntMethod (JNIEnv *env, jobject obj, jmethodID methodID, ...);
VMEXPORT jint JNICALL CallIntMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
VMEXPORT jint JNICALL CallIntMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
VMEXPORT jlong JNICALL CallLongMethod (JNIEnv *env, jobject obj, jmethodID methodID, ...);
VMEXPORT jlong JNICALL CallLongMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
VMEXPORT jlong JNICALL CallLongMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
VMEXPORT jfloat JNICALL CallFloatMethod (JNIEnv *env, jobject obj, jmethodID methodID, ...);
VMEXPORT jfloat JNICALL CallFloatMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
VMEXPORT jfloat JNICALL CallFloatMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
VMEXPORT jdouble JNICALL CallDoubleMethod (JNIEnv *env, jobject obj, jmethodID methodID, ...);
VMEXPORT jdouble JNICALL CallDoubleMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
VMEXPORT jdouble JNICALL CallDoubleMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
VMEXPORT void JNICALL CallNonvirtualVoidMethod(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
...);
VMEXPORT void JNICALL CallNonvirtualVoidMethodV(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
va_list args);
VMEXPORT void JNICALL CallNonvirtualVoidMethodA(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args);
VMEXPORT jobject JNICALL CallNonvirtualObjectMethod(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
...);
VMEXPORT jobject JNICALL CallNonvirtualObjectMethodV(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
va_list args);
VMEXPORT jobject JNICALL CallNonvirtualObjectMethodA(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args);
VMEXPORT jboolean JNICALL CallNonvirtualBooleanMethod(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
...);
VMEXPORT jboolean JNICALL CallNonvirtualBooleanMethodV(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
va_list args);
VMEXPORT jboolean JNICALL CallNonvirtualBooleanMethodA(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args);
VMEXPORT jbyte JNICALL CallNonvirtualByteMethod(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
...);
VMEXPORT jbyte JNICALL CallNonvirtualByteMethodV(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
va_list args);
VMEXPORT jbyte JNICALL CallNonvirtualByteMethodA(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args);
VMEXPORT jchar JNICALL CallNonvirtualCharMethod(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
...);
VMEXPORT jchar JNICALL CallNonvirtualCharMethodV(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
va_list args);
VMEXPORT jchar JNICALL CallNonvirtualCharMethodA(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args);
VMEXPORT jshort JNICALL CallNonvirtualShortMethod(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
...);
VMEXPORT jshort JNICALL CallNonvirtualShortMethodV(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
va_list args);
VMEXPORT jshort JNICALL CallNonvirtualShortMethodA(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args);
VMEXPORT jint JNICALL CallNonvirtualIntMethod(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
...);
VMEXPORT jint JNICALL CallNonvirtualIntMethodV(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
va_list args);
VMEXPORT jint JNICALL CallNonvirtualIntMethodA(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args);
VMEXPORT jlong JNICALL CallNonvirtualLongMethod(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
...);
VMEXPORT jlong JNICALL CallNonvirtualLongMethodV(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
va_list args);
VMEXPORT jlong JNICALL CallNonvirtualLongMethodA(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args);
VMEXPORT jfloat JNICALL CallNonvirtualFloatMethod(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
...);
VMEXPORT jfloat JNICALL CallNonvirtualFloatMethodV(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
va_list args);
VMEXPORT jfloat JNICALL CallNonvirtualFloatMethodA(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args);
VMEXPORT jdouble JNICALL CallNonvirtualDoubleMethod(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
...);
VMEXPORT jdouble JNICALL CallNonvirtualDoubleMethodV(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
va_list args);
VMEXPORT jdouble JNICALL CallNonvirtualDoubleMethodA(JNIEnv *env,
jobject obj,
jclass clazz,
jmethodID methodID,
jvalue *args);
VMEXPORT void JNICALL
CallStaticVoidMethod (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
VMEXPORT void JNICALL
CallStaticVoidMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
VMEXPORT void JNICALL
CallStaticVoidMethodA (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
VMEXPORT jobject JNICALL
CallStaticObjectMethod (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
VMEXPORT jobject JNICALL
CallStaticObjectMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
VMEXPORT jobject JNICALL
CallStaticObjectMethodA (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
VMEXPORT jboolean JNICALL
CallStaticBooleanMethod (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
VMEXPORT jboolean JNICALL
CallStaticBooleanMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
VMEXPORT jboolean JNICALL
CallStaticBooleanMethodA (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
VMEXPORT jbyte JNICALL
CallStaticByteMethod (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
VMEXPORT jbyte JNICALL
CallStaticByteMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
VMEXPORT jbyte JNICALL
CallStaticByteMethodA (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
VMEXPORT jchar JNICALL
CallStaticCharMethod (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
VMEXPORT jchar JNICALL
CallStaticCharMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
VMEXPORT jchar JNICALL
CallStaticCharMethodA (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
VMEXPORT jshort JNICALL
CallStaticShortMethod (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
VMEXPORT jshort JNICALL
CallStaticShortMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
VMEXPORT jshort JNICALL
CallStaticShortMethodA (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
VMEXPORT jint JNICALL
CallStaticIntMethod (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
VMEXPORT jint JNICALL
CallStaticIntMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
VMEXPORT jint JNICALL
CallStaticIntMethodA (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
VMEXPORT jlong JNICALL
CallStaticLongMethod (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
VMEXPORT jlong JNICALL
CallStaticLongMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
VMEXPORT jlong JNICALL
CallStaticLongMethodA (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
VMEXPORT jfloat JNICALL
CallStaticFloatMethod (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
VMEXPORT jfloat JNICALL
CallStaticFloatMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
VMEXPORT jfloat JNICALL
CallStaticFloatMethodA (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
VMEXPORT jdouble JNICALL
CallStaticDoubleMethod (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
VMEXPORT jdouble JNICALL
CallStaticDoubleMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
VMEXPORT jdouble JNICALL
CallStaticDoubleMethodA (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
VMEXPORT jint JNICALL Throw (JNIEnv *env, jthrowable obj);
VMEXPORT jint JNICALL ThrowNew(JNIEnv *env, jclass clazz, const char *message);
VMEXPORT jint JNICALL ThrowNew_Quick (JNIEnv *env, const char *classname, const char *message);
VMEXPORT jthrowable JNICALL ExceptionOccurred(JNIEnv *env);
VMEXPORT void JNICALL ExceptionClear(JNIEnv *env);
VMEXPORT void JNICALL ExceptionDescribe(JNIEnv *env);
VMEXPORT void JNICALL FatalError(JNIEnv *env, const char *msg);
VMEXPORT jint JNICALL RegisterNatives(JNIEnv *env,
jclass clazz,
const JNINativeMethod *methods,
jint nMethods);
VMEXPORT jint JNICALL UnregisterNatives(JNIEnv *env, jclass clazz);
VMEXPORT jint JNICALL MonitorEnter(JNIEnv *env, jobject obj);
VMEXPORT jint JNICALL MonitorExit(JNIEnv *env, jobject obj);
VMEXPORT jint JNICALL GetJavaVM(JNIEnv *env, JavaVM **vm);
VMEXPORT void JNICALL GetStringRegion(JNIEnv *env, jstring s, jsize off, jsize len, jchar *b);
VMEXPORT void JNICALL GetStringUTFRegion(JNIEnv *env, jstring s, jsize off, jsize len, char *b);
VMEXPORT void* JNICALL GetPrimitiveArrayCritical(JNIEnv *env, jarray array, jboolean* isCopy);
VMEXPORT void JNICALL ReleasePrimitiveArrayCritical(JNIEnv *env, jarray array, void* carray, jint mode);
VMEXPORT const jchar* JNICALL GetStringCritical(JNIEnv *env, jstring s, jboolean* isCopy);
VMEXPORT void JNICALL ReleaseStringCritical(JNIEnv *env, jstring s, const jchar* cstr);
VMEXPORT jweak JNICALL NewWeakGlobalRef(JNIEnv *env, jobject obj);
VMEXPORT void JNICALL DeleteWeakGlobalRef(JNIEnv *env, jweak obj);
VMEXPORT jboolean JNICALL ExceptionCheck(JNIEnv *env);
VMEXPORT jmethodID JNICALL FromReflectedMethod(JNIEnv *env, jobject method);
VMEXPORT jfieldID JNICALL FromReflectedField(JNIEnv *env, jobject field);
VMEXPORT jobject JNICALL ToReflectedMethod(JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic);
VMEXPORT jobject JNICALL ToReflectedField(JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic);
// JNI NIO functions are imported from classlib thus no direct access to them
//VMEXPORT jobject JNICALL NewDirectByteBuffer(JNIEnv* env, void* address, jlong capacity);
//VMEXPORT void* JNICALL GetDirectBufferAddress(JNIEnv* env, jobject buf);
//VMEXPORT jlong JNICALL GetDirectBufferCapacity(JNIEnv* env, jobject buf);
VMEXPORT jint JNICALL DestroyJavaVM(JavaVM*);
VMEXPORT jint JNICALL AttachCurrentThread(JavaVM*, void** penv, void* args);
VMEXPORT jint JNICALL DetachCurrentThread(JavaVM*);
VMEXPORT jint JNICALL GetEnv(JavaVM*, void** penv, jint ver);
VMEXPORT jint JNICALL AttachCurrentThreadAsDaemon(JavaVM*, void** penv, void* args);
#endif