⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jni_h.html

📁 JNI(java本地接口)之delphi版
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<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. (&quot;Confidential Information&quot;).  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 &lt;stdio.h&gt;</font>
<font color="990099">#include &lt;stdarg.h&gt;</font>

<font color="#003399"><i>/* jni_md.h contains the machine-dependent typedefs for jbyte, jint
   and jlong */</i></font>

<font color="990099">#include &quot;jni_md.h&quot;</font>

<font color="990099">#ifdef __cplusplus</font>
<b>extern</b> <font color="#9933CC">&quot;C&quot;</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 + -