📄 jni.h
字号:
/*
* @(#)jni.h 1.26 97/01/27
*
* Copyright (c) 1993-1996 Sun Microsystems, Inc. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software
* and its documentation for NON-COMMERCIAL purposes and without
* fee is hereby granted provided that this copyright notice
* appears in all copies.
*
* The Java source code 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.
*
* SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
* THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*/
/*
* We used part of Netscape's Java Runtime Interface (JRI) as the starting
* point of our design and implementation.
*/
/******************************************************************************
* Java Runtime Interface
* Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
*****************************************************************************/
#ifndef JNI_H
#define JNI_H
#include <stdio.h>
#include <stdarg.h>
/* jni_md.h contains the machine-dependent typedefs for jbyte, jint
and jlong */
#include "jni_md.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* JNI Types
*/
typedef unsigned char jboolean;
typedef unsigned short jchar;
typedef short jshort;
typedef float jfloat;
typedef double jdouble;
typedef jint jsize;
#ifdef __cplusplus
class _jobject {};
class _jclass : public _jobject {};
class _jthrowable : public _jobject {};
class _jstring : public _jobject {};
class _jarray : public _jobject {};
class _jbooleanArray : public _jarray {};
class _jbyteArray : public _jarray {};
class _jcharArray : public _jarray {};
class _jshortArray : public _jarray {};
class _jintArray : public _jarray {};
class _jlongArray : public _jarray {};
class _jfloatArray : public _jarray {};
class _jdoubleArray : public _jarray {};
class _jobjectArray : public _jarray {};
typedef _jobject *jobject;
typedef _jclass *jclass;
typedef _jthrowable *jthrowable;
typedef _jstring *jstring;
typedef _jarray *jarray;
typedef _jbooleanArray *jbooleanArray;
typedef _jbyteArray *jbyteArray;
typedef _jcharArray *jcharArray;
typedef _jshortArray *jshortArray;
typedef _jintArray *jintArray;
typedef _jlongArray *jlongArray;
typedef _jfloatArray *jfloatArray;
typedef _jdoubleArray *jdoubleArray;
typedef _jobjectArray *jobjectArray;
#else
struct _jobject;
typedef struct _jobject *jobject;
typedef jobject jclass;
typedef jobject jthrowable;
typedef jobject jstring;
typedef jobject jarray;
typedef jarray jbooleanArray;
typedef jarray jbyteArray;
typedef jarray jcharArray;
typedef jarray jshortArray;
typedef jarray jintArray;
typedef jarray jlongArray;
typedef jarray jfloatArray;
typedef jarray jdoubleArray;
typedef jarray jobjectArray;
#endif
typedef jobject jref; /* For transition---not meant to be part of public
API anymore.*/
typedef union jvalue {
jboolean z;
jbyte b;
jchar c;
jshort s;
jint i;
jlong j;
jfloat f;
jdouble d;
jobject l;
} jvalue;
struct _jfieldID;
typedef struct _jfieldID *jfieldID;
struct _jmethodID;
typedef struct _jmethodID *jmethodID;
/*
* jboolean constants
*/
#define JNI_FALSE 0
#define JNI_TRUE 1
/*
* possible return values for JNI functions.
*/
#define JNI_OK 0
#define JNI_ERR (-1)
/*
* used in ReleaseScalarArrayElements
*/
#define JNI_COMMIT 1
#define JNI_ABORT 2
/*
* used in RegisterNatives to describe native method name, signature,
* and function pointer.
*/
typedef struct {
char *name;
char *signature;
void *fnPtr;
} JNINativeMethod;
/*
* JNI Native Method Interface.
*/
struct JNINativeInterface_;
struct JNIEnv_;
#ifdef __cplusplus
typedef JNIEnv_ JNIEnv;
#else
typedef const struct JNINativeInterface_ *JNIEnv;
#endif
/*
* JNI Invocation Interface.
*/
struct JNIInvokeInterface_;
struct JavaVM_;
#ifdef __cplusplus
typedef JavaVM_ JavaVM;
#else
typedef const struct JNIInvokeInterface_ *JavaVM;
#endif
struct JNINativeInterface_ {
void *reserved0;
void *reserved1;
void *reserved2;
void *reserved3;
jint (*GetVersion)(JNIEnv *env);
jclass (*DefineClass)
(JNIEnv *env, const char *name, jobject loader, const jbyte *buf,
jsize len);
jclass (*FindClass)
(JNIEnv *env, const char *name);
void *reserved4;
void *reserved5;
void *reserved6;
jclass (*GetSuperclass)
(JNIEnv *env, jclass sub);
jboolean (*IsAssignableFrom)
(JNIEnv *env, jclass sub, jclass sup);
void *reserved7;
jint (*_Throw)
(JNIEnv *env, jthrowable obj);
jint (*ThrowNew)
(JNIEnv *env, jclass clazz, const char *msg);
jthrowable (*ExceptionOccurred)
(JNIEnv *env);
void (*ExceptionDescribe)
(JNIEnv *env);
void (*ExceptionClear)
(JNIEnv *env);
void (*FatalError)
(JNIEnv *env, const char *msg);
void *reserved8;
void *reserved9;
jobject (*NewGlobalRef)
(JNIEnv *env, jobject lobj);
void (*DeleteGlobalRef)
(JNIEnv *env, jobject gref);
void (*DeleteLocalRef)
(JNIEnv *env, jobject obj);
jboolean (*IsSameObject)
(JNIEnv *env, jobject obj1, jobject obj2);
void *reserved10;
void *reserved11;
jobject (*AllocObject)
(JNIEnv *env, jclass clazz);
jobject (*NewObject)
(JNIEnv *env, jclass clazz, jmethodID methodID, ...);
jobject (*NewObjectV)
(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
jobject (*NewObjectA)
(JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
jclass (*GetObjectClass)
(JNIEnv *env, jobject obj);
jboolean (*IsInstanceOf)
(JNIEnv *env, jobject obj, jclass clazz);
jmethodID (*GetMethodID)
(JNIEnv *env, jclass clazz, const char *name, const char *sig);
jobject (*CallObjectMethod)
(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jobject (*CallObjectMethodV)
(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jobject (*CallObjectMethodA)
(JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args);
jboolean (*CallBooleanMethod)
(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jboolean (*CallBooleanMethodV)
(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jboolean (*CallBooleanMethodA)
(JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args);
jbyte (*CallByteMethod)
(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jbyte (*CallByteMethodV)
(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jbyte (*CallByteMethodA)
(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jchar (*CallCharMethod)
(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jchar (*CallCharMethodV)
(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jchar (*CallCharMethodA)
(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jshort (*CallShortMethod)
(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jshort (*CallShortMethodV)
(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jshort (*CallShortMethodA)
(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jint (*CallIntMethod)
(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jint (*CallIntMethodV)
(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jint (*CallIntMethodA)
(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jlong (*CallLongMethod)
(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jlong (*CallLongMethodV)
(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jlong (*CallLongMethodA)
(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jfloat (*CallFloatMethod)
(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jfloat (*CallFloatMethodV)
(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jfloat (*CallFloatMethodA)
(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
jdouble (*CallDoubleMethod)
(JNIEnv *env, jobject obj, jmethodID methodID, ...);
jdouble (*CallDoubleMethodV)
(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
jdouble (*CallDoubleMethodA)
(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
void (*CallVoidMethod)
(JNIEnv *env, jobject obj, jmethodID methodID, ...);
void (*CallVoidMethodV)
(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
void (*CallVoidMethodA)
(JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args);
jobject (*CallNonvirtualObjectMethod)
(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
jobject (*CallNonvirtualObjectMethodV)
(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
va_list args);
jobject (*CallNonvirtualObjectMethodA)
(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
jvalue * args);
jboolean (*CallNonvirtualBooleanMethod)
(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
jboolean (*CallNonvirtualBooleanMethodV)
(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
va_list args);
jboolean (*CallNonvirtualBooleanMethodA)
(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
jvalue * args);
jbyte (*CallNonvirtualByteMethod)
(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
jbyte (*CallNonvirtualByteMethodV)
(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
va_list args);
jbyte (*CallNonvirtualByteMethodA)
(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
jvalue *args);
jchar (*CallNonvirtualCharMethod)
(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -