Remove proprietary stuff from Sun.
authorMathieu Malaterre <mathieu.malaterre@gmail.com>
Wed, 28 Dec 2011 14:43:41 +0000 (14:43 +0000)
committerMathieu Malaterre <mathieu.malaterre@gmail.com>
Wed, 28 Dec 2011 14:43:41 +0000 (14:43 +0000)
applications/JavaOpenJPEG/java-jni/include/jawt.h [deleted file]
applications/JavaOpenJPEG/java-jni/include/jdwpTransport.h [deleted file]
applications/JavaOpenJPEG/java-jni/include/jni.h [deleted file]
applications/JavaOpenJPEG/java-jni/include/jvmdi.h [deleted file]
applications/JavaOpenJPEG/java-jni/include/jvmpi.h [deleted file]
applications/JavaOpenJPEG/java-jni/include/jvmti.h [deleted file]
applications/JavaOpenJPEG/java-jni/include/win32/jawt_md.h [deleted file]
applications/JavaOpenJPEG/java-jni/include/win32/jni_md.h [deleted file]
applications/JavaOpenJPEG/java-jni/lib/jvm.lib [deleted file]

diff --git a/applications/JavaOpenJPEG/java-jni/include/jawt.h b/applications/JavaOpenJPEG/java-jni/include/jawt.h
deleted file mode 100644 (file)
index 30a49ad..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-/*\r
- * @(#)jawt.h  1.10 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-#ifndef _JAVASOFT_JAWT_H_\r
-#define _JAVASOFT_JAWT_H_\r
-\r
-#include "jni.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/*\r
- * AWT native interface (new in JDK 1.3)\r
- *\r
- * The AWT native interface allows a native C or C++ application a means\r
- * by which to access native structures in AWT.  This is to facilitate moving\r
- * legacy C and C++ applications to Java and to target the needs of the\r
- * community who, at present, wish to do their own native rendering to canvases\r
- * for performance reasons.  Standard extensions such as Java3D also require a\r
- * means to access the underlying native data structures of AWT.\r
- *\r
- * There may be future extensions to this API depending on demand.\r
- *\r
- * A VM does not have to implement this API in order to pass the JCK.\r
- * It is recommended, however, that this API is implemented on VMs that support\r
- * standard extensions, such as Java3D.\r
- *\r
- * Since this is a native API, any program which uses it cannot be considered\r
- * 100% pure java.\r
- */\r
-\r
-/*\r
- * AWT Native Drawing Surface (JAWT_DrawingSurface).\r
- *\r
- * For each platform, there is a native drawing surface structure.  This\r
- * platform-specific structure can be found in jawt_md.h.  It is recommended\r
- * that additional platforms follow the same model.  It is also recommended\r
- * that VMs on Win32 and Solaris support the existing structures in jawt_md.h.\r
- *\r
- *******************\r
- * EXAMPLE OF USAGE:\r
- *******************\r
- *\r
- * In Win32, a programmer wishes to access the HWND of a canvas to perform\r
- * native rendering into it.  The programmer has declared the paint() method\r
- * for their canvas subclass to be native:\r
- *\r
- *\r
- * MyCanvas.java:\r
- *\r
- * import java.awt.*;\r
- *\r
- * public class MyCanvas extends Canvas {\r
- *\r
- *     static {\r
- *         System.loadLibrary("mylib");\r
- *     }\r
- *\r
- *     public native void paint(Graphics g);\r
- * }\r
- *\r
- *\r
- * myfile.c:\r
- *\r
- * #include "jawt_md.h"\r
- * #include <assert.h>\r
- *\r
- * JNIEXPORT void JNICALL\r
- * Java_MyCanvas_paint(JNIEnv* env, jobject canvas, jobject graphics)\r
- * {\r
- *     JAWT awt;\r
- *     JAWT_DrawingSurface* ds;\r
- *     JAWT_DrawingSurfaceInfo* dsi;\r
- *     JAWT_Win32DrawingSurfaceInfo* dsi_win;\r
- *     jboolean result;\r
- *     jint lock;\r
- *\r
- *     // Get the AWT\r
- *     awt.version = JAWT_VERSION_1_3;\r
- *     result = JAWT_GetAWT(env, &awt);\r
- *     assert(result != JNI_FALSE);\r
- *\r
- *     // Get the drawing surface\r
- *     ds = awt.GetDrawingSurface(env, canvas);\r
- *     assert(ds != NULL);\r
- *\r
- *     // Lock the drawing surface\r
- *     lock = ds->Lock(ds);\r
- *     assert((lock & JAWT_LOCK_ERROR) == 0);\r
- *\r
- *     // Get the drawing surface info\r
- *     dsi = ds->GetDrawingSurfaceInfo(ds);\r
- *\r
- *     // Get the platform-specific drawing info\r
- *     dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;\r
- *\r
- *     //////////////////////////////\r
- *     // !!! DO PAINTING HERE !!! //\r
- *     //////////////////////////////\r
- *\r
- *     // Free the drawing surface info\r
- *     ds->FreeDrawingSurfaceInfo(dsi);\r
- *\r
- *     // Unlock the drawing surface\r
- *     ds->Unlock(ds);\r
- *\r
- *     // Free the drawing surface\r
- *     awt.FreeDrawingSurface(ds);\r
- * }\r
- *\r
- */\r
-\r
-/*\r
- * JAWT_Rectangle\r
- * Structure for a native rectangle.\r
- */\r
-typedef struct jawt_Rectangle {\r
-    jint x;\r
-    jint y;\r
-    jint width;\r
-    jint height;\r
-} JAWT_Rectangle;\r
-\r
-struct jawt_DrawingSurface;\r
-\r
-/*\r
- * JAWT_DrawingSurfaceInfo\r
- * Structure for containing the underlying drawing information of a component.\r
- */\r
-typedef struct jawt_DrawingSurfaceInfo {\r
-    /*\r
-     * Pointer to the platform-specific information.  This can be safely\r
-     * cast to a JAWT_Win32DrawingSurfaceInfo on Windows or a\r
-     * JAWT_X11DrawingSurfaceInfo on Solaris.  See jawt_md.h for details.\r
-     */\r
-    void* platformInfo;\r
-    /* Cached pointer to the underlying drawing surface */\r
-    struct jawt_DrawingSurface* ds;\r
-    /* Bounding rectangle of the drawing surface */\r
-    JAWT_Rectangle bounds;\r
-    /* Number of rectangles in the clip */\r
-    jint clipSize;\r
-    /* Clip rectangle array */\r
-    JAWT_Rectangle* clip;\r
-} JAWT_DrawingSurfaceInfo;\r
-\r
-#define JAWT_LOCK_ERROR                 0x00000001\r
-#define JAWT_LOCK_CLIP_CHANGED          0x00000002\r
-#define JAWT_LOCK_BOUNDS_CHANGED        0x00000004\r
-#define JAWT_LOCK_SURFACE_CHANGED       0x00000008\r
-\r
-/*\r
- * JAWT_DrawingSurface\r
- * Structure for containing the underlying drawing information of a component.\r
- * All operations on a JAWT_DrawingSurface MUST be performed from the same\r
- * thread as the call to GetDrawingSurface.\r
- */\r
-typedef struct jawt_DrawingSurface {\r
-    /*\r
-     * Cached reference to the Java environment of the calling thread.\r
-     * If Lock(), Unlock(), GetDrawingSurfaceInfo() or\r
-     * FreeDrawingSurfaceInfo() are called from a different thread,\r
-     * this data member should be set before calling those functions.\r
-     */\r
-    JNIEnv* env;\r
-    /* Cached reference to the target object */\r
-    jobject target;\r
-    /*\r
-     * Lock the surface of the target component for native rendering.\r
-     * When finished drawing, the surface must be unlocked with\r
-     * Unlock().  This function returns a bitmask with one or more of the\r
-     * following values:\r
-     *\r
-     * JAWT_LOCK_ERROR - When an error has occurred and the surface could not\r
-     * be locked.\r
-     *\r
-     * JAWT_LOCK_CLIP_CHANGED - When the clip region has changed.\r
-     *\r
-     * JAWT_LOCK_BOUNDS_CHANGED - When the bounds of the surface have changed.\r
-     *\r
-     * JAWT_LOCK_SURFACE_CHANGED - When the surface itself has changed\r
-     */\r
-    jint (JNICALL *Lock)\r
-        (struct jawt_DrawingSurface* ds);\r
-    /*\r
-     * Get the drawing surface info.\r
-     * The value returned may be cached, but the values may change if\r
-     * additional calls to Lock() or Unlock() are made.\r
-     * Lock() must be called before this can return a valid value.\r
-     * Returns NULL if an error has occurred.\r
-     * When finished with the returned value, FreeDrawingSurfaceInfo must be\r
-     * called.\r
-     */\r
-    JAWT_DrawingSurfaceInfo* (JNICALL *GetDrawingSurfaceInfo)\r
-        (struct jawt_DrawingSurface* ds);\r
-    /*\r
-     * Free the drawing surface info.\r
-     */\r
-    void (JNICALL *FreeDrawingSurfaceInfo)\r
-        (JAWT_DrawingSurfaceInfo* dsi);\r
-    /* \r
-     * Unlock the drawing surface of the target component for native rendering.\r
-     */\r
-    void (JNICALL *Unlock)\r
-        (struct jawt_DrawingSurface* ds);\r
-} JAWT_DrawingSurface;\r
-\r
-/*\r
- * JAWT\r
- * Structure for containing native AWT functions.\r
- */\r
-typedef struct jawt {\r
-    /*\r
-     * Version of this structure.  This must always be set before\r
-     * calling JAWT_GetAWT()\r
-     */\r
-    jint version;\r
-    /*\r
-     * Return a drawing surface from a target jobject.  This value\r
-     * may be cached.\r
-     * Returns NULL if an error has occurred.\r
-     * Target must be a java.awt.Component (should be a Canvas\r
-     * or Window for native rendering).\r
-     * FreeDrawingSurface() must be called when finished with the\r
-     * returned JAWT_DrawingSurface.\r
-     */\r
-    JAWT_DrawingSurface* (JNICALL *GetDrawingSurface)\r
-        (JNIEnv* env, jobject target);\r
-    /*\r
-     * Free the drawing surface allocated in GetDrawingSurface.\r
-     */\r
-    void (JNICALL *FreeDrawingSurface)\r
-        (JAWT_DrawingSurface* ds);\r
-    /*\r
-     * Since 1.4\r
-     * Locks the entire AWT for synchronization purposes\r
-     */\r
-    void (JNICALL *Lock)(JNIEnv* env);\r
-    /*\r
-     * Since 1.4\r
-     * Unlocks the entire AWT for synchronization purposes\r
-     */\r
-    void (JNICALL *Unlock)(JNIEnv* env);\r
-    /*\r
-     * Since 1.4\r
-     * Returns a reference to a java.awt.Component from a native\r
-     * platform handle.  On Windows, this corresponds to an HWND;\r
-     * on Solaris and Linux, this is a Drawable.  For other platforms,\r
-     * see the appropriate machine-dependent header file for a description.\r
-     * The reference returned by this function is a local\r
-     * reference that is only valid in this environment.\r
-     * This function returns a NULL reference if no component could be\r
-     * found with matching platform information.\r
-     */\r
-    jobject (JNICALL *GetComponent)(JNIEnv* env, void* platformInfo);\r
-\r
-} JAWT;\r
-\r
-/*\r
- * Get the AWT native structure.  This function returns JNI_FALSE if\r
- * an error occurs.\r
- */\r
-_JNI_IMPORT_OR_EXPORT_\r
-jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt);\r
-\r
-#define JAWT_VERSION_1_3 0x00010003\r
-#define JAWT_VERSION_1_4 0x00010004\r
-\r
-#ifdef __cplusplus\r
-} /* extern "C" */\r
-#endif\r
-\r
-#endif /* !_JAVASOFT_JAWT_H_ */\r
diff --git a/applications/JavaOpenJPEG/java-jni/include/jdwpTransport.h b/applications/JavaOpenJPEG/java-jni/include/jdwpTransport.h
deleted file mode 100644 (file)
index 1d78009..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-/*\r
- * @(#)jdwpTransport.h 1.7 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-/*\r
- * Java Debug Wire Protocol Transport Service Provider Interface.\r
- */\r
-\r
-#ifndef JDWPTRANSPORT_H\r
-#define JDWPTRANSPORT_H\r
-\r
-#include "jni.h"\r
-\r
-enum {\r
-    JDWPTRANSPORT_VERSION_1_0 = 0x00010000\r
-};\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-struct jdwpTransportNativeInterface_;\r
-\r
-struct _jdwpTransportEnv;\r
-\r
-#ifdef __cplusplus\r
-typedef _jdwpTransportEnv jdwpTransportEnv;\r
-#else\r
-typedef const struct jdwpTransportNativeInterface_ *jdwpTransportEnv;\r
-#endif /* __cplusplus */\r
-\r
-/*\r
- * Errors. Universal errors with JVMTI/JVMDI equivalents keep the\r
- * values the same.\r
- */\r
-typedef enum {\r
-    JDWPTRANSPORT_ERROR_NONE = 0,\r
-    JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT = 103,\r
-    JDWPTRANSPORT_ERROR_OUT_OF_MEMORY = 110,\r
-    JDWPTRANSPORT_ERROR_INTERNAL = 113,\r
-    JDWPTRANSPORT_ERROR_ILLEGAL_STATE = 201,\r
-    JDWPTRANSPORT_ERROR_IO_ERROR = 202,\r
-    JDWPTRANSPORT_ERROR_TIMEOUT = 203,\r
-    JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE = 204\r
-} jdwpTransportError;\r
-    \r
-\r
-/*\r
- * Structure to define capabilities\r
- */\r
-typedef struct {\r
-    unsigned int can_timeout_attach     :1;\r
-    unsigned int can_timeout_accept     :1;\r
-    unsigned int can_timeout_handshake  :1;\r
-    unsigned int reserved3              :1;\r
-    unsigned int reserved4              :1;\r
-    unsigned int reserved5              :1;\r
-    unsigned int reserved6              :1;\r
-    unsigned int reserved7              :1;\r
-    unsigned int reserved8              :1;\r
-    unsigned int reserved9              :1;\r
-    unsigned int reserved10             :1;\r
-    unsigned int reserved11             :1;\r
-    unsigned int reserved12             :1;\r
-    unsigned int reserved13             :1;\r
-    unsigned int reserved14            :1;\r
-    unsigned int reserved15            :1;\r
-} JDWPTransportCapabilities;\r
-\r
-\r
-/*\r
- * Structures to define packet layout.\r
- * \r
- * See: http://java.sun.com/j2se/1.5/docs/guide/jpda/jdwp-spec.html\r
- */\r
-\r
-enum {\r
-    JDWPTRANSPORT_FLAGS_NONE    = 0x0,\r
-    JDWPTRANSPORT_FLAGS_REPLY   = 0x80\r
-};\r
-\r
-typedef struct {\r
-    jint len; \r
-    jint id;\r
-    jbyte flags;\r
-    jbyte cmdSet;\r
-    jbyte cmd;\r
-    jbyte *data;\r
-} jdwpCmdPacket;\r
-\r
-typedef struct {\r
-    jint len;\r
-    jint id;\r
-    jbyte flags;\r
-    jshort errorCode;\r
-    jbyte *data;\r
-} jdwpReplyPacket;\r
-\r
-typedef struct {\r
-    union {\r
-        jdwpCmdPacket cmd;\r
-        jdwpReplyPacket reply;\r
-    } type;\r
-} jdwpPacket;\r
-\r
-/*\r
- * JDWP functions called by the transport.\r
- */\r
-typedef struct jdwpTransportCallback {\r
-    void *(*alloc)(jint numBytes);   /* Call this for all allocations */\r
-    void (*free)(void *buffer);      /* Call this for all deallocations */\r
-} jdwpTransportCallback;\r
-\r
-typedef jint (JNICALL *jdwpTransport_OnLoad_t)(JavaVM *jvm,\r
-                                              jdwpTransportCallback *callback,\r
-                                              jint version,\r
-                                              jdwpTransportEnv** env);\r
-\r
-\r
-\r
-/* Function Interface */\r
-\r
-struct jdwpTransportNativeInterface_ {\r
-    /*  1 :  RESERVED */\r
-    void *reserved1;\r
-\r
-    /* 2 : Get Capabilities */\r
-    jdwpTransportError (JNICALL *GetCapabilities)(jdwpTransportEnv* env,\r
-        JDWPTransportCapabilities *capabilities_ptr);\r
-\r
-    /*  3 : Attach */\r
-    jdwpTransportError (JNICALL *Attach)(jdwpTransportEnv* env,\r
-       const char* address,\r
-       jlong attach_timeout,\r
-       jlong handshake_timeout);\r
-\r
-    /*  4: StartListening */\r
-    jdwpTransportError (JNICALL *StartListening)(jdwpTransportEnv* env,\r
-       const char* address, \r
-       char** actual_address);\r
-\r
-    /*  5: StopListening */\r
-    jdwpTransportError (JNICALL *StopListening)(jdwpTransportEnv* env);\r
-\r
-    /*  6: Accept */\r
-    jdwpTransportError (JNICALL *Accept)(jdwpTransportEnv* env,\r
-       jlong accept_timeout, \r
-       jlong handshake_timeout);\r
-\r
-    /*  7: IsOpen */\r
-    jboolean (JNICALL *IsOpen)(jdwpTransportEnv* env);\r
-\r
-    /*  8: Close */\r
-    jdwpTransportError (JNICALL *Close)(jdwpTransportEnv* env);\r
-\r
-    /*  9: ReadPacket */\r
-    jdwpTransportError (JNICALL *ReadPacket)(jdwpTransportEnv* env,\r
-       jdwpPacket *pkt);\r
-\r
-    /*  10: Write Packet */\r
-    jdwpTransportError (JNICALL *WritePacket)(jdwpTransportEnv* env,\r
-       const jdwpPacket* pkt);\r
-\r
-    /*  11:  GetLastError */\r
-    jdwpTransportError (JNICALL *GetLastError)(jdwpTransportEnv* env,\r
-       char** error);\r
-\r
-};\r
-\r
-\r
-/*\r
- * Use inlined functions so that C++ code can use syntax such as\r
- *     env->Attach("mymachine:5000", 10*1000, 0);\r
- *\r
- * rather than using C's :-\r
- *\r
- *     (*env)->Attach(env, "mymachine:5000", 10*1000, 0);\r
- */\r
-struct _jdwpTransportEnv {\r
-    const struct jdwpTransportNativeInterface_ *functions;\r
-#ifdef __cplusplus\r
-\r
-    jdwpTransportError GetCapabilities(JDWPTransportCapabilities *capabilities_ptr) {\r
-       return functions->GetCapabilities(this, capabilities_ptr);\r
-    }\r
-\r
-    jdwpTransportError Attach(const char* address, jlong attach_timeout,\r
-               jlong handshake_timeout) {\r
-       return functions->Attach(this, address, attach_timeout, handshake_timeout);\r
-    }\r
-\r
-    jdwpTransportError StartListening(const char* address,\r
-               char** actual_address) {\r
-       return functions->StartListening(this, address, actual_address);\r
-    }\r
-\r
-    jdwpTransportError StopListening(void) {\r
-       return functions->StopListening(this);\r
-    }\r
-\r
-    jdwpTransportError Accept(jlong accept_timeout, jlong handshake_timeout) {\r
-       return functions->Accept(this, accept_timeout, handshake_timeout);\r
-    }\r
-\r
-    jboolean IsOpen(void) {\r
-        return functions->IsOpen(this);\r
-    }\r
-\r
-    jdwpTransportError Close(void) {\r
-        return functions->Close(this);\r
-    }\r
-\r
-    jdwpTransportError ReadPacket(jdwpPacket *pkt) {\r
-       return functions->ReadPacket(this, pkt);\r
-    }\r
-\r
-    jdwpTransportError WritePacket(const jdwpPacket* pkt) {\r
-       return functions->WritePacket(this, pkt);\r
-    }\r
-\r
-    jdwpTransportError GetLastError(char** error) {\r
-       return functions->GetLastError(this, error);\r
-    }\r
-\r
-\r
-#endif /* __cplusplus */\r
-};\r
-\r
-#ifdef __cplusplus\r
-} /* extern "C" */\r
-#endif /* __cplusplus */\r
-\r
-#endif /* JDWPTRANSPORT_H */\r
-\r
diff --git a/applications/JavaOpenJPEG/java-jni/include/jni.h b/applications/JavaOpenJPEG/java-jni/include/jni.h
deleted file mode 100644 (file)
index cb3baef..0000000
+++ /dev/null
@@ -1,1951 +0,0 @@
-/*\r
- * @(#)jni.h   1.56 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-/*\r
- * We used part of Netscape's Java Runtime Interface (JRI) as the starting\r
- * point of our design and implementation.\r
- */\r
-\r
-/******************************************************************************\r
- * Java Runtime Interface\r
- * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.\r
- *****************************************************************************/\r
-\r
-#ifndef _JAVASOFT_JNI_H_\r
-#define _JAVASOFT_JNI_H_\r
-\r
-#include <stdio.h>\r
-#include <stdarg.h>\r
-\r
-/* jni_md.h contains the machine-dependent typedefs for jbyte, jint\r
-   and jlong */\r
-\r
-#include "jni_md.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/*\r
- * JNI Types\r
- */\r
-\r
-#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H\r
-\r
-typedef unsigned char  jboolean;\r
-typedef unsigned short jchar;\r
-typedef short          jshort;\r
-typedef float          jfloat;\r
-typedef double         jdouble;\r
-\r
-typedef jint            jsize;\r
-\r
-#ifdef __cplusplus\r
-\r
-class _jobject {};\r
-class _jclass : public _jobject {};\r
-class _jthrowable : public _jobject {};\r
-class _jstring : public _jobject {};\r
-class _jarray : public _jobject {};\r
-class _jbooleanArray : public _jarray {};\r
-class _jbyteArray : public _jarray {};\r
-class _jcharArray : public _jarray {};\r
-class _jshortArray : public _jarray {};\r
-class _jintArray : public _jarray {};\r
-class _jlongArray : public _jarray {};\r
-class _jfloatArray : public _jarray {};\r
-class _jdoubleArray : public _jarray {};\r
-class _jobjectArray : public _jarray {};\r
-\r
-typedef _jobject *jobject;\r
-typedef _jclass *jclass;\r
-typedef _jthrowable *jthrowable;\r
-typedef _jstring *jstring;\r
-typedef _jarray *jarray;\r
-typedef _jbooleanArray *jbooleanArray;\r
-typedef _jbyteArray *jbyteArray;\r
-typedef _jcharArray *jcharArray;\r
-typedef _jshortArray *jshortArray;\r
-typedef _jintArray *jintArray;\r
-typedef _jlongArray *jlongArray;\r
-typedef _jfloatArray *jfloatArray;\r
-typedef _jdoubleArray *jdoubleArray;\r
-typedef _jobjectArray *jobjectArray;\r
-\r
-#else\r
-\r
-struct _jobject;\r
-\r
-typedef struct _jobject *jobject;\r
-typedef jobject jclass;\r
-typedef jobject jthrowable;\r
-typedef jobject jstring;\r
-typedef jobject jarray;\r
-typedef jarray jbooleanArray;\r
-typedef jarray jbyteArray;\r
-typedef jarray jcharArray;\r
-typedef jarray jshortArray;\r
-typedef jarray jintArray;\r
-typedef jarray jlongArray;\r
-typedef jarray jfloatArray;\r
-typedef jarray jdoubleArray;\r
-typedef jarray jobjectArray;\r
-\r
-#endif\r
-\r
-typedef jobject jweak;\r
-\r
-typedef union jvalue {\r
-    jboolean z;\r
-    jbyte    b;\r
-    jchar    c;\r
-    jshort   s;\r
-    jint     i;\r
-    jlong    j;\r
-    jfloat   f;\r
-    jdouble  d;\r
-    jobject  l;\r
-} jvalue;\r
-\r
-struct _jfieldID;\r
-typedef struct _jfieldID *jfieldID;\r
-\r
-struct _jmethodID;\r
-typedef struct _jmethodID *jmethodID;\r
-\r
-#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */\r
-\r
-/*\r
- * jboolean constants\r
- */\r
-\r
-#define JNI_FALSE 0\r
-#define JNI_TRUE 1\r
-\r
-/*\r
- * possible return values for JNI functions.\r
- */\r
-\r
-#define JNI_OK           0                 /* success */\r
-#define JNI_ERR          (-1)              /* unknown error */\r
-#define JNI_EDETACHED    (-2)              /* thread detached from the VM */\r
-#define JNI_EVERSION     (-3)              /* JNI version error */\r
-#define JNI_ENOMEM       (-4)              /* not enough memory */\r
-#define JNI_EEXIST       (-5)              /* VM already created */\r
-#define JNI_EINVAL       (-6)              /* invalid arguments */\r
-\r
-/*\r
- * used in ReleaseScalarArrayElements\r
- */\r
-\r
-#define JNI_COMMIT 1\r
-#define JNI_ABORT 2\r
-\r
-/*\r
- * used in RegisterNatives to describe native method name, signature,\r
- * and function pointer.\r
- */\r
-\r
-typedef struct {\r
-    char *name;\r
-    char *signature;\r
-    void *fnPtr;\r
-} JNINativeMethod;\r
-\r
-/*\r
- * JNI Native Method Interface.\r
- */\r
-\r
-struct JNINativeInterface_;\r
-\r
-struct JNIEnv_;\r
-\r
-#ifdef __cplusplus\r
-typedef JNIEnv_ JNIEnv;\r
-#else\r
-typedef const struct JNINativeInterface_ *JNIEnv;\r
-#endif\r
-\r
-/*\r
- * JNI Invocation Interface.\r
- */\r
-\r
-struct JNIInvokeInterface_;\r
-\r
-struct JavaVM_;\r
-\r
-#ifdef __cplusplus\r
-typedef JavaVM_ JavaVM;\r
-#else\r
-typedef const struct JNIInvokeInterface_ *JavaVM;\r
-#endif\r
-\r
-struct JNINativeInterface_ {\r
-    void *reserved0;\r
-    void *reserved1;\r
-    void *reserved2;\r
-\r
-    void *reserved3;\r
-    jint (JNICALL *GetVersion)(JNIEnv *env);\r
-\r
-    jclass (JNICALL *DefineClass)\r
-      (JNIEnv *env, const char *name, jobject loader, const jbyte *buf,\r
-       jsize len);\r
-    jclass (JNICALL *FindClass)\r
-      (JNIEnv *env, const char *name);\r
-\r
-    jmethodID (JNICALL *FromReflectedMethod)\r
-      (JNIEnv *env, jobject method);\r
-    jfieldID (JNICALL *FromReflectedField)\r
-      (JNIEnv *env, jobject field);\r
-\r
-    jobject (JNICALL *ToReflectedMethod)\r
-      (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic);\r
-\r
-    jclass (JNICALL *GetSuperclass)\r
-      (JNIEnv *env, jclass sub);\r
-    jboolean (JNICALL *IsAssignableFrom)\r
-      (JNIEnv *env, jclass sub, jclass sup);\r
-\r
-    jobject (JNICALL *ToReflectedField)\r
-      (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic);\r
-\r
-    jint (JNICALL *Throw)\r
-      (JNIEnv *env, jthrowable obj);\r
-    jint (JNICALL *ThrowNew)\r
-      (JNIEnv *env, jclass clazz, const char *msg);\r
-    jthrowable (JNICALL *ExceptionOccurred)\r
-      (JNIEnv *env);\r
-    void (JNICALL *ExceptionDescribe)\r
-      (JNIEnv *env);\r
-    void (JNICALL *ExceptionClear)\r
-      (JNIEnv *env);\r
-    void (JNICALL *FatalError)\r
-      (JNIEnv *env, const char *msg);\r
-\r
-    jint (JNICALL *PushLocalFrame)\r
-      (JNIEnv *env, jint capacity);\r
-    jobject (JNICALL *PopLocalFrame)\r
-      (JNIEnv *env, jobject result);\r
-\r
-    jobject (JNICALL *NewGlobalRef)\r
-      (JNIEnv *env, jobject lobj);\r
-    void (JNICALL *DeleteGlobalRef)\r
-      (JNIEnv *env, jobject gref);\r
-    void (JNICALL *DeleteLocalRef)\r
-      (JNIEnv *env, jobject obj);\r
-    jboolean (JNICALL *IsSameObject)\r
-      (JNIEnv *env, jobject obj1, jobject obj2);\r
-    jobject (JNICALL *NewLocalRef)\r
-      (JNIEnv *env, jobject ref);\r
-    jint (JNICALL *EnsureLocalCapacity)\r
-      (JNIEnv *env, jint capacity);\r
-\r
-    jobject (JNICALL *AllocObject)\r
-      (JNIEnv *env, jclass clazz);\r
-    jobject (JNICALL *NewObject)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
-    jobject (JNICALL *NewObjectV)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
-    jobject (JNICALL *NewObjectA)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
-    jclass (JNICALL *GetObjectClass)\r
-      (JNIEnv *env, jobject obj);\r
-    jboolean (JNICALL *IsInstanceOf)\r
-      (JNIEnv *env, jobject obj, jclass clazz);\r
-\r
-    jmethodID (JNICALL *GetMethodID)\r
-      (JNIEnv *env, jclass clazz, const char *name, const char *sig);\r
-\r
-    jobject (JNICALL *CallObjectMethod)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
-    jobject (JNICALL *CallObjectMethodV)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
-    jobject (JNICALL *CallObjectMethodA)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);\r
-\r
-    jboolean (JNICALL *CallBooleanMethod)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
-    jboolean (JNICALL *CallBooleanMethodV)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
-    jboolean (JNICALL *CallBooleanMethodA)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);\r
-\r
-    jbyte (JNICALL *CallByteMethod)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
-    jbyte (JNICALL *CallByteMethodV)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
-    jbyte (JNICALL *CallByteMethodA)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
-    jchar (JNICALL *CallCharMethod)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
-    jchar (JNICALL *CallCharMethodV)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
-    jchar (JNICALL *CallCharMethodA)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
-    jshort (JNICALL *CallShortMethod)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
-    jshort (JNICALL *CallShortMethodV)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
-    jshort (JNICALL *CallShortMethodA)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
-    jint (JNICALL *CallIntMethod)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
-    jint (JNICALL *CallIntMethodV)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
-    jint (JNICALL *CallIntMethodA)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
-    jlong (JNICALL *CallLongMethod)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
-    jlong (JNICALL *CallLongMethodV)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
-    jlong (JNICALL *CallLongMethodA)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
-    jfloat (JNICALL *CallFloatMethod)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
-    jfloat (JNICALL *CallFloatMethodV)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
-    jfloat (JNICALL *CallFloatMethodA)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
-    jdouble (JNICALL *CallDoubleMethod)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
-    jdouble (JNICALL *CallDoubleMethodV)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
-    jdouble (JNICALL *CallDoubleMethodA)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);\r
-\r
-    void (JNICALL *CallVoidMethod)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, ...);\r
-    void (JNICALL *CallVoidMethodV)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);\r
-    void (JNICALL *CallVoidMethodA)\r
-      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);\r
-\r
-    jobject (JNICALL *CallNonvirtualObjectMethod)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
-    jobject (JNICALL *CallNonvirtualObjectMethodV)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       va_list args);\r
-    jobject (JNICALL *CallNonvirtualObjectMethodA)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       const jvalue * args);\r
-\r
-    jboolean (JNICALL *CallNonvirtualBooleanMethod)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
-    jboolean (JNICALL *CallNonvirtualBooleanMethodV)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       va_list args);\r
-    jboolean (JNICALL *CallNonvirtualBooleanMethodA)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       const jvalue * args);\r
-\r
-    jbyte (JNICALL *CallNonvirtualByteMethod)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
-    jbyte (JNICALL *CallNonvirtualByteMethodV)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       va_list args);\r
-    jbyte (JNICALL *CallNonvirtualByteMethodA)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       const jvalue *args);\r
-\r
-    jchar (JNICALL *CallNonvirtualCharMethod)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
-    jchar (JNICALL *CallNonvirtualCharMethodV)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       va_list args);\r
-    jchar (JNICALL *CallNonvirtualCharMethodA)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       const jvalue *args);\r
-\r
-    jshort (JNICALL *CallNonvirtualShortMethod)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
-    jshort (JNICALL *CallNonvirtualShortMethodV)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       va_list args);\r
-    jshort (JNICALL *CallNonvirtualShortMethodA)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       const jvalue *args);\r
-\r
-    jint (JNICALL *CallNonvirtualIntMethod)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
-    jint (JNICALL *CallNonvirtualIntMethodV)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       va_list args);\r
-    jint (JNICALL *CallNonvirtualIntMethodA)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       const jvalue *args);\r
-\r
-    jlong (JNICALL *CallNonvirtualLongMethod)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
-    jlong (JNICALL *CallNonvirtualLongMethodV)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       va_list args);\r
-    jlong (JNICALL *CallNonvirtualLongMethodA)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       const jvalue *args);\r
-\r
-    jfloat (JNICALL *CallNonvirtualFloatMethod)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
-    jfloat (JNICALL *CallNonvirtualFloatMethodV)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       va_list args);\r
-    jfloat (JNICALL *CallNonvirtualFloatMethodA)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       const jvalue *args);\r
-\r
-    jdouble (JNICALL *CallNonvirtualDoubleMethod)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
-    jdouble (JNICALL *CallNonvirtualDoubleMethodV)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       va_list args);\r
-    jdouble (JNICALL *CallNonvirtualDoubleMethodA)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       const jvalue *args);\r
-\r
-    void (JNICALL *CallNonvirtualVoidMethod)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);\r
-    void (JNICALL *CallNonvirtualVoidMethodV)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       va_list args);\r
-    void (JNICALL *CallNonvirtualVoidMethodA)\r
-      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,\r
-       const jvalue * args);\r
-\r
-    jfieldID (JNICALL *GetFieldID)\r
-      (JNIEnv *env, jclass clazz, const char *name, const char *sig);\r
-\r
-    jobject (JNICALL *GetObjectField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID);\r
-    jboolean (JNICALL *GetBooleanField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID);\r
-    jbyte (JNICALL *GetByteField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID);\r
-    jchar (JNICALL *GetCharField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID);\r
-    jshort (JNICALL *GetShortField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID);\r
-    jint (JNICALL *GetIntField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID);\r
-    jlong (JNICALL *GetLongField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID);\r
-    jfloat (JNICALL *GetFloatField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID);\r
-    jdouble (JNICALL *GetDoubleField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID);\r
-\r
-    void (JNICALL *SetObjectField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val);\r
-    void (JNICALL *SetBooleanField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val);\r
-    void (JNICALL *SetByteField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val);\r
-    void (JNICALL *SetCharField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val);\r
-    void (JNICALL *SetShortField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val);\r
-    void (JNICALL *SetIntField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID, jint val);\r
-    void (JNICALL *SetLongField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val);\r
-    void (JNICALL *SetFloatField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val);\r
-    void (JNICALL *SetDoubleField)\r
-      (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val);\r
-\r
-    jmethodID (JNICALL *GetStaticMethodID)\r
-      (JNIEnv *env, jclass clazz, const char *name, const char *sig);\r
-\r
-    jobject (JNICALL *CallStaticObjectMethod)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
-    jobject (JNICALL *CallStaticObjectMethodV)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
-    jobject (JNICALL *CallStaticObjectMethodA)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
-    jboolean (JNICALL *CallStaticBooleanMethod)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
-    jboolean (JNICALL *CallStaticBooleanMethodV)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
-    jboolean (JNICALL *CallStaticBooleanMethodA)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
-    jbyte (JNICALL *CallStaticByteMethod)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
-    jbyte (JNICALL *CallStaticByteMethodV)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
-    jbyte (JNICALL *CallStaticByteMethodA)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
-    jchar (JNICALL *CallStaticCharMethod)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
-    jchar (JNICALL *CallStaticCharMethodV)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
-    jchar (JNICALL *CallStaticCharMethodA)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
-    jshort (JNICALL *CallStaticShortMethod)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
-    jshort (JNICALL *CallStaticShortMethodV)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
-    jshort (JNICALL *CallStaticShortMethodA)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
-    jint (JNICALL *CallStaticIntMethod)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
-    jint (JNICALL *CallStaticIntMethodV)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
-    jint (JNICALL *CallStaticIntMethodA)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
-    jlong (JNICALL *CallStaticLongMethod)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
-    jlong (JNICALL *CallStaticLongMethodV)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
-    jlong (JNICALL *CallStaticLongMethodA)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
-    jfloat (JNICALL *CallStaticFloatMethod)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
-    jfloat (JNICALL *CallStaticFloatMethodV)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
-    jfloat (JNICALL *CallStaticFloatMethodA)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
-    jdouble (JNICALL *CallStaticDoubleMethod)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);\r
-    jdouble (JNICALL *CallStaticDoubleMethodV)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);\r
-    jdouble (JNICALL *CallStaticDoubleMethodA)\r
-      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);\r
-\r
-    void (JNICALL *CallStaticVoidMethod)\r
-      (JNIEnv *env, jclass cls, jmethodID methodID, ...);\r
-    void (JNICALL *CallStaticVoidMethodV)\r
-      (JNIEnv *env, jclass cls, jmethodID methodID, va_list args);\r
-    void (JNICALL *CallStaticVoidMethodA)\r
-      (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args);\r
-\r
-    jfieldID (JNICALL *GetStaticFieldID)\r
-      (JNIEnv *env, jclass clazz, const char *name, const char *sig);\r
-    jobject (JNICALL *GetStaticObjectField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
-    jboolean (JNICALL *GetStaticBooleanField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
-    jbyte (JNICALL *GetStaticByteField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
-    jchar (JNICALL *GetStaticCharField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
-    jshort (JNICALL *GetStaticShortField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
-    jint (JNICALL *GetStaticIntField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
-    jlong (JNICALL *GetStaticLongField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
-    jfloat (JNICALL *GetStaticFloatField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
-    jdouble (JNICALL *GetStaticDoubleField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID);\r
-\r
-    void (JNICALL *SetStaticObjectField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value);\r
-    void (JNICALL *SetStaticBooleanField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value);\r
-    void (JNICALL *SetStaticByteField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value);\r
-    void (JNICALL *SetStaticCharField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value);\r
-    void (JNICALL *SetStaticShortField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value);\r
-    void (JNICALL *SetStaticIntField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value);\r
-    void (JNICALL *SetStaticLongField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value);\r
-    void (JNICALL *SetStaticFloatField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value);\r
-    void (JNICALL *SetStaticDoubleField)\r
-      (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value);\r
-\r
-    jstring (JNICALL *NewString)\r
-      (JNIEnv *env, const jchar *unicode, jsize len);\r
-    jsize (JNICALL *GetStringLength)\r
-      (JNIEnv *env, jstring str);\r
-    const jchar *(JNICALL *GetStringChars)\r
-      (JNIEnv *env, jstring str, jboolean *isCopy);\r
-    void (JNICALL *ReleaseStringChars)\r
-      (JNIEnv *env, jstring str, const jchar *chars);\r
-\r
-    jstring (JNICALL *NewStringUTF)\r
-      (JNIEnv *env, const char *utf);\r
-    jsize (JNICALL *GetStringUTFLength)\r
-      (JNIEnv *env, jstring str);\r
-    const char* (JNICALL *GetStringUTFChars)\r
-      (JNIEnv *env, jstring str, jboolean *isCopy);\r
-    void (JNICALL *ReleaseStringUTFChars)\r
-      (JNIEnv *env, jstring str, const char* chars);\r
-\r
-\r
-    jsize (JNICALL *GetArrayLength)\r
-      (JNIEnv *env, jarray array);\r
-\r
-    jobjectArray (JNICALL *NewObjectArray)\r
-      (JNIEnv *env, jsize len, jclass clazz, jobject init);\r
-    jobject (JNICALL *GetObjectArrayElement)\r
-      (JNIEnv *env, jobjectArray array, jsize index);\r
-    void (JNICALL *SetObjectArrayElement)\r
-      (JNIEnv *env, jobjectArray array, jsize index, jobject val);\r
-\r
-    jbooleanArray (JNICALL *NewBooleanArray)\r
-      (JNIEnv *env, jsize len);\r
-    jbyteArray (JNICALL *NewByteArray)\r
-      (JNIEnv *env, jsize len);\r
-    jcharArray (JNICALL *NewCharArray)\r
-      (JNIEnv *env, jsize len);\r
-    jshortArray (JNICALL *NewShortArray)\r
-      (JNIEnv *env, jsize len);\r
-    jintArray (JNICALL *NewIntArray)\r
-      (JNIEnv *env, jsize len);\r
-    jlongArray (JNICALL *NewLongArray)\r
-      (JNIEnv *env, jsize len);\r
-    jfloatArray (JNICALL *NewFloatArray)\r
-      (JNIEnv *env, jsize len);\r
-    jdoubleArray (JNICALL *NewDoubleArray)\r
-      (JNIEnv *env, jsize len);\r
-\r
-    jboolean * (JNICALL *GetBooleanArrayElements)\r
-      (JNIEnv *env, jbooleanArray array, jboolean *isCopy);\r
-    jbyte * (JNICALL *GetByteArrayElements)\r
-      (JNIEnv *env, jbyteArray array, jboolean *isCopy);\r
-    jchar * (JNICALL *GetCharArrayElements)\r
-      (JNIEnv *env, jcharArray array, jboolean *isCopy);\r
-    jshort * (JNICALL *GetShortArrayElements)\r
-      (JNIEnv *env, jshortArray array, jboolean *isCopy);\r
-    jint * (JNICALL *GetIntArrayElements)\r
-      (JNIEnv *env, jintArray array, jboolean *isCopy);\r
-    jlong * (JNICALL *GetLongArrayElements)\r
-      (JNIEnv *env, jlongArray array, jboolean *isCopy);\r
-    jfloat * (JNICALL *GetFloatArrayElements)\r
-      (JNIEnv *env, jfloatArray array, jboolean *isCopy);\r
-    jdouble * (JNICALL *GetDoubleArrayElements)\r
-      (JNIEnv *env, jdoubleArray array, jboolean *isCopy);\r
-\r
-    void (JNICALL *ReleaseBooleanArrayElements)\r
-      (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode);\r
-    void (JNICALL *ReleaseByteArrayElements)\r
-      (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode);\r
-    void (JNICALL *ReleaseCharArrayElements)\r
-      (JNIEnv *env, jcharArray array, jchar *elems, jint mode);\r
-    void (JNICALL *ReleaseShortArrayElements)\r
-      (JNIEnv *env, jshortArray array, jshort *elems, jint mode);\r
-    void (JNICALL *ReleaseIntArrayElements)\r
-      (JNIEnv *env, jintArray array, jint *elems, jint mode);\r
-    void (JNICALL *ReleaseLongArrayElements)\r
-      (JNIEnv *env, jlongArray array, jlong *elems, jint mode);\r
-    void (JNICALL *ReleaseFloatArrayElements)\r
-      (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode);\r
-    void (JNICALL *ReleaseDoubleArrayElements)\r
-      (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode);\r
-\r
-    void (JNICALL *GetBooleanArrayRegion)\r
-      (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf);\r
-    void (JNICALL *GetByteArrayRegion)\r
-      (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf);\r
-    void (JNICALL *GetCharArrayRegion)\r
-      (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf);\r
-    void (JNICALL *GetShortArrayRegion)\r
-      (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf);\r
-    void (JNICALL *GetIntArrayRegion)\r
-      (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf);\r
-    void (JNICALL *GetLongArrayRegion)\r
-      (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf);\r
-    void (JNICALL *GetFloatArrayRegion)\r
-      (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf);\r
-    void (JNICALL *GetDoubleArrayRegion)\r
-      (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf);\r
-\r
-    void (JNICALL *SetBooleanArrayRegion)\r
-      (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf);\r
-    void (JNICALL *SetByteArrayRegion)\r
-      (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf);\r
-    void (JNICALL *SetCharArrayRegion)\r
-      (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf);\r
-    void (JNICALL *SetShortArrayRegion)\r
-      (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf);\r
-    void (JNICALL *SetIntArrayRegion)\r
-      (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf);\r
-    void (JNICALL *SetLongArrayRegion)\r
-      (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf);\r
-    void (JNICALL *SetFloatArrayRegion)\r
-      (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf);\r
-    void (JNICALL *SetDoubleArrayRegion)\r
-      (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf);\r
-\r
-    jint (JNICALL *RegisterNatives)\r
-      (JNIEnv *env, jclass clazz, const JNINativeMethod *methods,\r
-       jint nMethods);\r
-    jint (JNICALL *UnregisterNatives)\r
-      (JNIEnv *env, jclass clazz);\r
-\r
-    jint (JNICALL *MonitorEnter)\r
-      (JNIEnv *env, jobject obj);\r
-    jint (JNICALL *MonitorExit)\r
-      (JNIEnv *env, jobject obj);\r
-\r
-    jint (JNICALL *GetJavaVM)\r
-      (JNIEnv *env, JavaVM **vm);\r
-\r
-    void (JNICALL *GetStringRegion)\r
-      (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf);\r
-    void (JNICALL *GetStringUTFRegion)\r
-      (JNIEnv *env, jstring str, jsize start, jsize len, char *buf);\r
-\r
-    void * (JNICALL *GetPrimitiveArrayCritical)\r
-      (JNIEnv *env, jarray array, jboolean *isCopy);\r
-    void (JNICALL *ReleasePrimitiveArrayCritical)\r
-      (JNIEnv *env, jarray array, void *carray, jint mode);\r
-\r
-    const jchar * (JNICALL *GetStringCritical)\r
-      (JNIEnv *env, jstring string, jboolean *isCopy);\r
-    void (JNICALL *ReleaseStringCritical)\r
-      (JNIEnv *env, jstring string, const jchar *cstring);\r
-\r
-    jweak (JNICALL *NewWeakGlobalRef)\r
-       (JNIEnv *env, jobject obj);\r
-    void (JNICALL *DeleteWeakGlobalRef)\r
-       (JNIEnv *env, jweak ref);\r
-\r
-    jboolean (JNICALL *ExceptionCheck)\r
-       (JNIEnv *env);\r
-\r
-    jobject (JNICALL *NewDirectByteBuffer)\r
-       (JNIEnv* env, void* address, jlong capacity);\r
-    void* (JNICALL *GetDirectBufferAddress)\r
-       (JNIEnv* env, jobject buf);\r
-    jlong (JNICALL *GetDirectBufferCapacity)\r
-       (JNIEnv* env, jobject buf);\r
-};\r
-\r
-/*\r
- * We use inlined functions for C++ so that programmers can write:\r
- *\r
- *    env->FindClass("java/lang/String")\r
- *\r
- * in C++ rather than:\r
- *\r
- *    (*env)->FindClass(env, "java/lang/String")\r
- *\r
- * in C.\r
- */\r
-\r
-struct JNIEnv_ {\r
-    const struct JNINativeInterface_ *functions;\r
-#ifdef __cplusplus\r
-\r
-    jint GetVersion() {\r
-        return functions->GetVersion(this);\r
-    }\r
-    jclass DefineClass(const char *name, jobject loader, const jbyte *buf,\r
-                      jsize len) {\r
-        return functions->DefineClass(this, name, loader, buf, len);\r
-    }\r
-    jclass FindClass(const char *name) {\r
-        return functions->FindClass(this, name);\r
-    }\r
-    jmethodID FromReflectedMethod(jobject method) {\r
-        return functions->FromReflectedMethod(this,method);\r
-    }\r
-    jfieldID FromReflectedField(jobject field) {\r
-        return functions->FromReflectedField(this,field);\r
-    }\r
-\r
-    jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) {\r
-        return functions->ToReflectedMethod(this, cls, methodID, isStatic);\r
-    }\r
-\r
-    jclass GetSuperclass(jclass sub) {\r
-        return functions->GetSuperclass(this, sub);\r
-    }\r
-    jboolean IsAssignableFrom(jclass sub, jclass sup) {\r
-        return functions->IsAssignableFrom(this, sub, sup);\r
-    }\r
-\r
-    jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) {\r
-        return functions->ToReflectedField(this,cls,fieldID,isStatic);\r
-    }\r
-\r
-    jint Throw(jthrowable obj) {\r
-        return functions->Throw(this, obj);\r
-    }\r
-    jint ThrowNew(jclass clazz, const char *msg) {\r
-        return functions->ThrowNew(this, clazz, msg);\r
-    }\r
-    jthrowable ExceptionOccurred() {\r
-        return functions->ExceptionOccurred(this);\r
-    }\r
-    void ExceptionDescribe() {\r
-        functions->ExceptionDescribe(this);\r
-    }\r
-    void ExceptionClear() {\r
-        functions->ExceptionClear(this);\r
-    }\r
-    void FatalError(const char *msg) {\r
-        functions->FatalError(this, msg);\r
-    }\r
-\r
-    jint PushLocalFrame(jint capacity) {\r
-        return functions->PushLocalFrame(this,capacity);\r
-    }\r
-    jobject PopLocalFrame(jobject result) {\r
-        return functions->PopLocalFrame(this,result);\r
-    }\r
-\r
-    jobject NewGlobalRef(jobject lobj) {\r
-        return functions->NewGlobalRef(this,lobj);\r
-    }\r
-    void DeleteGlobalRef(jobject gref) {\r
-        functions->DeleteGlobalRef(this,gref);\r
-    }\r
-    void DeleteLocalRef(jobject obj) {\r
-        functions->DeleteLocalRef(this, obj);\r
-    }\r
-\r
-    jboolean IsSameObject(jobject obj1, jobject obj2) {\r
-        return functions->IsSameObject(this,obj1,obj2);\r
-    }\r
-\r
-    jobject NewLocalRef(jobject ref) {\r
-        return functions->NewLocalRef(this,ref);\r
-    }\r
-    jint EnsureLocalCapacity(jint capacity) {\r
-        return functions->EnsureLocalCapacity(this,capacity);\r
-    }\r
-\r
-    jobject AllocObject(jclass clazz) {\r
-        return functions->AllocObject(this,clazz);\r
-    }\r
-    jobject NewObject(jclass clazz, jmethodID methodID, ...) {\r
-        va_list args;\r
-       jobject result;\r
-       va_start(args, methodID);\r
-        result = functions->NewObjectV(this,clazz,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jobject NewObjectV(jclass clazz, jmethodID methodID,\r
-                      va_list args) {\r
-        return functions->NewObjectV(this,clazz,methodID,args);\r
-    }\r
-    jobject NewObjectA(jclass clazz, jmethodID methodID,\r
-                      const jvalue *args) {\r
-        return functions->NewObjectA(this,clazz,methodID,args);\r
-    }\r
-\r
-    jclass GetObjectClass(jobject obj) {\r
-        return functions->GetObjectClass(this,obj);\r
-    }\r
-    jboolean IsInstanceOf(jobject obj, jclass clazz) {\r
-        return functions->IsInstanceOf(this,obj,clazz);\r
-    }\r
-\r
-    jmethodID GetMethodID(jclass clazz, const char *name,\r
-                         const char *sig) {\r
-        return functions->GetMethodID(this,clazz,name,sig);\r
-    }\r
-\r
-    jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) {\r
-        va_list args;\r
-       jobject result;\r
-       va_start(args,methodID);\r
-       result = functions->CallObjectMethodV(this,obj,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jobject CallObjectMethodV(jobject obj, jmethodID methodID,\r
-                       va_list args) {\r
-        return functions->CallObjectMethodV(this,obj,methodID,args);\r
-    }\r
-    jobject CallObjectMethodA(jobject obj, jmethodID methodID,\r
-                       const jvalue * args) {\r
-        return functions->CallObjectMethodA(this,obj,methodID,args);\r
-    }\r
-\r
-    jboolean CallBooleanMethod(jobject obj,\r
-                              jmethodID methodID, ...) {\r
-        va_list args;\r
-       jboolean result;\r
-       va_start(args,methodID);\r
-       result = functions->CallBooleanMethodV(this,obj,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jboolean CallBooleanMethodV(jobject obj, jmethodID methodID,\r
-                               va_list args) {\r
-        return functions->CallBooleanMethodV(this,obj,methodID,args);\r
-    }\r
-    jboolean CallBooleanMethodA(jobject obj, jmethodID methodID,\r
-                               const jvalue * args) {\r
-        return functions->CallBooleanMethodA(this,obj,methodID, args);\r
-    }\r
-\r
-    jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) {\r
-        va_list args;\r
-       jbyte result;\r
-       va_start(args,methodID);\r
-       result = functions->CallByteMethodV(this,obj,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jbyte CallByteMethodV(jobject obj, jmethodID methodID,\r
-                         va_list args) {\r
-        return functions->CallByteMethodV(this,obj,methodID,args);\r
-    }\r
-    jbyte CallByteMethodA(jobject obj, jmethodID methodID,\r
-                         const jvalue * args) {\r
-        return functions->CallByteMethodA(this,obj,methodID,args);\r
-    }\r
-\r
-    jchar CallCharMethod(jobject obj, jmethodID methodID, ...) {\r
-        va_list args;\r
-       jchar result;\r
-       va_start(args,methodID);\r
-       result = functions->CallCharMethodV(this,obj,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jchar CallCharMethodV(jobject obj, jmethodID methodID,\r
-                         va_list args) {\r
-        return functions->CallCharMethodV(this,obj,methodID,args);\r
-    }\r
-    jchar CallCharMethodA(jobject obj, jmethodID methodID,\r
-                         const jvalue * args) {\r
-        return functions->CallCharMethodA(this,obj,methodID,args);\r
-    }\r
-\r
-    jshort CallShortMethod(jobject obj, jmethodID methodID, ...) {\r
-        va_list args;\r
-       jshort result;\r
-       va_start(args,methodID);\r
-       result = functions->CallShortMethodV(this,obj,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jshort CallShortMethodV(jobject obj, jmethodID methodID,\r
-                           va_list args) {\r
-        return functions->CallShortMethodV(this,obj,methodID,args);\r
-    }\r
-    jshort CallShortMethodA(jobject obj, jmethodID methodID,\r
-                           const jvalue * args) {\r
-        return functions->CallShortMethodA(this,obj,methodID,args);\r
-    }\r
-\r
-    jint CallIntMethod(jobject obj, jmethodID methodID, ...) {\r
-        va_list args;\r
-       jint result;\r
-       va_start(args,methodID);\r
-       result = functions->CallIntMethodV(this,obj,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jint CallIntMethodV(jobject obj, jmethodID methodID,\r
-                       va_list args) {\r
-        return functions->CallIntMethodV(this,obj,methodID,args);\r
-    }\r
-    jint CallIntMethodA(jobject obj, jmethodID methodID,\r
-                       const jvalue * args) {\r
-        return functions->CallIntMethodA(this,obj,methodID,args);\r
-    }\r
-\r
-    jlong CallLongMethod(jobject obj, jmethodID methodID, ...) {\r
-        va_list args;\r
-       jlong result;\r
-       va_start(args,methodID);\r
-       result = functions->CallLongMethodV(this,obj,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jlong CallLongMethodV(jobject obj, jmethodID methodID,\r
-                         va_list args) {\r
-        return functions->CallLongMethodV(this,obj,methodID,args);\r
-    }\r
-    jlong CallLongMethodA(jobject obj, jmethodID methodID,\r
-                         const jvalue * args) {\r
-        return functions->CallLongMethodA(this,obj,methodID,args);\r
-    }\r
-\r
-    jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) {\r
-        va_list args;\r
-       jfloat result;\r
-       va_start(args,methodID);\r
-       result = functions->CallFloatMethodV(this,obj,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jfloat CallFloatMethodV(jobject obj, jmethodID methodID,\r
-                           va_list args) {\r
-        return functions->CallFloatMethodV(this,obj,methodID,args);\r
-    }\r
-    jfloat CallFloatMethodA(jobject obj, jmethodID methodID,\r
-                           const jvalue * args) {\r
-        return functions->CallFloatMethodA(this,obj,methodID,args);\r
-    }\r
-\r
-    jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) {\r
-        va_list args;\r
-       jdouble result;\r
-       va_start(args,methodID);\r
-       result = functions->CallDoubleMethodV(this,obj,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jdouble CallDoubleMethodV(jobject obj, jmethodID methodID,\r
-                       va_list args) {\r
-        return functions->CallDoubleMethodV(this,obj,methodID,args);\r
-    }\r
-    jdouble CallDoubleMethodA(jobject obj, jmethodID methodID,\r
-                       const jvalue * args) {\r
-        return functions->CallDoubleMethodA(this,obj,methodID,args);\r
-    }\r
-\r
-    void CallVoidMethod(jobject obj, jmethodID methodID, ...) {\r
-        va_list args;\r
-       va_start(args,methodID);\r
-       functions->CallVoidMethodV(this,obj,methodID,args);\r
-       va_end(args);\r
-    }\r
-    void CallVoidMethodV(jobject obj, jmethodID methodID,\r
-                        va_list args) {\r
-        functions->CallVoidMethodV(this,obj,methodID,args);\r
-    }\r
-    void CallVoidMethodA(jobject obj, jmethodID methodID,\r
-                        const jvalue * args) {\r
-        functions->CallVoidMethodA(this,obj,methodID,args);\r
-    }\r
-\r
-    jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz,\r
-                                      jmethodID methodID, ...) {\r
-        va_list args;\r
-       jobject result;\r
-       va_start(args,methodID);\r
-       result = functions->CallNonvirtualObjectMethodV(this,obj,clazz,\r
-                                                       methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz,\r
-                                       jmethodID methodID, va_list args) {\r
-        return functions->CallNonvirtualObjectMethodV(this,obj,clazz,\r
-                                                     methodID,args);\r
-    }\r
-    jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz,\r
-                                       jmethodID methodID, const jvalue * args) {\r
-        return functions->CallNonvirtualObjectMethodA(this,obj,clazz,\r
-                                                     methodID,args);\r
-    }\r
-\r
-    jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz,\r
-                                        jmethodID methodID, ...) {\r
-        va_list args;\r
-       jboolean result;\r
-       va_start(args,methodID);\r
-       result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz,\r
-                                                        methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz,\r
-                                         jmethodID methodID, va_list args) {\r
-        return functions->CallNonvirtualBooleanMethodV(this,obj,clazz,\r
-                                                      methodID,args);\r
-    }\r
-    jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz,\r
-                                         jmethodID methodID, const jvalue * args) {\r
-        return functions->CallNonvirtualBooleanMethodA(this,obj,clazz,\r
-                                                      methodID, args);\r
-    }\r
-\r
-    jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz,\r
-                                  jmethodID methodID, ...) {\r
-        va_list args;\r
-       jbyte result;\r
-       va_start(args,methodID);\r
-       result = functions->CallNonvirtualByteMethodV(this,obj,clazz,\r
-                                                     methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz,\r
-                                   jmethodID methodID, va_list args) {\r
-        return functions->CallNonvirtualByteMethodV(this,obj,clazz,\r
-                                                   methodID,args);\r
-    }\r
-    jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz,\r
-                                   jmethodID methodID, const jvalue * args) {\r
-        return functions->CallNonvirtualByteMethodA(this,obj,clazz,\r
-                                                   methodID,args);\r
-    }\r
-\r
-    jchar CallNonvirtualCharMethod(jobject obj, jclass clazz,\r
-                                  jmethodID methodID, ...) {\r
-        va_list args;\r
-       jchar result;\r
-       va_start(args,methodID);\r
-       result = functions->CallNonvirtualCharMethodV(this,obj,clazz,\r
-                                                     methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz,\r
-                                   jmethodID methodID, va_list args) {\r
-        return functions->CallNonvirtualCharMethodV(this,obj,clazz,\r
-                                                   methodID,args);\r
-    }\r
-    jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz,\r
-                                   jmethodID methodID, const jvalue * args) {\r
-        return functions->CallNonvirtualCharMethodA(this,obj,clazz,\r
-                                                   methodID,args);\r
-    }\r
-\r
-    jshort CallNonvirtualShortMethod(jobject obj, jclass clazz,\r
-                                    jmethodID methodID, ...) {\r
-        va_list args;\r
-       jshort result;\r
-       va_start(args,methodID);\r
-       result = functions->CallNonvirtualShortMethodV(this,obj,clazz,\r
-                                                      methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz,\r
-                                     jmethodID methodID, va_list args) {\r
-        return functions->CallNonvirtualShortMethodV(this,obj,clazz,\r
-                                                    methodID,args);\r
-    }\r
-    jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz,\r
-                                     jmethodID methodID, const jvalue * args) {\r
-        return functions->CallNonvirtualShortMethodA(this,obj,clazz,\r
-                                                    methodID,args);\r
-    }\r
-\r
-    jint CallNonvirtualIntMethod(jobject obj, jclass clazz,\r
-                                jmethodID methodID, ...) {\r
-        va_list args;\r
-       jint result;\r
-       va_start(args,methodID);\r
-       result = functions->CallNonvirtualIntMethodV(this,obj,clazz,\r
-                                                    methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jint CallNonvirtualIntMethodV(jobject obj, jclass clazz,\r
-                                 jmethodID methodID, va_list args) {\r
-        return functions->CallNonvirtualIntMethodV(this,obj,clazz,\r
-                                                  methodID,args);\r
-    }\r
-    jint CallNonvirtualIntMethodA(jobject obj, jclass clazz,\r
-                                 jmethodID methodID, const jvalue * args) {\r
-        return functions->CallNonvirtualIntMethodA(this,obj,clazz,\r
-                                                  methodID,args);\r
-    }\r
-\r
-    jlong CallNonvirtualLongMethod(jobject obj, jclass clazz,\r
-                                  jmethodID methodID, ...) {\r
-        va_list args;\r
-       jlong result;\r
-       va_start(args,methodID);\r
-       result = functions->CallNonvirtualLongMethodV(this,obj,clazz,\r
-                                                     methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz,\r
-                                   jmethodID methodID, va_list args) {\r
-        return functions->CallNonvirtualLongMethodV(this,obj,clazz,\r
-                                                   methodID,args);\r
-    }\r
-    jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz,\r
-                                   jmethodID methodID, const jvalue * args) {\r
-        return functions->CallNonvirtualLongMethodA(this,obj,clazz,\r
-                                                   methodID,args);\r
-    }\r
-\r
-    jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz,\r
-                                    jmethodID methodID, ...) {\r
-        va_list args;\r
-       jfloat result;\r
-       va_start(args,methodID);\r
-       result = functions->CallNonvirtualFloatMethodV(this,obj,clazz,\r
-                                                      methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz,\r
-                                     jmethodID methodID,\r
-                                     va_list args) {\r
-        return functions->CallNonvirtualFloatMethodV(this,obj,clazz,\r
-                                                    methodID,args);\r
-    }\r
-    jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz,\r
-                                     jmethodID methodID,\r
-                                     const jvalue * args) {\r
-        return functions->CallNonvirtualFloatMethodA(this,obj,clazz,\r
-                                                    methodID,args);\r
-    }\r
-\r
-    jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz,\r
-                                      jmethodID methodID, ...) {\r
-        va_list args;\r
-       jdouble result;\r
-       va_start(args,methodID);\r
-       result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz,\r
-                                                       methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz,\r
-                                       jmethodID methodID,\r
-                                       va_list args) {\r
-        return functions->CallNonvirtualDoubleMethodV(this,obj,clazz,\r
-                                                     methodID,args);\r
-    }\r
-    jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz,\r
-                                       jmethodID methodID,\r
-                                       const jvalue * args) {\r
-        return functions->CallNonvirtualDoubleMethodA(this,obj,clazz,\r
-                                                     methodID,args);\r
-    }\r
-\r
-    void CallNonvirtualVoidMethod(jobject obj, jclass clazz,\r
-                                 jmethodID methodID, ...) {\r
-        va_list args;\r
-       va_start(args,methodID);\r
-       functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);\r
-       va_end(args);\r
-    }\r
-    void CallNonvirtualVoidMethodV(jobject obj, jclass clazz,\r
-                                  jmethodID methodID,\r
-                                  va_list args) {\r
-        functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);\r
-    }\r
-    void CallNonvirtualVoidMethodA(jobject obj, jclass clazz,\r
-                                  jmethodID methodID,\r
-                                  const jvalue * args) {\r
-        functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args);\r
-    }\r
-\r
-    jfieldID GetFieldID(jclass clazz, const char *name,\r
-                       const char *sig) {\r
-        return functions->GetFieldID(this,clazz,name,sig);\r
-    }\r
-\r
-    jobject GetObjectField(jobject obj, jfieldID fieldID) {\r
-        return functions->GetObjectField(this,obj,fieldID);\r
-    }\r
-    jboolean GetBooleanField(jobject obj, jfieldID fieldID) {\r
-        return functions->GetBooleanField(this,obj,fieldID);\r
-    }\r
-    jbyte GetByteField(jobject obj, jfieldID fieldID) {\r
-        return functions->GetByteField(this,obj,fieldID);\r
-    }\r
-    jchar GetCharField(jobject obj, jfieldID fieldID) {\r
-        return functions->GetCharField(this,obj,fieldID);\r
-    }\r
-    jshort GetShortField(jobject obj, jfieldID fieldID) {\r
-        return functions->GetShortField(this,obj,fieldID);\r
-    }\r
-    jint GetIntField(jobject obj, jfieldID fieldID) {\r
-        return functions->GetIntField(this,obj,fieldID);\r
-    }\r
-    jlong GetLongField(jobject obj, jfieldID fieldID) {\r
-        return functions->GetLongField(this,obj,fieldID);\r
-    }\r
-    jfloat GetFloatField(jobject obj, jfieldID fieldID) {\r
-        return functions->GetFloatField(this,obj,fieldID);\r
-    }\r
-    jdouble GetDoubleField(jobject obj, jfieldID fieldID) {\r
-        return functions->GetDoubleField(this,obj,fieldID);\r
-    }\r
-\r
-    void SetObjectField(jobject obj, jfieldID fieldID, jobject val) {\r
-        functions->SetObjectField(this,obj,fieldID,val);\r
-    }\r
-    void SetBooleanField(jobject obj, jfieldID fieldID,\r
-                        jboolean val) {\r
-        functions->SetBooleanField(this,obj,fieldID,val);\r
-    }\r
-    void SetByteField(jobject obj, jfieldID fieldID,\r
-                     jbyte val) {\r
-        functions->SetByteField(this,obj,fieldID,val);\r
-    }\r
-    void SetCharField(jobject obj, jfieldID fieldID,\r
-                     jchar val) {\r
-        functions->SetCharField(this,obj,fieldID,val);\r
-    }\r
-    void SetShortField(jobject obj, jfieldID fieldID,\r
-                      jshort val) {\r
-        functions->SetShortField(this,obj,fieldID,val);\r
-    }\r
-    void SetIntField(jobject obj, jfieldID fieldID,\r
-                    jint val) {\r
-        functions->SetIntField(this,obj,fieldID,val);\r
-    }\r
-    void SetLongField(jobject obj, jfieldID fieldID,\r
-                     jlong val) {\r
-        functions->SetLongField(this,obj,fieldID,val);\r
-    }\r
-    void SetFloatField(jobject obj, jfieldID fieldID,\r
-                      jfloat val) {\r
-        functions->SetFloatField(this,obj,fieldID,val);\r
-    }\r
-    void SetDoubleField(jobject obj, jfieldID fieldID,\r
-                       jdouble val) {\r
-        functions->SetDoubleField(this,obj,fieldID,val);\r
-    }\r
-\r
-    jmethodID GetStaticMethodID(jclass clazz, const char *name,\r
-                               const char *sig) {\r
-        return functions->GetStaticMethodID(this,clazz,name,sig);\r
-    }\r
-\r
-    jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID,\r
-                            ...) {\r
-        va_list args;\r
-       jobject result;\r
-       va_start(args,methodID);\r
-       result = functions->CallStaticObjectMethodV(this,clazz,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID,\r
-                             va_list args) {\r
-        return functions->CallStaticObjectMethodV(this,clazz,methodID,args);\r
-    }\r
-    jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID,\r
-                             const jvalue *args) {\r
-        return functions->CallStaticObjectMethodA(this,clazz,methodID,args);\r
-    }\r
-\r
-    jboolean CallStaticBooleanMethod(jclass clazz,\r
-                                    jmethodID methodID, ...) {\r
-        va_list args;\r
-       jboolean result;\r
-       va_start(args,methodID);\r
-       result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jboolean CallStaticBooleanMethodV(jclass clazz,\r
-                                     jmethodID methodID, va_list args) {\r
-        return functions->CallStaticBooleanMethodV(this,clazz,methodID,args);\r
-    }\r
-    jboolean CallStaticBooleanMethodA(jclass clazz,\r
-                                     jmethodID methodID, const jvalue *args) {\r
-        return functions->CallStaticBooleanMethodA(this,clazz,methodID,args);\r
-    }\r
-\r
-    jbyte CallStaticByteMethod(jclass clazz,\r
-                              jmethodID methodID, ...) {\r
-        va_list args;\r
-       jbyte result;\r
-       va_start(args,methodID);\r
-       result = functions->CallStaticByteMethodV(this,clazz,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jbyte CallStaticByteMethodV(jclass clazz,\r
-                               jmethodID methodID, va_list args) {\r
-        return functions->CallStaticByteMethodV(this,clazz,methodID,args);\r
-    }\r
-    jbyte CallStaticByteMethodA(jclass clazz,\r
-                               jmethodID methodID, const jvalue *args) {\r
-        return functions->CallStaticByteMethodA(this,clazz,methodID,args);\r
-    }\r
-\r
-    jchar CallStaticCharMethod(jclass clazz,\r
-                              jmethodID methodID, ...) {\r
-        va_list args;\r
-       jchar result;\r
-       va_start(args,methodID);\r
-       result = functions->CallStaticCharMethodV(this,clazz,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jchar CallStaticCharMethodV(jclass clazz,\r
-                               jmethodID methodID, va_list args) {\r
-        return functions->CallStaticCharMethodV(this,clazz,methodID,args);\r
-    }\r
-    jchar CallStaticCharMethodA(jclass clazz,\r
-                               jmethodID methodID, const jvalue *args) {\r
-        return functions->CallStaticCharMethodA(this,clazz,methodID,args);\r
-    }\r
-\r
-    jshort CallStaticShortMethod(jclass clazz,\r
-                                jmethodID methodID, ...) {\r
-        va_list args;\r
-       jshort result;\r
-       va_start(args,methodID);\r
-       result = functions->CallStaticShortMethodV(this,clazz,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jshort CallStaticShortMethodV(jclass clazz,\r
-                                 jmethodID methodID, va_list args) {\r
-        return functions->CallStaticShortMethodV(this,clazz,methodID,args);\r
-    }\r
-    jshort CallStaticShortMethodA(jclass clazz,\r
-                                 jmethodID methodID, const jvalue *args) {\r
-        return functions->CallStaticShortMethodA(this,clazz,methodID,args);\r
-    }\r
-\r
-    jint CallStaticIntMethod(jclass clazz,\r
-                            jmethodID methodID, ...) {\r
-        va_list args;\r
-       jint result;\r
-       va_start(args,methodID);\r
-       result = functions->CallStaticIntMethodV(this,clazz,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jint CallStaticIntMethodV(jclass clazz,\r
-                             jmethodID methodID, va_list args) {\r
-        return functions->CallStaticIntMethodV(this,clazz,methodID,args);\r
-    }\r
-    jint CallStaticIntMethodA(jclass clazz,\r
-                             jmethodID methodID, const jvalue *args) {\r
-        return functions->CallStaticIntMethodA(this,clazz,methodID,args);\r
-    }\r
-\r
-    jlong CallStaticLongMethod(jclass clazz,\r
-                              jmethodID methodID, ...) {\r
-        va_list args;\r
-       jlong result;\r
-       va_start(args,methodID);\r
-       result = functions->CallStaticLongMethodV(this,clazz,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jlong CallStaticLongMethodV(jclass clazz,\r
-                               jmethodID methodID, va_list args) {\r
-        return functions->CallStaticLongMethodV(this,clazz,methodID,args);\r
-    }\r
-    jlong CallStaticLongMethodA(jclass clazz,\r
-                               jmethodID methodID, const jvalue *args) {\r
-        return functions->CallStaticLongMethodA(this,clazz,methodID,args);\r
-    }\r
-\r
-    jfloat CallStaticFloatMethod(jclass clazz,\r
-                                jmethodID methodID, ...) {\r
-        va_list args;\r
-       jfloat result;\r
-       va_start(args,methodID);\r
-       result = functions->CallStaticFloatMethodV(this,clazz,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jfloat CallStaticFloatMethodV(jclass clazz,\r
-                                 jmethodID methodID, va_list args) {\r
-        return functions->CallStaticFloatMethodV(this,clazz,methodID,args);\r
-    }\r
-    jfloat CallStaticFloatMethodA(jclass clazz,\r
-                                 jmethodID methodID, const jvalue *args) {\r
-        return functions->CallStaticFloatMethodA(this,clazz,methodID,args);\r
-    }\r
-\r
-    jdouble CallStaticDoubleMethod(jclass clazz,\r
-                                  jmethodID methodID, ...) {\r
-        va_list args;\r
-       jdouble result;\r
-       va_start(args,methodID);\r
-       result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args);\r
-       va_end(args);\r
-       return result;\r
-    }\r
-    jdouble CallStaticDoubleMethodV(jclass clazz,\r
-                                   jmethodID methodID, va_list args) {\r
-        return functions->CallStaticDoubleMethodV(this,clazz,methodID,args);\r
-    }\r
-    jdouble CallStaticDoubleMethodA(jclass clazz,\r
-                                   jmethodID methodID, const jvalue *args) {\r
-        return functions->CallStaticDoubleMethodA(this,clazz,methodID,args);\r
-    }\r
-\r
-    void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) {\r
-        va_list args;\r
-       va_start(args,methodID);\r
-       functions->CallStaticVoidMethodV(this,cls,methodID,args);\r
-       va_end(args);\r
-    }\r
-    void CallStaticVoidMethodV(jclass cls, jmethodID methodID,\r
-                              va_list args) {\r
-        functions->CallStaticVoidMethodV(this,cls,methodID,args);\r
-    }\r
-    void CallStaticVoidMethodA(jclass cls, jmethodID methodID,\r
-                              const jvalue * args) {\r
-        functions->CallStaticVoidMethodA(this,cls,methodID,args);\r
-    }\r
-\r
-    jfieldID GetStaticFieldID(jclass clazz, const char *name,\r
-                             const char *sig) {\r
-        return functions->GetStaticFieldID(this,clazz,name,sig);\r
-    }\r
-    jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) {\r
-        return functions->GetStaticObjectField(this,clazz,fieldID);\r
-    }\r
-    jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) {\r
-        return functions->GetStaticBooleanField(this,clazz,fieldID);\r
-    }\r
-    jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) {\r
-        return functions->GetStaticByteField(this,clazz,fieldID);\r
-    }\r
-    jchar GetStaticCharField(jclass clazz, jfieldID fieldID) {\r
-        return functions->GetStaticCharField(this,clazz,fieldID);\r
-    }\r
-    jshort GetStaticShortField(jclass clazz, jfieldID fieldID) {\r
-        return functions->GetStaticShortField(this,clazz,fieldID);\r
-    }\r
-    jint GetStaticIntField(jclass clazz, jfieldID fieldID) {\r
-        return functions->GetStaticIntField(this,clazz,fieldID);\r
-    }\r
-    jlong GetStaticLongField(jclass clazz, jfieldID fieldID) {\r
-        return functions->GetStaticLongField(this,clazz,fieldID);\r
-    }\r
-    jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) {\r
-        return functions->GetStaticFloatField(this,clazz,fieldID);\r
-    }\r
-    jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) {\r
-        return functions->GetStaticDoubleField(this,clazz,fieldID);\r
-    }\r
-\r
-    void SetStaticObjectField(jclass clazz, jfieldID fieldID,\r
-                       jobject value) {\r
-      functions->SetStaticObjectField(this,clazz,fieldID,value);\r
-    }\r
-    void SetStaticBooleanField(jclass clazz, jfieldID fieldID,\r
-                       jboolean value) {\r
-      functions->SetStaticBooleanField(this,clazz,fieldID,value);\r
-    }\r
-    void SetStaticByteField(jclass clazz, jfieldID fieldID,\r
-                       jbyte value) {\r
-      functions->SetStaticByteField(this,clazz,fieldID,value);\r
-    }\r
-    void SetStaticCharField(jclass clazz, jfieldID fieldID,\r
-                       jchar value) {\r
-      functions->SetStaticCharField(this,clazz,fieldID,value);\r
-    }\r
-    void SetStaticShortField(jclass clazz, jfieldID fieldID,\r
-                       jshort value) {\r
-      functions->SetStaticShortField(this,clazz,fieldID,value);\r
-    }\r
-    void SetStaticIntField(jclass clazz, jfieldID fieldID,\r
-                       jint value) {\r
-      functions->SetStaticIntField(this,clazz,fieldID,value);\r
-    }\r
-    void SetStaticLongField(jclass clazz, jfieldID fieldID,\r
-                       jlong value) {\r
-      functions->SetStaticLongField(this,clazz,fieldID,value);\r
-    }\r
-    void SetStaticFloatField(jclass clazz, jfieldID fieldID,\r
-                       jfloat value) {\r
-      functions->SetStaticFloatField(this,clazz,fieldID,value);\r
-    }\r
-    void SetStaticDoubleField(jclass clazz, jfieldID fieldID,\r
-                       jdouble value) {\r
-      functions->SetStaticDoubleField(this,clazz,fieldID,value);\r
-    }\r
-\r
-    jstring NewString(const jchar *unicode, jsize len) {\r
-        return functions->NewString(this,unicode,len);\r
-    }\r
-    jsize GetStringLength(jstring str) {\r
-        return functions->GetStringLength(this,str);\r
-    }\r
-    const jchar *GetStringChars(jstring str, jboolean *isCopy) {\r
-        return functions->GetStringChars(this,str,isCopy);\r
-    }\r
-    void ReleaseStringChars(jstring str, const jchar *chars) {\r
-        functions->ReleaseStringChars(this,str,chars);\r
-    }\r
-\r
-    jstring NewStringUTF(const char *utf) {\r
-        return functions->NewStringUTF(this,utf);\r
-    }\r
-    jsize GetStringUTFLength(jstring str) {\r
-        return functions->GetStringUTFLength(this,str);\r
-    }\r
-    const char* GetStringUTFChars(jstring str, jboolean *isCopy) {\r
-        return functions->GetStringUTFChars(this,str,isCopy);\r
-    }\r
-    void ReleaseStringUTFChars(jstring str, const char* chars) {\r
-        functions->ReleaseStringUTFChars(this,str,chars);\r
-    }\r
-\r
-    jsize GetArrayLength(jarray array) {\r
-        return functions->GetArrayLength(this,array);\r
-    }\r
-\r
-    jobjectArray NewObjectArray(jsize len, jclass clazz,\r
-                               jobject init) {\r
-        return functions->NewObjectArray(this,len,clazz,init);\r
-    }\r
-    jobject GetObjectArrayElement(jobjectArray array, jsize index) {\r
-        return functions->GetObjectArrayElement(this,array,index);\r
-    }\r
-    void SetObjectArrayElement(jobjectArray array, jsize index,\r
-                              jobject val) {\r
-        functions->SetObjectArrayElement(this,array,index,val);\r
-    }\r
-\r
-    jbooleanArray NewBooleanArray(jsize len) {\r
-        return functions->NewBooleanArray(this,len);\r
-    }\r
-    jbyteArray NewByteArray(jsize len) {\r
-        return functions->NewByteArray(this,len);\r
-    }\r
-    jcharArray NewCharArray(jsize len) {\r
-        return functions->NewCharArray(this,len);\r
-    }\r
-    jshortArray NewShortArray(jsize len) {\r
-        return functions->NewShortArray(this,len);\r
-    }\r
-    jintArray NewIntArray(jsize len) {\r
-        return functions->NewIntArray(this,len);\r
-    }\r
-    jlongArray NewLongArray(jsize len) {\r
-        return functions->NewLongArray(this,len);\r
-    }\r
-    jfloatArray NewFloatArray(jsize len) {\r
-        return functions->NewFloatArray(this,len);\r
-    }\r
-    jdoubleArray NewDoubleArray(jsize len) {\r
-        return functions->NewDoubleArray(this,len);\r
-    }\r
-\r
-    jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) {\r
-        return functions->GetBooleanArrayElements(this,array,isCopy);\r
-    }\r
-    jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) {\r
-        return functions->GetByteArrayElements(this,array,isCopy);\r
-    }\r
-    jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) {\r
-        return functions->GetCharArrayElements(this,array,isCopy);\r
-    }\r
-    jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) {\r
-        return functions->GetShortArrayElements(this,array,isCopy);\r
-    }\r
-    jint * GetIntArrayElements(jintArray array, jboolean *isCopy) {\r
-        return functions->GetIntArrayElements(this,array,isCopy);\r
-    }\r
-    jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) {\r
-        return functions->GetLongArrayElements(this,array,isCopy);\r
-    }\r
-    jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) {\r
-        return functions->GetFloatArrayElements(this,array,isCopy);\r
-    }\r
-    jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) {\r
-        return functions->GetDoubleArrayElements(this,array,isCopy);\r
-    }\r
-\r
-    void ReleaseBooleanArrayElements(jbooleanArray array,\r
-                                    jboolean *elems,\r
-                                    jint mode) {\r
-        functions->ReleaseBooleanArrayElements(this,array,elems,mode);\r
-    }\r
-    void ReleaseByteArrayElements(jbyteArray array,\r
-                                 jbyte *elems,\r
-                                 jint mode) {\r
-        functions->ReleaseByteArrayElements(this,array,elems,mode);\r
-    }\r
-    void ReleaseCharArrayElements(jcharArray array,\r
-                                 jchar *elems,\r
-                                 jint mode) {\r
-        functions->ReleaseCharArrayElements(this,array,elems,mode);\r
-    }\r
-    void ReleaseShortArrayElements(jshortArray array,\r
-                                  jshort *elems,\r
-                                  jint mode) {\r
-        functions->ReleaseShortArrayElements(this,array,elems,mode);\r
-    }\r
-    void ReleaseIntArrayElements(jintArray array,\r
-                                jint *elems,\r
-                                jint mode) {\r
-        functions->ReleaseIntArrayElements(this,array,elems,mode);\r
-    }\r
-    void ReleaseLongArrayElements(jlongArray array,\r
-                                 jlong *elems,\r
-                                 jint mode) {\r
-        functions->ReleaseLongArrayElements(this,array,elems,mode);\r
-    }\r
-    void ReleaseFloatArrayElements(jfloatArray array,\r
-                                  jfloat *elems,\r
-                                  jint mode) {\r
-        functions->ReleaseFloatArrayElements(this,array,elems,mode);\r
-    }\r
-    void ReleaseDoubleArrayElements(jdoubleArray array,\r
-                                   jdouble *elems,\r
-                                   jint mode) {\r
-        functions->ReleaseDoubleArrayElements(this,array,elems,mode);\r
-    }\r
-\r
-    void GetBooleanArrayRegion(jbooleanArray array,\r
-                              jsize start, jsize len, jboolean *buf) {\r
-        functions->GetBooleanArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void GetByteArrayRegion(jbyteArray array,\r
-                           jsize start, jsize len, jbyte *buf) {\r
-        functions->GetByteArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void GetCharArrayRegion(jcharArray array,\r
-                           jsize start, jsize len, jchar *buf) {\r
-        functions->GetCharArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void GetShortArrayRegion(jshortArray array,\r
-                            jsize start, jsize len, jshort *buf) {\r
-        functions->GetShortArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void GetIntArrayRegion(jintArray array,\r
-                          jsize start, jsize len, jint *buf) {\r
-        functions->GetIntArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void GetLongArrayRegion(jlongArray array,\r
-                           jsize start, jsize len, jlong *buf) {\r
-        functions->GetLongArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void GetFloatArrayRegion(jfloatArray array,\r
-                            jsize start, jsize len, jfloat *buf) {\r
-        functions->GetFloatArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void GetDoubleArrayRegion(jdoubleArray array,\r
-                             jsize start, jsize len, jdouble *buf) {\r
-        functions->GetDoubleArrayRegion(this,array,start,len,buf);\r
-    }\r
-\r
-    void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len,\r
-                              const jboolean *buf) {\r
-        functions->SetBooleanArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void SetByteArrayRegion(jbyteArray array, jsize start, jsize len,\r
-                           const jbyte *buf) {\r
-        functions->SetByteArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void SetCharArrayRegion(jcharArray array, jsize start, jsize len,\r
-                           const jchar *buf) {\r
-        functions->SetCharArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void SetShortArrayRegion(jshortArray array, jsize start, jsize len,\r
-                            const jshort *buf) {\r
-        functions->SetShortArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void SetIntArrayRegion(jintArray array, jsize start, jsize len,\r
-                          const jint *buf) {\r
-        functions->SetIntArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void SetLongArrayRegion(jlongArray array, jsize start, jsize len,\r
-                           const jlong *buf) {\r
-        functions->SetLongArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len,\r
-                            const jfloat *buf) {\r
-        functions->SetFloatArrayRegion(this,array,start,len,buf);\r
-    }\r
-    void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len,\r
-                             const jdouble *buf) {\r
-        functions->SetDoubleArrayRegion(this,array,start,len,buf);\r
-    }\r
-\r
-    jint RegisterNatives(jclass clazz, const JNINativeMethod *methods,\r
-                        jint nMethods) {\r
-        return functions->RegisterNatives(this,clazz,methods,nMethods);\r
-    }\r
-    jint UnregisterNatives(jclass clazz) {\r
-        return functions->UnregisterNatives(this,clazz);\r
-    }\r
-\r
-    jint MonitorEnter(jobject obj) {\r
-        return functions->MonitorEnter(this,obj);\r
-    }\r
-    jint MonitorExit(jobject obj) {\r
-        return functions->MonitorExit(this,obj);\r
-    }\r
-\r
-    jint GetJavaVM(JavaVM **vm) {\r
-        return functions->GetJavaVM(this,vm);\r
-    }\r
-\r
-    void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) {\r
-        functions->GetStringRegion(this,str,start,len,buf);\r
-    }\r
-    void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) {\r
-        functions->GetStringUTFRegion(this,str,start,len,buf);\r
-    }\r
-\r
-    void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) {\r
-        return functions->GetPrimitiveArrayCritical(this,array,isCopy);\r
-    }\r
-    void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) {\r
-        functions->ReleasePrimitiveArrayCritical(this,array,carray,mode);\r
-    }\r
-\r
-    const jchar * GetStringCritical(jstring string, jboolean *isCopy) {\r
-        return functions->GetStringCritical(this,string,isCopy);\r
-    }\r
-    void ReleaseStringCritical(jstring string, const jchar *cstring) {\r
-        functions->ReleaseStringCritical(this,string,cstring);\r
-    }\r
-\r
-    jweak NewWeakGlobalRef(jobject obj) {\r
-        return functions->NewWeakGlobalRef(this,obj);\r
-    }\r
-    void DeleteWeakGlobalRef(jweak ref) {\r
-        functions->DeleteWeakGlobalRef(this,ref);\r
-    }\r
-\r
-    jboolean ExceptionCheck() {\r
-       return functions->ExceptionCheck(this);\r
-    }\r
-\r
-    jobject NewDirectByteBuffer(void* address, jlong capacity) {\r
-        return functions->NewDirectByteBuffer(this, address, capacity);\r
-    }\r
-    void* GetDirectBufferAddress(jobject buf) {\r
-        return functions->GetDirectBufferAddress(this, buf);\r
-    }\r
-    jlong GetDirectBufferCapacity(jobject buf) {\r
-        return functions->GetDirectBufferCapacity(this, buf);\r
-    }\r
-\r
-#endif /* __cplusplus */\r
-};\r
-\r
-typedef struct JavaVMOption {\r
-    char *optionString;\r
-    void *extraInfo;\r
-} JavaVMOption;\r
-\r
-typedef struct JavaVMInitArgs {\r
-    jint version;\r
-\r
-    jint nOptions;\r
-    JavaVMOption *options;\r
-    jboolean ignoreUnrecognized;\r
-} JavaVMInitArgs;\r
-\r
-typedef struct JavaVMAttachArgs {\r
-    jint version;\r
-\r
-    char *name;\r
-    jobject group;\r
-} JavaVMAttachArgs;\r
-\r
-/* These structures will be VM-specific. */\r
-\r
-typedef struct JDK1_1InitArgs {\r
-    jint version;\r
-\r
-    char **properties;\r
-    jint checkSource;\r
-    jint nativeStackSize;\r
-    jint javaStackSize;\r
-    jint minHeapSize;\r
-    jint maxHeapSize;\r
-    jint verifyMode;\r
-    char *classpath;\r
-\r
-    jint (JNICALL *vfprintf)(FILE *fp, const char *format, va_list args);\r
-    void (JNICALL *exit)(jint code);\r
-    void (JNICALL *abort)(void);\r
-\r
-    jint enableClassGC;\r
-    jint enableVerboseGC;\r
-    jint disableAsyncGC;\r
-    jint verbose;\r
-    jboolean debugging;\r
-    jint debugPort;\r
-} JDK1_1InitArgs;\r
-\r
-typedef struct JDK1_1AttachArgs {\r
-    void * __padding; /* C compilers don't allow empty structures. */\r
-} JDK1_1AttachArgs;\r
-\r
-#define JDK1_2\r
-#define JDK1_4\r
-\r
-/* End VM-specific. */\r
-\r
-struct JNIInvokeInterface_ {\r
-    void *reserved0;\r
-    void *reserved1;\r
-    void *reserved2;\r
-\r
-    jint (JNICALL *DestroyJavaVM)(JavaVM *vm);\r
-\r
-    jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args);\r
-\r
-    jint (JNICALL *DetachCurrentThread)(JavaVM *vm);\r
-\r
-    jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version);\r
-\r
-    jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args);\r
-};\r
-\r
-struct JavaVM_ {\r
-    const struct JNIInvokeInterface_ *functions;\r
-#ifdef __cplusplus\r
-\r
-    jint DestroyJavaVM() {\r
-        return functions->DestroyJavaVM(this);\r
-    }\r
-    jint AttachCurrentThread(void **penv, void *args) {\r
-        return functions->AttachCurrentThread(this, penv, args);\r
-    }\r
-    jint DetachCurrentThread() {\r
-        return functions->DetachCurrentThread(this);\r
-    }\r
-\r
-    jint GetEnv(void **penv, jint version) {\r
-        return functions->GetEnv(this, penv, version);\r
-    }\r
-    jint AttachCurrentThreadAsDaemon(void **penv, void *args) {\r
-        return functions->AttachCurrentThreadAsDaemon(this, penv, args);\r
-    }\r
-#endif\r
-};\r
-\r
-#ifdef _JNI_IMPLEMENTATION_\r
-#define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT\r
-#else\r
-#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT\r
-#endif\r
-_JNI_IMPORT_OR_EXPORT_ jint JNICALL\r
-JNI_GetDefaultJavaVMInitArgs(void *args);\r
-\r
-_JNI_IMPORT_OR_EXPORT_ jint JNICALL\r
-JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args);\r
-\r
-_JNI_IMPORT_OR_EXPORT_ jint JNICALL\r
-JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);\r
-\r
-/* Defined by native libraries. */\r
-JNIEXPORT jint JNICALL\r
-JNI_OnLoad(JavaVM *vm, void *reserved);\r
-\r
-JNIEXPORT void JNICALL\r
-JNI_OnUnload(JavaVM *vm, void *reserved);\r
-\r
-#define JNI_VERSION_1_1 0x00010001\r
-#define JNI_VERSION_1_2 0x00010002\r
-#define JNI_VERSION_1_4 0x00010004\r
-\r
-#ifdef __cplusplus\r
-} /* extern "C" */\r
-#endif /* __cplusplus */\r
-\r
-#endif /* !_JAVASOFT_JNI_H_ */\r
diff --git a/applications/JavaOpenJPEG/java-jni/include/jvmdi.h b/applications/JavaOpenJPEG/java-jni/include/jvmdi.h
deleted file mode 100644 (file)
index d39c4a9..0000000
+++ /dev/null
@@ -1,1012 +0,0 @@
-/*\r
- * @(#)jvmdi.h 1.48 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-/*\r
- *   Java Virtual Machine Debug Interface\r
- *\r
- *   Defines debugging functionality that a VM should provide.  \r
- *\r
- *   Should not overlap functionality in jni.h\r
- */\r
-\r
-#ifndef _JAVASOFT_JVMDI_H_\r
-#define _JAVASOFT_JVMDI_H_\r
-\r
-#include "jni.h"\r
-\r
-#define JVMDI_VERSION_1    0x20010000\r
-#define JVMDI_VERSION_1_1  0x20010001\r
-#define JVMDI_VERSION_1_2  0x20010002\r
-#define JVMDI_VERSION_1_3  0x20010003\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-typedef jobject jthread;\r
-\r
-typedef jobject jthreadGroup;\r
-\r
-struct _jframeID;\r
-typedef struct _jframeID *jframeID;\r
-\r
-  /* specifies program location "pc" - often byte code index */\r
-typedef jlong jlocation;\r
-\r
-  /* The jmethodID for methods that have been replaced */\r
-  /* via RedefineClasses - used when the implementation */\r
-  /* does not wish to retain replaced jmethodIDs */\r
-#define OBSOLETE_METHOD_ID ((jmethodID)(NULL))\r
-\r
-  /*\r
-   *  Errors\r
-   */\r
-\r
-typedef jint jvmdiError;\r
-\r
-  /* no error */\r
-#define JVMDI_ERROR_NONE                 ((jvmdiError)0)\r
-\r
-  /*\r
-   * Errors on thread operations\r
-   */\r
-\r
-  /* invalid thread */\r
-#define JVMDI_ERROR_INVALID_THREAD       ((jvmdiError)10)\r
-  /* invalid thread group */\r
-#define JVMDI_ERROR_INVALID_THREAD_GROUP ((jvmdiError)11)\r
-  /* invalid thread priority */\r
-#define JVMDI_ERROR_INVALID_PRIORITY     ((jvmdiError)12)\r
-  /* thread not suspended */\r
-#define JVMDI_ERROR_THREAD_NOT_SUSPENDED ((jvmdiError)13)\r
-  /* thread already suspended */\r
-#define JVMDI_ERROR_THREAD_SUSPENDED     ((jvmdiError)14)\r
-\r
-  /* \r
-   * Errors on object and class operations\r
-   */\r
-\r
-  /* invalid object (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_INVALID_OBJECT       ((jvmdiError)20)\r
-  /* invalid class (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_INVALID_CLASS        ((jvmdiError)21)\r
-  /* class not prepared */\r
-#define JVMDI_ERROR_CLASS_NOT_PREPARED   ((jvmdiError)22)\r
-  /* invalid methodID (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_INVALID_METHODID     ((jvmdiError)23)\r
-  /* invalid location */\r
-#define JVMDI_ERROR_INVALID_LOCATION     ((jvmdiError)24)\r
-  /* invalid fieldID (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_INVALID_FIELDID      ((jvmdiError)25)\r
-\r
-  /*\r
-   * Errors on frame operations\r
-   */\r
-\r
-  /* invalid frameID (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_INVALID_FRAMEID      ((jvmdiError)30)\r
-  /* there are no more frames on the stack */\r
-#define JVMDI_ERROR_NO_MORE_FRAMES       ((jvmdiError)31)\r
-  /* operation cannot be performed on this frame */\r
-#define JVMDI_ERROR_OPAQUE_FRAME         ((jvmdiError)32)\r
-  /* operation can only be performed on current frame */\r
-#define JVMDI_ERROR_NOT_CURRENT_FRAME    ((jvmdiError)33)\r
-  /* type mismatch (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_TYPE_MISMATCH        ((jvmdiError)34)\r
-  /* invalid slot */\r
-#define JVMDI_ERROR_INVALID_SLOT         ((jvmdiError)35)\r
-\r
-  /*\r
-   * Errors on set/clear/find operations\r
-   */\r
-\r
-  /* item already present */\r
-#define JVMDI_ERROR_DUPLICATE            ((jvmdiError)40)\r
-  /* item not found */\r
-#define JVMDI_ERROR_NOT_FOUND            ((jvmdiError)41)\r
-\r
-  /*\r
-   * Errors on monitor operations\r
-   */\r
-\r
-  /* invalid monitor */\r
-#define JVMDI_ERROR_INVALID_MONITOR      ((jvmdiError)50)\r
-  /* wait, notify, notify all tried without entering monitor  */\r
-#define JVMDI_ERROR_NOT_MONITOR_OWNER    ((jvmdiError)51)\r
-  /* waiting thread interrupted */\r
-#define JVMDI_ERROR_INTERRUPT            ((jvmdiError)52)\r
-  \r
-  /*\r
-   * Class redefinition / operand stack errors\r
-   */\r
-\r
-  /* The equivalent of ClassFormatError */\r
-#define JVMDI_ERROR_INVALID_CLASS_FORMAT          ((jvmdiError)60)\r
-  /* The equivalent of ClassCircularityError */\r
-#define JVMDI_ERROR_CIRCULAR_CLASS_DEFINITION     ((jvmdiError)61)\r
-  /* The class bytes fail verification */\r
-#define JVMDI_ERROR_FAILS_VERIFICATION            ((jvmdiError)62)\r
-  /* The new class version adds new methods */\r
-  /* and can_add_method is false */\r
-#define JVMDI_ERROR_ADD_METHOD_NOT_IMPLEMENTED    ((jvmdiError)63)\r
-  /* The new class version changes fields */ \r
-  /* and can_unrestrictedly_redefine_classes is false */\r
-#define JVMDI_ERROR_SCHEMA_CHANGE_NOT_IMPLEMENTED ((jvmdiError)64)\r
-  /* bci/operand stack/local var combination is not verifiably */\r
-  /* type safe */\r
-#define JVMDI_ERROR_INVALID_TYPESTATE             ((jvmdiError)65)\r
-  /* A direct superclass is different for the new class */\r
-  /* version, or the set of directly implemented */\r
-  /* interfaces is different */\r
-  /* and can_unrestrictedly_redefine_classes is false */\r
-#define JVMDI_ERROR_HIERARCHY_CHANGE_NOT_IMPLEMENTED ((jvmdiError)66)\r
-  /* The new class version does not declare a method */\r
-  /* declared in the old class version */\r
-  /* and can_unrestrictedly_redefine_classes is false */\r
-#define JVMDI_ERROR_DELETE_METHOD_NOT_IMPLEMENTED ((jvmdiError)67)\r
-  /* A class file has a version number not supported */\r
-  /* by this VM. */\r
-#define JVMDI_ERROR_UNSUPPORTED_VERSION           ((jvmdiError)68)\r
-  /* The class name defined in the new class file is */\r
-  /* different from the name in the old class object */\r
-#define JVMDI_ERROR_NAMES_DONT_MATCH              ((jvmdiError)69)\r
-  /* The new class version has different modifiers and */\r
-  /* can_unrestrictedly_redefine_classes is false */\r
-#define JVMDI_ERROR_CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED   ((jvmdiError)70)\r
-  /* A method in the new class version has different modifiers */\r
-  /* than its counterpart in the old class version */\r
-  /* and can_unrestrictedly_redefine_classes is false */\r
-#define JVMDI_ERROR_METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED  ((jvmdiError)71)\r
-\r
-  /*\r
-   * Miscellaneous errors\r
-   */\r
-\r
-  /* Not yet implemented */\r
-#define JVMDI_ERROR_NOT_IMPLEMENTED      ((jvmdiError)99)\r
-  /* null pointer */\r
-#define JVMDI_ERROR_NULL_POINTER         ((jvmdiError)100)\r
-  /* information is absent */\r
-#define JVMDI_ERROR_ABSENT_INFORMATION   ((jvmdiError)101)\r
-  /* invalid event type  */\r
-#define JVMDI_ERROR_INVALID_EVENT_TYPE   ((jvmdiError)102)\r
-  /* invalid argument  */\r
-#define JVMDI_ERROR_ILLEGAL_ARGUMENT     ((jvmdiError)103)\r
-\r
-  /*\r
-   * Universal errors. These errors may be returned by\r
-   * any JVMDI function, not just the ones for which they are listed\r
-   * below.\r
-   */\r
-\r
-  /* no more memory available for allocation */\r
-#define JVMDI_ERROR_OUT_OF_MEMORY        ((jvmdiError)110)\r
-  /* debugging has not been enabled in this VM */\r
-#define JVMDI_ERROR_ACCESS_DENIED        ((jvmdiError)111)\r
-  /* VM is dead (implementation not required to gracefully catch) */\r
-#define JVMDI_ERROR_VM_DEAD              ((jvmdiError)112)\r
-  /* internal error  */\r
-#define JVMDI_ERROR_INTERNAL             ((jvmdiError)113)\r
-  /* Thread calling JVMDI function not attached to VM */\r
-#define JVMDI_ERROR_UNATTACHED_THREAD    ((jvmdiError)115)\r
-\r
-\r
-  /*\r
-   *  Threads\r
-   */\r
-\r
-  /* Thread status is unknown */\r
-#define JVMDI_THREAD_STATUS_UNKNOWN      ((jint)-1)\r
-  /* Thread is waiting to die */\r
-#define JVMDI_THREAD_STATUS_ZOMBIE       ((jint)0)\r
-  /* Thread is runnable */\r
-#define JVMDI_THREAD_STATUS_RUNNING      ((jint)1)\r
-  /* Thread is sleeping - Thread.sleep() or JVM_Sleep() was called */\r
-#define JVMDI_THREAD_STATUS_SLEEPING     ((jint)2)\r
-  /* Thread is waiting on a java monitor */\r
-#define JVMDI_THREAD_STATUS_MONITOR      ((jint)3)\r
-  /* Thread is waiting - Thread.wait() or JVM_MonitorWait() was called */\r
-#define JVMDI_THREAD_STATUS_WAIT         ((jint)4)\r
-\r
-  /* Thread is suspended - Thread.suspend(), JVM_Suspend() or\r
-   * JVMDI_Suspend was called */\r
-#define JVMDI_SUSPEND_STATUS_SUSPENDED   ((jint)0x1)\r
-  /* Thread is at a breakpoint */\r
-#define JVMDI_SUSPEND_STATUS_BREAK       ((jint)0x2)\r
-\r
-\r
-  /* Thread priority constants */\r
-#define JVMDI_THREAD_MIN_PRIORITY   ((jint)1)\r
-#define JVMDI_THREAD_NORM_PRIORITY  ((jint)5)\r
-#define JVMDI_THREAD_MAX_PRIORITY   ((jint)10)\r
-\r
-typedef struct {\r
-    char *name;\r
-    jint  priority;\r
-    jboolean is_daemon;\r
-    jthreadGroup thread_group;\r
-    jobject context_class_loader;\r
-} JVMDI_thread_info;\r
-\r
-typedef struct {\r
-    jthreadGroup parent;\r
-    char *name;\r
-    jint  max_priority;\r
-    jboolean is_daemon;\r
-} JVMDI_thread_group_info;\r
-\r
-#define JVMDI_DISABLE ((jint) 0)\r
-#define JVMDI_ENABLE  ((jint) 1)\r
-\r
-/*\r
- * Initial function for debug threads created through JVMDI\r
- */\r
-typedef void (*JVMDI_StartFunction)(void *);\r
-\r
-/*\r
- * Type for debug monitors created through JVMDI\r
- */\r
-typedef void *JVMDI_RawMonitor;\r
-\r
-#define JVMDI_MONITOR_WAIT_FOREVER ((jlong)(-1))\r
-\r
-/*\r
- * Monitor information\r
- */\r
-typedef struct {\r
-    jthread owner;\r
-    jint entry_count;\r
-    jint waiter_count;\r
-    jthread *waiters;\r
-} JVMDI_monitor_info;\r
-\r
-typedef struct {\r
-    jint owned_monitor_count;\r
-    jobject *owned_monitors;\r
-} JVMDI_owned_monitor_info;\r
-\r
-  /*\r
-   *  Events\r
-   */\r
-\r
-    /* kind = JVMDI_EVENT_SINGLE_STEP */\r
-    typedef struct { \r
-        jthread thread;\r
-        jclass clazz;\r
-        jmethodID method;\r
-        jlocation location;\r
-    } JVMDI_single_step_event_data;\r
-                       \r
-    /* kind = JVMDI_EVENT_BREAKPOINT */\r
-    typedef struct { \r
-        jthread thread;\r
-        jclass clazz;\r
-        jmethodID method;\r
-        jlocation location;\r
-    } JVMDI_breakpoint_event_data;\r
-    \r
-    /* kind = JVMDI_EVENT_FIELD_ACCESS */\r
-    typedef struct { \r
-        jthread thread;\r
-        jclass clazz;\r
-        jmethodID method;\r
-        jlocation location;\r
-        jclass field_clazz;\r
-        jobject object;\r
-        jfieldID field;\r
-    } JVMDI_field_access_event_data;\r
-    \r
-    /* kind = JVMDI_EVENT_FIELD_MODIFICATION */\r
-    typedef struct { \r
-        jthread thread;\r
-        jclass clazz;\r
-        jmethodID method;\r
-        jlocation location;\r
-        jclass field_clazz;\r
-        jobject object;\r
-        jfieldID field;\r
-        char signature_type;\r
-        jvalue new_value;\r
-    } JVMDI_field_modification_event_data;\r
-    \r
-    /* kind = JVMDI_EVENT_FRAME_POP */\r
-    /* kind = JVMDI_EVENT_METHOD_ENTRY */\r
-    /* kind = JVMDI_EVENT_METHOD_EXIT */\r
-    typedef struct { \r
-        jthread thread;\r
-        jclass clazz;\r
-        jmethodID method;\r
-        jframeID frame;\r
-    } JVMDI_frame_event_data;\r
-    \r
-    /* kind = JVMDI_EVENT_EXCEPTION */\r
-    typedef struct { \r
-        jthread thread;\r
-        jclass clazz;\r
-        jmethodID method;\r
-        jlocation location;\r
-        jobject exception;\r
-        jclass catch_clazz;\r
-        jmethodID catch_method;\r
-        jlocation catch_location;\r
-    } JVMDI_exception_event_data;\r
-    \r
-    /* kind = JVMDI_EVENT_EXCEPTION_CATCH */\r
-    typedef struct { \r
-        jthread thread;\r
-        jclass clazz;\r
-        jmethodID method;\r
-        jlocation location;\r
-        jobject exception;\r
-    } JVMDI_exception_catch_event_data;\r
-    \r
-    /* kind = JVMDI_EVENT_USER_DEFINED */\r
-    typedef struct { \r
-        jobject object;\r
-        jint key;\r
-    } JVMDI_user_event_data;\r
-    \r
-    /* kind = JVMDI_EVENT_THREAD_END or */\r
-    /* JVMDI_EVENT_THREAD_START */\r
-    typedef struct { \r
-        jthread thread;\r
-    } JVMDI_thread_change_event_data;\r
-    \r
-    /* kind = JVMDI_EVENT_CLASS_LOAD, */\r
-    /* JVMDI_EVENT_CLASS_UNLOAD, or */\r
-    /* JVMDI_EVENT_CLASS_PREPARE */\r
-    typedef struct { \r
-        jthread thread;\r
-        jclass clazz;\r
-    } JVMDI_class_event_data;\r
-    \r
-/* This stucture passes information about the event.\r
- * location is the index of the last instruction executed. \r
- */\r
-typedef struct {\r
-    jint kind;         /* the discriminant */\r
-\r
-    union {\r
-       /* kind = JVMDI_EVENT_SINGLE_STEP */\r
-        JVMDI_single_step_event_data single_step;\r
-                       \r
-        /* kind = JVMDI_EVENT_BREAKPOINT */\r
-        JVMDI_breakpoint_event_data breakpoint;\r
-\r
-        /* kind = JVMDI_EVENT_FRAME_POP */\r
-        /* kind = JVMDI_EVENT_METHOD_ENTRY */\r
-        /* kind = JVMDI_EVENT_METHOD_EXIT */\r
-        JVMDI_frame_event_data frame;\r
-\r
-        /* kind = JVMDI_EVENT_FIELD_ACCESS */\r
-        JVMDI_field_access_event_data field_access;\r
-\r
-        /* kind = JVMDI_EVENT_FIELD_MODIFICATION */\r
-        JVMDI_field_modification_event_data field_modification;\r
-\r
-        /* kind = JVMDI_EVENT_EXCEPTION */\r
-        JVMDI_exception_event_data exception;\r
-\r
-        /* kind = JVMDI_EVENT_EXCEPTION_CATCH */\r
-        JVMDI_exception_catch_event_data exception_catch;\r
-\r
-        /* kind = JVMDI_EVENT_USER_DEFINED */\r
-        JVMDI_user_event_data user;\r
-                       \r
-        /* kind = JVMDI_EVENT_THREAD_END or */\r
-        /* JVMDI_EVENT_THREAD_START */\r
-        JVMDI_thread_change_event_data thread_change;\r
-                       \r
-        /* kind = JVMDI_EVENT_CLASS_LOAD, */\r
-        /* JVMDI_EVENT_CLASS_UNLOAD, or */\r
-        /* JVMDI_EVENT_CLASS_PREPARE */\r
-        JVMDI_class_event_data class_event;\r
-                       \r
-        /* kind = JVMDI_EVENT_VM_DEATH, JVMDI_EVENT_VM_INIT */\r
-        /* no additional fields */             \r
-    } u;\r
-} JVMDI_Event;\r
-\r
-       /*** event kinds ***/\r
-#define JVMDI_EVENT_SINGLE_STEP   ((jint)1)\r
-#define JVMDI_EVENT_BREAKPOINT    ((jint)2)\r
-#define JVMDI_EVENT_FRAME_POP     ((jint)3)\r
-#define JVMDI_EVENT_EXCEPTION     ((jint)4)\r
-#define JVMDI_EVENT_USER_DEFINED  ((jint)5)\r
-#define JVMDI_EVENT_THREAD_START  ((jint)6)\r
-#define JVMDI_EVENT_THREAD_END    ((jint)7)\r
-#define JVMDI_EVENT_CLASS_PREPARE ((jint)8)\r
-#define JVMDI_EVENT_CLASS_UNLOAD  ((jint)9)\r
-#define JVMDI_EVENT_CLASS_LOAD    ((jint)10)\r
-#define JVMDI_EVENT_FIELD_ACCESS       ((jint)20)\r
-#define JVMDI_EVENT_FIELD_MODIFICATION ((jint)21)\r
-#define JVMDI_EVENT_EXCEPTION_CATCH    ((jint)30)\r
-#define JVMDI_EVENT_METHOD_ENTRY       ((jint)40)\r
-#define JVMDI_EVENT_METHOD_EXIT        ((jint)41)\r
-#define JVMDI_EVENT_VM_INIT            ((jint)90)\r
-#define JVMDI_EVENT_VM_DEATH           ((jint)99)\r
-\r
-#define JVMDI_MAX_EVENT_TYPE_VAL       ((jint)99)\r
-\r
-\r
-\r
-/* event handler hook */\r
-typedef void (*JVMDI_EventHook)(JNIEnv *env, JVMDI_Event *event);\r
-\r
-typedef jvmdiError (*JVMDI_AllocHook) (jlong size, jbyte** memPtr);\r
-typedef jvmdiError (*JVMDI_DeallocHook) (jbyte* buffer);\r
-\r
-/*\r
- * Class states used in JVMDI_GetClassStatus\r
- */\r
-#define JVMDI_CLASS_STATUS_VERIFIED          ((jint)0x01)\r
-#define JVMDI_CLASS_STATUS_PREPARED          ((jint)0x02)\r
-#define JVMDI_CLASS_STATUS_INITIALIZED       ((jint)0x04)\r
- /* Error prevents initialization */\r
-#define JVMDI_CLASS_STATUS_ERROR             ((jint)0x08) \r
-\r
-/* structure for returning line number information \r
- */\r
-typedef struct {\r
-    jlocation start_location;\r
-    jint line_number;\r
-} JVMDI_line_number_entry;\r
-\r
-\r
-/* structure for returning local variable information \r
- */\r
-typedef struct {\r
-    jlocation start_location;   /* variable valid start_location */\r
-    jint length;                /* upto start_location+length */ \r
-    char *name;                 /* name in UTF8 */\r
-    char *signature;            /* type signature in UTF8 */\r
-    jint slot;                  /* variable slot, see JVMDI_GetLocal*()  */\r
-} JVMDI_local_variable_entry;\r
-\r
-/* structure for returning exception handler information \r
- */\r
-typedef struct {\r
-    jlocation start_location;\r
-    jlocation end_location;\r
-    jlocation handler_location;\r
-    jclass exception;           /* if null, all exceptions */\r
-} JVMDI_exception_handler_entry;\r
-\r
-#define JVMDI_OPERAND_TYPE_REFERENCE      ((jint)1)\r
-#define JVMDI_OPERAND_TYPE_INT            ((jint)2)\r
-#define JVMDI_OPERAND_TYPE_FLOAT          ((jint)3)\r
-#define JVMDI_OPERAND_TYPE_LONG0          ((jint)4) /* least sig. 32 bits */\r
-#define JVMDI_OPERAND_TYPE_LONG1          ((jint)5) /* most sig. 32 bits */\r
-#define JVMDI_OPERAND_TYPE_DOUBLE0        ((jint)6) /* least sig. 32 bits */\r
-#define JVMDI_OPERAND_TYPE_DOUBLE1        ((jint)7) /* most sig. 32 bits */\r
-#define JVMDI_OPERAND_TYPE_RETURN_ADDRESS ((jint)8)\r
-\r
-typedef struct {\r
-    jint word;                 /* 32 bit operand stack quantities */\r
-    jint type;                 /* type encoding of the operand word */\r
-                               /* one of JVMDI_OPERAND_TYPE_* */\r
-} JVMDI_operand_stack_element;\r
-\r
-typedef struct { \r
-    jint instance_field_count; /* number of instance fields referencing obj */\r
-    struct JVMDI_instance_field {\r
-        jobject instance;      /* instance referencing obj */\r
-        jfieldID field;        /* field holding reference */\r
-    } *instance_fields;        /* instanceField_count of them */\r
-     \r
-    jint static_field_count;   /* number of static fields referencing obj */\r
-    struct JVMDI_static_field {\r
-        jclass clazz;          /* class referencing obj */\r
-        jfieldID static_field; /* field holding reference */\r
-    } *static_fields;          /* static_field_count of them */\r
-    \r
-    jint array_element_count;  /* number of array elements referencing obj */\r
-    struct JVMDI_array_element {\r
-        jobjectArray array;    /* array referencing obj */\r
-        jint index;            /* index holding reference */\r
-    } *array_elements;         /* array_element_count of them */\r
-    \r
-    jint frame_slot_count;     /* number of frame slots referencing obj */\r
-    struct JVMDI_frame_slot {\r
-        jthread thread;        /* thread of the frame */\r
-        jframeID frame;        /* frame referencing obj */\r
-        jint slot;             /* slot holding reference */\r
-    } *frame_slots;            /* frame_slot_count of them */\r
-} JVMDI_object_reference_info;\r
-\r
-/* structure for defining a class\r
-*/\r
-typedef struct {\r
-    jclass clazz;              /* Class object for this class */\r
-    jint class_byte_count;     /* number of bytes defining class (below) */\r
-    jbyte *class_bytes;        /* bytes defining class (in JVM spec */\r
-                               /* Class File Format) */\r
-} JVMDI_class_definition;\r
-\r
-  /* For backwards compatibility */\r
-#define can_change_schema can_unrestrictedly_redefine_classes\r
-\r
-typedef struct {\r
-    unsigned int can_watch_field_modification      : 1;\r
-    unsigned int can_watch_field_access            : 1;\r
-    unsigned int can_get_bytecodes                 : 1;\r
-    unsigned int can_get_synthetic_attribute       : 1;\r
-    unsigned int can_get_owned_monitor_info        : 1;\r
-    unsigned int can_get_current_contended_monitor : 1;\r
-    unsigned int can_get_monitor_info              : 1;\r
-    unsigned int can_get_heap_info                 : 1;\r
-    unsigned int can_get_operand_stack             : 1;\r
-    unsigned int can_set_operand_stack             : 1;\r
-    unsigned int can_pop_frame                     : 1;\r
-    unsigned int can_get_class_definition          : 1;\r
-    unsigned int can_redefine_classes              : 1; \r
-    unsigned int can_add_method                    : 1;\r
-    unsigned int can_unrestrictedly_redefine_classes : 1;\r
-    unsigned int can_suspend_resume_thread_lists   : 1;\r
-} JVMDI_capabilities;\r
-\r
-typedef struct JVMDI_Interface_1_ {\r
-    jvmdiError (JNICALL *SetEventHook)\r
-      (JVMDI_EventHook hook);\r
-    jvmdiError (JNICALL *SetEventNotificationMode)\r
-      (jint mode, jint eventType, jthread thread, ...);\r
-\r
-    jvmdiError (JNICALL *GetThreadStatus)\r
-      (jthread thread,\r
-       jint *threadStatusPtr, jint *suspendStatusPtr);\r
-    jvmdiError (JNICALL *GetAllThreads)\r
-      (jint *threadsCountPtr, jthread **threadsPtr);\r
-    jvmdiError (JNICALL *SuspendThread)\r
-      (jthread thread); \r
-    jvmdiError (JNICALL *ResumeThread)\r
-      (jthread thread);\r
-    jvmdiError (JNICALL *StopThread)\r
-      (jthread thread, jobject exception);\r
-    jvmdiError (JNICALL *InterruptThread)\r
-      (jthread thread);\r
-    jvmdiError (JNICALL *GetThreadInfo)\r
-      (jthread thread, JVMDI_thread_info *infoPtr);\r
-    jvmdiError (JNICALL *GetOwnedMonitorInfo)\r
-      (jthread thread, JVMDI_owned_monitor_info *infoPtr);\r
-    jvmdiError (JNICALL *GetCurrentContendedMonitor)\r
-      (jthread thread, jobject *monitor);\r
-    jvmdiError (JNICALL *RunDebugThread)\r
-      (jthread thread, JVMDI_StartFunction proc, void *arg,\r
-       int priority);\r
-\r
-    jvmdiError (JNICALL *GetTopThreadGroups)\r
-      (jint *groupCountPtr, jthreadGroup **groupsPtr);\r
-    jvmdiError (JNICALL *GetThreadGroupInfo)\r
-      (jthreadGroup group, JVMDI_thread_group_info *infoPtr);\r
-    jvmdiError (JNICALL *GetThreadGroupChildren)\r
-      (jthreadGroup group, \r
-       jint *threadCountPtr, jthread **threadsPtr,\r
-       jint *groupCountPtr, jthreadGroup **groupsPtr);\r
-\r
-    jvmdiError (JNICALL *GetFrameCount)\r
-      (jthread thread, jint *countPtr);\r
-    jvmdiError (JNICALL *GetCurrentFrame)\r
-      (jthread thread, jframeID *framePtr);\r
-    jvmdiError (JNICALL *GetCallerFrame)\r
-      (jframeID called, jframeID *framePtr);\r
-    jvmdiError (JNICALL *GetFrameLocation)\r
-      (jframeID frame, jclass *classPtr, jmethodID *methodPtr,\r
-       jlocation *locationPtr);\r
-    jvmdiError (JNICALL *NotifyFramePop)\r
-      (jframeID frame); \r
-    jvmdiError (JNICALL *GetLocalObject)\r
-      (jframeID frame, jint slot, jobject *valuePtr);\r
-    jvmdiError (JNICALL *GetLocalInt)\r
-      (jframeID frame, jint slot, jint *valuePtr);\r
-    jvmdiError (JNICALL *GetLocalLong)\r
-      (jframeID frame, jint slot, jlong *valuePtr);\r
-    jvmdiError (JNICALL *GetLocalFloat)\r
-      (jframeID frame, jint slot, jfloat *valuePtr);\r
-    jvmdiError (JNICALL *GetLocalDouble)\r
-      (jframeID frame, jint slot, jdouble *valuePtr);\r
-    jvmdiError (JNICALL *SetLocalObject)\r
-      (jframeID frame, jint slot, jobject value);\r
-    jvmdiError (JNICALL *SetLocalInt)\r
-      (jframeID frame, jint slot, jint value);\r
-    jvmdiError (JNICALL *SetLocalLong)\r
-      (jframeID frame, jint slot, jlong value);\r
-    jvmdiError (JNICALL *SetLocalFloat)\r
-      (jframeID frame, jint slot, jfloat value);\r
-    jvmdiError (JNICALL *SetLocalDouble)\r
-      (jframeID frame, jint slot, jdouble value);\r
-\r
-    jvmdiError (JNICALL *CreateRawMonitor)\r
-      (char *name, JVMDI_RawMonitor *monitorPtr);\r
-    jvmdiError (JNICALL *DestroyRawMonitor)\r
-      (JVMDI_RawMonitor monitor);\r
-    jvmdiError (JNICALL *RawMonitorEnter)\r
-      (JVMDI_RawMonitor monitor);\r
-    jvmdiError (JNICALL *RawMonitorExit)\r
-      (JVMDI_RawMonitor monitor);\r
-    jvmdiError (JNICALL *RawMonitorWait)\r
-      (JVMDI_RawMonitor monitor, jlong millis);\r
-    jvmdiError (JNICALL *RawMonitorNotify)\r
-      (JVMDI_RawMonitor monitor);\r
-    jvmdiError (JNICALL *RawMonitorNotifyAll)\r
-      (JVMDI_RawMonitor monitor);\r
-\r
-    jvmdiError (JNICALL *SetBreakpoint)\r
-      (jclass clazz, jmethodID method, jlocation location);\r
-    jvmdiError (JNICALL *ClearBreakpoint)\r
-      (jclass clazz, jmethodID method, jlocation location);\r
-    jvmdiError (JNICALL *ClearAllBreakpoints)\r
-      ();\r
-\r
-    jvmdiError (JNICALL *SetFieldAccessWatch)\r
-      (jclass clazz, jfieldID field);\r
-    jvmdiError (JNICALL *ClearFieldAccessWatch)\r
-      (jclass clazz, jfieldID field);\r
-    jvmdiError (JNICALL *SetFieldModificationWatch)\r
-      (jclass clazz, jfieldID field);\r
-    jvmdiError (JNICALL *ClearFieldModificationWatch)\r
-      (jclass clazz, jfieldID field);\r
-\r
-    jvmdiError (JNICALL *SetAllocationHooks)\r
-      (JVMDI_AllocHook ahook, JVMDI_DeallocHook dhook);\r
-    jvmdiError (JNICALL *Allocate)\r
-      (jlong size, jbyte** memPtr);\r
-    jvmdiError (JNICALL *Deallocate)\r
-      (jbyte* mem);\r
-\r
-    jvmdiError (JNICALL *GetClassSignature)\r
-      (jclass clazz, char **sigPtr);\r
-    jvmdiError (JNICALL *GetClassStatus)\r
-      (jclass clazz, jint *statusPtr);\r
-    jvmdiError (JNICALL *GetSourceFileName)\r
-      (jclass clazz, char **sourceNamePtr);\r
-    jvmdiError (JNICALL *GetClassModifiers)\r
-      (jclass clazz, jint *modifiersPtr);\r
-    jvmdiError (JNICALL *GetClassMethods)\r
-      (jclass clazz, jint *methodCountPtr, jmethodID **methodsPtr);\r
-    jvmdiError (JNICALL *GetClassFields)\r
-       (jclass clazz, jint *fieldCountPtr, jfieldID **fieldsPtr);\r
-    jvmdiError (JNICALL *GetImplementedInterfaces)\r
-      (jclass clazz, jint *interfaceCountPtr, jclass **interfacesPtr);\r
-    jvmdiError (JNICALL *IsInterface)\r
-      (jclass clazz, jboolean *isInterfacePtr);\r
-    jvmdiError (JNICALL *IsArrayClass)\r
-      (jclass clazz, jboolean *isArrayClassPtr);\r
-    jvmdiError (JNICALL *GetClassLoader)\r
-      (jclass clazz, jobject *classloaderPtr);\r
-\r
-    jvmdiError (JNICALL *GetObjectHashCode)\r
-      (jobject object, jint *hashCodePtr);\r
-    jvmdiError (JNICALL *GetMonitorInfo)\r
-      (jobject object, JVMDI_monitor_info *infoPtr);\r
-\r
-    jvmdiError (JNICALL *GetFieldName)\r
-      (jclass clazz, jfieldID field, char **namePtr, char **signaturePtr);\r
-    jvmdiError (JNICALL *GetFieldDeclaringClass)\r
-      (jclass clazz, jfieldID field, jclass *declaringClassPtr);\r
-    jvmdiError (JNICALL *GetFieldModifiers)\r
-      (jclass clazz, jfieldID field, jint *modifiersPtr);\r
-    jvmdiError (JNICALL *IsFieldSynthetic)\r
-      (jclass clazz, jfieldID field, jboolean *isSyntheticPtr);\r
-\r
-    jvmdiError (JNICALL *GetMethodName)\r
-      (jclass clazz, jmethodID method, \r
-       char **namePtr, char **signaturePtr);\r
-    jvmdiError (JNICALL *GetMethodDeclaringClass)\r
-      (jclass clazz, jmethodID method, jclass *declaringClassPtr);\r
-    jvmdiError (JNICALL *GetMethodModifiers)\r
-      (jclass clazz, jmethodID method, jint *modifiersPtr);\r
-    jvmdiError (JNICALL *GetMaxStack)\r
-      (jclass clazz, jmethodID method, jint *maxPtr);\r
-    jvmdiError (JNICALL *GetMaxLocals)\r
-      (jclass clazz, jmethodID method, jint *maxPtr);\r
-    jvmdiError (JNICALL *GetArgumentsSize)\r
-      (jclass clazz, jmethodID method, jint *sizePtr);\r
-    jvmdiError (JNICALL *GetLineNumberTable)\r
-      (jclass clazz, jmethodID method,\r
-       jint *entryCountPtr, JVMDI_line_number_entry **tablePtr);\r
-    jvmdiError (JNICALL *GetMethodLocation)\r
-      (jclass clazz, jmethodID method,\r
-       jlocation *startLocationPtr, jlocation *endLocationPtr);\r
-    jvmdiError (JNICALL *GetLocalVariableTable)\r
-      (jclass clazz, jmethodID method,\r
-       jint *entryCountPtr, JVMDI_local_variable_entry **tablePtr);\r
-    jvmdiError (JNICALL *GetExceptionHandlerTable)\r
-      (jclass clazz, jmethodID method,\r
-       jint *entryCountPtr, JVMDI_exception_handler_entry **tablePtr);\r
-    jvmdiError (JNICALL *GetThrownExceptions)\r
-      (jclass clazz, jmethodID method,\r
-       jint *exceptionCountPtr, jclass **exceptionsPtr);\r
-    jvmdiError (JNICALL *GetBytecodes)\r
-      (jclass clazz, jmethodID method,\r
-       jint *bytecodeCountPtr, jbyte **bytecodesPtr);\r
-    jvmdiError (JNICALL *IsMethodNative)\r
-      (jclass clazz, jmethodID method, jboolean *isNativePtr);\r
-    jvmdiError (JNICALL *IsMethodSynthetic)\r
-      (jclass clazz, jmethodID method, jboolean *isSyntheticPtr);\r
-\r
-    jvmdiError (JNICALL *GetLoadedClasses)\r
-      (jint *classCountPtr, jclass **classesPtr);\r
-    jvmdiError (JNICALL *GetClassLoaderClasses)\r
-      (jobject initiatingLoader, jint *classesCountPtr, \r
-       jclass **classesPtr);\r
-\r
-    jvmdiError (JNICALL *PopFrame)\r
-      (jthread thread);\r
-    jvmdiError (JNICALL *SetFrameLocation)\r
-      (jframeID frame, jlocation location);\r
-    jvmdiError (JNICALL *GetOperandStack)\r
-      (jframeID frame, jint *operandStackSizePtr, \r
-       JVMDI_operand_stack_element **operandStackPtr);\r
-    jvmdiError (JNICALL *SetOperandStack)\r
-      (jframeID frame, jint operandStackSize, \r
-       JVMDI_operand_stack_element *operandStack);\r
-    jvmdiError (JNICALL *AllInstances)\r
-      (jclass clazz, jint *instanceCountPtr, jobject **instancesPtr);\r
-    jvmdiError (JNICALL *References)\r
-      (jobject obj, JVMDI_object_reference_info *refs);\r
-    jvmdiError (JNICALL *GetClassDefinition)\r
-      (jclass clazz, JVMDI_class_definition *classDefPtr);\r
-    jvmdiError (JNICALL *RedefineClasses)\r
-      (jint classCount, JVMDI_class_definition *classDefs);\r
-\r
-    jvmdiError (JNICALL *GetVersionNumber)\r
-      (jint *versionPtr);\r
-    jvmdiError (JNICALL *GetCapabilities)\r
-      (JVMDI_capabilities *capabilitiesPtr);\r
-\r
-    jvmdiError (JNICALL *GetSourceDebugExtension)\r
-      (jclass clazz, char **sourceDebugExtension);\r
-    jvmdiError (JNICALL *IsMethodObsolete)\r
-      (jclass clazz, jmethodID method, jboolean *isObsoletePtr);\r
-\r
-    jvmdiError (JNICALL *SuspendThreadList)\r
-      (jint reqCount, jthread *reqList, jvmdiError *results); \r
-    jvmdiError (JNICALL *ResumeThreadList)\r
-      (jint reqCount, jthread *reqList, jvmdiError *results); \r
-} JVMDI_Interface_1;\r
-  \r
-#ifndef NO_JVMDI_MACROS\r
-\r
-#define JVMDI_ERROR_DUPLICATE_BREAKPOINT JVMDI_ERROR_DUPLICATE\r
-#define JVMDI_ERROR_NO_SUCH_BREAKPOINT   JVMDI_ERROR_NOT_FOUND\r
-#define JVMDI_ERROR_DUPLICATE_FRAME_POP  JVMDI_ERROR_DUPLICATE\r
-\r
-\r
-static JVMDI_Interface_1 *jvmdi_interface = NULL;\r
-static JavaVM *j_vm;\r
-\r
-#ifdef __cplusplus\r
-#define SetJVMDIfromJNIEnv(a_env) ( (jvmdi_interface == NULL)?  \\r
-              ((a_env)->GetJavaVM(&j_vm),  \\r
-               (j_vm)->GetEnv((void **)&jvmdi_interface,  \\r
-                               JVMDI_VERSION_1)):0)\r
-#else\r
-#define SetJVMDIfromJNIEnv(a_env) ( (jvmdi_interface == NULL)?  \\r
-              ((*a_env)->GetJavaVM(a_env, &j_vm), \\r
-               (*j_vm)->GetEnv(j_vm, (void **)&jvmdi_interface, \\r
-                               JVMDI_VERSION_1)):0)\r
-#endif\r
-\r
-#define JVMDI_SetEventHook(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->SetEventHook(a1) )\r
-#define JVMDI_GetThreadStatus(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetThreadStatus(a1, a2, a3) )\r
-#define JVMDI_GetAllThreads(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetAllThreads(a1, a2) )\r
-#define JVMDI_SuspendThread(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->SuspendThread(a1) )\r
-#define JVMDI_ResumeThread(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->ResumeThread(a1) )\r
-#define JVMDI_StopThread(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->StopThread(a1, a2) )\r
-#define JVMDI_InterruptThread(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->InterruptThread(a1) )\r
-#define JVMDI_SetSingleStep(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->SetEventNotificationMode( \\r
-                                       (a2) ? JVMDI_ENABLE : JVMDI_DISABLE, \\r
-                                        JVMDI_EVENT_SINGLE_STEP, a1) )\r
-#define JVMDI_GetThreadInfo(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetThreadInfo(a1, a2) )\r
-#define JVMDI_RunDebugThread(a_env, a1, a2, a3, a4) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->RunDebugThread(a1, a2, a3, a4) )\r
-#define JVMDI_GetTopThreadGroups(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetTopThreadGroups(a1, a2) )\r
-#define JVMDI_GetThreadGroupInfo(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetThreadGroupInfo(a1, a2) )\r
-#define JVMDI_GetThreadGroupChildren(a_env, a1, a2, a3, a4, a5) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetThreadGroupChildren(a1, a2, a3, a4, a5) )\r
-#define JVMDI_GetCurrentFrame(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetCurrentFrame(a1, a2) )\r
-#define JVMDI_GetCallerFrame(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetCallerFrame(a1, a2) )\r
-#define JVMDI_GetFrameLocation(a_env, a1, a2, a3, a4) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetFrameLocation(a1, a2, a3, a4) )\r
-#define JVMDI_NotifyFramePop(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->NotifyFramePop(a1) )\r
-#define JVMDI_GetLocalObject(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetLocalObject(a1, a2, a3) )\r
-#define JVMDI_GetLocalInt(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetLocalInt(a1, a2, a3) )\r
-#define JVMDI_GetLocalLong(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetLocalLong(a1, a2, a3) )\r
-#define JVMDI_GetLocalFloat(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetLocalFloat(a1, a2, a3) )\r
-#define JVMDI_GetLocalDouble(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetLocalDouble(a1, a2, a3) )\r
-#define JVMDI_SetLocalObject(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->SetLocalObject(a1, a2, a3) )\r
-#define JVMDI_SetLocalInt(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->SetLocalInt(a1, a2, a3) )\r
-#define JVMDI_SetLocalLong(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->SetLocalLong(a1, a2, a3) )\r
-#define JVMDI_SetLocalFloat(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->SetLocalFloat(a1, a2, a3) )\r
-#define JVMDI_SetLocalDouble(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->SetLocalDouble(a1, a2, a3) )\r
-#define JVMDI_CreateRawMonitor(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->CreateRawMonitor(a1, a2) )\r
-#define JVMDI_DestroyRawMonitor(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->DestroyRawMonitor(a1) )\r
-#define JVMDI_RawMonitorEnter(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->RawMonitorEnter(a1) )\r
-#define JVMDI_RawMonitorExit(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->RawMonitorExit(a1) )\r
-#define JVMDI_RawMonitorWait(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->RawMonitorWait(a1, a2) )\r
-#define JVMDI_RawMonitorNotify(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->RawMonitorNotify(a1) )\r
-#define JVMDI_RawMonitorNotifyAll(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->RawMonitorNotifyAll(a1) )\r
-#define JVMDI_SetBreakpoint(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->SetBreakpoint(a1, a2, a3) )\r
-#define JVMDI_ClearBreakpoint(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->ClearBreakpoint(a1, a2, a3) )\r
-#define JVMDI_ClearAllBreakpoints(a_env) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->ClearAllBreakpoints() )\r
-#define JVMDI_SetAllocationHooks(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->SetAllocationHooks(a1, a2) )\r
-#define JVMDI_Allocate(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->Allocate(a1, a2) )\r
-#define JVMDI_Deallocate(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->Deallocate(a1) )\r
-#define JVMDI_GetClassSignature(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetClassSignature(a1, a2) )\r
-#define JVMDI_GetClassStatus(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetClassStatus(a1, a2) )\r
-#define JVMDI_GetSourceFileName(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetSourceFileName(a1, a2) )\r
-#define JVMDI_GetClassModifiers(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetClassModifiers(a1, a2) )\r
-#define JVMDI_GetClassMethods(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetClassMethods(a1, a2, a3) )\r
-#define JVMDI_GetClassFields(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetClassFields(a1, a2, a3) )\r
-#define JVMDI_GetImplementedInterfaces(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetImplementedInterfaces(a1, a2, a3) )\r
-#define JVMDI_IsInterface(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->IsInterface(a1, a2) )\r
-#define JVMDI_IsArrayClass(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->IsArrayClass(a1, a2) )\r
-#define JVMDI_ClassLoader(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetClassLoader(a1, a2) )\r
-#define JVMDI_GetFieldName(a_env, a1, a2, a3, a4) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetFieldName(a1, a2, a3, a4) )\r
-#define JVMDI_GetFieldDeclaringClass(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetFieldDeclaringClass(a1, a2, a3) )\r
-#define JVMDI_GetFieldModifiers(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetFieldModifiers(a1, a2, a3) )\r
-#define JVMDI_GetMethodName(a_env, a1, a2, a3, a4) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetMethodName(a1, a2, a3, a4) )\r
-#define JVMDI_GetMethodDeclaringClass(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetMethodDeclaringClass(a1, a2, a3) )\r
-#define JVMDI_GetMethodModifiers(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetMethodModifiers(a1, a2, a3) )\r
-#define JVMDI_GetMaxStack(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetMaxStack(a1, a2, a3) )\r
-#define JVMDI_GetMaxLocals(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetMaxLocals(a1, a2, a3) )\r
-#define JVMDI_GetArgumentsSize(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetArgumentsSize(a1, a2, a3) )\r
-#define JVMDI_GetLineNumberTable(a_env, a1, a2, a3, a4) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetLineNumberTable(a1, a2, a3, a4) )\r
-#define JVMDI_GetMethodLocation(a_env, a1, a2, a3, a4) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetMethodLocation(a1, a2, a3, a4) )\r
-#define JVMDI_GetLocalVariableTable(a_env, a1, a2, a3, a4) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetLocalVariableTable(a1, a2, a3, a4) )\r
-#define JVMDI_GetExceptionHandlerTable(a_env, a1, a2, a3, a4) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetExceptionHandlerTable(a1, a2, a3, a4) )\r
-#define JVMDI_GetThrownExceptions(a_env, a1, a2, a3, a4) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetThrownExceptions(a1, a2, a3, a4) )\r
-#define JVMDI_GetBytecodes(a_env, a1, a2, a3, a4) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetBytecodes(a1, a2, a3, a4) )\r
-#define JVMDI_IsMethodNative(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->IsMethodNative(a1, a2, a3) )\r
-#define JVMDI_GetLoadedClasses(a_env, a1, a2) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetLoadedClasses(a1, a2) )\r
-#define JVMDI_GetClassLoaderClasses(a_env, a1, a2, a3) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetClassLoaderClasses(a1, a2, a3) )\r
-#define JVMDI_GetVersionNumber(a_env, a1) ( \\r
-              SetJVMDIfromJNIEnv(a_env), \\r
-              jvmdi_interface->GetVersionNumber(a1) )\r
-\r
-#endif /* !NO_JVMDI_MACROS */\r
-\r
-#ifdef __cplusplus\r
-} /* extern "C" */\r
-#endif /* __cplusplus */\r
-\r
-#endif /* !_JAVASOFT_JVMDI_H_ */\r
-\r
-\r
diff --git a/applications/JavaOpenJPEG/java-jni/include/jvmpi.h b/applications/JavaOpenJPEG/java-jni/include/jvmpi.h
deleted file mode 100644 (file)
index 557b231..0000000
+++ /dev/null
@@ -1,642 +0,0 @@
-/*\r
- * @(#)jvmpi.h 1.28 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-#ifndef _JAVASOFT_JVMPI_H_\r
-#define _JAVASOFT_JVMPI_H_\r
-\r
-#include "jni.h"\r
-\r
-#define JVMPI_VERSION_1   ((jint)0x10000001)  /* implied 0 for minor version */\r
-#define JVMPI_VERSION_1_1 ((jint)0x10000002)\r
-#define JVMPI_VERSION_1_2 ((jint)0x10000003)\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-  typedef void (*jvmpi_void_function_of_void)(void *);\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-/****************************************************************\r
- * Profiler interface data structures.\r
- ****************************************************************/\r
-/* identifier types. */\r
-struct _jobjectID;\r
-typedef struct _jobjectID * jobjectID;       /* type of object ids */ \r
-\r
-/* raw monitors */\r
-struct _JVMPI_RawMonitor;\r
-typedef struct _JVMPI_RawMonitor * JVMPI_RawMonitor;\r
-\r
-/* call frame */\r
-typedef struct {\r
-    jint lineno;                      /* line number in the source file */\r
-    jmethodID method_id;              /* method executed in this frame */\r
-} JVMPI_CallFrame;\r
-\r
-/* call trace */\r
-typedef struct {\r
-    JNIEnv *env_id;                   /* Env where trace was recorded */\r
-    jint num_frames;                  /* number of frames in this trace */\r
-    JVMPI_CallFrame *frames;          /* frames */\r
-} JVMPI_CallTrace;\r
-\r
-/* method */\r
-typedef struct {\r
-    char *method_name;                /* name of method */\r
-    char *method_signature;           /* signature of method */\r
-    jint start_lineno;                /* -1 if native, abstract .. */\r
-    jint end_lineno;                  /* -1 if native, abstract .. */\r
-    jmethodID method_id;              /* id assigned to this method */\r
-} JVMPI_Method;\r
-\r
-/* Field */\r
-typedef struct {\r
-    char *field_name;                 /* name of field */\r
-    char *field_signature;            /* signature of field */\r
-} JVMPI_Field;\r
-\r
-/* line number info for a compiled method */\r
-typedef struct {\r
-    jint offset;                      /* offset from beginning of method */\r
-    jint lineno;                      /* lineno from beginning of src file */\r
-} JVMPI_Lineno;\r
-\r
-/* event */\r
-typedef struct {\r
-    jint event_type;                  /* event_type */\r
-    JNIEnv *env_id;                   /* env where this event occured */\r
-  \r
-    union {\r
-        struct {\r
-           const char *class_name;   /* class name */\r
-           char *source_name;        /* name of source file */\r
-           jint num_interfaces;      /* number of interfaces implemented */\r
-           jint num_methods;         /* number of methods in the class */\r
-           JVMPI_Method *methods;    /* methods */\r
-           jint num_static_fields;   /* number of static fields */\r
-           JVMPI_Field *statics;     /* static fields */\r
-           jint num_instance_fields; /* number of instance fields */\r
-           JVMPI_Field *instances;   /* instance fields */\r
-           jobjectID class_id;       /* id of the class object */\r
-       } class_load;\r
-\r
-        struct {\r
-           jobjectID class_id;       /* id of the class object */\r
-       } class_unload;\r
-\r
-        struct {\r
-           unsigned char *class_data;        /* content of class file */\r
-           jint class_data_len;              /* class file length */\r
-           unsigned char *new_class_data;    /* instrumented class file */\r
-           jint new_class_data_len;          /* new class file length */\r
-           void * (*malloc_f)(unsigned int); /* memory allocation function */\r
-       } class_load_hook;\r
-\r
-        struct {\r
-            jint arena_id;\r
-           jobjectID class_id;       /* id of object class */\r
-           jint is_array;            /* JVMPI_NORMAL_OBJECT, ... */\r
-           jint size;                /* size in number of bytes */\r
-           jobjectID obj_id;         /* id assigned to this object */\r
-        } obj_alloc;\r
-\r
-        struct {\r
-           jobjectID obj_id;         /* id of the object */\r
-       } obj_free;\r
-\r
-        struct {\r
-           jint arena_id;            /* cur arena id */\r
-           jobjectID obj_id;         /* cur object id */\r
-           jint new_arena_id;        /* new arena id */\r
-           jobjectID new_obj_id;     /* new object id */         \r
-       } obj_move;\r
-\r
-        struct {\r
-           jint arena_id;            /* id of arena */\r
-           const char *arena_name;   /* name of arena */\r
-       } new_arena;\r
-\r
-        struct {\r
-           jint arena_id;            /* id of arena */\r
-       } delete_arena;\r
-\r
-        struct {\r
-           char *thread_name;        /* name of thread */\r
-           char *group_name;         /* name of group */\r
-           char *parent_name;        /* name of parent */\r
-           jobjectID thread_id;      /* id of the thread object */\r
-           JNIEnv *thread_env_id;\r
-        } thread_start;\r
-\r
-        struct {\r
-           int dump_level;           /* level of the heap dump info */\r
-           char *begin;              /* where all the root records begin,\r
-                                        please see the heap dump buffer \r
-                                        format described below */\r
-           char *end;                /* where the object records end. */\r
-           jint num_traces;          /* number of thread traces, \r
-                                        0 if dump level = JVMPI_DUMP_LEVEL_0 */\r
-           JVMPI_CallTrace *traces;  /* thread traces collected during \r
-                                        heap dump */ \r
-       } heap_dump;\r
-\r
-        struct {\r
-           jobjectID obj_id;         /* object id */\r
-           jobject ref_id;           /* id assigned to the globalref */\r
-       } jni_globalref_alloc;\r
-      \r
-        struct {\r
-           jobject ref_id;           /* id of the global ref */\r
-       } jni_globalref_free;\r
-\r
-        struct {\r
-           jmethodID method_id;      /* method */\r
-       } method;\r
-\r
-        struct {\r
-           jmethodID method_id;      /* id of method */\r
-           jobjectID obj_id;         /* id of target object */\r
-       } method_entry2;\r
-\r
-        struct {\r
-           jmethodID method_id;        /* id of compiled method */\r
-           void *code_addr;            /* code start addr. in memory */\r
-           jint code_size;             /* code size */\r
-           jint lineno_table_size;     /* size of lineno table */\r
-           JVMPI_Lineno *lineno_table; /* lineno info */\r
-       } compiled_method_load;\r
-        \r
-        struct {\r
-           jmethodID method_id;        /* id of unloaded compiled method */\r
-       } compiled_method_unload;\r
-\r
-       struct {\r
-           jmethodID method_id; /* id of the method the instruction belongs to */\r
-           jint offset;         /* instruction offset in the method's bytecode */\r
-           union {\r
-               struct {\r
-                   jboolean is_true; /* whether true or false branch is taken  */\r
-               } if_info;\r
-               struct {\r
-                   jint key; /* top stack value used as an index */\r
-                   jint low; /* min value of the index           */\r
-                   jint hi;  /* max value of the index           */\r
-               } tableswitch_info;\r
-               struct {\r
-                   jint chosen_pair_index; /* actually chosen pair index (0-based)\r
-                                             * if chosen_pair_index == pairs_total then\r
-                                             * the 'default' branch is taken\r
-                                             */\r
-                   jint pairs_total;       /* total number of lookupswitch pairs */\r
-               } lookupswitch_info;\r
-           } u;\r
-       } instruction;\r
-       \r
-        struct {\r
-           char *begin;                /* beginning of dump buffer, \r
-                                          see below for format */\r
-           char *end;                  /* end of dump buffer */\r
-           jint num_traces;            /* number of traces */\r
-           JVMPI_CallTrace *traces;    /* traces of all threads */\r
-           jint *threads_status;       /* status of all threads */\r
-       } monitor_dump;\r
-\r
-        struct {\r
-           const char *name;           /* name of raw monitor */\r
-           JVMPI_RawMonitor id;        /* id */\r
-       } raw_monitor;\r
-\r
-        struct {\r
-           jobjectID object;           /* Java object */\r
-       } monitor;\r
-\r
-        struct {\r
-           jobjectID object;           /* Java object */\r
-           jlong timeout;              /* timeout period */\r
-       } monitor_wait;\r
-\r
-        struct {\r
-           jlong used_objects;\r
-           jlong used_object_space;\r
-           jlong total_object_space;\r
-       } gc_info;\r
-\r
-        struct {\r
-           jint data_len;\r
-           char *data;\r
-       } object_dump;\r
-    } u;\r
-} JVMPI_Event;\r
-\r
-/* interface functions */\r
-typedef struct {\r
-    jint version;   /* JVMPI version */\r
-    \r
-    /* ------interface implemented by the profiler------ */\r
-\r
-    /**\r
-     * Function called by the JVM to notify an event. \r
-     */\r
-    void (*NotifyEvent)(JVMPI_Event *event);\r
-  \r
-    /* ------interface implemented by the JVM------ */\r
-    \r
-    /**\r
-     * Function called by the profiler to enable/disable/send notification \r
-     * for a particular event type.  \r
-     * \r
-     * event_type - event_type\r
-     * arg - event specific arg\r
-     *\r
-     * return JVMPI_NOT_AVAILABLE, JVMPI_SUCCESS or JVMPI_FAIL\r
-     */\r
-    jint (*EnableEvent)(jint event_type, void *arg);\r
-    jint (*DisableEvent)(jint event_type, void *arg);\r
-    jint (*RequestEvent)(jint event_type, void *arg);\r
-  \r
-    /**\r
-     * Function called by the profiler to get a stack\r
-     * trace from the JVM.\r
-     *\r
-     * trace - trace data structure to be filled\r
-     * depth - maximum depth of the trace.\r
-     */\r
-    void (*GetCallTrace)(JVMPI_CallTrace *trace, jint depth);\r
-\r
-    /**\r
-     * Function called by profiler when it wants to exit/stop.\r
-     */\r
-    void (*ProfilerExit)(jint);\r
-\r
-    /**\r
-     * Utility functions provided by the JVM.\r
-     */\r
-    JVMPI_RawMonitor (*RawMonitorCreate)(char *lock_name);\r
-    void (*RawMonitorEnter)(JVMPI_RawMonitor lock_id);\r
-    void (*RawMonitorExit)(JVMPI_RawMonitor lock_id);\r
-    void (*RawMonitorWait)(JVMPI_RawMonitor lock_id, jlong ms);\r
-    void (*RawMonitorNotifyAll)(JVMPI_RawMonitor lock_id);\r
-    void (*RawMonitorDestroy)(JVMPI_RawMonitor lock_id);\r
-\r
-    /**\r
-     * Function called by the profiler to get the current thread's CPU time.\r
-     *\r
-     * return time in nanoseconds;\r
-     */\r
-    jlong (*GetCurrentThreadCpuTime)(void);\r
-\r
-    void (*SuspendThread)(JNIEnv *env);\r
-    void (*ResumeThread)(JNIEnv *env);\r
-    jint (*GetThreadStatus)(JNIEnv *env);\r
-    jboolean (*ThreadHasRun)(JNIEnv *env);\r
-\r
-    /* This function can be called safely only after JVMPI_EVENT_VM_INIT_DONE\r
-       notification by the JVM. */\r
-    jint (*CreateSystemThread)(char *name, jint priority, void (*f)(void *));\r
-\r
-    /* thread local storage access functions to avoid locking in time \r
-       critical functions */\r
-    void (*SetThreadLocalStorage)(JNIEnv *env_id, void *ptr);\r
-    void * (*GetThreadLocalStorage)(JNIEnv *env_id);\r
-\r
-    /* control GC */\r
-    void (*DisableGC)(void);\r
-    void (*EnableGC)(void);\r
-    void (*RunGC)(void);\r
-\r
-    jobjectID (*GetThreadObject)(JNIEnv *env);\r
-    jobjectID (*GetMethodClass)(jmethodID mid);\r
-\r
-    /* JNI <-> jobject conversions */\r
-    jobject   (*jobjectID2jobject)(jobjectID jid);\r
-    jobjectID (*jobject2jobjectID)(jobject jobj);\r
-\r
-    void (*SuspendThreadList)\r
-      (jint reqCount, JNIEnv **reqList, jint *results);\r
-    void (*ResumeThreadList)\r
-      (jint reqCount, JNIEnv **reqList, jint *results);\r
-} JVMPI_Interface;\r
-\r
-/* type of argument passed to RequestEvent for heap dumps */\r
-typedef struct {\r
-    jint heap_dump_level;\r
-} JVMPI_HeapDumpArg;\r
-\r
-/**********************************************************************\r
- * Constants and formats used in JVM Profiler Interface.\r
- **********************************************************************/\r
-/*\r
- * Event type constants.\r
- */\r
-#define JVMPI_EVENT_METHOD_ENTRY            ((jint)1) \r
-#define JVMPI_EVENT_METHOD_ENTRY2           ((jint)2) \r
-#define JVMPI_EVENT_METHOD_EXIT             ((jint)3) \r
-\r
-#define JVMPI_EVENT_OBJECT_ALLOC            ((jint)4) \r
-#define JVMPI_EVENT_OBJECT_FREE             ((jint)5) \r
-#define JVMPI_EVENT_OBJECT_MOVE             ((jint)6) \r
-\r
-#define JVMPI_EVENT_COMPILED_METHOD_LOAD    ((jint)7) \r
-#define JVMPI_EVENT_COMPILED_METHOD_UNLOAD  ((jint)8) \r
-\r
-#define JVMPI_EVENT_INSTRUCTION_START       ((jint)9) \r
-\r
-#define JVMPI_EVENT_THREAD_START           ((jint)33) \r
-#define JVMPI_EVENT_THREAD_END             ((jint)34) \r
-\r
-#define JVMPI_EVENT_CLASS_LOAD_HOOK        ((jint)35) \r
-\r
-#define JVMPI_EVENT_HEAP_DUMP                     ((jint)37) \r
-#define JVMPI_EVENT_JNI_GLOBALREF_ALLOC           ((jint)38) \r
-#define JVMPI_EVENT_JNI_GLOBALREF_FREE            ((jint)39) \r
-#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_ALLOC      ((jint)40) \r
-#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_FREE       ((jint)41) \r
-#define JVMPI_EVENT_CLASS_LOAD                    ((jint)42) \r
-#define JVMPI_EVENT_CLASS_UNLOAD                  ((jint)43) \r
-#define JVMPI_EVENT_DATA_DUMP_REQUEST             ((jint)44) \r
-#define JVMPI_EVENT_DATA_RESET_REQUEST            ((jint)45) \r
-\r
-#define JVMPI_EVENT_JVM_INIT_DONE          ((jint)46) \r
-#define JVMPI_EVENT_JVM_SHUT_DOWN          ((jint)47) \r
-\r
-#define JVMPI_EVENT_ARENA_NEW              ((jint)48)\r
-#define JVMPI_EVENT_ARENA_DELETE           ((jint)49)\r
-\r
-#define JVMPI_EVENT_OBJECT_DUMP            ((jint)50)\r
-\r
-#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTER   ((jint)51)\r
-#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTERED ((jint)52)\r
-#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_EXIT    ((jint)53)\r
-#define JVMPI_EVENT_MONITOR_CONTENDED_ENTER       ((jint)54)\r
-#define JVMPI_EVENT_MONITOR_CONTENDED_ENTERED     ((jint)55)\r
-#define JVMPI_EVENT_MONITOR_CONTENDED_EXIT        ((jint)56)\r
-#define JVMPI_EVENT_MONITOR_WAIT                  ((jint)57)\r
-#define JVMPI_EVENT_MONITOR_WAITED                ((jint)58)\r
-#define JVMPI_EVENT_MONITOR_DUMP                  ((jint)59)\r
-\r
-#define JVMPI_EVENT_GC_START                      ((jint)60)\r
-#define JVMPI_EVENT_GC_FINISH                     ((jint)61)\r
-\r
-#define JVMPI_MAX_EVENT_TYPE_VAL                  ((jint)61)\r
-\r
-/* old definitions, to be removed */\r
-#define JVMPI_EVENT_LOAD_COMPILED_METHOD          ((jint)7) \r
-#define JVMPI_EVENT_UNLOAD_COMPILED_METHOD        ((jint)8) \r
-#define JVMPI_EVENT_NEW_ARENA                     ((jint)48)\r
-#define JVMPI_EVENT_DELETE_ARENA                  ((jint)49)\r
-#define JVMPI_EVENT_DUMP_DATA_REQUEST             ((jint)44) \r
-#define JVMPI_EVENT_RESET_DATA_REQUEST            ((jint)45) \r
-#define JVMPI_EVENT_OBJ_ALLOC                     ((jint)4) \r
-#define JVMPI_EVENT_OBJ_FREE                      ((jint)5) \r
-#define JVMPI_EVENT_OBJ_MOVE                      ((jint)6) \r
-\r
-#define JVMPI_REQUESTED_EVENT                     ((jint)0x10000000)\r
-\r
-\r
\r
-/* \r
- * enabling/disabling event notification.\r
- */\r
-/* results */\r
-#define JVMPI_SUCCESS                    ((jint)0)\r
-#define JVMPI_NOT_AVAILABLE              ((jint)1)\r
-#define JVMPI_FAIL                       ((jint)-1)\r
-\r
-/*\r
- * Thread status\r
- */\r
-enum {\r
-    JVMPI_THREAD_RUNNABLE = 1,\r
-    JVMPI_THREAD_MONITOR_WAIT,\r
-    JVMPI_THREAD_CONDVAR_WAIT\r
-};\r
-\r
-#define JVMPI_THREAD_SUSPENDED        0x8000\r
-#define JVMPI_THREAD_INTERRUPTED      0x4000\r
-\r
-/*\r
- * Thread priority\r
- */\r
-#define JVMPI_MINIMUM_PRIORITY     1\r
-#define JVMPI_MAXIMUM_PRIORITY     10\r
-#define JVMPI_NORMAL_PRIORITY      5\r
-\r
-/*\r
- * Object type constants.\r
- */\r
-#define JVMPI_NORMAL_OBJECT             ((jint)0)\r
-#define JVMPI_CLASS                     ((jint)2)\r
-#define JVMPI_BOOLEAN                   ((jint)4)\r
-#define JVMPI_CHAR                       ((jint)5)\r
-#define JVMPI_FLOAT                      ((jint)6)\r
-#define JVMPI_DOUBLE                     ((jint)7)\r
-#define JVMPI_BYTE                       ((jint)8)\r
-#define JVMPI_SHORT                      ((jint)9)\r
-#define JVMPI_INT                        ((jint)10)\r
-#define JVMPI_LONG                       ((jint)11)    \r
-\r
-/*\r
- * Monitor dump constants.\r
- */\r
-\r
-#define JVMPI_MONITOR_JAVA          0x01\r
-#define JVMPI_MONITOR_RAW           0x02\r
-\r
-/*\r
- * Heap dump constants.\r
- */\r
-#define JVMPI_GC_ROOT_UNKNOWN       0xff\r
-#define JVMPI_GC_ROOT_JNI_GLOBAL    0x01\r
-#define JVMPI_GC_ROOT_JNI_LOCAL     0x02\r
-#define JVMPI_GC_ROOT_JAVA_FRAME    0x03\r
-#define JVMPI_GC_ROOT_NATIVE_STACK  0x04\r
-#define JVMPI_GC_ROOT_STICKY_CLASS  0x05\r
-#define JVMPI_GC_ROOT_THREAD_BLOCK  0x06\r
-#define JVMPI_GC_ROOT_MONITOR_USED  0x07\r
-#define JVMPI_GC_ROOT_THREAD_OBJ    0x08\r
-\r
-#define JVMPI_GC_CLASS_DUMP         0x20\r
-#define JVMPI_GC_INSTANCE_DUMP      0x21 \r
-#define JVMPI_GC_OBJ_ARRAY_DUMP     0x22\r
-#define JVMPI_GC_PRIM_ARRAY_DUMP    0x23\r
-\r
-/*\r
- * Dump levels\r
- */\r
-#define JVMPI_DUMP_LEVEL_0    ((jint)0)\r
-#define JVMPI_DUMP_LEVEL_1    ((jint)1)\r
-#define JVMPI_DUMP_LEVEL_2    ((jint)2)\r
-\r
-/* Types used in dumps -\r
- *\r
- * u1: 1 byte\r
- * u2: 2 bytes\r
- * u4: 4 bytes\r
- * u8: 8 bytes\r
- *\r
- * ty: u1 where:\r
- *     JVMPI_CLASS:   object\r
- *     JVMPI_BOOLEAN: boolean\r
- *     JVMPI_CHAR:    char\r
- *     JVMPI_FLOAT:   float\r
- *     JVMPI_DOUBLE:  double\r
- *     JVMPI_BYTE:    byte\r
- *     JVMPI_SHORT:   short\r
- *     JVMPI_INT:     int\r
- *     JVMPI_LONG:    long\r
- *\r
- * vl: values, exact type depends on the type of the value:\r
- *     JVMPI_BOOLEAN & JVMPI_BYTE:   u1\r
- *     JVMPI_SHORT & JVMPI_CHAR:     u2\r
- *     JVMPI_INT & JVMPI_FLOAT:      u4\r
- *     JVMPI_LONG & JVMPI_DOUBLE:    u8\r
- *     JVMPI_CLASS:                  jobjectID\r
- */\r
-\r
-/* Format of the monitor dump buffer:\r
- *\r
- *               u1                          monitor type\r
- *\r
- *               JVMPI_MONITOR_JAVA          Java monitor\r
- *\r
- *                          jobjectID        object\r
- *                          JNIEnv *         owner thread\r
- *                          u4               entry count\r
- *                          u4               # of threads waiting to enter\r
- *                          [JNIEnv *]*      threads waiting to enter\r
- *                          u4               # of threads waiting to be notified\r
- *                          [JNIEnv *]*      threads waiting to be notified\r
- *\r
- *               JVMPI_MONITOR_RAW           raw monitor\r
- *\r
- *                          char *           name\r
- *                          JVMPI_RawMonitor raw monitor\r
- *                          JNIEnv *         owner thread\r
- *                          u4               entry count\r
- *                          u4               # of threads waiting to enter\r
- *                          [JNIEnv *]*      threads waiting to enter\r
- *                          u4               # of threads waiting to be notified\r
- *                          [JNIEnv *]*      threads waiting to be notified\r
- */\r
-\r
-/* Format of the heap dump buffer depends on the dump level \r
- * specified in the JVMPI_HeapDumpArg passed to RequestEvent as arg. \r
- * The default is JVMPI_DUMP_LEVEL_2.\r
- *\r
- * JVMPI_DUMP_LEVEL_0:\r
- * \r
- *               u1                          object type (JVMPI_CLASS ...)\r
- *               jobjectID                   object\r
- *\r
- * JVMPI_DUMP_LEVEL_1 and JVMPI_DUMP_LEVEL_2 use the following format:  \r
- * In the case of JVMPI_DUMP_LEVEL_1 the values of primitive fields in object \r
- * instance dumps , the values of primitive statics in class dumps and the \r
- * values of primitive arrays are excluded.  JVMPI_DUMP_LEVEL_2 includes the\r
- * primitive values.\r
- *\r
- *               u1                          record type\r
- *\r
- *               JVMPI_GC_ROOT_UNKNOWN       unknown root\r
- *\r
- *                          jobjectID        object\r
- *\r
- *               JVMPI_GC_ROOT_JNI_GLOBAL    JNI global ref root\r
- *\r
- *                          jobjectID        object\r
- *                          jobject          JNI global reference\r
- *\r
- *               JVMPI_GC_ROOT_JNI_LOCAL     JNI local ref\r
- *\r
- *                          jobjectID        object\r
- *                          JNIEnv *         thread\r
- *                          u4               frame # in stack trace (-1 for empty)\r
- *\r
- *               JVMPI_GC_ROOT_JAVA_FRAME    Java stack frame\r
- *\r
- *                          jobjectID        object\r
- *                          JNIEnv *         thread\r
- *                          u4               frame # in stack trace (-1 for empty)\r
- *\r
- *               JVMPI_GC_ROOT_NATIVE_STACK  Native stack\r
- *\r
- *                          jobjectID        object\r
- *                          JNIEnv *         thread\r
- *\r
- *               JVMPI_GC_ROOT_STICKY_CLASS  System class\r
- *\r
- *                          jobjectID        class object\r
- *\r
- *               JVMPI_GC_ROOT_THREAD_BLOCK  Reference from thread block\r
- *\r
- *                          jobjectID        thread object\r
- *                          JNIEnv *         thread\r
- *\r
- *               JVMPI_GC_ROOT_MONITOR_USED  Busy monitor\r
- *\r
- *                          jobjectID        object\r
- *\r
- *               JVMPI_GC_CLASS_DUMP         dump of a class object\r
- *\r
- *                          jobjectID        class\r
- *                          jobjectID        super\r
- *                          jobjectID        class loader\r
- *                          jobjectID        signers\r
- *                          jobjectID        protection domain\r
- *                          jobjectID        class name\r
- *                          void *           reserved\r
- *\r
- *                          u4               instance size (in bytes)\r
- *\r
- *                          [jobjectID]*     interfaces\r
- *\r
- *                          u2               size of constant pool\r
- *                          [u2,             constant pool index,\r
- *                           ty,             type, \r
- *                           vl]*            value\r
- *\r
- *                          [vl]*            static field values\r
- *\r
- *               JVMPI_GC_INSTANCE_DUMP      dump of a normal object\r
- *\r
- *                          jobjectID        object\r
- *                          jobjectID        class\r
- *                          u4               number of bytes that follow\r
- *                          [vl]*            instance field values (class, followed\r
- *                                           by super, super's super ...)\r
- *\r
- *               JVMPI_GC_OBJ_ARRAY_DUMP     dump of an object array\r
- *\r
- *                          jobjectID        array object\r
- *                          u4               number of elements\r
- *                          jobjectID        element class\r
- *                          [jobjectID]*     elements\r
- *\r
- *               JVMPI_GC_PRIM_ARRAY_DUMP    dump of a primitive array\r
- *\r
- *                          jobjectID        array object\r
- *                          u4               number of elements\r
- *                          ty               element type\r
- *                          [vl]*            elements\r
- *\r
- */\r
-\r
-/* Format of the dump received in JVMPI_EVENT_OBJECT_DUMP:\r
- * All the records have JVMPI_DUMP_LEVEL_2 information.\r
- *\r
- *               u1                          record type\r
- *\r
- *                     followed by a:\r
- *\r
- *                          JVMPI_GC_CLASS_DUMP,\r
- *                          JVMPI_GC_INSTANCE_DUMP,\r
- *                          JVMPI_GC_OBJ_ARRAY_DUMP, or\r
- *                          JVMPI_GC_PRIM_ARRAY_DUMP record.\r
- */\r
-\r
-#endif /* !_JAVASOFT_JVMPI_H_ */\r
diff --git a/applications/JavaOpenJPEG/java-jni/include/jvmti.h b/applications/JavaOpenJPEG/java-jni/include/jvmti.h
deleted file mode 100644 (file)
index de24e3e..0000000
+++ /dev/null
@@ -1,2181 +0,0 @@
-#ifdef USE_PRAGMA_IDENT_HDR\r
-#pragma ident "@(#)jvmtiLib.xsl        1.32 04/06/01 20:19:53 JVM"\r
-#endif\r
-/*\r
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.\r
- */\r
-\r
-    /* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */\r
-\r
-\r
-    /* Include file for the Java(tm) Virtual Machine Tool Interface */\r
-\r
-#ifndef _JAVA_JVMTI_H_\r
-#define _JAVA_JVMTI_H_\r
-\r
-#include "jni.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-enum {\r
-    JVMTI_VERSION_1   = 0x30010000,\r
-    JVMTI_VERSION_1_0 = 0x30010000,\r
-\r
-    JVMTI_VERSION = 0x30000000 + (1 * 0x10000) + (0 * 0x100) + 33  /* version: 1.0.33 */\r
-};\r
-\r
-JNIEXPORT jint JNICALL \r
-Agent_OnLoad(JavaVM *vm, char *options, void *reserved);\r
-\r
-JNIEXPORT void JNICALL \r
-Agent_OnUnload(JavaVM *vm);\r
-\r
-    /* Forward declaration of the environment */\r
-        \r
-struct _jvmtiEnv;\r
-\r
-struct jvmtiInterface_1_;\r
-  \r
-#ifdef __cplusplus\r
-typedef _jvmtiEnv jvmtiEnv;\r
-#else\r
-typedef const struct jvmtiInterface_1_ *jvmtiEnv;\r
-#endif /* __cplusplus */\r
-\r
-/* Derived Base Types */\r
-\r
-typedef jobject jthread;\r
-typedef jobject jthreadGroup;\r
-typedef jlong jlocation;\r
-struct _jrawMonitorID;\r
-typedef struct _jrawMonitorID *jrawMonitorID;\r
-typedef struct JNINativeInterface_ jniNativeInterface;\r
-\r
-    /* Constants */\r
-\r
-\r
-    /* Thread State Flags */ \r
-\r
-enum {\r
-    JVMTI_THREAD_STATE_ALIVE = 0x0001,\r
-    JVMTI_THREAD_STATE_TERMINATED = 0x0002,\r
-    JVMTI_THREAD_STATE_RUNNABLE = 0x0004,\r
-    JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400,\r
-    JVMTI_THREAD_STATE_WAITING = 0x0080,\r
-    JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010,\r
-    JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020,\r
-    JVMTI_THREAD_STATE_SLEEPING = 0x0040,\r
-    JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100,\r
-    JVMTI_THREAD_STATE_PARKED = 0x0200,\r
-    JVMTI_THREAD_STATE_SUSPENDED = 0x100000,\r
-    JVMTI_THREAD_STATE_INTERRUPTED = 0x200000,\r
-    JVMTI_THREAD_STATE_IN_NATIVE = 0x400000,\r
-    JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000,\r
-    JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000,\r
-    JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000\r
-};\r
-\r
-    /* java.lang.Thread.State Conversion Masks */ \r
-\r
-enum {\r
-    JVMTI_JAVA_LANG_THREAD_STATE_MASK = JVMTI_THREAD_STATE_TERMINATED | JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT,\r
-    JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0,\r
-    JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED,\r
-    JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE,\r
-    JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER,\r
-    JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY,\r
-    JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT\r
-};\r
-\r
-    /* Thread Priority Constants */ \r
-\r
-enum {\r
-    JVMTI_THREAD_MIN_PRIORITY = 1,\r
-    JVMTI_THREAD_NORM_PRIORITY = 5,\r
-    JVMTI_THREAD_MAX_PRIORITY = 10\r
-};\r
-\r
-    /* Heap Object Filter Enumeration */ \r
-\r
-typedef enum {\r
-    JVMTI_HEAP_OBJECT_TAGGED = 1,\r
-    JVMTI_HEAP_OBJECT_UNTAGGED = 2,\r
-    JVMTI_HEAP_OBJECT_EITHER = 3\r
-} jvmtiHeapObjectFilter;\r
-\r
-    /* Heap Root Kind Enumeration */ \r
-\r
-typedef enum {\r
-    JVMTI_HEAP_ROOT_JNI_GLOBAL = 1,\r
-    JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2,\r
-    JVMTI_HEAP_ROOT_MONITOR = 3,\r
-    JVMTI_HEAP_ROOT_STACK_LOCAL = 4,\r
-    JVMTI_HEAP_ROOT_JNI_LOCAL = 5,\r
-    JVMTI_HEAP_ROOT_THREAD = 6,\r
-    JVMTI_HEAP_ROOT_OTHER = 7\r
-} jvmtiHeapRootKind;\r
-\r
-    /* Object Reference Enumeration */ \r
-\r
-typedef enum {\r
-    JVMTI_REFERENCE_CLASS = 1,\r
-    JVMTI_REFERENCE_FIELD = 2,\r
-    JVMTI_REFERENCE_ARRAY_ELEMENT = 3,\r
-    JVMTI_REFERENCE_CLASS_LOADER = 4,\r
-    JVMTI_REFERENCE_SIGNERS = 5,\r
-    JVMTI_REFERENCE_PROTECTION_DOMAIN = 6,\r
-    JVMTI_REFERENCE_INTERFACE = 7,\r
-    JVMTI_REFERENCE_STATIC_FIELD = 8,\r
-    JVMTI_REFERENCE_CONSTANT_POOL = 9\r
-} jvmtiObjectReferenceKind;\r
-\r
-    /* Iteration Control Enumeration */ \r
-\r
-typedef enum {\r
-    JVMTI_ITERATION_CONTINUE = 1,\r
-    JVMTI_ITERATION_IGNORE = 2,\r
-    JVMTI_ITERATION_ABORT = 0\r
-} jvmtiIterationControl;\r
-\r
-    /* Class Status Flags */ \r
-\r
-enum {\r
-    JVMTI_CLASS_STATUS_VERIFIED = 1,\r
-    JVMTI_CLASS_STATUS_PREPARED = 2,\r
-    JVMTI_CLASS_STATUS_INITIALIZED = 4,\r
-    JVMTI_CLASS_STATUS_ERROR = 8,\r
-    JVMTI_CLASS_STATUS_ARRAY = 16,\r
-    JVMTI_CLASS_STATUS_PRIMITIVE = 32\r
-};\r
-\r
-    /* Event Enable/Disable */ \r
-\r
-typedef enum {\r
-    JVMTI_ENABLE = 1,\r
-    JVMTI_DISABLE = 0\r
-} jvmtiEventMode;\r
-\r
-    /* Extension Function/Event Parameter Types */ \r
-\r
-typedef enum {\r
-    JVMTI_TYPE_JBYTE = 101,\r
-    JVMTI_TYPE_JCHAR = 102,\r
-    JVMTI_TYPE_JSHORT = 103,\r
-    JVMTI_TYPE_JINT = 104,\r
-    JVMTI_TYPE_JLONG = 105,\r
-    JVMTI_TYPE_JFLOAT = 106,\r
-    JVMTI_TYPE_JDOUBLE = 107,\r
-    JVMTI_TYPE_JBOOLEAN = 108,\r
-    JVMTI_TYPE_JOBJECT = 109,\r
-    JVMTI_TYPE_JTHREAD = 110,\r
-    JVMTI_TYPE_JCLASS = 111,\r
-    JVMTI_TYPE_JVALUE = 112,\r
-    JVMTI_TYPE_JFIELDID = 113,\r
-    JVMTI_TYPE_JMETHODID = 114,\r
-    JVMTI_TYPE_CCHAR = 115,\r
-    JVMTI_TYPE_CVOID = 116,\r
-    JVMTI_TYPE_JNIENV = 117\r
-} jvmtiParamTypes;\r
-\r
-    /* Extension Function/Event Parameter Kinds */ \r
-\r
-typedef enum {\r
-    JVMTI_KIND_IN = 91,\r
-    JVMTI_KIND_IN_PTR = 92,\r
-    JVMTI_KIND_IN_BUF = 93,\r
-    JVMTI_KIND_ALLOC_BUF = 94,\r
-    JVMTI_KIND_ALLOC_ALLOC_BUF = 95,\r
-    JVMTI_KIND_OUT = 96,\r
-    JVMTI_KIND_OUT_BUF = 97\r
-} jvmtiParamKind;\r
-\r
-    /* Timer Kinds */ \r
-\r
-typedef enum {\r
-    JVMTI_TIMER_USER_CPU = 30,\r
-    JVMTI_TIMER_TOTAL_CPU = 31,\r
-    JVMTI_TIMER_ELAPSED = 32\r
-} jvmtiTimerKind;\r
-\r
-    /* Phases of execution */ \r
-\r
-typedef enum {\r
-    JVMTI_PHASE_ONLOAD = 1,\r
-    JVMTI_PHASE_PRIMORDIAL = 2,\r
-    JVMTI_PHASE_START = 6,\r
-    JVMTI_PHASE_LIVE = 4,\r
-    JVMTI_PHASE_DEAD = 8\r
-} jvmtiPhase;\r
-\r
-    /* Version Interface Types */ \r
-\r
-enum {\r
-    JVMTI_VERSION_INTERFACE_JNI = 0x00000000,\r
-    JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000\r
-};\r
-\r
-    /* Version Masks */ \r
-\r
-enum {\r
-    JVMTI_VERSION_MASK_INTERFACE_TYPE = 0x70000000,\r
-    JVMTI_VERSION_MASK_MAJOR = 0x0FFF0000,\r
-    JVMTI_VERSION_MASK_MINOR = 0x0000FF00,\r
-    JVMTI_VERSION_MASK_MICRO = 0x000000FF\r
-};\r
-\r
-    /* Version Shifts */ \r
-\r
-enum {\r
-    JVMTI_VERSION_SHIFT_MAJOR = 16,\r
-    JVMTI_VERSION_SHIFT_MINOR = 8,\r
-    JVMTI_VERSION_SHIFT_MICRO = 0\r
-};\r
-\r
-    /* Verbose Flag Enumeration */ \r
-\r
-typedef enum {\r
-    JVMTI_VERBOSE_OTHER = 0,\r
-    JVMTI_VERBOSE_GC = 1,\r
-    JVMTI_VERBOSE_CLASS = 2,\r
-    JVMTI_VERBOSE_JNI = 4\r
-} jvmtiVerboseFlag;\r
-\r
-    /* JLocation Format Enumeration */ \r
-\r
-typedef enum {\r
-    JVMTI_JLOCATION_JVMBCI = 1,\r
-    JVMTI_JLOCATION_MACHINEPC = 2,\r
-    JVMTI_JLOCATION_OTHER = 0\r
-} jvmtiJlocationFormat;\r
-\r
-    /* Errors */\r
-\r
-typedef enum {\r
-    JVMTI_ERROR_NONE = 0,\r
-    JVMTI_ERROR_INVALID_THREAD = 10,\r
-    JVMTI_ERROR_INVALID_THREAD_GROUP = 11,\r
-    JVMTI_ERROR_INVALID_PRIORITY = 12,\r
-    JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13,\r
-    JVMTI_ERROR_THREAD_SUSPENDED = 14,\r
-    JVMTI_ERROR_THREAD_NOT_ALIVE = 15,\r
-    JVMTI_ERROR_INVALID_OBJECT = 20,\r
-    JVMTI_ERROR_INVALID_CLASS = 21,\r
-    JVMTI_ERROR_CLASS_NOT_PREPARED = 22,\r
-    JVMTI_ERROR_INVALID_METHODID = 23,\r
-    JVMTI_ERROR_INVALID_LOCATION = 24,\r
-    JVMTI_ERROR_INVALID_FIELDID = 25,\r
-    JVMTI_ERROR_NO_MORE_FRAMES = 31,\r
-    JVMTI_ERROR_OPAQUE_FRAME = 32,\r
-    JVMTI_ERROR_TYPE_MISMATCH = 34,\r
-    JVMTI_ERROR_INVALID_SLOT = 35,\r
-    JVMTI_ERROR_DUPLICATE = 40,\r
-    JVMTI_ERROR_NOT_FOUND = 41,\r
-    JVMTI_ERROR_INVALID_MONITOR = 50,\r
-    JVMTI_ERROR_NOT_MONITOR_OWNER = 51,\r
-    JVMTI_ERROR_INTERRUPT = 52,\r
-    JVMTI_ERROR_INVALID_CLASS_FORMAT = 60,\r
-    JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61,\r
-    JVMTI_ERROR_FAILS_VERIFICATION = 62,\r
-    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63,\r
-    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64,\r
-    JVMTI_ERROR_INVALID_TYPESTATE = 65,\r
-    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66,\r
-    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67,\r
-    JVMTI_ERROR_UNSUPPORTED_VERSION = 68,\r
-    JVMTI_ERROR_NAMES_DONT_MATCH = 69,\r
-    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70,\r
-    JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71,\r
-    JVMTI_ERROR_UNMODIFIABLE_CLASS = 79,\r
-    JVMTI_ERROR_NOT_AVAILABLE = 98,\r
-    JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99,\r
-    JVMTI_ERROR_NULL_POINTER = 100,\r
-    JVMTI_ERROR_ABSENT_INFORMATION = 101,\r
-    JVMTI_ERROR_INVALID_EVENT_TYPE = 102,\r
-    JVMTI_ERROR_ILLEGAL_ARGUMENT = 103,\r
-    JVMTI_ERROR_NATIVE_METHOD = 104,\r
-    JVMTI_ERROR_OUT_OF_MEMORY = 110,\r
-    JVMTI_ERROR_ACCESS_DENIED = 111,\r
-    JVMTI_ERROR_WRONG_PHASE = 112,\r
-    JVMTI_ERROR_INTERNAL = 113,\r
-    JVMTI_ERROR_UNATTACHED_THREAD = 115,\r
-    JVMTI_ERROR_INVALID_ENVIRONMENT = 116,\r
-    JVMTI_ERROR_MAX = 116\r
-} jvmtiError;\r
-\r
-    /* Event IDs */\r
-\r
-typedef enum {\r
-    JVMTI_MIN_EVENT_TYPE_VAL = 50,\r
-    JVMTI_EVENT_VM_INIT = 50,\r
-    JVMTI_EVENT_VM_DEATH = 51,\r
-    JVMTI_EVENT_THREAD_START = 52,\r
-    JVMTI_EVENT_THREAD_END = 53,\r
-    JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54,\r
-    JVMTI_EVENT_CLASS_LOAD = 55,\r
-    JVMTI_EVENT_CLASS_PREPARE = 56,\r
-    JVMTI_EVENT_VM_START = 57,\r
-    JVMTI_EVENT_EXCEPTION = 58,\r
-    JVMTI_EVENT_EXCEPTION_CATCH = 59,\r
-    JVMTI_EVENT_SINGLE_STEP = 60,\r
-    JVMTI_EVENT_FRAME_POP = 61,\r
-    JVMTI_EVENT_BREAKPOINT = 62,\r
-    JVMTI_EVENT_FIELD_ACCESS = 63,\r
-    JVMTI_EVENT_FIELD_MODIFICATION = 64,\r
-    JVMTI_EVENT_METHOD_ENTRY = 65,\r
-    JVMTI_EVENT_METHOD_EXIT = 66,\r
-    JVMTI_EVENT_NATIVE_METHOD_BIND = 67,\r
-    JVMTI_EVENT_COMPILED_METHOD_LOAD = 68,\r
-    JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69,\r
-    JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70,\r
-    JVMTI_EVENT_DATA_DUMP_REQUEST = 71,\r
-    JVMTI_EVENT_MONITOR_WAIT = 73,\r
-    JVMTI_EVENT_MONITOR_WAITED = 74,\r
-    JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75,\r
-    JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76,\r
-    JVMTI_EVENT_GARBAGE_COLLECTION_START = 81,\r
-    JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82,\r
-    JVMTI_EVENT_OBJECT_FREE = 83,\r
-    JVMTI_EVENT_VM_OBJECT_ALLOC = 84,\r
-    JVMTI_MAX_EVENT_TYPE_VAL = 84\r
-} jvmtiEvent;\r
-\r
-\r
-    /* Function Types */\r
-\r
-typedef void (JNICALL *jvmtiStartFunction)\r
-    (jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg);\r
-\r
-typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback)\r
-    (jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);\r
-\r
-typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback)\r
-    (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);\r
-\r
-typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback)\r
-    (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_data);\r
-\r
-typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback)\r
-    (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data);\r
-\r
-typedef jvmtiError (JNICALL *jvmtiExtensionFunction)\r
-    (jvmtiEnv* jvmti_env,  ...);\r
-\r
-typedef void (JNICALL *jvmtiExtensionEvent)\r
-    (jvmtiEnv* jvmti_env,  ...);\r
-\r
-\r
-    /* Structure Types */\r
-\r
-typedef struct {\r
-    char* name;\r
-    jint priority;\r
-    jboolean is_daemon;\r
-    jthreadGroup thread_group;\r
-    jobject context_class_loader;\r
-} jvmtiThreadInfo;\r
-\r
-typedef struct {\r
-    jthreadGroup parent;\r
-    char* name;\r
-    jint max_priority;\r
-    jboolean is_daemon;\r
-} jvmtiThreadGroupInfo;\r
-\r
-typedef struct {\r
-    jmethodID method;\r
-    jlocation location;\r
-} jvmtiFrameInfo;\r
-\r
-typedef struct {\r
-    jthread thread;\r
-    jint state;\r
-    jvmtiFrameInfo* frame_buffer;\r
-    jint frame_count;\r
-} jvmtiStackInfo;\r
-\r
-typedef struct {\r
-    jclass klass;\r
-    jint class_byte_count;\r
-    const unsigned char* class_bytes;\r
-} jvmtiClassDefinition;\r
-\r
-typedef struct {\r
-    jthread owner;\r
-    jint entry_count;\r
-    jint waiter_count;\r
-    jthread* waiters;\r
-    jint notify_waiter_count;\r
-    jthread* notify_waiters;\r
-} jvmtiMonitorUsage;\r
-\r
-typedef struct {\r
-    jlocation start_location;\r
-    jint line_number;\r
-} jvmtiLineNumberEntry;\r
-\r
-typedef struct {\r
-    jlocation start_location;\r
-    jint length;\r
-    char* name;\r
-    char* signature;\r
-    char* generic_signature;\r
-    jint slot;\r
-} jvmtiLocalVariableEntry;\r
-\r
-typedef struct {\r
-    char* name;\r
-    jvmtiParamKind kind;\r
-    jvmtiParamTypes base_type;\r
-    jboolean null_ok;\r
-} jvmtiParamInfo;\r
-\r
-typedef struct {\r
-    jvmtiExtensionFunction func;\r
-    char* id;\r
-    char* short_description;\r
-    jint param_count;\r
-    jvmtiParamInfo* params;\r
-    jint error_count;\r
-    jvmtiError* errors;\r
-} jvmtiExtensionFunctionInfo;\r
-\r
-typedef struct {\r
-    jint extension_event_index;\r
-    char* id;\r
-    char* short_description;\r
-    jint param_count;\r
-    jvmtiParamInfo* params;\r
-} jvmtiExtensionEventInfo;\r
-\r
-typedef struct {\r
-    jlong max_value;\r
-    jboolean may_skip_forward;\r
-    jboolean may_skip_backward;\r
-    jvmtiTimerKind kind;\r
-    jlong reserved1;\r
-    jlong reserved2;\r
-} jvmtiTimerInfo;\r
-\r
-typedef struct {\r
-    const void* start_address;\r
-    jlocation location;\r
-} jvmtiAddrLocationMap;\r
-\r
-typedef struct {\r
-    unsigned int can_tag_objects : 1;\r
-    unsigned int can_generate_field_modification_events : 1;\r
-    unsigned int can_generate_field_access_events : 1;\r
-    unsigned int can_get_bytecodes : 1;\r
-    unsigned int can_get_synthetic_attribute : 1;\r
-    unsigned int can_get_owned_monitor_info : 1;\r
-    unsigned int can_get_current_contended_monitor : 1;\r
-    unsigned int can_get_monitor_info : 1;\r
-    unsigned int can_pop_frame : 1;\r
-    unsigned int can_redefine_classes : 1;\r
-    unsigned int can_signal_thread : 1;\r
-    unsigned int can_get_source_file_name : 1;\r
-    unsigned int can_get_line_numbers : 1;\r
-    unsigned int can_get_source_debug_extension : 1;\r
-    unsigned int can_access_local_variables : 1;\r
-    unsigned int can_maintain_original_method_order : 1;\r
-    unsigned int can_generate_single_step_events : 1;\r
-    unsigned int can_generate_exception_events : 1;\r
-    unsigned int can_generate_frame_pop_events : 1;\r
-    unsigned int can_generate_breakpoint_events : 1;\r
-    unsigned int can_suspend : 1;\r
-    unsigned int can_redefine_any_class : 1;\r
-    unsigned int can_get_current_thread_cpu_time : 1;\r
-    unsigned int can_get_thread_cpu_time : 1;\r
-    unsigned int can_generate_method_entry_events : 1;\r
-    unsigned int can_generate_method_exit_events : 1;\r
-    unsigned int can_generate_all_class_hook_events : 1;\r
-    unsigned int can_generate_compiled_method_load_events : 1;\r
-    unsigned int can_generate_monitor_events : 1;\r
-    unsigned int can_generate_vm_object_alloc_events : 1;\r
-    unsigned int can_generate_native_method_bind_events : 1;\r
-    unsigned int can_generate_garbage_collection_events : 1;\r
-    unsigned int can_generate_object_free_events : 1;\r
-    unsigned int : 15;\r
-    unsigned int : 16;\r
-    unsigned int : 16;\r
-    unsigned int : 16;\r
-    unsigned int : 16;\r
-    unsigned int : 16;\r
-} jvmtiCapabilities;\r
-\r
-\r
-    /* Event Definitions */\r
-\r
-typedef void (JNICALL *jvmtiEventReserved)(void);\r
-\r
-\r
-typedef void (JNICALL *jvmtiEventBreakpoint)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jmethodID method, \r
-     jlocation location);\r
-\r
-typedef void (JNICALL *jvmtiEventClassFileLoadHook)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jclass class_being_redefined, \r
-     jobject loader, \r
-     const char* name, \r
-     jobject protection_domain, \r
-     jint class_data_len, \r
-     const unsigned char* class_data, \r
-     jint* new_class_data_len, \r
-     unsigned char** new_class_data);\r
-\r
-typedef void (JNICALL *jvmtiEventClassLoad)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jclass klass);\r
-\r
-typedef void (JNICALL *jvmtiEventClassPrepare)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jclass klass);\r
-\r
-typedef void (JNICALL *jvmtiEventCompiledMethodLoad)\r
-    (jvmtiEnv *jvmti_env, \r
-     jmethodID method, \r
-     jint code_size, \r
-     const void* code_addr, \r
-     jint map_length, \r
-     const jvmtiAddrLocationMap* map, \r
-     const void* compile_info);\r
-\r
-typedef void (JNICALL *jvmtiEventCompiledMethodUnload)\r
-    (jvmtiEnv *jvmti_env, \r
-     jmethodID method, \r
-     const void* code_addr);\r
-\r
-typedef void (JNICALL *jvmtiEventDataDumpRequest)\r
-    (jvmtiEnv *jvmti_env);\r
-\r
-typedef void (JNICALL *jvmtiEventDynamicCodeGenerated)\r
-    (jvmtiEnv *jvmti_env, \r
-     const char* name, \r
-     const void* address, \r
-     jint length);\r
-\r
-typedef void (JNICALL *jvmtiEventException)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jmethodID method, \r
-     jlocation location, \r
-     jobject exception, \r
-     jmethodID catch_method, \r
-     jlocation catch_location);\r
-\r
-typedef void (JNICALL *jvmtiEventExceptionCatch)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jmethodID method, \r
-     jlocation location, \r
-     jobject exception);\r
-\r
-typedef void (JNICALL *jvmtiEventFieldAccess)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jmethodID method, \r
-     jlocation location, \r
-     jclass field_klass, \r
-     jobject object, \r
-     jfieldID field);\r
-\r
-typedef void (JNICALL *jvmtiEventFieldModification)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jmethodID method, \r
-     jlocation location, \r
-     jclass field_klass, \r
-     jobject object, \r
-     jfieldID field, \r
-     char signature_type, \r
-     jvalue new_value);\r
-\r
-typedef void (JNICALL *jvmtiEventFramePop)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jmethodID method, \r
-     jboolean was_popped_by_exception);\r
-\r
-typedef void (JNICALL *jvmtiEventGarbageCollectionFinish)\r
-    (jvmtiEnv *jvmti_env);\r
-\r
-typedef void (JNICALL *jvmtiEventGarbageCollectionStart)\r
-    (jvmtiEnv *jvmti_env);\r
-\r
-typedef void (JNICALL *jvmtiEventMethodEntry)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jmethodID method);\r
-\r
-typedef void (JNICALL *jvmtiEventMethodExit)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jmethodID method, \r
-     jboolean was_popped_by_exception, \r
-     jvalue return_value);\r
-\r
-typedef void (JNICALL *jvmtiEventMonitorContendedEnter)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jobject object);\r
-\r
-typedef void (JNICALL *jvmtiEventMonitorContendedEntered)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jobject object);\r
-\r
-typedef void (JNICALL *jvmtiEventMonitorWait)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jobject object, \r
-     jlong timeout);\r
-\r
-typedef void (JNICALL *jvmtiEventMonitorWaited)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jobject object, \r
-     jboolean timed_out);\r
-\r
-typedef void (JNICALL *jvmtiEventNativeMethodBind)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jmethodID method, \r
-     void* address, \r
-     void** new_address_ptr);\r
-\r
-typedef void (JNICALL *jvmtiEventObjectFree)\r
-    (jvmtiEnv *jvmti_env, \r
-     jlong tag);\r
-\r
-typedef void (JNICALL *jvmtiEventSingleStep)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jmethodID method, \r
-     jlocation location);\r
-\r
-typedef void (JNICALL *jvmtiEventThreadEnd)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread);\r
-\r
-typedef void (JNICALL *jvmtiEventThreadStart)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread);\r
-\r
-typedef void (JNICALL *jvmtiEventVMDeath)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env);\r
-\r
-typedef void (JNICALL *jvmtiEventVMInit)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread);\r
-\r
-typedef void (JNICALL *jvmtiEventVMObjectAlloc)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env, \r
-     jthread thread, \r
-     jobject object, \r
-     jclass object_klass, \r
-     jlong size);\r
-\r
-typedef void (JNICALL *jvmtiEventVMStart)\r
-    (jvmtiEnv *jvmti_env, \r
-     JNIEnv* jni_env);\r
-\r
-    /* Event Callback Structure */\r
-\r
-typedef struct {\r
-                              /*   50 : VM Initialization Event */\r
-    jvmtiEventVMInit VMInit;\r
-                              /*   51 : VM Death Event */\r
-    jvmtiEventVMDeath VMDeath;\r
-                              /*   52 : Thread Start */\r
-    jvmtiEventThreadStart ThreadStart;\r
-                              /*   53 : Thread End */\r
-    jvmtiEventThreadEnd ThreadEnd;\r
-                              /*   54 : Class File Load Hook */\r
-    jvmtiEventClassFileLoadHook ClassFileLoadHook;\r
-                              /*   55 : Class Load */\r
-    jvmtiEventClassLoad ClassLoad;\r
-                              /*   56 : Class Prepare */\r
-    jvmtiEventClassPrepare ClassPrepare;\r
-                              /*   57 : VM Start Event */\r
-    jvmtiEventVMStart VMStart;\r
-                              /*   58 : Exception */\r
-    jvmtiEventException Exception;\r
-                              /*   59 : Exception Catch */\r
-    jvmtiEventExceptionCatch ExceptionCatch;\r
-                              /*   60 : Single Step */\r
-    jvmtiEventSingleStep SingleStep;\r
-                              /*   61 : Frame Pop */\r
-    jvmtiEventFramePop FramePop;\r
-                              /*   62 : Breakpoint */\r
-    jvmtiEventBreakpoint Breakpoint;\r
-                              /*   63 : Field Access */\r
-    jvmtiEventFieldAccess FieldAccess;\r
-                              /*   64 : Field Modification */\r
-    jvmtiEventFieldModification FieldModification;\r
-                              /*   65 : Method Entry */\r
-    jvmtiEventMethodEntry MethodEntry;\r
-                              /*   66 : Method Exit */\r
-    jvmtiEventMethodExit MethodExit;\r
-                              /*   67 : Native Method Bind */\r
-    jvmtiEventNativeMethodBind NativeMethodBind;\r
-                              /*   68 : Compiled Method Load */\r
-    jvmtiEventCompiledMethodLoad CompiledMethodLoad;\r
-                              /*   69 : Compiled Method Unload */\r
-    jvmtiEventCompiledMethodUnload CompiledMethodUnload;\r
-                              /*   70 : Dynamic Code Generated */\r
-    jvmtiEventDynamicCodeGenerated DynamicCodeGenerated;\r
-                              /*   71 : Data Dump Request */\r
-    jvmtiEventDataDumpRequest DataDumpRequest;\r
-                              /*   72 */\r
-    jvmtiEventReserved reserved72;\r
-                              /*   73 : Monitor Wait */\r
-    jvmtiEventMonitorWait MonitorWait;\r
-                              /*   74 : Monitor Waited */\r
-    jvmtiEventMonitorWaited MonitorWaited;\r
-                              /*   75 : Monitor Contended Enter */\r
-    jvmtiEventMonitorContendedEnter MonitorContendedEnter;\r
-                              /*   76 : Monitor Contended Entered */\r
-    jvmtiEventMonitorContendedEntered MonitorContendedEntered;\r
-                              /*   77 */\r
-    jvmtiEventReserved reserved77;\r
-                              /*   78 */\r
-    jvmtiEventReserved reserved78;\r
-                              /*   79 */\r
-    jvmtiEventReserved reserved79;\r
-                              /*   80 */\r
-    jvmtiEventReserved reserved80;\r
-                              /*   81 : Garbage Collection Start */\r
-    jvmtiEventGarbageCollectionStart GarbageCollectionStart;\r
-                              /*   82 : Garbage Collection Finish */\r
-    jvmtiEventGarbageCollectionFinish GarbageCollectionFinish;\r
-                              /*   83 : Object Free */\r
-    jvmtiEventObjectFree ObjectFree;\r
-                              /*   84 : VM Object Allocation */\r
-    jvmtiEventVMObjectAlloc VMObjectAlloc;\r
-} jvmtiEventCallbacks;\r
-\r
-\r
-    /* Function Interface */\r
-    \r
-typedef struct jvmtiInterface_1_ {\r
-\r
-  /*   1 :  RESERVED */\r
-  void *reserved1;\r
-\r
-  /*   2 : Set Event Notification Mode */\r
-  jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv* env, \r
-    jvmtiEventMode mode, \r
-    jvmtiEvent event_type, \r
-    jthread event_thread, \r
-     ...);\r
-\r
-  /*   3 :  RESERVED */\r
-  void *reserved3;\r
-\r
-  /*   4 : Get All Threads */\r
-  jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv* env, \r
-    jint* threads_count_ptr, \r
-    jthread** threads_ptr);\r
-\r
-  /*   5 : Suspend Thread */\r
-  jvmtiError (JNICALL *SuspendThread) (jvmtiEnv* env, \r
-    jthread thread);\r
-\r
-  /*   6 : Resume Thread */\r
-  jvmtiError (JNICALL *ResumeThread) (jvmtiEnv* env, \r
-    jthread thread);\r
-\r
-  /*   7 : Stop Thread */\r
-  jvmtiError (JNICALL *StopThread) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jobject exception);\r
-\r
-  /*   8 : Interrupt Thread */\r
-  jvmtiError (JNICALL *InterruptThread) (jvmtiEnv* env, \r
-    jthread thread);\r
-\r
-  /*   9 : Get Thread Info */\r
-  jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jvmtiThreadInfo* info_ptr);\r
-\r
-  /*   10 : Get Owned Monitor Info */\r
-  jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint* owned_monitor_count_ptr, \r
-    jobject** owned_monitors_ptr);\r
-\r
-  /*   11 : Get Current Contended Monitor */\r
-  jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jobject* monitor_ptr);\r
-\r
-  /*   12 : Run Agent Thread */\r
-  jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jvmtiStartFunction proc, \r
-    const void* arg, \r
-    jint priority);\r
-\r
-  /*   13 : Get Top Thread Groups */\r
-  jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv* env, \r
-    jint* group_count_ptr, \r
-    jthreadGroup** groups_ptr);\r
-\r
-  /*   14 : Get Thread Group Info */\r
-  jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv* env, \r
-    jthreadGroup group, \r
-    jvmtiThreadGroupInfo* info_ptr);\r
-\r
-  /*   15 : Get Thread Group Children */\r
-  jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv* env, \r
-    jthreadGroup group, \r
-    jint* thread_count_ptr, \r
-    jthread** threads_ptr, \r
-    jint* group_count_ptr, \r
-    jthreadGroup** groups_ptr);\r
-\r
-  /*   16 : Get Frame Count */\r
-  jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint* count_ptr);\r
-\r
-  /*   17 : Get Thread State */\r
-  jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint* thread_state_ptr);\r
-\r
-  /*   18 :  RESERVED */\r
-  void *reserved18;\r
-\r
-  /*   19 : Get Frame Location */\r
-  jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth, \r
-    jmethodID* method_ptr, \r
-    jlocation* location_ptr);\r
-\r
-  /*   20 : Notify Frame Pop */\r
-  jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth);\r
-\r
-  /*   21 : Get Local Variable - Object */\r
-  jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth, \r
-    jint slot, \r
-    jobject* value_ptr);\r
-\r
-  /*   22 : Get Local Variable - Int */\r
-  jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth, \r
-    jint slot, \r
-    jint* value_ptr);\r
-\r
-  /*   23 : Get Local Variable - Long */\r
-  jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth, \r
-    jint slot, \r
-    jlong* value_ptr);\r
-\r
-  /*   24 : Get Local Variable - Float */\r
-  jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth, \r
-    jint slot, \r
-    jfloat* value_ptr);\r
-\r
-  /*   25 : Get Local Variable - Double */\r
-  jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth, \r
-    jint slot, \r
-    jdouble* value_ptr);\r
-\r
-  /*   26 : Set Local Variable - Object */\r
-  jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth, \r
-    jint slot, \r
-    jobject value);\r
-\r
-  /*   27 : Set Local Variable - Int */\r
-  jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth, \r
-    jint slot, \r
-    jint value);\r
-\r
-  /*   28 : Set Local Variable - Long */\r
-  jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth, \r
-    jint slot, \r
-    jlong value);\r
-\r
-  /*   29 : Set Local Variable - Float */\r
-  jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth, \r
-    jint slot, \r
-    jfloat value);\r
-\r
-  /*   30 : Set Local Variable - Double */\r
-  jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint depth, \r
-    jint slot, \r
-    jdouble value);\r
-\r
-  /*   31 : Create Raw Monitor */\r
-  jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv* env, \r
-    const char* name, \r
-    jrawMonitorID* monitor_ptr);\r
-\r
-  /*   32 : Destroy Raw Monitor */\r
-  jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv* env, \r
-    jrawMonitorID monitor);\r
-\r
-  /*   33 : Raw Monitor Enter */\r
-  jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv* env, \r
-    jrawMonitorID monitor);\r
-\r
-  /*   34 : Raw Monitor Exit */\r
-  jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv* env, \r
-    jrawMonitorID monitor);\r
-\r
-  /*   35 : Raw Monitor Wait */\r
-  jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv* env, \r
-    jrawMonitorID monitor, \r
-    jlong millis);\r
-\r
-  /*   36 : Raw Monitor Notify */\r
-  jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv* env, \r
-    jrawMonitorID monitor);\r
-\r
-  /*   37 : Raw Monitor Notify All */\r
-  jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv* env, \r
-    jrawMonitorID monitor);\r
-\r
-  /*   38 : Set Breakpoint */\r
-  jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jlocation location);\r
-\r
-  /*   39 : Clear Breakpoint */\r
-  jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jlocation location);\r
-\r
-  /*   40 :  RESERVED */\r
-  void *reserved40;\r
-\r
-  /*   41 : Set Field Access Watch */\r
-  jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jfieldID field);\r
-\r
-  /*   42 : Clear Field Access Watch */\r
-  jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jfieldID field);\r
-\r
-  /*   43 : Set Field Modification Watch */\r
-  jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jfieldID field);\r
-\r
-  /*   44 : Clear Field Modification Watch */\r
-  jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jfieldID field);\r
-\r
-  /*   45 :  RESERVED */\r
-  void *reserved45;\r
-\r
-  /*   46 : Allocate */\r
-  jvmtiError (JNICALL *Allocate) (jvmtiEnv* env, \r
-    jlong size, \r
-    unsigned char** mem_ptr);\r
-\r
-  /*   47 : Deallocate */\r
-  jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env, \r
-    unsigned char* mem);\r
-\r
-  /*   48 : Get Class Signature */\r
-  jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv* env, \r
-    jclass klass, \r
-    char** signature_ptr, \r
-    char** generic_ptr);\r
-\r
-  /*   49 : Get Class Status */\r
-  jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jint* status_ptr);\r
-\r
-  /*   50 : Get Source File Name */\r
-  jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv* env, \r
-    jclass klass, \r
-    char** source_name_ptr);\r
-\r
-  /*   51 : Get Class Modifiers */\r
-  jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jint* modifiers_ptr);\r
-\r
-  /*   52 : Get Class Methods */\r
-  jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jint* method_count_ptr, \r
-    jmethodID** methods_ptr);\r
-\r
-  /*   53 : Get Class Fields */\r
-  jvmtiError (JNICALL *GetClassFields) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jint* field_count_ptr, \r
-    jfieldID** fields_ptr);\r
-\r
-  /*   54 : Get Implemented Interfaces */\r
-  jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jint* interface_count_ptr, \r
-    jclass** interfaces_ptr);\r
-\r
-  /*   55 : Is Interface */\r
-  jvmtiError (JNICALL *IsInterface) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jboolean* is_interface_ptr);\r
-\r
-  /*   56 : Is Array Class */\r
-  jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jboolean* is_array_class_ptr);\r
-\r
-  /*   57 : Get Class Loader */\r
-  jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jobject* classloader_ptr);\r
-\r
-  /*   58 : Get Object Hash Code */\r
-  jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv* env, \r
-    jobject object, \r
-    jint* hash_code_ptr);\r
-\r
-  /*   59 : Get Object Monitor Usage */\r
-  jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv* env, \r
-    jobject object, \r
-    jvmtiMonitorUsage* info_ptr);\r
-\r
-  /*   60 : Get Field Name (and Signature) */\r
-  jvmtiError (JNICALL *GetFieldName) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jfieldID field, \r
-    char** name_ptr, \r
-    char** signature_ptr, \r
-    char** generic_ptr);\r
-\r
-  /*   61 : Get Field Declaring Class */\r
-  jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jfieldID field, \r
-    jclass* declaring_class_ptr);\r
-\r
-  /*   62 : Get Field Modifiers */\r
-  jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jfieldID field, \r
-    jint* modifiers_ptr);\r
-\r
-  /*   63 : Is Field Synthetic */\r
-  jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jfieldID field, \r
-    jboolean* is_synthetic_ptr);\r
-\r
-  /*   64 : Get Method Name (and Signature) */\r
-  jvmtiError (JNICALL *GetMethodName) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    char** name_ptr, \r
-    char** signature_ptr, \r
-    char** generic_ptr);\r
-\r
-  /*   65 : Get Method Declaring Class */\r
-  jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jclass* declaring_class_ptr);\r
-\r
-  /*   66 : Get Method Modifiers */\r
-  jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jint* modifiers_ptr);\r
-\r
-  /*   67 :  RESERVED */\r
-  void *reserved67;\r
-\r
-  /*   68 : Get Max Locals */\r
-  jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jint* max_ptr);\r
-\r
-  /*   69 : Get Arguments Size */\r
-  jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jint* size_ptr);\r
-\r
-  /*   70 : Get Line Number Table */\r
-  jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jint* entry_count_ptr, \r
-    jvmtiLineNumberEntry** table_ptr);\r
-\r
-  /*   71 : Get Method Location */\r
-  jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jlocation* start_location_ptr, \r
-    jlocation* end_location_ptr);\r
-\r
-  /*   72 : Get Local Variable Table */\r
-  jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jint* entry_count_ptr, \r
-    jvmtiLocalVariableEntry** table_ptr);\r
-\r
-  /*   73 :  RESERVED */\r
-  void *reserved73;\r
-\r
-  /*   74 :  RESERVED */\r
-  void *reserved74;\r
-\r
-  /*   75 : Get Bytecodes */\r
-  jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jint* bytecode_count_ptr, \r
-    unsigned char** bytecodes_ptr);\r
-\r
-  /*   76 : Is Method Native */\r
-  jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jboolean* is_native_ptr);\r
-\r
-  /*   77 : Is Method Synthetic */\r
-  jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jboolean* is_synthetic_ptr);\r
-\r
-  /*   78 : Get Loaded Classes */\r
-  jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv* env, \r
-    jint* class_count_ptr, \r
-    jclass** classes_ptr);\r
-\r
-  /*   79 : Get Classloader Classes */\r
-  jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env, \r
-    jobject initiating_loader, \r
-    jint* class_count_ptr, \r
-    jclass** classes_ptr);\r
-\r
-  /*   80 : Pop Frame */\r
-  jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env, \r
-    jthread thread);\r
-\r
-  /*   81 :  RESERVED */\r
-  void *reserved81;\r
-\r
-  /*   82 :  RESERVED */\r
-  void *reserved82;\r
-\r
-  /*   83 :  RESERVED */\r
-  void *reserved83;\r
-\r
-  /*   84 :  RESERVED */\r
-  void *reserved84;\r
-\r
-  /*   85 :  RESERVED */\r
-  void *reserved85;\r
-\r
-  /*   86 :  RESERVED */\r
-  void *reserved86;\r
-\r
-  /*   87 : Redefine Classes */\r
-  jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env, \r
-    jint class_count, \r
-    const jvmtiClassDefinition* class_definitions);\r
-\r
-  /*   88 : Get Version Number */\r
-  jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env, \r
-    jint* version_ptr);\r
-\r
-  /*   89 : Get Capabilities */\r
-  jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv* env, \r
-    jvmtiCapabilities* capabilities_ptr);\r
-\r
-  /*   90 : Get Source Debug Extension */\r
-  jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv* env, \r
-    jclass klass, \r
-    char** source_debug_extension_ptr);\r
-\r
-  /*   91 : Is Method Obsolete */\r
-  jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv* env, \r
-    jmethodID method, \r
-    jboolean* is_obsolete_ptr);\r
-\r
-  /*   92 : Suspend Thread List */\r
-  jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv* env, \r
-    jint request_count, \r
-    const jthread* request_list, \r
-    jvmtiError* results);\r
-\r
-  /*   93 : Resume Thread List */\r
-  jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv* env, \r
-    jint request_count, \r
-    const jthread* request_list, \r
-    jvmtiError* results);\r
-\r
-  /*   94 :  RESERVED */\r
-  void *reserved94;\r
-\r
-  /*   95 :  RESERVED */\r
-  void *reserved95;\r
-\r
-  /*   96 :  RESERVED */\r
-  void *reserved96;\r
-\r
-  /*   97 :  RESERVED */\r
-  void *reserved97;\r
-\r
-  /*   98 :  RESERVED */\r
-  void *reserved98;\r
-\r
-  /*   99 :  RESERVED */\r
-  void *reserved99;\r
-\r
-  /*   100 : Get All Stack Traces */\r
-  jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv* env, \r
-    jint max_frame_count, \r
-    jvmtiStackInfo** stack_info_ptr, \r
-    jint* thread_count_ptr);\r
-\r
-  /*   101 : Get Thread List Stack Traces */\r
-  jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv* env, \r
-    jint thread_count, \r
-    const jthread* thread_list, \r
-    jint max_frame_count, \r
-    jvmtiStackInfo** stack_info_ptr);\r
-\r
-  /*   102 : Get Thread Local Storage */\r
-  jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv* env, \r
-    jthread thread, \r
-    void** data_ptr);\r
-\r
-  /*   103 : Set Thread Local Storage */\r
-  jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv* env, \r
-    jthread thread, \r
-    const void* data);\r
-\r
-  /*   104 : Get Stack Trace */\r
-  jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jint start_depth, \r
-    jint max_frame_count, \r
-    jvmtiFrameInfo* frame_buffer, \r
-    jint* count_ptr);\r
-\r
-  /*   105 :  RESERVED */\r
-  void *reserved105;\r
-\r
-  /*   106 : Get Tag */\r
-  jvmtiError (JNICALL *GetTag) (jvmtiEnv* env, \r
-    jobject object, \r
-    jlong* tag_ptr);\r
-\r
-  /*   107 : Set Tag */\r
-  jvmtiError (JNICALL *SetTag) (jvmtiEnv* env, \r
-    jobject object, \r
-    jlong tag);\r
-\r
-  /*   108 : Force Garbage Collection */\r
-  jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env);\r
-\r
-  /*   109 : Iterate Over Objects Reachable From Object */\r
-  jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* env, \r
-    jobject object, \r
-    jvmtiObjectReferenceCallback object_reference_callback, \r
-    void* user_data);\r
-\r
-  /*   110 : Iterate Over Reachable Objects */\r
-  jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv* env, \r
-    jvmtiHeapRootCallback heap_root_callback, \r
-    jvmtiStackReferenceCallback stack_ref_callback, \r
-    jvmtiObjectReferenceCallback object_ref_callback, \r
-    void* user_data);\r
-\r
-  /*   111 : Iterate Over Heap */\r
-  jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env, \r
-    jvmtiHeapObjectFilter object_filter, \r
-    jvmtiHeapObjectCallback heap_object_callback, \r
-    void* user_data);\r
-\r
-  /*   112 : Iterate Over Instances Of Class */\r
-  jvmtiError (JNICALL *IterateOverInstancesOfClass) (jvmtiEnv* env, \r
-    jclass klass, \r
-    jvmtiHeapObjectFilter object_filter, \r
-    jvmtiHeapObjectCallback heap_object_callback, \r
-    void* user_data);\r
-\r
-  /*   113 :  RESERVED */\r
-  void *reserved113;\r
-\r
-  /*   114 : Get Objects With Tags */\r
-  jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv* env, \r
-    jint tag_count, \r
-    const jlong* tags, \r
-    jint* count_ptr, \r
-    jobject** object_result_ptr, \r
-    jlong** tag_result_ptr);\r
-\r
-  /*   115 :  RESERVED */\r
-  void *reserved115;\r
-\r
-  /*   116 :  RESERVED */\r
-  void *reserved116;\r
-\r
-  /*   117 :  RESERVED */\r
-  void *reserved117;\r
-\r
-  /*   118 :  RESERVED */\r
-  void *reserved118;\r
-\r
-  /*   119 :  RESERVED */\r
-  void *reserved119;\r
-\r
-  /*   120 : Set JNI Function Table */\r
-  jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv* env, \r
-    const jniNativeInterface* function_table);\r
-\r
-  /*   121 : Get JNI Function Table */\r
-  jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv* env, \r
-    jniNativeInterface** function_table);\r
-\r
-  /*   122 : Set Event Callbacks */\r
-  jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv* env, \r
-    const jvmtiEventCallbacks* callbacks, \r
-    jint size_of_callbacks);\r
-\r
-  /*   123 : Generate Events */\r
-  jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv* env, \r
-    jvmtiEvent event_type);\r
-\r
-  /*   124 : Get Extension Functions */\r
-  jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv* env, \r
-    jint* extension_count_ptr, \r
-    jvmtiExtensionFunctionInfo** extensions);\r
-\r
-  /*   125 : Get Extension Events */\r
-  jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv* env, \r
-    jint* extension_count_ptr, \r
-    jvmtiExtensionEventInfo** extensions);\r
-\r
-  /*   126 : Set Extension Event Callback */\r
-  jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv* env, \r
-    jint extension_event_index, \r
-    jvmtiExtensionEvent callback);\r
-\r
-  /*   127 : Dispose Environment */\r
-  jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv* env);\r
-\r
-  /*   128 : Get Error Name */\r
-  jvmtiError (JNICALL *GetErrorName) (jvmtiEnv* env, \r
-    jvmtiError error, \r
-    char** name_ptr);\r
-\r
-  /*   129 : Get JLocation Format */\r
-  jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv* env, \r
-    jvmtiJlocationFormat* format_ptr);\r
-\r
-  /*   130 : Get System Properties */\r
-  jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv* env, \r
-    jint* count_ptr, \r
-    char*** property_ptr);\r
-\r
-  /*   131 : Get System Property */\r
-  jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv* env, \r
-    const char* property, \r
-    char** value_ptr);\r
-\r
-  /*   132 : Set System Property */\r
-  jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv* env, \r
-    const char* property, \r
-    const char* value);\r
-\r
-  /*   133 : Get Phase */\r
-  jvmtiError (JNICALL *GetPhase) (jvmtiEnv* env, \r
-    jvmtiPhase* phase_ptr);\r
-\r
-  /*   134 : Get Current Thread CPU Timer Information */\r
-  jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv* env, \r
-    jvmtiTimerInfo* info_ptr);\r
-\r
-  /*   135 : Get Current Thread CPU Time */\r
-  jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv* env, \r
-    jlong* nanos_ptr);\r
-\r
-  /*   136 : Get Thread CPU Timer Information */\r
-  jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv* env, \r
-    jvmtiTimerInfo* info_ptr);\r
-\r
-  /*   137 : Get Thread CPU Time */\r
-  jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv* env, \r
-    jthread thread, \r
-    jlong* nanos_ptr);\r
-\r
-  /*   138 : Get Timer Information */\r
-  jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv* env, \r
-    jvmtiTimerInfo* info_ptr);\r
-\r
-  /*   139 : Get Time */\r
-  jvmtiError (JNICALL *GetTime) (jvmtiEnv* env, \r
-    jlong* nanos_ptr);\r
-\r
-  /*   140 : Get Potential Capabilities */\r
-  jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv* env, \r
-    jvmtiCapabilities* capabilities_ptr);\r
-\r
-  /*   141 :  RESERVED */\r
-  void *reserved141;\r
-\r
-  /*   142 : Add Capabilities */\r
-  jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv* env, \r
-    const jvmtiCapabilities* capabilities_ptr);\r
-\r
-  /*   143 : Relinquish Capabilities */\r
-  jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env, \r
-    const jvmtiCapabilities* capabilities_ptr);\r
-\r
-  /*   144 : Get Available Processors */\r
-  jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env, \r
-    jint* processor_count_ptr);\r
-\r
-  /*   145 :  RESERVED */\r
-  void *reserved145;\r
-\r
-  /*   146 :  RESERVED */\r
-  void *reserved146;\r
-\r
-  /*   147 : Get Environment Local Storage */\r
-  jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env, \r
-    void** data_ptr);\r
-\r
-  /*   148 : Set Environment Local Storage */\r
-  jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env, \r
-    const void* data);\r
-\r
-  /*   149 : Add To Bootstrap Class Loader Search */\r
-  jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env, \r
-    const char* segment);\r
-\r
-  /*   150 : Set Verbose Flag */\r
-  jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env, \r
-    jvmtiVerboseFlag flag, \r
-    jboolean value);\r
-\r
-  /*   151 :  RESERVED */\r
-  void *reserved151;\r
-\r
-  /*   152 :  RESERVED */\r
-  void *reserved152;\r
-\r
-  /*   153 :  RESERVED */\r
-  void *reserved153;\r
-\r
-  /*   154 : Get Object Size */\r
-  jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv* env, \r
-    jobject object, \r
-    jlong* size_ptr);\r
-\r
-} jvmtiInterface_1;\r
-\r
-struct _jvmtiEnv {\r
-    const struct jvmtiInterface_1_ *functions;\r
-#ifdef __cplusplus\r
-\r
-\r
-  jvmtiError Allocate(jlong size,\r
-            unsigned char** mem_ptr) {\r
-    return functions->Allocate(this, size, mem_ptr);\r
-  }\r
-\r
-  jvmtiError Deallocate(unsigned char* mem) {\r
-    return functions->Deallocate(this, mem);\r
-  }\r
-\r
-  jvmtiError GetThreadState(jthread thread,\r
-            jint* thread_state_ptr) {\r
-    return functions->GetThreadState(this, thread, thread_state_ptr);\r
-  }\r
-\r
-  jvmtiError GetAllThreads(jint* threads_count_ptr,\r
-            jthread** threads_ptr) {\r
-    return functions->GetAllThreads(this, threads_count_ptr, threads_ptr);\r
-  }\r
-\r
-  jvmtiError SuspendThread(jthread thread) {\r
-    return functions->SuspendThread(this, thread);\r
-  }\r
-\r
-  jvmtiError SuspendThreadList(jint request_count,\r
-            const jthread* request_list,\r
-            jvmtiError* results) {\r
-    return functions->SuspendThreadList(this, request_count, request_list, results);\r
-  }\r
-\r
-  jvmtiError ResumeThread(jthread thread) {\r
-    return functions->ResumeThread(this, thread);\r
-  }\r
-\r
-  jvmtiError ResumeThreadList(jint request_count,\r
-            const jthread* request_list,\r
-            jvmtiError* results) {\r
-    return functions->ResumeThreadList(this, request_count, request_list, results);\r
-  }\r
-\r
-  jvmtiError StopThread(jthread thread,\r
-            jobject exception) {\r
-    return functions->StopThread(this, thread, exception);\r
-  }\r
-\r
-  jvmtiError InterruptThread(jthread thread) {\r
-    return functions->InterruptThread(this, thread);\r
-  }\r
-\r
-  jvmtiError GetThreadInfo(jthread thread,\r
-            jvmtiThreadInfo* info_ptr) {\r
-    return functions->GetThreadInfo(this, thread, info_ptr);\r
-  }\r
-\r
-  jvmtiError GetOwnedMonitorInfo(jthread thread,\r
-            jint* owned_monitor_count_ptr,\r
-            jobject** owned_monitors_ptr) {\r
-    return functions->GetOwnedMonitorInfo(this, thread, owned_monitor_count_ptr, owned_monitors_ptr);\r
-  }\r
-\r
-  jvmtiError GetCurrentContendedMonitor(jthread thread,\r
-            jobject* monitor_ptr) {\r
-    return functions->GetCurrentContendedMonitor(this, thread, monitor_ptr);\r
-  }\r
-\r
-  jvmtiError RunAgentThread(jthread thread,\r
-            jvmtiStartFunction proc,\r
-            const void* arg,\r
-            jint priority) {\r
-    return functions->RunAgentThread(this, thread, proc, arg, priority);\r
-  }\r
-\r
-  jvmtiError SetThreadLocalStorage(jthread thread,\r
-            const void* data) {\r
-    return functions->SetThreadLocalStorage(this, thread, data);\r
-  }\r
-\r
-  jvmtiError GetThreadLocalStorage(jthread thread,\r
-            void** data_ptr) {\r
-    return functions->GetThreadLocalStorage(this, thread, data_ptr);\r
-  }\r
-\r
-  jvmtiError GetTopThreadGroups(jint* group_count_ptr,\r
-            jthreadGroup** groups_ptr) {\r
-    return functions->GetTopThreadGroups(this, group_count_ptr, groups_ptr);\r
-  }\r
-\r
-  jvmtiError GetThreadGroupInfo(jthreadGroup group,\r
-            jvmtiThreadGroupInfo* info_ptr) {\r
-    return functions->GetThreadGroupInfo(this, group, info_ptr);\r
-  }\r
-\r
-  jvmtiError GetThreadGroupChildren(jthreadGroup group,\r
-            jint* thread_count_ptr,\r
-            jthread** threads_ptr,\r
-            jint* group_count_ptr,\r
-            jthreadGroup** groups_ptr) {\r
-    return functions->GetThreadGroupChildren(this, group, thread_count_ptr, threads_ptr, group_count_ptr, groups_ptr);\r
-  }\r
-\r
-  jvmtiError GetStackTrace(jthread thread,\r
-            jint start_depth,\r
-            jint max_frame_count,\r
-            jvmtiFrameInfo* frame_buffer,\r
-            jint* count_ptr) {\r
-    return functions->GetStackTrace(this, thread, start_depth, max_frame_count, frame_buffer, count_ptr);\r
-  }\r
-\r
-  jvmtiError GetAllStackTraces(jint max_frame_count,\r
-            jvmtiStackInfo** stack_info_ptr,\r
-            jint* thread_count_ptr) {\r
-    return functions->GetAllStackTraces(this, max_frame_count, stack_info_ptr, thread_count_ptr);\r
-  }\r
-\r
-  jvmtiError GetThreadListStackTraces(jint thread_count,\r
-            const jthread* thread_list,\r
-            jint max_frame_count,\r
-            jvmtiStackInfo** stack_info_ptr) {\r
-    return functions->GetThreadListStackTraces(this, thread_count, thread_list, max_frame_count, stack_info_ptr);\r
-  }\r
-\r
-  jvmtiError GetFrameCount(jthread thread,\r
-            jint* count_ptr) {\r
-    return functions->GetFrameCount(this, thread, count_ptr);\r
-  }\r
-\r
-  jvmtiError PopFrame(jthread thread) {\r
-    return functions->PopFrame(this, thread);\r
-  }\r
-\r
-  jvmtiError GetFrameLocation(jthread thread,\r
-            jint depth,\r
-            jmethodID* method_ptr,\r
-            jlocation* location_ptr) {\r
-    return functions->GetFrameLocation(this, thread, depth, method_ptr, location_ptr);\r
-  }\r
-\r
-  jvmtiError NotifyFramePop(jthread thread,\r
-            jint depth) {\r
-    return functions->NotifyFramePop(this, thread, depth);\r
-  }\r
-\r
-  jvmtiError GetTag(jobject object,\r
-            jlong* tag_ptr) {\r
-    return functions->GetTag(this, object, tag_ptr);\r
-  }\r
-\r
-  jvmtiError SetTag(jobject object,\r
-            jlong tag) {\r
-    return functions->SetTag(this, object, tag);\r
-  }\r
-\r
-  jvmtiError ForceGarbageCollection() {\r
-    return functions->ForceGarbageCollection(this);\r
-  }\r
-\r
-  jvmtiError IterateOverObjectsReachableFromObject(jobject object,\r
-            jvmtiObjectReferenceCallback object_reference_callback,\r
-            void* user_data) {\r
-    return functions->IterateOverObjectsReachableFromObject(this, object, object_reference_callback, user_data);\r
-  }\r
-\r
-  jvmtiError IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback,\r
-            jvmtiStackReferenceCallback stack_ref_callback,\r
-            jvmtiObjectReferenceCallback object_ref_callback,\r
-            void* user_data) {\r
-    return functions->IterateOverReachableObjects(this, heap_root_callback, stack_ref_callback, object_ref_callback, user_data);\r
-  }\r
-\r
-  jvmtiError IterateOverHeap(jvmtiHeapObjectFilter object_filter,\r
-            jvmtiHeapObjectCallback heap_object_callback,\r
-            void* user_data) {\r
-    return functions->IterateOverHeap(this, object_filter, heap_object_callback, user_data);\r
-  }\r
-\r
-  jvmtiError IterateOverInstancesOfClass(jclass klass,\r
-            jvmtiHeapObjectFilter object_filter,\r
-            jvmtiHeapObjectCallback heap_object_callback,\r
-            void* user_data) {\r
-    return functions->IterateOverInstancesOfClass(this, klass, object_filter, heap_object_callback, user_data);\r
-  }\r
-\r
-  jvmtiError GetObjectsWithTags(jint tag_count,\r
-            const jlong* tags,\r
-            jint* count_ptr,\r
-            jobject** object_result_ptr,\r
-            jlong** tag_result_ptr) {\r
-    return functions->GetObjectsWithTags(this, tag_count, tags, count_ptr, object_result_ptr, tag_result_ptr);\r
-  }\r
-\r
-  jvmtiError GetLocalObject(jthread thread,\r
-            jint depth,\r
-            jint slot,\r
-            jobject* value_ptr) {\r
-    return functions->GetLocalObject(this, thread, depth, slot, value_ptr);\r
-  }\r
-\r
-  jvmtiError GetLocalInt(jthread thread,\r
-            jint depth,\r
-            jint slot,\r
-            jint* value_ptr) {\r
-    return functions->GetLocalInt(this, thread, depth, slot, value_ptr);\r
-  }\r
-\r
-  jvmtiError GetLocalLong(jthread thread,\r
-            jint depth,\r
-            jint slot,\r
-            jlong* value_ptr) {\r
-    return functions->GetLocalLong(this, thread, depth, slot, value_ptr);\r
-  }\r
-\r
-  jvmtiError GetLocalFloat(jthread thread,\r
-            jint depth,\r
-            jint slot,\r
-            jfloat* value_ptr) {\r
-    return functions->GetLocalFloat(this, thread, depth, slot, value_ptr);\r
-  }\r
-\r
-  jvmtiError GetLocalDouble(jthread thread,\r
-            jint depth,\r
-            jint slot,\r
-            jdouble* value_ptr) {\r
-    return functions->GetLocalDouble(this, thread, depth, slot, value_ptr);\r
-  }\r
-\r
-  jvmtiError SetLocalObject(jthread thread,\r
-            jint depth,\r
-            jint slot,\r
-            jobject value) {\r
-    return functions->SetLocalObject(this, thread, depth, slot, value);\r
-  }\r
-\r
-  jvmtiError SetLocalInt(jthread thread,\r
-            jint depth,\r
-            jint slot,\r
-            jint value) {\r
-    return functions->SetLocalInt(this, thread, depth, slot, value);\r
-  }\r
-\r
-  jvmtiError SetLocalLong(jthread thread,\r
-            jint depth,\r
-            jint slot,\r
-            jlong value) {\r
-    return functions->SetLocalLong(this, thread, depth, slot, value);\r
-  }\r
-\r
-  jvmtiError SetLocalFloat(jthread thread,\r
-            jint depth,\r
-            jint slot,\r
-            jfloat value) {\r
-    return functions->SetLocalFloat(this, thread, depth, slot, value);\r
-  }\r
-\r
-  jvmtiError SetLocalDouble(jthread thread,\r
-            jint depth,\r
-            jint slot,\r
-            jdouble value) {\r
-    return functions->SetLocalDouble(this, thread, depth, slot, value);\r
-  }\r
-\r
-  jvmtiError SetBreakpoint(jmethodID method,\r
-            jlocation location) {\r
-    return functions->SetBreakpoint(this, method, location);\r
-  }\r
-\r
-  jvmtiError ClearBreakpoint(jmethodID method,\r
-            jlocation location) {\r
-    return functions->ClearBreakpoint(this, method, location);\r
-  }\r
-\r
-  jvmtiError SetFieldAccessWatch(jclass klass,\r
-            jfieldID field) {\r
-    return functions->SetFieldAccessWatch(this, klass, field);\r
-  }\r
-\r
-  jvmtiError ClearFieldAccessWatch(jclass klass,\r
-            jfieldID field) {\r
-    return functions->ClearFieldAccessWatch(this, klass, field);\r
-  }\r
-\r
-  jvmtiError SetFieldModificationWatch(jclass klass,\r
-            jfieldID field) {\r
-    return functions->SetFieldModificationWatch(this, klass, field);\r
-  }\r
-\r
-  jvmtiError ClearFieldModificationWatch(jclass klass,\r
-            jfieldID field) {\r
-    return functions->ClearFieldModificationWatch(this, klass, field);\r
-  }\r
-\r
-  jvmtiError GetLoadedClasses(jint* class_count_ptr,\r
-            jclass** classes_ptr) {\r
-    return functions->GetLoadedClasses(this, class_count_ptr, classes_ptr);\r
-  }\r
-\r
-  jvmtiError GetClassLoaderClasses(jobject initiating_loader,\r
-            jint* class_count_ptr,\r
-            jclass** classes_ptr) {\r
-    return functions->GetClassLoaderClasses(this, initiating_loader, class_count_ptr, classes_ptr);\r
-  }\r
-\r
-  jvmtiError GetClassSignature(jclass klass,\r
-            char** signature_ptr,\r
-            char** generic_ptr) {\r
-    return functions->GetClassSignature(this, klass, signature_ptr, generic_ptr);\r
-  }\r
-\r
-  jvmtiError GetClassStatus(jclass klass,\r
-            jint* status_ptr) {\r
-    return functions->GetClassStatus(this, klass, status_ptr);\r
-  }\r
-\r
-  jvmtiError GetSourceFileName(jclass klass,\r
-            char** source_name_ptr) {\r
-    return functions->GetSourceFileName(this, klass, source_name_ptr);\r
-  }\r
-\r
-  jvmtiError GetClassModifiers(jclass klass,\r
-            jint* modifiers_ptr) {\r
-    return functions->GetClassModifiers(this, klass, modifiers_ptr);\r
-  }\r
-\r
-  jvmtiError GetClassMethods(jclass klass,\r
-            jint* method_count_ptr,\r
-            jmethodID** methods_ptr) {\r
-    return functions->GetClassMethods(this, klass, method_count_ptr, methods_ptr);\r
-  }\r
-\r
-  jvmtiError GetClassFields(jclass klass,\r
-            jint* field_count_ptr,\r
-            jfieldID** fields_ptr) {\r
-    return functions->GetClassFields(this, klass, field_count_ptr, fields_ptr);\r
-  }\r
-\r
-  jvmtiError GetImplementedInterfaces(jclass klass,\r
-            jint* interface_count_ptr,\r
-            jclass** interfaces_ptr) {\r
-    return functions->GetImplementedInterfaces(this, klass, interface_count_ptr, interfaces_ptr);\r
-  }\r
-\r
-  jvmtiError IsInterface(jclass klass,\r
-            jboolean* is_interface_ptr) {\r
-    return functions->IsInterface(this, klass, is_interface_ptr);\r
-  }\r
-\r
-  jvmtiError IsArrayClass(jclass klass,\r
-            jboolean* is_array_class_ptr) {\r
-    return functions->IsArrayClass(this, klass, is_array_class_ptr);\r
-  }\r
-\r
-  jvmtiError GetClassLoader(jclass klass,\r
-            jobject* classloader_ptr) {\r
-    return functions->GetClassLoader(this, klass, classloader_ptr);\r
-  }\r
-\r
-  jvmtiError GetSourceDebugExtension(jclass klass,\r
-            char** source_debug_extension_ptr) {\r
-    return functions->GetSourceDebugExtension(this, klass, source_debug_extension_ptr);\r
-  }\r
-\r
-  jvmtiError RedefineClasses(jint class_count,\r
-            const jvmtiClassDefinition* class_definitions) {\r
-    return functions->RedefineClasses(this, class_count, class_definitions);\r
-  }\r
-\r
-  jvmtiError GetObjectSize(jobject object,\r
-            jlong* size_ptr) {\r
-    return functions->GetObjectSize(this, object, size_ptr);\r
-  }\r
-\r
-  jvmtiError GetObjectHashCode(jobject object,\r
-            jint* hash_code_ptr) {\r
-    return functions->GetObjectHashCode(this, object, hash_code_ptr);\r
-  }\r
-\r
-  jvmtiError GetObjectMonitorUsage(jobject object,\r
-            jvmtiMonitorUsage* info_ptr) {\r
-    return functions->GetObjectMonitorUsage(this, object, info_ptr);\r
-  }\r
-\r
-  jvmtiError GetFieldName(jclass klass,\r
-            jfieldID field,\r
-            char** name_ptr,\r
-            char** signature_ptr,\r
-            char** generic_ptr) {\r
-    return functions->GetFieldName(this, klass, field, name_ptr, signature_ptr, generic_ptr);\r
-  }\r
-\r
-  jvmtiError GetFieldDeclaringClass(jclass klass,\r
-            jfieldID field,\r
-            jclass* declaring_class_ptr) {\r
-    return functions->GetFieldDeclaringClass(this, klass, field, declaring_class_ptr);\r
-  }\r
-\r
-  jvmtiError GetFieldModifiers(jclass klass,\r
-            jfieldID field,\r
-            jint* modifiers_ptr) {\r
-    return functions->GetFieldModifiers(this, klass, field, modifiers_ptr);\r
-  }\r
-\r
-  jvmtiError IsFieldSynthetic(jclass klass,\r
-            jfieldID field,\r
-            jboolean* is_synthetic_ptr) {\r
-    return functions->IsFieldSynthetic(this, klass, field, is_synthetic_ptr);\r
-  }\r
-\r
-  jvmtiError GetMethodName(jmethodID method,\r
-            char** name_ptr,\r
-            char** signature_ptr,\r
-            char** generic_ptr) {\r
-    return functions->GetMethodName(this, method, name_ptr, signature_ptr, generic_ptr);\r
-  }\r
-\r
-  jvmtiError GetMethodDeclaringClass(jmethodID method,\r
-            jclass* declaring_class_ptr) {\r
-    return functions->GetMethodDeclaringClass(this, method, declaring_class_ptr);\r
-  }\r
-\r
-  jvmtiError GetMethodModifiers(jmethodID method,\r
-            jint* modifiers_ptr) {\r
-    return functions->GetMethodModifiers(this, method, modifiers_ptr);\r
-  }\r
-\r
-  jvmtiError GetMaxLocals(jmethodID method,\r
-            jint* max_ptr) {\r
-    return functions->GetMaxLocals(this, method, max_ptr);\r
-  }\r
-\r
-  jvmtiError GetArgumentsSize(jmethodID method,\r
-            jint* size_ptr) {\r
-    return functions->GetArgumentsSize(this, method, size_ptr);\r
-  }\r
-\r
-  jvmtiError GetLineNumberTable(jmethodID method,\r
-            jint* entry_count_ptr,\r
-            jvmtiLineNumberEntry** table_ptr) {\r
-    return functions->GetLineNumberTable(this, method, entry_count_ptr, table_ptr);\r
-  }\r
-\r
-  jvmtiError GetMethodLocation(jmethodID method,\r
-            jlocation* start_location_ptr,\r
-            jlocation* end_location_ptr) {\r
-    return functions->GetMethodLocation(this, method, start_location_ptr, end_location_ptr);\r
-  }\r
-\r
-  jvmtiError GetLocalVariableTable(jmethodID method,\r
-            jint* entry_count_ptr,\r
-            jvmtiLocalVariableEntry** table_ptr) {\r
-    return functions->GetLocalVariableTable(this, method, entry_count_ptr, table_ptr);\r
-  }\r
-\r
-  jvmtiError GetBytecodes(jmethodID method,\r
-            jint* bytecode_count_ptr,\r
-            unsigned char** bytecodes_ptr) {\r
-    return functions->GetBytecodes(this, method, bytecode_count_ptr, bytecodes_ptr);\r
-  }\r
-\r
-  jvmtiError IsMethodNative(jmethodID method,\r
-            jboolean* is_native_ptr) {\r
-    return functions->IsMethodNative(this, method, is_native_ptr);\r
-  }\r
-\r
-  jvmtiError IsMethodSynthetic(jmethodID method,\r
-            jboolean* is_synthetic_ptr) {\r
-    return functions->IsMethodSynthetic(this, method, is_synthetic_ptr);\r
-  }\r
-\r
-  jvmtiError IsMethodObsolete(jmethodID method,\r
-            jboolean* is_obsolete_ptr) {\r
-    return functions->IsMethodObsolete(this, method, is_obsolete_ptr);\r
-  }\r
-\r
-  jvmtiError CreateRawMonitor(const char* name,\r
-            jrawMonitorID* monitor_ptr) {\r
-    return functions->CreateRawMonitor(this, name, monitor_ptr);\r
-  }\r
-\r
-  jvmtiError DestroyRawMonitor(jrawMonitorID monitor) {\r
-    return functions->DestroyRawMonitor(this, monitor);\r
-  }\r
-\r
-  jvmtiError RawMonitorEnter(jrawMonitorID monitor) {\r
-    return functions->RawMonitorEnter(this, monitor);\r
-  }\r
-\r
-  jvmtiError RawMonitorExit(jrawMonitorID monitor) {\r
-    return functions->RawMonitorExit(this, monitor);\r
-  }\r
-\r
-  jvmtiError RawMonitorWait(jrawMonitorID monitor,\r
-            jlong millis) {\r
-    return functions->RawMonitorWait(this, monitor, millis);\r
-  }\r
-\r
-  jvmtiError RawMonitorNotify(jrawMonitorID monitor) {\r
-    return functions->RawMonitorNotify(this, monitor);\r
-  }\r
-\r
-  jvmtiError RawMonitorNotifyAll(jrawMonitorID monitor) {\r
-    return functions->RawMonitorNotifyAll(this, monitor);\r
-  }\r
-\r
-  jvmtiError SetJNIFunctionTable(const jniNativeInterface* function_table) {\r
-    return functions->SetJNIFunctionTable(this, function_table);\r
-  }\r
-\r
-  jvmtiError GetJNIFunctionTable(jniNativeInterface** function_table) {\r
-    return functions->GetJNIFunctionTable(this, function_table);\r
-  }\r
-\r
-  jvmtiError SetEventCallbacks(const jvmtiEventCallbacks* callbacks,\r
-            jint size_of_callbacks) {\r
-    return functions->SetEventCallbacks(this, callbacks, size_of_callbacks);\r
-  }\r
-\r
-  jvmtiError SetEventNotificationMode(jvmtiEventMode mode,\r
-            jvmtiEvent event_type,\r
-            jthread event_thread,\r
-             ...) {\r
-    return functions->SetEventNotificationMode(this, mode, event_type, event_thread);\r
-  }\r
-\r
-  jvmtiError GenerateEvents(jvmtiEvent event_type) {\r
-    return functions->GenerateEvents(this, event_type);\r
-  }\r
-\r
-  jvmtiError GetExtensionFunctions(jint* extension_count_ptr,\r
-            jvmtiExtensionFunctionInfo** extensions) {\r
-    return functions->GetExtensionFunctions(this, extension_count_ptr, extensions);\r
-  }\r
-\r
-  jvmtiError GetExtensionEvents(jint* extension_count_ptr,\r
-            jvmtiExtensionEventInfo** extensions) {\r
-    return functions->GetExtensionEvents(this, extension_count_ptr, extensions);\r
-  }\r
-\r
-  jvmtiError SetExtensionEventCallback(jint extension_event_index,\r
-            jvmtiExtensionEvent callback) {\r
-    return functions->SetExtensionEventCallback(this, extension_event_index, callback);\r
-  }\r
-\r
-  jvmtiError GetPotentialCapabilities(jvmtiCapabilities* capabilities_ptr) {\r
-    return functions->GetPotentialCapabilities(this, capabilities_ptr);\r
-  }\r
-\r
-  jvmtiError AddCapabilities(const jvmtiCapabilities* capabilities_ptr) {\r
-    return functions->AddCapabilities(this, capabilities_ptr);\r
-  }\r
-\r
-  jvmtiError RelinquishCapabilities(const jvmtiCapabilities* capabilities_ptr) {\r
-    return functions->RelinquishCapabilities(this, capabilities_ptr);\r
-  }\r
-\r
-  jvmtiError GetCapabilities(jvmtiCapabilities* capabilities_ptr) {\r
-    return functions->GetCapabilities(this, capabilities_ptr);\r
-  }\r
-\r
-  jvmtiError GetCurrentThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {\r
-    return functions->GetCurrentThreadCpuTimerInfo(this, info_ptr);\r
-  }\r
-\r
-  jvmtiError GetCurrentThreadCpuTime(jlong* nanos_ptr) {\r
-    return functions->GetCurrentThreadCpuTime(this, nanos_ptr);\r
-  }\r
-\r
-  jvmtiError GetThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {\r
-    return functions->GetThreadCpuTimerInfo(this, info_ptr);\r
-  }\r
-\r
-  jvmtiError GetThreadCpuTime(jthread thread,\r
-            jlong* nanos_ptr) {\r
-    return functions->GetThreadCpuTime(this, thread, nanos_ptr);\r
-  }\r
-\r
-  jvmtiError GetTimerInfo(jvmtiTimerInfo* info_ptr) {\r
-    return functions->GetTimerInfo(this, info_ptr);\r
-  }\r
-\r
-  jvmtiError GetTime(jlong* nanos_ptr) {\r
-    return functions->GetTime(this, nanos_ptr);\r
-  }\r
-\r
-  jvmtiError GetAvailableProcessors(jint* processor_count_ptr) {\r
-    return functions->GetAvailableProcessors(this, processor_count_ptr);\r
-  }\r
-\r
-  jvmtiError AddToBootstrapClassLoaderSearch(const char* segment) {\r
-    return functions->AddToBootstrapClassLoaderSearch(this, segment);\r
-  }\r
-\r
-  jvmtiError GetSystemProperties(jint* count_ptr,\r
-            char*** property_ptr) {\r
-    return functions->GetSystemProperties(this, count_ptr, property_ptr);\r
-  }\r
-\r
-  jvmtiError GetSystemProperty(const char* property,\r
-            char** value_ptr) {\r
-    return functions->GetSystemProperty(this, property, value_ptr);\r
-  }\r
-\r
-  jvmtiError SetSystemProperty(const char* property,\r
-            const char* value) {\r
-    return functions->SetSystemProperty(this, property, value);\r
-  }\r
-\r
-  jvmtiError GetPhase(jvmtiPhase* phase_ptr) {\r
-    return functions->GetPhase(this, phase_ptr);\r
-  }\r
-\r
-  jvmtiError DisposeEnvironment() {\r
-    return functions->DisposeEnvironment(this);\r
-  }\r
-\r
-  jvmtiError SetEnvironmentLocalStorage(const void* data) {\r
-    return functions->SetEnvironmentLocalStorage(this, data);\r
-  }\r
-\r
-  jvmtiError GetEnvironmentLocalStorage(void** data_ptr) {\r
-    return functions->GetEnvironmentLocalStorage(this, data_ptr);\r
-  }\r
-\r
-  jvmtiError GetVersionNumber(jint* version_ptr) {\r
-    return functions->GetVersionNumber(this, version_ptr);\r
-  }\r
-\r
-  jvmtiError GetErrorName(jvmtiError error,\r
-            char** name_ptr) {\r
-    return functions->GetErrorName(this, error, name_ptr);\r
-  }\r
-\r
-  jvmtiError SetVerboseFlag(jvmtiVerboseFlag flag,\r
-            jboolean value) {\r
-    return functions->SetVerboseFlag(this, flag, value);\r
-  }\r
-\r
-  jvmtiError GetJLocationFormat(jvmtiJlocationFormat* format_ptr) {\r
-    return functions->GetJLocationFormat(this, format_ptr);\r
-  }\r
-\r
-#endif /* __cplusplus */\r
-};\r
-\r
-\r
-#ifdef __cplusplus\r
-} /* extern "C" */\r
-#endif /* __cplusplus */\r
-\r
-#endif /* !_JAVA_JVMTI_H_ */\r
-\r
diff --git a/applications/JavaOpenJPEG/java-jni/include/win32/jawt_md.h b/applications/JavaOpenJPEG/java-jni/include/win32/jawt_md.h
deleted file mode 100644 (file)
index 5df3e46..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*\r
- * @(#)jawt_md.h       1.7 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-#ifndef _JAVASOFT_JAWT_MD_H_\r
-#define _JAVASOFT_JAWT_MD_H_\r
-\r
-#include <windows.h>\r
-#include "jawt.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/*\r
- * Win32-specific declarations for AWT native interface.\r
- * See notes in jawt.h for an example of use.\r
- */\r
-typedef struct jawt_Win32DrawingSurfaceInfo {\r
-    /* Native window, DDB, or DIB handle */\r
-    union {\r
-        HWND hwnd;\r
-        HBITMAP hbitmap;\r
-        void* pbits;\r
-    };\r
-    /*\r
-     * This HDC should always be used instead of the HDC returned from\r
-     * BeginPaint() or any calls to GetDC().\r
-     */\r
-    HDC hdc;\r
-    HPALETTE hpalette;\r
-} JAWT_Win32DrawingSurfaceInfo;\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* !_JAVASOFT_JAWT_MD_H_ */\r
diff --git a/applications/JavaOpenJPEG/java-jni/include/win32/jni_md.h b/applications/JavaOpenJPEG/java-jni/include/win32/jni_md.h
deleted file mode 100644 (file)
index fdc79a0..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*\r
- * @(#)jni_md.h        1.14 03/12/19\r
- *\r
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.\r
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\r
- */\r
-\r
-#ifndef _JAVASOFT_JNI_MD_H_\r
-#define _JAVASOFT_JNI_MD_H_\r
-\r
-#define JNIEXPORT __declspec(dllexport)\r
-#define JNIIMPORT __declspec(dllimport)\r
-#define JNICALL __stdcall\r
-\r
-typedef long jint;\r
-typedef __int64 jlong;\r
-typedef signed char jbyte;\r
-\r
-#endif /* !_JAVASOFT_JNI_MD_H_ */\r
diff --git a/applications/JavaOpenJPEG/java-jni/lib/jvm.lib b/applications/JavaOpenJPEG/java-jni/lib/jvm.lib
deleted file mode 100644 (file)
index 672855a..0000000
Binary files a/applications/JavaOpenJPEG/java-jni/lib/jvm.lib and /dev/null differ