📄 jni_h.html
字号:
<html>
<body bgcolor="#e0e0e0">
<pre class="sourcecode"><code>
<font color="#003399"><i>/*
* @(#)jni.h 1.46 99/04/22
*
* Copyright 1996-1999 by Sun Microsystems, Inc.,
* 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
* All rights reserved.
*
* This software is the confidential and proprietary information
* of Sun Microsystems, Inc. ("Confidential Information"). You
* shall not disclose such Confidential Information and shall use
* it only in accordance with the terms of the license agreement
* you entered into with Sun.
*/</i></font>
<font color="#003399"><i>/*
* We used part of Netscape's Java Runtime Interface (JRI) as the starting
* point of our design and implementation.
*/</i></font>
<font color="#003399"><i>/******************************************************************************
* Java Runtime Interface
* Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
*****************************************************************************/</i></font>
<font color="990099">#ifndef _JAVASOFT_JNI_H_</font>
<font color="990099">#define _JAVASOFT_JNI_H_</font>
<font color="990099">#include <stdio.h></font>
<font color="990099">#include <stdarg.h></font>
<font color="#003399"><i>/* jni_md.h contains the machine-dependent typedefs for jbyte, jint
and jlong */</i></font>
<font color="990099">#include "jni_md.h"</font>
<font color="990099">#ifdef __cplusplus</font>
<b>extern</b> <font color="#9933CC">"C"</font> {
<font color="990099">#endif</font>
<font color="#003399"><i>/*
* JNI Types
*/</i></font>
<font color="990099">#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H</font>
<b>typedef</b> <b>unsigned</b> <b>char</b> jboolean;
<b>typedef</b> <b>unsigned</b> <b>short</b> jchar;
<b>typedef</b> <b>short</b> jshort;
<b>typedef</b> <b>float</b> jfloat;
<b>typedef</b> <b>double</b> jdouble;
<b>typedef</b> jint jsize;
<font color="990099">#ifdef __cplusplus</font>
<b>class</b> _jobject {};
<b>class</b> _jclass : <b>public</b> _jobject {};
<b>class</b> _jthrowable : <b>public</b> _jobject {};
<b>class</b> _jstring : <b>public</b> _jobject {};
<b>class</b> _jarray : <b>public</b> _jobject {};
<b>class</b> _jbooleanArray : <b>public</b> _jarray {};
<b>class</b> _jbyteArray : <b>public</b> _jarray {};
<b>class</b> _jcharArray : <b>public</b> _jarray {};
<b>class</b> _jshortArray : <b>public</b> _jarray {};
<b>class</b> _jintArray : <b>public</b> _jarray {};
<b>class</b> _jlongArray : <b>public</b> _jarray {};
<b>class</b> _jfloatArray : <b>public</b> _jarray {};
<b>class</b> _jdoubleArray : <b>public</b> _jarray {};
<b>class</b> _jobjectArray : <b>public</b> _jarray {};
<b>typedef</b> _jobject *jobject;
<b>typedef</b> _jclass *jclass;
<b>typedef</b> _jthrowable *jthrowable;
<b>typedef</b> _jstring *jstring;
<b>typedef</b> _jarray *jarray;
<b>typedef</b> _jbooleanArray *jbooleanArray;
<b>typedef</b> _jbyteArray *jbyteArray;
<b>typedef</b> _jcharArray *jcharArray;
<b>typedef</b> _jshortArray *jshortArray;
<b>typedef</b> _jintArray *jintArray;
<b>typedef</b> _jlongArray *jlongArray;
<b>typedef</b> _jfloatArray *jfloatArray;
<b>typedef</b> _jdoubleArray *jdoubleArray;
<b>typedef</b> _jobjectArray *jobjectArray;
<font color="990099">#else</font>
<b>struct</b> _jobject;
<b>typedef</b> <b>struct</b> _jobject *jobject;
<b>typedef</b> jobject jclass;
<b>typedef</b> jobject jthrowable;
<b>typedef</b> jobject jstring;
<b>typedef</b> jobject jarray;
<b>typedef</b> jarray jbooleanArray;
<b>typedef</b> jarray jbyteArray;
<b>typedef</b> jarray jcharArray;
<b>typedef</b> jarray jshortArray;
<b>typedef</b> jarray jintArray;
<b>typedef</b> jarray jlongArray;
<b>typedef</b> jarray jfloatArray;
<b>typedef</b> jarray jdoubleArray;
<b>typedef</b> jarray jobjectArray;
<font color="990099">#endif</font>
<b>typedef</b> jobject jweak;
<b>typedef</b> <b>union</b> jvalue {
jboolean z;
jbyte b;
jchar c;
jshort s;
jint i;
jlong j;
jfloat f;
jdouble d;
jobject l;
} jvalue;
<b>struct</b> _jfieldID;
<b>typedef</b> <b>struct</b> _jfieldID *jfieldID;
<b>struct</b> _jmethodID;
<b>typedef</b> <b>struct</b> _jmethodID *jmethodID;
<font color="990099">#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */</font>
<font color="#003399"><i>/*
* jboolean constants
*/</i></font>
<font color="990099">#define JNI_FALSE 0</font>
<font color="990099">#define JNI_TRUE 1</font>
<font color="#003399"><i>/*
* possible return values for JNI functions.
*/</i></font>
<font color="990099">#define JNI_OK 0 /* success */</font>
<font color="990099">#define JNI_ERR (-1) /* unknown error */</font>
<font color="990099">#define JNI_EDETACHED (-2) /* thread detached from the VM */</font>
<font color="990099">#define JNI_EVERSION (-3) /* JNI version error */</font>
<font color="990099">#define JNI_ENOMEM (-4) /* not enough memory */</font>
<font color="990099">#define JNI_EEXIST (-5) /* VM already created */</font>
<font color="990099">#define JNI_EINVAL (-6) /* invalid arguments */</font>
<font color="#003399"><i>/*
* used in ReleaseScalarArrayElements
*/</i></font>
<font color="990099">#define JNI_COMMIT 1</font>
<font color="990099">#define JNI_ABORT 2</font>
<font color="#003399"><i>/*
* used in RegisterNatives to describe native method name, signature,
* and function pointer.
*/</i></font>
<b>typedef</b> <b>struct</b> {
<b>char</b> *name;
<b>char</b> *signature;
<b>void</b> *fnPtr;
} JNINativeMethod;
<font color="#003399"><i>/*
* JNI Native Method Interface.
*/</i></font>
<b>struct</b> JNINativeInterface_;
<b>struct</b> JNIEnv_;
<font color="990099">#ifdef __cplusplus</font>
<b>typedef</b> JNIEnv_ JNIEnv;
<font color="990099">#else</font>
<b>typedef</b> <b>const</b> <b>struct</b> JNINativeInterface_ *JNIEnv;
<font color="990099">#endif</font>
<font color="#003399"><i>/*
* JNI Invocation Interface.
*/</i></font>
<b>struct</b> JNIInvokeInterface_;
<b>struct</b> JavaVM_;
<font color="990099">#ifdef __cplusplus</font>
<b>typedef</b> JavaVM_ JavaVM;
<font color="990099">#else</font>
<b>typedef</b> <b>const</b> <b>struct</b> JNIInvokeInterface_ *JavaVM;
<font color="990099">#endif</font>
<b>struct</b> JNINativeInterface_ {
<b>void</b> *reserved0;
<b>void</b> *reserved1;
<b>void</b> *reserved2;
<b>void</b> *reserved3;
jint (JNICALL *GetVersion)(JNIEnv *env);
jclass (JNICALL *DefineClass)(JNIEnv *env, <b>const</b> <b>char</b> *name, jobject loader, <b>const</b> jbyte *buf, jsize len);
jclass (JNICALL *FindClass)(JNIEnv *env, <b>const</b> <b>char</b> *name);
jmethodID (JNICALL *FromReflectedMethod)(JNIEnv *env, jobject method);
jfieldID (JNICALL *FromReflectedField)(JNIEnv *env, jobject field);
jobject (JNICALL *ToReflectedMethod)(JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic);
jclass (JNICALL *GetSuperclass)(JNIEnv *env, jclass sub);
jboolean (JNICALL *IsAssignableFrom)(JNIEnv *env, jclass sub, jclass sup);
jobject (JNICALL *ToReflectedField)(JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic);
jint (JNICALL *<b>Throw</b>)(JNIEnv *env, jthrowable obj);
jint (JNICALL *ThrowNew)(JNIEnv *env, jclass clazz, <b>const</b> <b>char</b> *msg);
jthrowable (JNICALL *ExceptionOccurred)(JNIEnv *env);
<b>void</b> (JNICALL *ExceptionDescribe)(JNIEnv *env);
<b>void</b> (JNICALL *ExceptionClear)(JNIEnv *env);
<b>void</b> (JNICALL *FatalError)(JNIEnv *env, <b>const</b> <b>char</b> *msg);
jint (JNICALL *PushLocalFrame)(JNIEnv *env, jint capacity);
jobject (JNICALL *PopLocalFrame)(JNIEnv *env, jobject result);
jobject (JNICALL *NewGlobalRef)(JNIEnv *env, jobject lobj);
<b>void</b> (JNICALL *DeleteGlobalRef)(JNIEnv *env, jobject gref);
<b>void</b> (JNICALL *DeleteLocalRef)(JNIEnv *env, jobject obj);
jboolean (JNICALL *IsSameObject)(JNIEnv *env, jobject obj1, jobject obj2);
jobject (JNICALL *NewLocalRef)(JNIEnv *env, jobject ref);
jint (JNICALL *EnsureLocalCapacity)(JNIEnv *env, jint capacity);
jobject (JNICALL *AllocObject)(JNIEnv *env, jclass clazz);
jobject (JNICALL *NewObject)(JNIEnv *env, jclass clazz, jmethodID methodID, ...);
jobject (JNICALL *NewObjectV)(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
jobject (JNICALL *NewObjectA)(JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
jclass (JNICALL *GetObjectClass)(JNIEnv *env, jobject obj);
jboolean (JNICALL *IsInstanceOf)(JNIEnv *env, jobject obj, jclass clazz);
jmethodID (JNICALL *GetMethodID)(JNIEnv *env, jclass clazz, <b>const</b> <b>char</b> *name, <b>const</b> <b>char</b> *sig);
jobject (JNICALL *CallObjectMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jobject (JNICALL *CallObjectMethodV)(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jobject (JNICALL *CallObjectMethodA)(JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args);
jboolean (JNICALL *CallBooleanMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jboolean (JNICALL *CallBooleanMethodV)(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jboolean (JNICALL *CallBooleanMethodA)(JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args);
jbyte (JNICALL *CallByteMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jbyte (JNICALL *CallByteMethodV)(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jbyte (JNICALL *CallByteMethodA)(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jchar (JNICALL *CallCharMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jchar (JNICALL *CallCharMethodV)(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jchar (JNICALL *CallCharMethodA)(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jshort (JNICALL *CallShortMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jshort (JNICALL *CallShortMethodV)(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jshort (JNICALL *CallShortMethodA)(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jint (JNICALL *CallIntMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jint (JNICALL *CallIntMethodV)(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jint (JNICALL *CallIntMethodA)(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jlong (JNICALL *CallLongMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jlong (JNICALL *CallLongMethodV)(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jlong (JNICALL *CallLongMethodA)(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jfloat (JNICALL *CallFloatMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jfloat (JNICALL *CallFloatMethodV)(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jfloat (JNICALL *CallFloatMethodA)(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jdouble (JNICALL *CallDoubleMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jdouble (JNICALL *CallDoubleMethodV)(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jdouble (JNICALL *CallDoubleMethodA)(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
<b>void</b> (JNICALL *CallVoidMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);
<b>void</b> (JNICALL *CallVoidMethodV)(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
<b>void</b> (JNICALL *CallVoidMethodA)(JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args);
jobject (JNICALL *CallNonvirtualObjectMethod)(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
jobject (JNICALL *CallNonvirtualObjectMethodV)(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, va_list args);
jobject (JNICALL *CallNonvirtualObjectMethodA)(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, jvalue * args);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -