From acd9844853ad1281848ea45c684dca32155ef258 Mon Sep 17 00:00:00 2001 From: hengyunabc Date: Sun, 23 Apr 2023 15:17:20 +0800 Subject: [PATCH] Improve the build support of arthas-vmtool, JDK 11, and remove unnecessary header files (#2485) --- .github/workflows/test.yaml | 36 +- arthas-vmtool/pom.xml | 33 +- arthas-vmtool/src/main/native/CMakeLists.txt | 18 - .../main/native/head/classfile_constants.h | 588 ---- arthas-vmtool/src/main/native/head/jawt.h | 356 --- .../src/main/native/head/jdwpTransport.h | 276 -- arthas-vmtool/src/main/native/head/jni.h | 1987 ------------- arthas-vmtool/src/main/native/head/jvmti.h | 2625 ----------------- .../src/main/native/head/jvmticmlr.h | 115 - .../src/main/native/head/linux/jawt_md.h | 60 - .../src/main/native/head/linux/jni_md.h | 66 - .../src/main/native/head/macos/jawt_md.h | 77 - .../src/main/native/head/macos/jni_md.h | 42 - .../head/windows/AccessBridgeCallbacks.h | 92 - .../native/head/windows/AccessBridgeCalls.c | 1130 ------- .../native/head/windows/AccessBridgeCalls.h | 725 ----- .../head/windows/AccessBridgePackages.h | 2215 -------------- .../src/main/native/head/windows/jawt_md.h | 59 - .../src/main/native/head/windows/jni_md.h | 40 - pom.xml | 26 - 20 files changed, 52 insertions(+), 10514 deletions(-) delete mode 100644 arthas-vmtool/src/main/native/CMakeLists.txt delete mode 100755 arthas-vmtool/src/main/native/head/classfile_constants.h delete mode 100755 arthas-vmtool/src/main/native/head/jawt.h delete mode 100755 arthas-vmtool/src/main/native/head/jdwpTransport.h delete mode 100755 arthas-vmtool/src/main/native/head/jni.h delete mode 100755 arthas-vmtool/src/main/native/head/jvmti.h delete mode 100755 arthas-vmtool/src/main/native/head/jvmticmlr.h delete mode 100644 arthas-vmtool/src/main/native/head/linux/jawt_md.h delete mode 100644 arthas-vmtool/src/main/native/head/linux/jni_md.h delete mode 100644 arthas-vmtool/src/main/native/head/macos/jawt_md.h delete mode 100644 arthas-vmtool/src/main/native/head/macos/jni_md.h delete mode 100755 arthas-vmtool/src/main/native/head/windows/AccessBridgeCallbacks.h delete mode 100755 arthas-vmtool/src/main/native/head/windows/AccessBridgeCalls.c delete mode 100755 arthas-vmtool/src/main/native/head/windows/AccessBridgeCalls.h delete mode 100755 arthas-vmtool/src/main/native/head/windows/AccessBridgePackages.h delete mode 100755 arthas-vmtool/src/main/native/head/windows/jawt_md.h delete mode 100755 arthas-vmtool/src/main/native/head/windows/jni_md.h diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index b3e8e663..9825ca7a 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -3,7 +3,7 @@ name: JavaCI on: [push, pull_request] jobs: - build: + ubuntu_build: runs-on: ubuntu-latest strategy: matrix: @@ -19,7 +19,39 @@ jobs: - name: Build with Maven run: mvn clean package -P full - build_jdk_ge_12: + windows_build: + runs-on: windows-2019 + strategy: + matrix: + java: [8, 11] + steps: + - uses: actions/checkout@v3 + - name: Setup java + uses: actions/setup-java@v3 + with: + java-version: ${{ matrix.java }} + distribution: 'zulu' + cache: 'maven' + - name: Build with Maven + run: mvn clean package -P full + + macos_build: + runs-on: macos-latest + strategy: + matrix: + java: [8, 11] + steps: + - uses: actions/checkout@v3 + - name: Setup java + uses: actions/setup-java@v3 + with: + java-version: ${{ matrix.java }} + distribution: 'zulu' + cache: 'maven' + - name: Build with Maven + run: mvn clean package -P full + + ubuntu_build_jdk_ge_12: runs-on: ubuntu-latest strategy: matrix: diff --git a/arthas-vmtool/pom.xml b/arthas-vmtool/pom.xml index 0aabdd14..e4a03915 100644 --- a/arthas-vmtool/pom.xml +++ b/arthas-vmtool/pom.xml @@ -24,7 +24,7 @@ - macos + darwin -arch x86_64 -arch arm64 libArthasJniLibrary.dylib @@ -84,7 +84,8 @@ - windows + + win32 @@ -114,6 +115,7 @@ + org.codehaus.mojo native-maven-plugin @@ -125,7 +127,6 @@ arthas.VmTool - ${project.basedir}/src/main/native/head ${os_name} @@ -139,6 +140,9 @@ generic-classic g++ + -I${JAVA_HOME}/include + -I${JAVA_HOME}/include/${os_name} + -I${project.build.directory}/native/include ${os_arch_option} -fpic -shared @@ -162,10 +166,9 @@ - javah + compile-and-link compile - javah initialize compile link @@ -185,12 +188,14 @@ org.apache.maven.plugins maven-compiler-plugin - 1.6 - 1.6 - UTF-8 - true + + + -h + ${project.build.directory}/native/include + + org.apache.maven.plugins @@ -208,8 +213,6 @@ arthas.VmTool - ${project.basedir}/src/main/native/head - ${os_name} src/main/native/src @@ -222,12 +225,13 @@ generic-classic g++ + -I${JAVA_HOME}/include + -I${JAVA_HOME}/include/${os_name} + -I${project.build.directory}/native/include ${os_arch_option} -fpic -shared -o - -I${JAVA_HOME}/include - -I${JAVA_HOME}/include/${os_name} target @@ -244,10 +248,9 @@ - javah + compile-and-link compile - javah initialize compile link diff --git a/arthas-vmtool/src/main/native/CMakeLists.txt b/arthas-vmtool/src/main/native/CMakeLists.txt deleted file mode 100644 index 68c624af..00000000 --- a/arthas-vmtool/src/main/native/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -cmake_minimum_required(VERSION 3.17) -project(arthas-native) - -set(CMAKE_CXX_STANDARD 14) - -add_library(jni-lib SHARED src/jni-library.cpp) - -#使用环境变量来include,把不同系统的兼容问题交给jdk解决 -include_directories("include") -include_directories(head) - -IF (WIN32) - include_directories(head/windows) -ELSEIF (APPLE) - include_directories(head/macos) -ELSEIF (common/linux) - include_directories(head/linux) -ENDIF () \ No newline at end of file diff --git a/arthas-vmtool/src/main/native/head/classfile_constants.h b/arthas-vmtool/src/main/native/head/classfile_constants.h deleted file mode 100755 index cca9832f..00000000 --- a/arthas-vmtool/src/main/native/head/classfile_constants.h +++ /dev/null @@ -1,588 +0,0 @@ -/* - * Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#ifndef CLASSFILE_CONSTANTS_H -#define CLASSFILE_CONSTANTS_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Classfile version number for this information */ -#define JVM_CLASSFILE_MAJOR_VERSION 60 -#define JVM_CLASSFILE_MINOR_VERSION 0 - -/* Flags */ - -enum { - JVM_ACC_PUBLIC = 0x0001, - JVM_ACC_PRIVATE = 0x0002, - JVM_ACC_PROTECTED = 0x0004, - JVM_ACC_STATIC = 0x0008, - JVM_ACC_FINAL = 0x0010, - JVM_ACC_SYNCHRONIZED = 0x0020, - JVM_ACC_SUPER = 0x0020, - JVM_ACC_VOLATILE = 0x0040, - JVM_ACC_BRIDGE = 0x0040, - JVM_ACC_TRANSIENT = 0x0080, - JVM_ACC_VARARGS = 0x0080, - JVM_ACC_NATIVE = 0x0100, - JVM_ACC_INTERFACE = 0x0200, - JVM_ACC_ABSTRACT = 0x0400, - JVM_ACC_STRICT = 0x0800, - JVM_ACC_SYNTHETIC = 0x1000, - JVM_ACC_ANNOTATION = 0x2000, - JVM_ACC_ENUM = 0x4000, - JVM_ACC_MODULE = 0x8000 -}; - -#define JVM_ACC_PUBLIC_BIT 0 -#define JVM_ACC_PRIVATE_BIT 1 -#define JVM_ACC_PROTECTED_BIT 2 -#define JVM_ACC_STATIC_BIT 3 -#define JVM_ACC_FINAL_BIT 4 -#define JVM_ACC_SYNCHRONIZED_BIT 5 -#define JVM_ACC_SUPER_BIT 5 -#define JVM_ACC_VOLATILE_BIT 6 -#define JVM_ACC_BRIDGE_BIT 6 -#define JVM_ACC_TRANSIENT_BIT 7 -#define JVM_ACC_VARARGS_BIT 7 -#define JVM_ACC_NATIVE_BIT 8 -#define JVM_ACC_INTERFACE_BIT 9 -#define JVM_ACC_ABSTRACT_BIT 10 -#define JVM_ACC_STRICT_BIT 11 -#define JVM_ACC_SYNTHETIC_BIT 12 -#define JVM_ACC_ANNOTATION_BIT 13 -#define JVM_ACC_ENUM_BIT 14 - -/* Used in newarray instruction. */ - -enum { - JVM_T_BOOLEAN = 4, - JVM_T_CHAR = 5, - JVM_T_FLOAT = 6, - JVM_T_DOUBLE = 7, - JVM_T_BYTE = 8, - JVM_T_SHORT = 9, - JVM_T_INT = 10, - JVM_T_LONG = 11 -}; - -/* Constant Pool Entries */ - -enum { - JVM_CONSTANT_Utf8 = 1, - JVM_CONSTANT_Unicode = 2, /* unused */ - JVM_CONSTANT_Integer = 3, - JVM_CONSTANT_Float = 4, - JVM_CONSTANT_Long = 5, - JVM_CONSTANT_Double = 6, - JVM_CONSTANT_Class = 7, - JVM_CONSTANT_String = 8, - JVM_CONSTANT_Fieldref = 9, - JVM_CONSTANT_Methodref = 10, - JVM_CONSTANT_InterfaceMethodref = 11, - JVM_CONSTANT_NameAndType = 12, - JVM_CONSTANT_MethodHandle = 15, // JSR 292 - JVM_CONSTANT_MethodType = 16, // JSR 292 - JVM_CONSTANT_Dynamic = 17, - JVM_CONSTANT_InvokeDynamic = 18, - JVM_CONSTANT_Module = 19, - JVM_CONSTANT_Package = 20, - JVM_CONSTANT_ExternalMax = 20 -}; - -/* JVM_CONSTANT_MethodHandle subtypes */ -enum { - JVM_REF_getField = 1, - JVM_REF_getStatic = 2, - JVM_REF_putField = 3, - JVM_REF_putStatic = 4, - JVM_REF_invokeVirtual = 5, - JVM_REF_invokeStatic = 6, - JVM_REF_invokeSpecial = 7, - JVM_REF_newInvokeSpecial = 8, - JVM_REF_invokeInterface = 9 -}; - -/* StackMapTable type item numbers */ - -enum { - JVM_ITEM_Top = 0, - JVM_ITEM_Integer = 1, - JVM_ITEM_Float = 2, - JVM_ITEM_Double = 3, - JVM_ITEM_Long = 4, - JVM_ITEM_Null = 5, - JVM_ITEM_UninitializedThis = 6, - JVM_ITEM_Object = 7, - JVM_ITEM_Uninitialized = 8 -}; - -/* Type signatures */ - -enum { - JVM_SIGNATURE_SLASH = '/', - JVM_SIGNATURE_DOT = '.', - JVM_SIGNATURE_SPECIAL = '<', - JVM_SIGNATURE_ENDSPECIAL = '>', - JVM_SIGNATURE_ARRAY = '[', - JVM_SIGNATURE_BYTE = 'B', - JVM_SIGNATURE_CHAR = 'C', - JVM_SIGNATURE_CLASS = 'L', - JVM_SIGNATURE_ENDCLASS = ';', - JVM_SIGNATURE_ENUM = 'E', - JVM_SIGNATURE_FLOAT = 'F', - JVM_SIGNATURE_DOUBLE = 'D', - JVM_SIGNATURE_FUNC = '(', - JVM_SIGNATURE_ENDFUNC = ')', - JVM_SIGNATURE_INT = 'I', - JVM_SIGNATURE_LONG = 'J', - JVM_SIGNATURE_SHORT = 'S', - JVM_SIGNATURE_VOID = 'V', - JVM_SIGNATURE_BOOLEAN = 'Z' -}; - -/* Opcodes */ - -enum { - JVM_OPC_nop = 0, - JVM_OPC_aconst_null = 1, - JVM_OPC_iconst_m1 = 2, - JVM_OPC_iconst_0 = 3, - JVM_OPC_iconst_1 = 4, - JVM_OPC_iconst_2 = 5, - JVM_OPC_iconst_3 = 6, - JVM_OPC_iconst_4 = 7, - JVM_OPC_iconst_5 = 8, - JVM_OPC_lconst_0 = 9, - JVM_OPC_lconst_1 = 10, - JVM_OPC_fconst_0 = 11, - JVM_OPC_fconst_1 = 12, - JVM_OPC_fconst_2 = 13, - JVM_OPC_dconst_0 = 14, - JVM_OPC_dconst_1 = 15, - JVM_OPC_bipush = 16, - JVM_OPC_sipush = 17, - JVM_OPC_ldc = 18, - JVM_OPC_ldc_w = 19, - JVM_OPC_ldc2_w = 20, - JVM_OPC_iload = 21, - JVM_OPC_lload = 22, - JVM_OPC_fload = 23, - JVM_OPC_dload = 24, - JVM_OPC_aload = 25, - JVM_OPC_iload_0 = 26, - JVM_OPC_iload_1 = 27, - JVM_OPC_iload_2 = 28, - JVM_OPC_iload_3 = 29, - JVM_OPC_lload_0 = 30, - JVM_OPC_lload_1 = 31, - JVM_OPC_lload_2 = 32, - JVM_OPC_lload_3 = 33, - JVM_OPC_fload_0 = 34, - JVM_OPC_fload_1 = 35, - JVM_OPC_fload_2 = 36, - JVM_OPC_fload_3 = 37, - JVM_OPC_dload_0 = 38, - JVM_OPC_dload_1 = 39, - JVM_OPC_dload_2 = 40, - JVM_OPC_dload_3 = 41, - JVM_OPC_aload_0 = 42, - JVM_OPC_aload_1 = 43, - JVM_OPC_aload_2 = 44, - JVM_OPC_aload_3 = 45, - JVM_OPC_iaload = 46, - JVM_OPC_laload = 47, - JVM_OPC_faload = 48, - JVM_OPC_daload = 49, - JVM_OPC_aaload = 50, - JVM_OPC_baload = 51, - JVM_OPC_caload = 52, - JVM_OPC_saload = 53, - JVM_OPC_istore = 54, - JVM_OPC_lstore = 55, - JVM_OPC_fstore = 56, - JVM_OPC_dstore = 57, - JVM_OPC_astore = 58, - JVM_OPC_istore_0 = 59, - JVM_OPC_istore_1 = 60, - JVM_OPC_istore_2 = 61, - JVM_OPC_istore_3 = 62, - JVM_OPC_lstore_0 = 63, - JVM_OPC_lstore_1 = 64, - JVM_OPC_lstore_2 = 65, - JVM_OPC_lstore_3 = 66, - JVM_OPC_fstore_0 = 67, - JVM_OPC_fstore_1 = 68, - JVM_OPC_fstore_2 = 69, - JVM_OPC_fstore_3 = 70, - JVM_OPC_dstore_0 = 71, - JVM_OPC_dstore_1 = 72, - JVM_OPC_dstore_2 = 73, - JVM_OPC_dstore_3 = 74, - JVM_OPC_astore_0 = 75, - JVM_OPC_astore_1 = 76, - JVM_OPC_astore_2 = 77, - JVM_OPC_astore_3 = 78, - JVM_OPC_iastore = 79, - JVM_OPC_lastore = 80, - JVM_OPC_fastore = 81, - JVM_OPC_dastore = 82, - JVM_OPC_aastore = 83, - JVM_OPC_bastore = 84, - JVM_OPC_castore = 85, - JVM_OPC_sastore = 86, - JVM_OPC_pop = 87, - JVM_OPC_pop2 = 88, - JVM_OPC_dup = 89, - JVM_OPC_dup_x1 = 90, - JVM_OPC_dup_x2 = 91, - JVM_OPC_dup2 = 92, - JVM_OPC_dup2_x1 = 93, - JVM_OPC_dup2_x2 = 94, - JVM_OPC_swap = 95, - JVM_OPC_iadd = 96, - JVM_OPC_ladd = 97, - JVM_OPC_fadd = 98, - JVM_OPC_dadd = 99, - JVM_OPC_isub = 100, - JVM_OPC_lsub = 101, - JVM_OPC_fsub = 102, - JVM_OPC_dsub = 103, - JVM_OPC_imul = 104, - JVM_OPC_lmul = 105, - JVM_OPC_fmul = 106, - JVM_OPC_dmul = 107, - JVM_OPC_idiv = 108, - JVM_OPC_ldiv = 109, - JVM_OPC_fdiv = 110, - JVM_OPC_ddiv = 111, - JVM_OPC_irem = 112, - JVM_OPC_lrem = 113, - JVM_OPC_frem = 114, - JVM_OPC_drem = 115, - JVM_OPC_ineg = 116, - JVM_OPC_lneg = 117, - JVM_OPC_fneg = 118, - JVM_OPC_dneg = 119, - JVM_OPC_ishl = 120, - JVM_OPC_lshl = 121, - JVM_OPC_ishr = 122, - JVM_OPC_lshr = 123, - JVM_OPC_iushr = 124, - JVM_OPC_lushr = 125, - JVM_OPC_iand = 126, - JVM_OPC_land = 127, - JVM_OPC_ior = 128, - JVM_OPC_lor = 129, - JVM_OPC_ixor = 130, - JVM_OPC_lxor = 131, - JVM_OPC_iinc = 132, - JVM_OPC_i2l = 133, - JVM_OPC_i2f = 134, - JVM_OPC_i2d = 135, - JVM_OPC_l2i = 136, - JVM_OPC_l2f = 137, - JVM_OPC_l2d = 138, - JVM_OPC_f2i = 139, - JVM_OPC_f2l = 140, - JVM_OPC_f2d = 141, - JVM_OPC_d2i = 142, - JVM_OPC_d2l = 143, - JVM_OPC_d2f = 144, - JVM_OPC_i2b = 145, - JVM_OPC_i2c = 146, - JVM_OPC_i2s = 147, - JVM_OPC_lcmp = 148, - JVM_OPC_fcmpl = 149, - JVM_OPC_fcmpg = 150, - JVM_OPC_dcmpl = 151, - JVM_OPC_dcmpg = 152, - JVM_OPC_ifeq = 153, - JVM_OPC_ifne = 154, - JVM_OPC_iflt = 155, - JVM_OPC_ifge = 156, - JVM_OPC_ifgt = 157, - JVM_OPC_ifle = 158, - JVM_OPC_if_icmpeq = 159, - JVM_OPC_if_icmpne = 160, - JVM_OPC_if_icmplt = 161, - JVM_OPC_if_icmpge = 162, - JVM_OPC_if_icmpgt = 163, - JVM_OPC_if_icmple = 164, - JVM_OPC_if_acmpeq = 165, - JVM_OPC_if_acmpne = 166, - JVM_OPC_goto = 167, - JVM_OPC_jsr = 168, - JVM_OPC_ret = 169, - JVM_OPC_tableswitch = 170, - JVM_OPC_lookupswitch = 171, - JVM_OPC_ireturn = 172, - JVM_OPC_lreturn = 173, - JVM_OPC_freturn = 174, - JVM_OPC_dreturn = 175, - JVM_OPC_areturn = 176, - JVM_OPC_return = 177, - JVM_OPC_getstatic = 178, - JVM_OPC_putstatic = 179, - JVM_OPC_getfield = 180, - JVM_OPC_putfield = 181, - JVM_OPC_invokevirtual = 182, - JVM_OPC_invokespecial = 183, - JVM_OPC_invokestatic = 184, - JVM_OPC_invokeinterface = 185, - JVM_OPC_invokedynamic = 186, - JVM_OPC_new = 187, - JVM_OPC_newarray = 188, - JVM_OPC_anewarray = 189, - JVM_OPC_arraylength = 190, - JVM_OPC_athrow = 191, - JVM_OPC_checkcast = 192, - JVM_OPC_instanceof = 193, - JVM_OPC_monitorenter = 194, - JVM_OPC_monitorexit = 195, - JVM_OPC_wide = 196, - JVM_OPC_multianewarray = 197, - JVM_OPC_ifnull = 198, - JVM_OPC_ifnonnull = 199, - JVM_OPC_goto_w = 200, - JVM_OPC_jsr_w = 201, - JVM_OPC_MAX = 201 -}; - -/* Opcode length initializer, use with something like: - * unsigned char opcode_length[JVM_OPC_MAX+1] = JVM_OPCODE_LENGTH_INITIALIZER; - */ -#define JVM_OPCODE_LENGTH_INITIALIZER { \ - 1, /* nop */ \ - 1, /* aconst_null */ \ - 1, /* iconst_m1 */ \ - 1, /* iconst_0 */ \ - 1, /* iconst_1 */ \ - 1, /* iconst_2 */ \ - 1, /* iconst_3 */ \ - 1, /* iconst_4 */ \ - 1, /* iconst_5 */ \ - 1, /* lconst_0 */ \ - 1, /* lconst_1 */ \ - 1, /* fconst_0 */ \ - 1, /* fconst_1 */ \ - 1, /* fconst_2 */ \ - 1, /* dconst_0 */ \ - 1, /* dconst_1 */ \ - 2, /* bipush */ \ - 3, /* sipush */ \ - 2, /* ldc */ \ - 3, /* ldc_w */ \ - 3, /* ldc2_w */ \ - 2, /* iload */ \ - 2, /* lload */ \ - 2, /* fload */ \ - 2, /* dload */ \ - 2, /* aload */ \ - 1, /* iload_0 */ \ - 1, /* iload_1 */ \ - 1, /* iload_2 */ \ - 1, /* iload_3 */ \ - 1, /* lload_0 */ \ - 1, /* lload_1 */ \ - 1, /* lload_2 */ \ - 1, /* lload_3 */ \ - 1, /* fload_0 */ \ - 1, /* fload_1 */ \ - 1, /* fload_2 */ \ - 1, /* fload_3 */ \ - 1, /* dload_0 */ \ - 1, /* dload_1 */ \ - 1, /* dload_2 */ \ - 1, /* dload_3 */ \ - 1, /* aload_0 */ \ - 1, /* aload_1 */ \ - 1, /* aload_2 */ \ - 1, /* aload_3 */ \ - 1, /* iaload */ \ - 1, /* laload */ \ - 1, /* faload */ \ - 1, /* daload */ \ - 1, /* aaload */ \ - 1, /* baload */ \ - 1, /* caload */ \ - 1, /* saload */ \ - 2, /* istore */ \ - 2, /* lstore */ \ - 2, /* fstore */ \ - 2, /* dstore */ \ - 2, /* astore */ \ - 1, /* istore_0 */ \ - 1, /* istore_1 */ \ - 1, /* istore_2 */ \ - 1, /* istore_3 */ \ - 1, /* lstore_0 */ \ - 1, /* lstore_1 */ \ - 1, /* lstore_2 */ \ - 1, /* lstore_3 */ \ - 1, /* fstore_0 */ \ - 1, /* fstore_1 */ \ - 1, /* fstore_2 */ \ - 1, /* fstore_3 */ \ - 1, /* dstore_0 */ \ - 1, /* dstore_1 */ \ - 1, /* dstore_2 */ \ - 1, /* dstore_3 */ \ - 1, /* astore_0 */ \ - 1, /* astore_1 */ \ - 1, /* astore_2 */ \ - 1, /* astore_3 */ \ - 1, /* iastore */ \ - 1, /* lastore */ \ - 1, /* fastore */ \ - 1, /* dastore */ \ - 1, /* aastore */ \ - 1, /* bastore */ \ - 1, /* castore */ \ - 1, /* sastore */ \ - 1, /* pop */ \ - 1, /* pop2 */ \ - 1, /* dup */ \ - 1, /* dup_x1 */ \ - 1, /* dup_x2 */ \ - 1, /* dup2 */ \ - 1, /* dup2_x1 */ \ - 1, /* dup2_x2 */ \ - 1, /* swap */ \ - 1, /* iadd */ \ - 1, /* ladd */ \ - 1, /* fadd */ \ - 1, /* dadd */ \ - 1, /* isub */ \ - 1, /* lsub */ \ - 1, /* fsub */ \ - 1, /* dsub */ \ - 1, /* imul */ \ - 1, /* lmul */ \ - 1, /* fmul */ \ - 1, /* dmul */ \ - 1, /* idiv */ \ - 1, /* ldiv */ \ - 1, /* fdiv */ \ - 1, /* ddiv */ \ - 1, /* irem */ \ - 1, /* lrem */ \ - 1, /* frem */ \ - 1, /* drem */ \ - 1, /* ineg */ \ - 1, /* lneg */ \ - 1, /* fneg */ \ - 1, /* dneg */ \ - 1, /* ishl */ \ - 1, /* lshl */ \ - 1, /* ishr */ \ - 1, /* lshr */ \ - 1, /* iushr */ \ - 1, /* lushr */ \ - 1, /* iand */ \ - 1, /* land */ \ - 1, /* ior */ \ - 1, /* lor */ \ - 1, /* ixor */ \ - 1, /* lxor */ \ - 3, /* iinc */ \ - 1, /* i2l */ \ - 1, /* i2f */ \ - 1, /* i2d */ \ - 1, /* l2i */ \ - 1, /* l2f */ \ - 1, /* l2d */ \ - 1, /* f2i */ \ - 1, /* f2l */ \ - 1, /* f2d */ \ - 1, /* d2i */ \ - 1, /* d2l */ \ - 1, /* d2f */ \ - 1, /* i2b */ \ - 1, /* i2c */ \ - 1, /* i2s */ \ - 1, /* lcmp */ \ - 1, /* fcmpl */ \ - 1, /* fcmpg */ \ - 1, /* dcmpl */ \ - 1, /* dcmpg */ \ - 3, /* ifeq */ \ - 3, /* ifne */ \ - 3, /* iflt */ \ - 3, /* ifge */ \ - 3, /* ifgt */ \ - 3, /* ifle */ \ - 3, /* if_icmpeq */ \ - 3, /* if_icmpne */ \ - 3, /* if_icmplt */ \ - 3, /* if_icmpge */ \ - 3, /* if_icmpgt */ \ - 3, /* if_icmple */ \ - 3, /* if_acmpeq */ \ - 3, /* if_acmpne */ \ - 3, /* goto */ \ - 3, /* jsr */ \ - 2, /* ret */ \ - 99, /* tableswitch */ \ - 99, /* lookupswitch */ \ - 1, /* ireturn */ \ - 1, /* lreturn */ \ - 1, /* freturn */ \ - 1, /* dreturn */ \ - 1, /* areturn */ \ - 1, /* return */ \ - 3, /* getstatic */ \ - 3, /* putstatic */ \ - 3, /* getfield */ \ - 3, /* putfield */ \ - 3, /* invokevirtual */ \ - 3, /* invokespecial */ \ - 3, /* invokestatic */ \ - 5, /* invokeinterface */ \ - 5, /* invokedynamic */ \ - 3, /* new */ \ - 2, /* newarray */ \ - 3, /* anewarray */ \ - 1, /* arraylength */ \ - 1, /* athrow */ \ - 3, /* checkcast */ \ - 3, /* instanceof */ \ - 1, /* monitorenter */ \ - 1, /* monitorexit */ \ - 0, /* wide */ \ - 4, /* multianewarray */ \ - 3, /* ifnull */ \ - 3, /* ifnonnull */ \ - 5, /* goto_w */ \ - 5 /* jsr_w */ \ -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* __cplusplus */ - -#endif /* CLASSFILE_CONSTANTS */ diff --git a/arthas-vmtool/src/main/native/head/jawt.h b/arthas-vmtool/src/main/native/head/jawt.h deleted file mode 100755 index 2079b0bc..00000000 --- a/arthas-vmtool/src/main/native/head/jawt.h +++ /dev/null @@ -1,356 +0,0 @@ -/* - * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#ifndef _JAVASOFT_JAWT_H_ -#define _JAVASOFT_JAWT_H_ - -#include "jni.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * AWT native interface. - * - * The AWT native interface allows a native C or C++ application a means - * by which to access native structures in AWT. This is to facilitate moving - * legacy C and C++ applications to Java and to target the needs of the - * developers who need to do their own native rendering to canvases - * for performance or other reasons. - * - * Conversely it also provides mechanisms for an application which already - * has a native window to provide that to AWT for AWT rendering. - * - * Since every platform may be different in its native data structures - * and APIs for windowing systems the application must necessarily - * provided per-platform source and compile and deliver per-platform - * native code to use this API. - * - * These interfaces are not part of the Java SE specification and - * a VM is not required to implement this API. However it is strongly - * recommended that all implementations which support headful AWT - * also support these interfaces. - * - */ - -/* - * AWT Native Drawing Surface (JAWT_DrawingSurface). - * - * For each platform, there is a native drawing surface structure. This - * platform-specific structure can be found in jawt_md.h. It is recommended - * that additional platforms follow the same model. It is also recommended - * that VMs on all platforms support the existing structures in jawt_md.h. - * - ******************* - * EXAMPLE OF USAGE: - ******************* - * - * In Win32, a programmer wishes to access the HWND of a canvas to perform - * native rendering into it. The programmer has declared the paint() method - * for their canvas subclass to be native: - * - * - * MyCanvas.java: - * - * import java.awt.*; - * - * public class MyCanvas extends Canvas { - * - * static { - * System.loadLibrary("mylib"); - * } - * - * public native void paint(Graphics g); - * } - * - * - * myfile.c: - * - * #include "jawt_md.h" - * #include - * - * JNIEXPORT void JNICALL - * Java_MyCanvas_paint(JNIEnv* env, jobject canvas, jobject graphics) - * { - * JAWT awt; - * JAWT_DrawingSurface* ds; - * JAWT_DrawingSurfaceInfo* dsi; - * JAWT_Win32DrawingSurfaceInfo* dsi_win; - * jboolean result; - * jint lock; - * - * // Get the AWT. Request version 9 to access features in that release. - * awt.version = JAWT_VERSION_9; - * result = JAWT_GetAWT(env, &awt); - * assert(result != JNI_FALSE); - * - * // Get the drawing surface - * ds = awt.GetDrawingSurface(env, canvas); - * assert(ds != NULL); - * - * // Lock the drawing surface - * lock = ds->Lock(ds); - * assert((lock & JAWT_LOCK_ERROR) == 0); - * - * // Get the drawing surface info - * dsi = ds->GetDrawingSurfaceInfo(ds); - * - * // Get the platform-specific drawing info - * dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo; - * - * ////////////////////////////// - * // !!! DO PAINTING HERE !!! // - * ////////////////////////////// - * - * // Free the drawing surface info - * ds->FreeDrawingSurfaceInfo(dsi); - * - * // Unlock the drawing surface - * ds->Unlock(ds); - * - * // Free the drawing surface - * awt.FreeDrawingSurface(ds); - * } - * - */ - -/* - * JAWT_Rectangle - * Structure for a native rectangle. - */ -typedef struct jawt_Rectangle { - jint x; - jint y; - jint width; - jint height; -} JAWT_Rectangle; - -struct jawt_DrawingSurface; - -/* - * JAWT_DrawingSurfaceInfo - * Structure for containing the underlying drawing information of a component. - */ -typedef struct jawt_DrawingSurfaceInfo { - /* - * Pointer to the platform-specific information. This can be safely - * cast to a JAWT_Win32DrawingSurfaceInfo on Windows or a - * JAWT_X11DrawingSurfaceInfo on Linux and Solaris. On Mac OS X this is a - * pointer to a NSObject that conforms to the JAWT_SurfaceLayers - * protocol. See jawt_md.h for details. - */ - void* platformInfo; - /* Cached pointer to the underlying drawing surface */ - struct jawt_DrawingSurface* ds; - /* Bounding rectangle of the drawing surface */ - JAWT_Rectangle bounds; - /* Number of rectangles in the clip */ - jint clipSize; - /* Clip rectangle array */ - JAWT_Rectangle* clip; -} JAWT_DrawingSurfaceInfo; - -#define JAWT_LOCK_ERROR 0x00000001 -#define JAWT_LOCK_CLIP_CHANGED 0x00000002 -#define JAWT_LOCK_BOUNDS_CHANGED 0x00000004 -#define JAWT_LOCK_SURFACE_CHANGED 0x00000008 - -/* - * JAWT_DrawingSurface - * Structure for containing the underlying drawing information of a component. - * All operations on a JAWT_DrawingSurface MUST be performed from the same - * thread as the call to GetDrawingSurface. - */ -typedef struct jawt_DrawingSurface { - /* - * Cached reference to the Java environment of the calling thread. - * If Lock(), Unlock(), GetDrawingSurfaceInfo() or - * FreeDrawingSurfaceInfo() are called from a different thread, - * this data member should be set before calling those functions. - */ - JNIEnv* env; - /* Cached reference to the target object */ - jobject target; - /* - * Lock the surface of the target component for native rendering. - * When finished drawing, the surface must be unlocked with - * Unlock(). This function returns a bitmask with one or more of the - * following values: - * - * JAWT_LOCK_ERROR - When an error has occurred and the surface could not - * be locked. - * - * JAWT_LOCK_CLIP_CHANGED - When the clip region has changed. - * - * JAWT_LOCK_BOUNDS_CHANGED - When the bounds of the surface have changed. - * - * JAWT_LOCK_SURFACE_CHANGED - When the surface itself has changed - */ - jint (JNICALL *Lock) - (struct jawt_DrawingSurface* ds); - /* - * Get the drawing surface info. - * The value returned may be cached, but the values may change if - * additional calls to Lock() or Unlock() are made. - * Lock() must be called before this can return a valid value. - * Returns NULL if an error has occurred. - * When finished with the returned value, FreeDrawingSurfaceInfo must be - * called. - */ - JAWT_DrawingSurfaceInfo* (JNICALL *GetDrawingSurfaceInfo) - (struct jawt_DrawingSurface* ds); - /* - * Free the drawing surface info. - */ - void (JNICALL *FreeDrawingSurfaceInfo) - (JAWT_DrawingSurfaceInfo* dsi); - /* - * Unlock the drawing surface of the target component for native rendering. - */ - void (JNICALL *Unlock) - (struct jawt_DrawingSurface* ds); -} JAWT_DrawingSurface; - -/* - * JAWT - * Structure for containing native AWT functions. - */ -typedef struct jawt { - /* - * Version of this structure. This must always be set before - * calling JAWT_GetAWT(). It affects the functions returned. - * Must be one of the known pre-defined versions. - */ - jint version; - /* - * Return a drawing surface from a target jobject. This value - * may be cached. - * Returns NULL if an error has occurred. - * Target must be a java.awt.Component (should be a Canvas - * or Window for native rendering). - * FreeDrawingSurface() must be called when finished with the - * returned JAWT_DrawingSurface. - */ - JAWT_DrawingSurface* (JNICALL *GetDrawingSurface) - (JNIEnv* env, jobject target); - /* - * Free the drawing surface allocated in GetDrawingSurface. - */ - void (JNICALL *FreeDrawingSurface) - (JAWT_DrawingSurface* ds); - /* - * Since 1.4 - * Locks the entire AWT for synchronization purposes - */ - void (JNICALL *Lock)(JNIEnv* env); - /* - * Since 1.4 - * Unlocks the entire AWT for synchronization purposes - */ - void (JNICALL *Unlock)(JNIEnv* env); - /* - * Since 1.4 - * Returns a reference to a java.awt.Component from a native - * platform handle. On Windows, this corresponds to an HWND; - * on Solaris and Linux, this is a Drawable. For other platforms, - * see the appropriate machine-dependent header file for a description. - * The reference returned by this function is a local - * reference that is only valid in this environment. - * This function returns a NULL reference if no component could be - * found with matching platform information. - */ - jobject (JNICALL *GetComponent)(JNIEnv* env, void* platformInfo); - - /** - * Since 9 - * Creates a java.awt.Frame placed in a native container. Container is - * referenced by the native platform handle. For example on Windows this - * corresponds to an HWND. For other platforms, see the appropriate - * machine-dependent header file for a description. The reference returned - * by this function is a local reference that is only valid in this - * environment. This function returns a NULL reference if no frame could be - * created with matching platform information. - */ - jobject (JNICALL *CreateEmbeddedFrame) (JNIEnv *env, void* platformInfo); - - /** - * Since 9 - * Moves and resizes the embedded frame. The new location of the top-left - * corner is specified by x and y parameters relative to the native parent - * component. The new size is specified by width and height. - * - * The embedded frame should be created by CreateEmbeddedFrame() method, or - * this function will not have any effect. - * - * java.awt.Component.setLocation() and java.awt.Component.setBounds() for - * EmbeddedFrame really don't move it within the native parent. These - * methods always locate the embedded frame at (0, 0) for backward - * compatibility. To allow moving embedded frames this method was - * introduced, and it works just the same way as setLocation() and - * setBounds() for usual, non-embedded components. - * - * Using usual get/setLocation() and get/setBounds() together with this new - * method is not recommended. - */ - void (JNICALL *SetBounds) (JNIEnv *env, jobject embeddedFrame, - jint x, jint y, jint w, jint h); - /** - * Since 9 - * Synthesize a native message to activate or deactivate an EmbeddedFrame - * window depending on the value of parameter doActivate, if "true" - * activates the window; otherwise, deactivates the window. - * - * The embedded frame should be created by CreateEmbeddedFrame() method, or - * this function will not have any effect. - */ - void (JNICALL *SynthesizeWindowActivation) (JNIEnv *env, - jobject embeddedFrame, jboolean doActivate); -} JAWT; - -/* - * Get the AWT native structure. This function returns JNI_FALSE if - * an error occurs. - */ -_JNI_IMPORT_OR_EXPORT_ -jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt); - -/* - * Specify one of these constants as the JAWT.version - * Specifying an earlier version will limit the available functions to - * those provided in that earlier version of JAWT. - * See the "Since" note on each API. Methods with no "Since" - * may be presumed to be present in JAWT_VERSION_1_3. - */ -#define JAWT_VERSION_1_3 0x00010003 -#define JAWT_VERSION_1_4 0x00010004 -#define JAWT_VERSION_1_7 0x00010007 -#define JAWT_VERSION_9 0x00090000 - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* !_JAVASOFT_JAWT_H_ */ diff --git a/arthas-vmtool/src/main/native/head/jdwpTransport.h b/arthas-vmtool/src/main/native/head/jdwpTransport.h deleted file mode 100755 index cdbd04d4..00000000 --- a/arthas-vmtool/src/main/native/head/jdwpTransport.h +++ /dev/null @@ -1,276 +0,0 @@ -/* - * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * Java Debug Wire Protocol Transport Service Provider Interface. - */ - -#ifndef JDWPTRANSPORT_H -#define JDWPTRANSPORT_H - -#include "jni.h" - -enum { - JDWPTRANSPORT_VERSION_1_0 = 0x00010000, - JDWPTRANSPORT_VERSION_1_1 = 0x00010001 -}; - -#ifdef __cplusplus -extern "C" { -#endif - -struct jdwpTransportNativeInterface_; - -struct _jdwpTransportEnv; - -#ifdef __cplusplus -typedef _jdwpTransportEnv jdwpTransportEnv; -#else -typedef const struct jdwpTransportNativeInterface_ *jdwpTransportEnv; -#endif /* __cplusplus */ - -/* - * Errors. Universal errors with JVMTI/JVMDI equivalents keep the - * values the same. - */ -typedef enum { - JDWPTRANSPORT_ERROR_NONE = 0, - JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT = 103, - JDWPTRANSPORT_ERROR_OUT_OF_MEMORY = 110, - JDWPTRANSPORT_ERROR_INTERNAL = 113, - JDWPTRANSPORT_ERROR_ILLEGAL_STATE = 201, - JDWPTRANSPORT_ERROR_IO_ERROR = 202, - JDWPTRANSPORT_ERROR_TIMEOUT = 203, - JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE = 204 -} jdwpTransportError; - - -/* - * Structure to define capabilities - */ -typedef struct { - unsigned int can_timeout_attach :1; - unsigned int can_timeout_accept :1; - unsigned int can_timeout_handshake :1; - unsigned int reserved3 :1; - unsigned int reserved4 :1; - unsigned int reserved5 :1; - unsigned int reserved6 :1; - unsigned int reserved7 :1; - unsigned int reserved8 :1; - unsigned int reserved9 :1; - unsigned int reserved10 :1; - unsigned int reserved11 :1; - unsigned int reserved12 :1; - unsigned int reserved13 :1; - unsigned int reserved14 :1; - unsigned int reserved15 :1; -} JDWPTransportCapabilities; - - -/* - * Structures to define packet layout. - * - * See: http://java.sun.com/j2se/1.5/docs/guide/jpda/jdwp-spec.html - */ - -#define JDWP_HEADER_SIZE 11 - -enum { - /* - * If additional flags are added that apply to jdwpCmdPacket, - * then debugLoop.c: reader() will need to be updated to - * accept more than JDWPTRANSPORT_FLAGS_NONE. - */ - JDWPTRANSPORT_FLAGS_NONE = 0x0, - JDWPTRANSPORT_FLAGS_REPLY = 0x80 -}; - -typedef struct { - jint len; - jint id; - jbyte flags; - jbyte cmdSet; - jbyte cmd; - jbyte *data; -} jdwpCmdPacket; - -typedef struct { - jint len; - jint id; - jbyte flags; - jshort errorCode; - jbyte *data; -} jdwpReplyPacket; - -typedef struct { - union { - jdwpCmdPacket cmd; - jdwpReplyPacket reply; - } type; -} jdwpPacket; - -/* - * JDWP functions called by the transport. - */ -typedef struct jdwpTransportCallback { - void *(*alloc)(jint numBytes); /* Call this for all allocations */ - void (*free)(void *buffer); /* Call this for all deallocations */ -} jdwpTransportCallback; - -typedef jint (JNICALL *jdwpTransport_OnLoad_t)(JavaVM *jvm, - jdwpTransportCallback *callback, - jint version, - jdwpTransportEnv** env); - -/* - * JDWP transport configuration from the agent. - */ -typedef struct jdwpTransportConfiguration { - /* Field added in JDWPTRANSPORT_VERSION_1_1: */ - const char* allowed_peers; /* Peers allowed for connection */ -} jdwpTransportConfiguration; - - -/* Function Interface */ - -struct jdwpTransportNativeInterface_ { - /* 1 : RESERVED */ - void *reserved1; - - /* 2 : Get Capabilities */ - jdwpTransportError (JNICALL *GetCapabilities)(jdwpTransportEnv* env, - JDWPTransportCapabilities *capabilities_ptr); - - /* 3 : Attach */ - jdwpTransportError (JNICALL *Attach)(jdwpTransportEnv* env, - const char* address, - jlong attach_timeout, - jlong handshake_timeout); - - /* 4: StartListening */ - jdwpTransportError (JNICALL *StartListening)(jdwpTransportEnv* env, - const char* address, - char** actual_address); - - /* 5: StopListening */ - jdwpTransportError (JNICALL *StopListening)(jdwpTransportEnv* env); - - /* 6: Accept */ - jdwpTransportError (JNICALL *Accept)(jdwpTransportEnv* env, - jlong accept_timeout, - jlong handshake_timeout); - - /* 7: IsOpen */ - jboolean (JNICALL *IsOpen)(jdwpTransportEnv* env); - - /* 8: Close */ - jdwpTransportError (JNICALL *Close)(jdwpTransportEnv* env); - - /* 9: ReadPacket */ - jdwpTransportError (JNICALL *ReadPacket)(jdwpTransportEnv* env, - jdwpPacket *pkt); - - /* 10: Write Packet */ - jdwpTransportError (JNICALL *WritePacket)(jdwpTransportEnv* env, - const jdwpPacket* pkt); - - /* 11: GetLastError */ - jdwpTransportError (JNICALL *GetLastError)(jdwpTransportEnv* env, - char** error); - - /* 12: SetTransportConfiguration added in JDWPTRANSPORT_VERSION_1_1 */ - jdwpTransportError (JNICALL *SetTransportConfiguration)(jdwpTransportEnv* env, - jdwpTransportConfiguration *config); -}; - - -/* - * Use inlined functions so that C++ code can use syntax such as - * env->Attach("mymachine:5000", 10*1000, 0); - * - * rather than using C's :- - * - * (*env)->Attach(env, "mymachine:5000", 10*1000, 0); - */ -struct _jdwpTransportEnv { - const struct jdwpTransportNativeInterface_ *functions; -#ifdef __cplusplus - - jdwpTransportError GetCapabilities(JDWPTransportCapabilities *capabilities_ptr) { - return functions->GetCapabilities(this, capabilities_ptr); - } - - jdwpTransportError Attach(const char* address, jlong attach_timeout, - jlong handshake_timeout) { - return functions->Attach(this, address, attach_timeout, handshake_timeout); - } - - jdwpTransportError StartListening(const char* address, - char** actual_address) { - return functions->StartListening(this, address, actual_address); - } - - jdwpTransportError StopListening(void) { - return functions->StopListening(this); - } - - jdwpTransportError Accept(jlong accept_timeout, jlong handshake_timeout) { - return functions->Accept(this, accept_timeout, handshake_timeout); - } - - jboolean IsOpen(void) { - return functions->IsOpen(this); - } - - jdwpTransportError Close(void) { - return functions->Close(this); - } - - jdwpTransportError ReadPacket(jdwpPacket *pkt) { - return functions->ReadPacket(this, pkt); - } - - jdwpTransportError WritePacket(const jdwpPacket* pkt) { - return functions->WritePacket(this, pkt); - } - - jdwpTransportError GetLastError(char** error) { - return functions->GetLastError(this, error); - } - - /* SetTransportConfiguration added in JDWPTRANSPORT_VERSION_1_1 */ - jdwpTransportError SetTransportConfiguration(jdwpTransportEnv* env, - return functions->SetTransportConfiguration(this, config); - } - -#endif /* __cplusplus */ -}; - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* __cplusplus */ - -#endif /* JDWPTRANSPORT_H */ diff --git a/arthas-vmtool/src/main/native/head/jni.h b/arthas-vmtool/src/main/native/head/jni.h deleted file mode 100755 index aa0cdf5c..00000000 --- a/arthas-vmtool/src/main/native/head/jni.h +++ /dev/null @@ -1,1987 +0,0 @@ -/* - * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * We used part of Netscape's Java Runtime Interface (JRI) as the starting - * point of our design and implementation. - */ - -/****************************************************************************** - * Java Runtime Interface - * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved. - *****************************************************************************/ - -#ifndef _JAVASOFT_JNI_H_ -#define _JAVASOFT_JNI_H_ - -#include -#include - -/* jni_md.h contains the machine-dependent typedefs for jbyte, jint - and jlong */ - -#include "jni_md.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * JNI Types - */ - -#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H - -typedef unsigned char jboolean; -typedef unsigned short jchar; -typedef short jshort; -typedef float jfloat; -typedef double jdouble; - -typedef jint jsize; - -#ifdef __cplusplus - -class _jobject {}; -class _jclass : public _jobject {}; -class _jthrowable : public _jobject {}; -class _jstring : public _jobject {}; -class _jarray : public _jobject {}; -class _jbooleanArray : public _jarray {}; -class _jbyteArray : public _jarray {}; -class _jcharArray : public _jarray {}; -class _jshortArray : public _jarray {}; -class _jintArray : public _jarray {}; -class _jlongArray : public _jarray {}; -class _jfloatArray : public _jarray {}; -class _jdoubleArray : public _jarray {}; -class _jobjectArray : public _jarray {}; - -typedef _jobject *jobject; -typedef _jclass *jclass; -typedef _jthrowable *jthrowable; -typedef _jstring *jstring; -typedef _jarray *jarray; -typedef _jbooleanArray *jbooleanArray; -typedef _jbyteArray *jbyteArray; -typedef _jcharArray *jcharArray; -typedef _jshortArray *jshortArray; -typedef _jintArray *jintArray; -typedef _jlongArray *jlongArray; -typedef _jfloatArray *jfloatArray; -typedef _jdoubleArray *jdoubleArray; -typedef _jobjectArray *jobjectArray; - -#else - -struct _jobject; - -typedef struct _jobject *jobject; -typedef jobject jclass; -typedef jobject jthrowable; -typedef jobject jstring; -typedef jobject jarray; -typedef jarray jbooleanArray; -typedef jarray jbyteArray; -typedef jarray jcharArray; -typedef jarray jshortArray; -typedef jarray jintArray; -typedef jarray jlongArray; -typedef jarray jfloatArray; -typedef jarray jdoubleArray; -typedef jarray jobjectArray; - -#endif - -typedef jobject jweak; - -typedef union jvalue { - jboolean z; - jbyte b; - jchar c; - jshort s; - jint i; - jlong j; - jfloat f; - jdouble d; - jobject l; -} jvalue; - -struct _jfieldID; -typedef struct _jfieldID *jfieldID; - -struct _jmethodID; -typedef struct _jmethodID *jmethodID; - -/* Return values from jobjectRefType */ -typedef enum _jobjectType { - JNIInvalidRefType = 0, - JNILocalRefType = 1, - JNIGlobalRefType = 2, - JNIWeakGlobalRefType = 3 -} jobjectRefType; - - -#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */ - -/* - * jboolean constants - */ - -#define JNI_FALSE 0 -#define JNI_TRUE 1 - -/* - * possible return values for JNI functions. - */ - -#define JNI_OK 0 /* success */ -#define JNI_ERR (-1) /* unknown error */ -#define JNI_EDETACHED (-2) /* thread detached from the VM */ -#define JNI_EVERSION (-3) /* JNI version error */ -#define JNI_ENOMEM (-4) /* not enough memory */ -#define JNI_EEXIST (-5) /* VM already created */ -#define JNI_EINVAL (-6) /* invalid arguments */ - -/* - * used in ReleaseScalarArrayElements - */ - -#define JNI_COMMIT 1 -#define JNI_ABORT 2 - -/* - * used in RegisterNatives to describe native method name, signature, - * and function pointer. - */ - -typedef struct { - char *name; - char *signature; - void *fnPtr; -} JNINativeMethod; - -/* - * JNI Native Method Interface. - */ - -struct JNINativeInterface_; - -struct JNIEnv_; - -#ifdef __cplusplus -typedef JNIEnv_ JNIEnv; -#else -typedef const struct JNINativeInterface_ *JNIEnv; -#endif - -/* - * JNI Invocation Interface. - */ - -struct JNIInvokeInterface_; - -struct JavaVM_; - -#ifdef __cplusplus -typedef JavaVM_ JavaVM; -#else -typedef const struct JNIInvokeInterface_ *JavaVM; -#endif - -struct JNINativeInterface_ { - void *reserved0; - void *reserved1; - void *reserved2; - - void *reserved3; - jint (JNICALL *GetVersion)(JNIEnv *env); - - jclass (JNICALL *DefineClass) - (JNIEnv *env, const char *name, jobject loader, const jbyte *buf, - jsize len); - jclass (JNICALL *FindClass) - (JNIEnv *env, const char *name); - - jmethodID (JNICALL *FromReflectedMethod) - (JNIEnv *env, jobject method); - jfieldID (JNICALL *FromReflectedField) - (JNIEnv *env, jobject field); - - jobject (JNICALL *ToReflectedMethod) - (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic); - - jclass (JNICALL *GetSuperclass) - (JNIEnv *env, jclass sub); - jboolean (JNICALL *IsAssignableFrom) - (JNIEnv *env, jclass sub, jclass sup); - - jobject (JNICALL *ToReflectedField) - (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic); - - jint (JNICALL *Throw) - (JNIEnv *env, jthrowable obj); - jint (JNICALL *ThrowNew) - (JNIEnv *env, jclass clazz, const char *msg); - jthrowable (JNICALL *ExceptionOccurred) - (JNIEnv *env); - void (JNICALL *ExceptionDescribe) - (JNIEnv *env); - void (JNICALL *ExceptionClear) - (JNIEnv *env); - void (JNICALL *FatalError) - (JNIEnv *env, const char *msg); - - jint (JNICALL *PushLocalFrame) - (JNIEnv *env, jint capacity); - jobject (JNICALL *PopLocalFrame) - (JNIEnv *env, jobject result); - - jobject (JNICALL *NewGlobalRef) - (JNIEnv *env, jobject lobj); - void (JNICALL *DeleteGlobalRef) - (JNIEnv *env, jobject gref); - void (JNICALL *DeleteLocalRef) - (JNIEnv *env, jobject obj); - jboolean (JNICALL *IsSameObject) - (JNIEnv *env, jobject obj1, jobject obj2); - jobject (JNICALL *NewLocalRef) - (JNIEnv *env, jobject ref); - jint (JNICALL *EnsureLocalCapacity) - (JNIEnv *env, jint capacity); - - jobject (JNICALL *AllocObject) - (JNIEnv *env, jclass clazz); - jobject (JNICALL *NewObject) - (JNIEnv *env, jclass clazz, jmethodID methodID, ...); - jobject (JNICALL *NewObjectV) - (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); - jobject (JNICALL *NewObjectA) - (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); - - jclass (JNICALL *GetObjectClass) - (JNIEnv *env, jobject obj); - jboolean (JNICALL *IsInstanceOf) - (JNIEnv *env, jobject obj, jclass clazz); - - jmethodID (JNICALL *GetMethodID) - (JNIEnv *env, jclass clazz, const char *name, const char *sig); - - jobject (JNICALL *CallObjectMethod) - (JNIEnv *env, jobject obj, jmethodID methodID, ...); - jobject (JNICALL *CallObjectMethodV) - (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); - jobject (JNICALL *CallObjectMethodA) - (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); - - jboolean (JNICALL *CallBooleanMethod) - (JNIEnv *env, jobject obj, jmethodID methodID, ...); - jboolean (JNICALL *CallBooleanMethodV) - (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); - jboolean (JNICALL *CallBooleanMethodA) - (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); - - jbyte (JNICALL *CallByteMethod) - (JNIEnv *env, jobject obj, jmethodID methodID, ...); - jbyte (JNICALL *CallByteMethodV) - (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); - jbyte (JNICALL *CallByteMethodA) - (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); - - jchar (JNICALL *CallCharMethod) - (JNIEnv *env, jobject obj, jmethodID methodID, ...); - jchar (JNICALL *CallCharMethodV) - (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); - jchar (JNICALL *CallCharMethodA) - (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); - - jshort (JNICALL *CallShortMethod) - (JNIEnv *env, jobject obj, jmethodID methodID, ...); - jshort (JNICALL *CallShortMethodV) - (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); - jshort (JNICALL *CallShortMethodA) - (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); - - jint (JNICALL *CallIntMethod) - (JNIEnv *env, jobject obj, jmethodID methodID, ...); - jint (JNICALL *CallIntMethodV) - (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); - jint (JNICALL *CallIntMethodA) - (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); - - jlong (JNICALL *CallLongMethod) - (JNIEnv *env, jobject obj, jmethodID methodID, ...); - jlong (JNICALL *CallLongMethodV) - (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); - jlong (JNICALL *CallLongMethodA) - (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); - - jfloat (JNICALL *CallFloatMethod) - (JNIEnv *env, jobject obj, jmethodID methodID, ...); - jfloat (JNICALL *CallFloatMethodV) - (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); - jfloat (JNICALL *CallFloatMethodA) - (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); - - jdouble (JNICALL *CallDoubleMethod) - (JNIEnv *env, jobject obj, jmethodID methodID, ...); - jdouble (JNICALL *CallDoubleMethodV) - (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); - jdouble (JNICALL *CallDoubleMethodA) - (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); - - void (JNICALL *CallVoidMethod) - (JNIEnv *env, jobject obj, jmethodID methodID, ...); - void (JNICALL *CallVoidMethodV) - (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); - void (JNICALL *CallVoidMethodA) - (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); - - jobject (JNICALL *CallNonvirtualObjectMethod) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); - jobject (JNICALL *CallNonvirtualObjectMethodV) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - va_list args); - jobject (JNICALL *CallNonvirtualObjectMethodA) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - const jvalue * args); - - jboolean (JNICALL *CallNonvirtualBooleanMethod) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); - jboolean (JNICALL *CallNonvirtualBooleanMethodV) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - va_list args); - jboolean (JNICALL *CallNonvirtualBooleanMethodA) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - const jvalue * args); - - jbyte (JNICALL *CallNonvirtualByteMethod) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); - jbyte (JNICALL *CallNonvirtualByteMethodV) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - va_list args); - jbyte (JNICALL *CallNonvirtualByteMethodA) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - const jvalue *args); - - jchar (JNICALL *CallNonvirtualCharMethod) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); - jchar (JNICALL *CallNonvirtualCharMethodV) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - va_list args); - jchar (JNICALL *CallNonvirtualCharMethodA) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - const jvalue *args); - - jshort (JNICALL *CallNonvirtualShortMethod) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); - jshort (JNICALL *CallNonvirtualShortMethodV) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - va_list args); - jshort (JNICALL *CallNonvirtualShortMethodA) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - const jvalue *args); - - jint (JNICALL *CallNonvirtualIntMethod) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); - jint (JNICALL *CallNonvirtualIntMethodV) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - va_list args); - jint (JNICALL *CallNonvirtualIntMethodA) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - const jvalue *args); - - jlong (JNICALL *CallNonvirtualLongMethod) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); - jlong (JNICALL *CallNonvirtualLongMethodV) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - va_list args); - jlong (JNICALL *CallNonvirtualLongMethodA) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - const jvalue *args); - - jfloat (JNICALL *CallNonvirtualFloatMethod) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); - jfloat (JNICALL *CallNonvirtualFloatMethodV) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - va_list args); - jfloat (JNICALL *CallNonvirtualFloatMethodA) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - const jvalue *args); - - jdouble (JNICALL *CallNonvirtualDoubleMethod) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); - jdouble (JNICALL *CallNonvirtualDoubleMethodV) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - va_list args); - jdouble (JNICALL *CallNonvirtualDoubleMethodA) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - const jvalue *args); - - void (JNICALL *CallNonvirtualVoidMethod) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); - void (JNICALL *CallNonvirtualVoidMethodV) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - va_list args); - void (JNICALL *CallNonvirtualVoidMethodA) - (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, - const jvalue * args); - - jfieldID (JNICALL *GetFieldID) - (JNIEnv *env, jclass clazz, const char *name, const char *sig); - - jobject (JNICALL *GetObjectField) - (JNIEnv *env, jobject obj, jfieldID fieldID); - jboolean (JNICALL *GetBooleanField) - (JNIEnv *env, jobject obj, jfieldID fieldID); - jbyte (JNICALL *GetByteField) - (JNIEnv *env, jobject obj, jfieldID fieldID); - jchar (JNICALL *GetCharField) - (JNIEnv *env, jobject obj, jfieldID fieldID); - jshort (JNICALL *GetShortField) - (JNIEnv *env, jobject obj, jfieldID fieldID); - jint (JNICALL *GetIntField) - (JNIEnv *env, jobject obj, jfieldID fieldID); - jlong (JNICALL *GetLongField) - (JNIEnv *env, jobject obj, jfieldID fieldID); - jfloat (JNICALL *GetFloatField) - (JNIEnv *env, jobject obj, jfieldID fieldID); - jdouble (JNICALL *GetDoubleField) - (JNIEnv *env, jobject obj, jfieldID fieldID); - - void (JNICALL *SetObjectField) - (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val); - void (JNICALL *SetBooleanField) - (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val); - void (JNICALL *SetByteField) - (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val); - void (JNICALL *SetCharField) - (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val); - void (JNICALL *SetShortField) - (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val); - void (JNICALL *SetIntField) - (JNIEnv *env, jobject obj, jfieldID fieldID, jint val); - void (JNICALL *SetLongField) - (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val); - void (JNICALL *SetFloatField) - (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val); - void (JNICALL *SetDoubleField) - (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); - - jmethodID (JNICALL *GetStaticMethodID) - (JNIEnv *env, jclass clazz, const char *name, const char *sig); - - jobject (JNICALL *CallStaticObjectMethod) - (JNIEnv *env, jclass clazz, jmethodID methodID, ...); - jobject (JNICALL *CallStaticObjectMethodV) - (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); - jobject (JNICALL *CallStaticObjectMethodA) - (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); - - jboolean (JNICALL *CallStaticBooleanMethod) - (JNIEnv *env, jclass clazz, jmethodID methodID, ...); - jboolean (JNICALL *CallStaticBooleanMethodV) - (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); - jboolean (JNICALL *CallStaticBooleanMethodA) - (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); - - jbyte (JNICALL *CallStaticByteMethod) - (JNIEnv *env, jclass clazz, jmethodID methodID, ...); - jbyte (JNICALL *CallStaticByteMethodV) - (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); - jbyte (JNICALL *CallStaticByteMethodA) - (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); - - jchar (JNICALL *CallStaticCharMethod) - (JNIEnv *env, jclass clazz, jmethodID methodID, ...); - jchar (JNICALL *CallStaticCharMethodV) - (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); - jchar (JNICALL *CallStaticCharMethodA) - (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); - - jshort (JNICALL *CallStaticShortMethod) - (JNIEnv *env, jclass clazz, jmethodID methodID, ...); - jshort (JNICALL *CallStaticShortMethodV) - (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); - jshort (JNICALL *CallStaticShortMethodA) - (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); - - jint (JNICALL *CallStaticIntMethod) - (JNIEnv *env, jclass clazz, jmethodID methodID, ...); - jint (JNICALL *CallStaticIntMethodV) - (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); - jint (JNICALL *CallStaticIntMethodA) - (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); - - jlong (JNICALL *CallStaticLongMethod) - (JNIEnv *env, jclass clazz, jmethodID methodID, ...); - jlong (JNICALL *CallStaticLongMethodV) - (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); - jlong (JNICALL *CallStaticLongMethodA) - (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); - - jfloat (JNICALL *CallStaticFloatMethod) - (JNIEnv *env, jclass clazz, jmethodID methodID, ...); - jfloat (JNICALL *CallStaticFloatMethodV) - (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); - jfloat (JNICALL *CallStaticFloatMethodA) - (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); - - jdouble (JNICALL *CallStaticDoubleMethod) - (JNIEnv *env, jclass clazz, jmethodID methodID, ...); - jdouble (JNICALL *CallStaticDoubleMethodV) - (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); - jdouble (JNICALL *CallStaticDoubleMethodA) - (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); - - void (JNICALL *CallStaticVoidMethod) - (JNIEnv *env, jclass cls, jmethodID methodID, ...); - void (JNICALL *CallStaticVoidMethodV) - (JNIEnv *env, jclass cls, jmethodID methodID, va_list args); - void (JNICALL *CallStaticVoidMethodA) - (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args); - - jfieldID (JNICALL *GetStaticFieldID) - (JNIEnv *env, jclass clazz, const char *name, const char *sig); - jobject (JNICALL *GetStaticObjectField) - (JNIEnv *env, jclass clazz, jfieldID fieldID); - jboolean (JNICALL *GetStaticBooleanField) - (JNIEnv *env, jclass clazz, jfieldID fieldID); - jbyte (JNICALL *GetStaticByteField) - (JNIEnv *env, jclass clazz, jfieldID fieldID); - jchar (JNICALL *GetStaticCharField) - (JNIEnv *env, jclass clazz, jfieldID fieldID); - jshort (JNICALL *GetStaticShortField) - (JNIEnv *env, jclass clazz, jfieldID fieldID); - jint (JNICALL *GetStaticIntField) - (JNIEnv *env, jclass clazz, jfieldID fieldID); - jlong (JNICALL *GetStaticLongField) - (JNIEnv *env, jclass clazz, jfieldID fieldID); - jfloat (JNICALL *GetStaticFloatField) - (JNIEnv *env, jclass clazz, jfieldID fieldID); - jdouble (JNICALL *GetStaticDoubleField) - (JNIEnv *env, jclass clazz, jfieldID fieldID); - - void (JNICALL *SetStaticObjectField) - (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value); - void (JNICALL *SetStaticBooleanField) - (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value); - void (JNICALL *SetStaticByteField) - (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value); - void (JNICALL *SetStaticCharField) - (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value); - void (JNICALL *SetStaticShortField) - (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value); - void (JNICALL *SetStaticIntField) - (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value); - void (JNICALL *SetStaticLongField) - (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value); - void (JNICALL *SetStaticFloatField) - (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value); - void (JNICALL *SetStaticDoubleField) - (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value); - - jstring (JNICALL *NewString) - (JNIEnv *env, const jchar *unicode, jsize len); - jsize (JNICALL *GetStringLength) - (JNIEnv *env, jstring str); - const jchar *(JNICALL *GetStringChars) - (JNIEnv *env, jstring str, jboolean *isCopy); - void (JNICALL *ReleaseStringChars) - (JNIEnv *env, jstring str, const jchar *chars); - - jstring (JNICALL *NewStringUTF) - (JNIEnv *env, const char *utf); - jsize (JNICALL *GetStringUTFLength) - (JNIEnv *env, jstring str); - const char* (JNICALL *GetStringUTFChars) - (JNIEnv *env, jstring str, jboolean *isCopy); - void (JNICALL *ReleaseStringUTFChars) - (JNIEnv *env, jstring str, const char* chars); - - - jsize (JNICALL *GetArrayLength) - (JNIEnv *env, jarray array); - - jobjectArray (JNICALL *NewObjectArray) - (JNIEnv *env, jsize len, jclass clazz, jobject init); - jobject (JNICALL *GetObjectArrayElement) - (JNIEnv *env, jobjectArray array, jsize index); - void (JNICALL *SetObjectArrayElement) - (JNIEnv *env, jobjectArray array, jsize index, jobject val); - - jbooleanArray (JNICALL *NewBooleanArray) - (JNIEnv *env, jsize len); - jbyteArray (JNICALL *NewByteArray) - (JNIEnv *env, jsize len); - jcharArray (JNICALL *NewCharArray) - (JNIEnv *env, jsize len); - jshortArray (JNICALL *NewShortArray) - (JNIEnv *env, jsize len); - jintArray (JNICALL *NewIntArray) - (JNIEnv *env, jsize len); - jlongArray (JNICALL *NewLongArray) - (JNIEnv *env, jsize len); - jfloatArray (JNICALL *NewFloatArray) - (JNIEnv *env, jsize len); - jdoubleArray (JNICALL *NewDoubleArray) - (JNIEnv *env, jsize len); - - jboolean * (JNICALL *GetBooleanArrayElements) - (JNIEnv *env, jbooleanArray array, jboolean *isCopy); - jbyte * (JNICALL *GetByteArrayElements) - (JNIEnv *env, jbyteArray array, jboolean *isCopy); - jchar * (JNICALL *GetCharArrayElements) - (JNIEnv *env, jcharArray array, jboolean *isCopy); - jshort * (JNICALL *GetShortArrayElements) - (JNIEnv *env, jshortArray array, jboolean *isCopy); - jint * (JNICALL *GetIntArrayElements) - (JNIEnv *env, jintArray array, jboolean *isCopy); - jlong * (JNICALL *GetLongArrayElements) - (JNIEnv *env, jlongArray array, jboolean *isCopy); - jfloat * (JNICALL *GetFloatArrayElements) - (JNIEnv *env, jfloatArray array, jboolean *isCopy); - jdouble * (JNICALL *GetDoubleArrayElements) - (JNIEnv *env, jdoubleArray array, jboolean *isCopy); - - void (JNICALL *ReleaseBooleanArrayElements) - (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode); - void (JNICALL *ReleaseByteArrayElements) - (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode); - void (JNICALL *ReleaseCharArrayElements) - (JNIEnv *env, jcharArray array, jchar *elems, jint mode); - void (JNICALL *ReleaseShortArrayElements) - (JNIEnv *env, jshortArray array, jshort *elems, jint mode); - void (JNICALL *ReleaseIntArrayElements) - (JNIEnv *env, jintArray array, jint *elems, jint mode); - void (JNICALL *ReleaseLongArrayElements) - (JNIEnv *env, jlongArray array, jlong *elems, jint mode); - void (JNICALL *ReleaseFloatArrayElements) - (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode); - void (JNICALL *ReleaseDoubleArrayElements) - (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode); - - void (JNICALL *GetBooleanArrayRegion) - (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); - void (JNICALL *GetByteArrayRegion) - (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); - void (JNICALL *GetCharArrayRegion) - (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); - void (JNICALL *GetShortArrayRegion) - (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); - void (JNICALL *GetIntArrayRegion) - (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); - void (JNICALL *GetLongArrayRegion) - (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); - void (JNICALL *GetFloatArrayRegion) - (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); - void (JNICALL *GetDoubleArrayRegion) - (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); - - void (JNICALL *SetBooleanArrayRegion) - (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf); - void (JNICALL *SetByteArrayRegion) - (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf); - void (JNICALL *SetCharArrayRegion) - (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf); - void (JNICALL *SetShortArrayRegion) - (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf); - void (JNICALL *SetIntArrayRegion) - (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf); - void (JNICALL *SetLongArrayRegion) - (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf); - void (JNICALL *SetFloatArrayRegion) - (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf); - void (JNICALL *SetDoubleArrayRegion) - (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf); - - jint (JNICALL *RegisterNatives) - (JNIEnv *env, jclass clazz, const JNINativeMethod *methods, - jint nMethods); - jint (JNICALL *UnregisterNatives) - (JNIEnv *env, jclass clazz); - - jint (JNICALL *MonitorEnter) - (JNIEnv *env, jobject obj); - jint (JNICALL *MonitorExit) - (JNIEnv *env, jobject obj); - - jint (JNICALL *GetJavaVM) - (JNIEnv *env, JavaVM **vm); - - void (JNICALL *GetStringRegion) - (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf); - void (JNICALL *GetStringUTFRegion) - (JNIEnv *env, jstring str, jsize start, jsize len, char *buf); - - void * (JNICALL *GetPrimitiveArrayCritical) - (JNIEnv *env, jarray array, jboolean *isCopy); - void (JNICALL *ReleasePrimitiveArrayCritical) - (JNIEnv *env, jarray array, void *carray, jint mode); - - const jchar * (JNICALL *GetStringCritical) - (JNIEnv *env, jstring string, jboolean *isCopy); - void (JNICALL *ReleaseStringCritical) - (JNIEnv *env, jstring string, const jchar *cstring); - - jweak (JNICALL *NewWeakGlobalRef) - (JNIEnv *env, jobject obj); - void (JNICALL *DeleteWeakGlobalRef) - (JNIEnv *env, jweak ref); - - jboolean (JNICALL *ExceptionCheck) - (JNIEnv *env); - - jobject (JNICALL *NewDirectByteBuffer) - (JNIEnv* env, void* address, jlong capacity); - void* (JNICALL *GetDirectBufferAddress) - (JNIEnv* env, jobject buf); - jlong (JNICALL *GetDirectBufferCapacity) - (JNIEnv* env, jobject buf); - - /* New JNI 1.6 Features */ - - jobjectRefType (JNICALL *GetObjectRefType) - (JNIEnv* env, jobject obj); - - /* Module Features */ - - jobject (JNICALL *GetModule) - (JNIEnv* env, jclass clazz); -}; - -/* - * We use inlined functions for C++ so that programmers can write: - * - * env->FindClass("java/lang/String") - * - * in C++ rather than: - * - * (*env)->FindClass(env, "java/lang/String") - * - * in C. - */ - -struct JNIEnv_ { - const struct JNINativeInterface_ *functions; -#ifdef __cplusplus - - jint GetVersion() { - return functions->GetVersion(this); - } - jclass DefineClass(const char *name, jobject loader, const jbyte *buf, - jsize len) { - return functions->DefineClass(this, name, loader, buf, len); - } - jclass FindClass(const char *name) { - return functions->FindClass(this, name); - } - jmethodID FromReflectedMethod(jobject method) { - return functions->FromReflectedMethod(this,method); - } - jfieldID FromReflectedField(jobject field) { - return functions->FromReflectedField(this,field); - } - - jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) { - return functions->ToReflectedMethod(this, cls, methodID, isStatic); - } - - jclass GetSuperclass(jclass sub) { - return functions->GetSuperclass(this, sub); - } - jboolean IsAssignableFrom(jclass sub, jclass sup) { - return functions->IsAssignableFrom(this, sub, sup); - } - - jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) { - return functions->ToReflectedField(this,cls,fieldID,isStatic); - } - - jint Throw(jthrowable obj) { - return functions->Throw(this, obj); - } - jint ThrowNew(jclass clazz, const char *msg) { - return functions->ThrowNew(this, clazz, msg); - } - jthrowable ExceptionOccurred() { - return functions->ExceptionOccurred(this); - } - void ExceptionDescribe() { - functions->ExceptionDescribe(this); - } - void ExceptionClear() { - functions->ExceptionClear(this); - } - void FatalError(const char *msg) { - functions->FatalError(this, msg); - } - - jint PushLocalFrame(jint capacity) { - return functions->PushLocalFrame(this,capacity); - } - jobject PopLocalFrame(jobject result) { - return functions->PopLocalFrame(this,result); - } - - jobject NewGlobalRef(jobject lobj) { - return functions->NewGlobalRef(this,lobj); - } - void DeleteGlobalRef(jobject gref) { - functions->DeleteGlobalRef(this,gref); - } - void DeleteLocalRef(jobject obj) { - functions->DeleteLocalRef(this, obj); - } - - jboolean IsSameObject(jobject obj1, jobject obj2) { - return functions->IsSameObject(this,obj1,obj2); - } - - jobject NewLocalRef(jobject ref) { - return functions->NewLocalRef(this,ref); - } - jint EnsureLocalCapacity(jint capacity) { - return functions->EnsureLocalCapacity(this,capacity); - } - - jobject AllocObject(jclass clazz) { - return functions->AllocObject(this,clazz); - } - jobject NewObject(jclass clazz, jmethodID methodID, ...) { - va_list args; - jobject result; - va_start(args, methodID); - result = functions->NewObjectV(this,clazz,methodID,args); - va_end(args); - return result; - } - jobject NewObjectV(jclass clazz, jmethodID methodID, - va_list args) { - return functions->NewObjectV(this,clazz,methodID,args); - } - jobject NewObjectA(jclass clazz, jmethodID methodID, - const jvalue *args) { - return functions->NewObjectA(this,clazz,methodID,args); - } - - jclass GetObjectClass(jobject obj) { - return functions->GetObjectClass(this,obj); - } - jboolean IsInstanceOf(jobject obj, jclass clazz) { - return functions->IsInstanceOf(this,obj,clazz); - } - - jmethodID GetMethodID(jclass clazz, const char *name, - const char *sig) { - return functions->GetMethodID(this,clazz,name,sig); - } - - jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) { - va_list args; - jobject result; - va_start(args,methodID); - result = functions->CallObjectMethodV(this,obj,methodID,args); - va_end(args); - return result; - } - jobject CallObjectMethodV(jobject obj, jmethodID methodID, - va_list args) { - return functions->CallObjectMethodV(this,obj,methodID,args); - } - jobject CallObjectMethodA(jobject obj, jmethodID methodID, - const jvalue * args) { - return functions->CallObjectMethodA(this,obj,methodID,args); - } - - jboolean CallBooleanMethod(jobject obj, - jmethodID methodID, ...) { - va_list args; - jboolean result; - va_start(args,methodID); - result = functions->CallBooleanMethodV(this,obj,methodID,args); - va_end(args); - return result; - } - jboolean CallBooleanMethodV(jobject obj, jmethodID methodID, - va_list args) { - return functions->CallBooleanMethodV(this,obj,methodID,args); - } - jboolean CallBooleanMethodA(jobject obj, jmethodID methodID, - const jvalue * args) { - return functions->CallBooleanMethodA(this,obj,methodID, args); - } - - jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) { - va_list args; - jbyte result; - va_start(args,methodID); - result = functions->CallByteMethodV(this,obj,methodID,args); - va_end(args); - return result; - } - jbyte CallByteMethodV(jobject obj, jmethodID methodID, - va_list args) { - return functions->CallByteMethodV(this,obj,methodID,args); - } - jbyte CallByteMethodA(jobject obj, jmethodID methodID, - const jvalue * args) { - return functions->CallByteMethodA(this,obj,methodID,args); - } - - jchar CallCharMethod(jobject obj, jmethodID methodID, ...) { - va_list args; - jchar result; - va_start(args,methodID); - result = functions->CallCharMethodV(this,obj,methodID,args); - va_end(args); - return result; - } - jchar CallCharMethodV(jobject obj, jmethodID methodID, - va_list args) { - return functions->CallCharMethodV(this,obj,methodID,args); - } - jchar CallCharMethodA(jobject obj, jmethodID methodID, - const jvalue * args) { - return functions->CallCharMethodA(this,obj,methodID,args); - } - - jshort CallShortMethod(jobject obj, jmethodID methodID, ...) { - va_list args; - jshort result; - va_start(args,methodID); - result = functions->CallShortMethodV(this,obj,methodID,args); - va_end(args); - return result; - } - jshort CallShortMethodV(jobject obj, jmethodID methodID, - va_list args) { - return functions->CallShortMethodV(this,obj,methodID,args); - } - jshort CallShortMethodA(jobject obj, jmethodID methodID, - const jvalue * args) { - return functions->CallShortMethodA(this,obj,methodID,args); - } - - jint CallIntMethod(jobject obj, jmethodID methodID, ...) { - va_list args; - jint result; - va_start(args,methodID); - result = functions->CallIntMethodV(this,obj,methodID,args); - va_end(args); - return result; - } - jint CallIntMethodV(jobject obj, jmethodID methodID, - va_list args) { - return functions->CallIntMethodV(this,obj,methodID,args); - } - jint CallIntMethodA(jobject obj, jmethodID methodID, - const jvalue * args) { - return functions->CallIntMethodA(this,obj,methodID,args); - } - - jlong CallLongMethod(jobject obj, jmethodID methodID, ...) { - va_list args; - jlong result; - va_start(args,methodID); - result = functions->CallLongMethodV(this,obj,methodID,args); - va_end(args); - return result; - } - jlong CallLongMethodV(jobject obj, jmethodID methodID, - va_list args) { - return functions->CallLongMethodV(this,obj,methodID,args); - } - jlong CallLongMethodA(jobject obj, jmethodID methodID, - const jvalue * args) { - return functions->CallLongMethodA(this,obj,methodID,args); - } - - jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) { - va_list args; - jfloat result; - va_start(args,methodID); - result = functions->CallFloatMethodV(this,obj,methodID,args); - va_end(args); - return result; - } - jfloat CallFloatMethodV(jobject obj, jmethodID methodID, - va_list args) { - return functions->CallFloatMethodV(this,obj,methodID,args); - } - jfloat CallFloatMethodA(jobject obj, jmethodID methodID, - const jvalue * args) { - return functions->CallFloatMethodA(this,obj,methodID,args); - } - - jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) { - va_list args; - jdouble result; - va_start(args,methodID); - result = functions->CallDoubleMethodV(this,obj,methodID,args); - va_end(args); - return result; - } - jdouble CallDoubleMethodV(jobject obj, jmethodID methodID, - va_list args) { - return functions->CallDoubleMethodV(this,obj,methodID,args); - } - jdouble CallDoubleMethodA(jobject obj, jmethodID methodID, - const jvalue * args) { - return functions->CallDoubleMethodA(this,obj,methodID,args); - } - - void CallVoidMethod(jobject obj, jmethodID methodID, ...) { - va_list args; - va_start(args,methodID); - functions->CallVoidMethodV(this,obj,methodID,args); - va_end(args); - } - void CallVoidMethodV(jobject obj, jmethodID methodID, - va_list args) { - functions->CallVoidMethodV(this,obj,methodID,args); - } - void CallVoidMethodA(jobject obj, jmethodID methodID, - const jvalue * args) { - functions->CallVoidMethodA(this,obj,methodID,args); - } - - jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, - jmethodID methodID, ...) { - va_list args; - jobject result; - va_start(args,methodID); - result = functions->CallNonvirtualObjectMethodV(this,obj,clazz, - methodID,args); - va_end(args); - return result; - } - jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallNonvirtualObjectMethodV(this,obj,clazz, - methodID,args); - } - jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz, - jmethodID methodID, const jvalue * args) { - return functions->CallNonvirtualObjectMethodA(this,obj,clazz, - methodID,args); - } - - jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, - jmethodID methodID, ...) { - va_list args; - jboolean result; - va_start(args,methodID); - result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz, - methodID,args); - va_end(args); - return result; - } - jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallNonvirtualBooleanMethodV(this,obj,clazz, - methodID,args); - } - jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz, - jmethodID methodID, const jvalue * args) { - return functions->CallNonvirtualBooleanMethodA(this,obj,clazz, - methodID, args); - } - - jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, - jmethodID methodID, ...) { - va_list args; - jbyte result; - va_start(args,methodID); - result = functions->CallNonvirtualByteMethodV(this,obj,clazz, - methodID,args); - va_end(args); - return result; - } - jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallNonvirtualByteMethodV(this,obj,clazz, - methodID,args); - } - jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz, - jmethodID methodID, const jvalue * args) { - return functions->CallNonvirtualByteMethodA(this,obj,clazz, - methodID,args); - } - - jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, - jmethodID methodID, ...) { - va_list args; - jchar result; - va_start(args,methodID); - result = functions->CallNonvirtualCharMethodV(this,obj,clazz, - methodID,args); - va_end(args); - return result; - } - jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallNonvirtualCharMethodV(this,obj,clazz, - methodID,args); - } - jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz, - jmethodID methodID, const jvalue * args) { - return functions->CallNonvirtualCharMethodA(this,obj,clazz, - methodID,args); - } - - jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, - jmethodID methodID, ...) { - va_list args; - jshort result; - va_start(args,methodID); - result = functions->CallNonvirtualShortMethodV(this,obj,clazz, - methodID,args); - va_end(args); - return result; - } - jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallNonvirtualShortMethodV(this,obj,clazz, - methodID,args); - } - jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz, - jmethodID methodID, const jvalue * args) { - return functions->CallNonvirtualShortMethodA(this,obj,clazz, - methodID,args); - } - - jint CallNonvirtualIntMethod(jobject obj, jclass clazz, - jmethodID methodID, ...) { - va_list args; - jint result; - va_start(args,methodID); - result = functions->CallNonvirtualIntMethodV(this,obj,clazz, - methodID,args); - va_end(args); - return result; - } - jint CallNonvirtualIntMethodV(jobject obj, jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallNonvirtualIntMethodV(this,obj,clazz, - methodID,args); - } - jint CallNonvirtualIntMethodA(jobject obj, jclass clazz, - jmethodID methodID, const jvalue * args) { - return functions->CallNonvirtualIntMethodA(this,obj,clazz, - methodID,args); - } - - jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, - jmethodID methodID, ...) { - va_list args; - jlong result; - va_start(args,methodID); - result = functions->CallNonvirtualLongMethodV(this,obj,clazz, - methodID,args); - va_end(args); - return result; - } - jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallNonvirtualLongMethodV(this,obj,clazz, - methodID,args); - } - jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz, - jmethodID methodID, const jvalue * args) { - return functions->CallNonvirtualLongMethodA(this,obj,clazz, - methodID,args); - } - - jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, - jmethodID methodID, ...) { - va_list args; - jfloat result; - va_start(args,methodID); - result = functions->CallNonvirtualFloatMethodV(this,obj,clazz, - methodID,args); - va_end(args); - return result; - } - jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz, - jmethodID methodID, - va_list args) { - return functions->CallNonvirtualFloatMethodV(this,obj,clazz, - methodID,args); - } - jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz, - jmethodID methodID, - const jvalue * args) { - return functions->CallNonvirtualFloatMethodA(this,obj,clazz, - methodID,args); - } - - jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, - jmethodID methodID, ...) { - va_list args; - jdouble result; - va_start(args,methodID); - result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz, - methodID,args); - va_end(args); - return result; - } - jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz, - jmethodID methodID, - va_list args) { - return functions->CallNonvirtualDoubleMethodV(this,obj,clazz, - methodID,args); - } - jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz, - jmethodID methodID, - const jvalue * args) { - return functions->CallNonvirtualDoubleMethodA(this,obj,clazz, - methodID,args); - } - - void CallNonvirtualVoidMethod(jobject obj, jclass clazz, - jmethodID methodID, ...) { - va_list args; - va_start(args,methodID); - functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); - va_end(args); - } - void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, - jmethodID methodID, - va_list args) { - functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); - } - void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, - jmethodID methodID, - const jvalue * args) { - functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args); - } - - jfieldID GetFieldID(jclass clazz, const char *name, - const char *sig) { - return functions->GetFieldID(this,clazz,name,sig); - } - - jobject GetObjectField(jobject obj, jfieldID fieldID) { - return functions->GetObjectField(this,obj,fieldID); - } - jboolean GetBooleanField(jobject obj, jfieldID fieldID) { - return functions->GetBooleanField(this,obj,fieldID); - } - jbyte GetByteField(jobject obj, jfieldID fieldID) { - return functions->GetByteField(this,obj,fieldID); - } - jchar GetCharField(jobject obj, jfieldID fieldID) { - return functions->GetCharField(this,obj,fieldID); - } - jshort GetShortField(jobject obj, jfieldID fieldID) { - return functions->GetShortField(this,obj,fieldID); - } - jint GetIntField(jobject obj, jfieldID fieldID) { - return functions->GetIntField(this,obj,fieldID); - } - jlong GetLongField(jobject obj, jfieldID fieldID) { - return functions->GetLongField(this,obj,fieldID); - } - jfloat GetFloatField(jobject obj, jfieldID fieldID) { - return functions->GetFloatField(this,obj,fieldID); - } - jdouble GetDoubleField(jobject obj, jfieldID fieldID) { - return functions->GetDoubleField(this,obj,fieldID); - } - - void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { - functions->SetObjectField(this,obj,fieldID,val); - } - void SetBooleanField(jobject obj, jfieldID fieldID, - jboolean val) { - functions->SetBooleanField(this,obj,fieldID,val); - } - void SetByteField(jobject obj, jfieldID fieldID, - jbyte val) { - functions->SetByteField(this,obj,fieldID,val); - } - void SetCharField(jobject obj, jfieldID fieldID, - jchar val) { - functions->SetCharField(this,obj,fieldID,val); - } - void SetShortField(jobject obj, jfieldID fieldID, - jshort val) { - functions->SetShortField(this,obj,fieldID,val); - } - void SetIntField(jobject obj, jfieldID fieldID, - jint val) { - functions->SetIntField(this,obj,fieldID,val); - } - void SetLongField(jobject obj, jfieldID fieldID, - jlong val) { - functions->SetLongField(this,obj,fieldID,val); - } - void SetFloatField(jobject obj, jfieldID fieldID, - jfloat val) { - functions->SetFloatField(this,obj,fieldID,val); - } - void SetDoubleField(jobject obj, jfieldID fieldID, - jdouble val) { - functions->SetDoubleField(this,obj,fieldID,val); - } - - jmethodID GetStaticMethodID(jclass clazz, const char *name, - const char *sig) { - return functions->GetStaticMethodID(this,clazz,name,sig); - } - - jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, - ...) { - va_list args; - jobject result; - va_start(args,methodID); - result = functions->CallStaticObjectMethodV(this,clazz,methodID,args); - va_end(args); - return result; - } - jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID, - va_list args) { - return functions->CallStaticObjectMethodV(this,clazz,methodID,args); - } - jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID, - const jvalue *args) { - return functions->CallStaticObjectMethodA(this,clazz,methodID,args); - } - - jboolean CallStaticBooleanMethod(jclass clazz, - jmethodID methodID, ...) { - va_list args; - jboolean result; - va_start(args,methodID); - result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args); - va_end(args); - return result; - } - jboolean CallStaticBooleanMethodV(jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallStaticBooleanMethodV(this,clazz,methodID,args); - } - jboolean CallStaticBooleanMethodA(jclass clazz, - jmethodID methodID, const jvalue *args) { - return functions->CallStaticBooleanMethodA(this,clazz,methodID,args); - } - - jbyte CallStaticByteMethod(jclass clazz, - jmethodID methodID, ...) { - va_list args; - jbyte result; - va_start(args,methodID); - result = functions->CallStaticByteMethodV(this,clazz,methodID,args); - va_end(args); - return result; - } - jbyte CallStaticByteMethodV(jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallStaticByteMethodV(this,clazz,methodID,args); - } - jbyte CallStaticByteMethodA(jclass clazz, - jmethodID methodID, const jvalue *args) { - return functions->CallStaticByteMethodA(this,clazz,methodID,args); - } - - jchar CallStaticCharMethod(jclass clazz, - jmethodID methodID, ...) { - va_list args; - jchar result; - va_start(args,methodID); - result = functions->CallStaticCharMethodV(this,clazz,methodID,args); - va_end(args); - return result; - } - jchar CallStaticCharMethodV(jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallStaticCharMethodV(this,clazz,methodID,args); - } - jchar CallStaticCharMethodA(jclass clazz, - jmethodID methodID, const jvalue *args) { - return functions->CallStaticCharMethodA(this,clazz,methodID,args); - } - - jshort CallStaticShortMethod(jclass clazz, - jmethodID methodID, ...) { - va_list args; - jshort result; - va_start(args,methodID); - result = functions->CallStaticShortMethodV(this,clazz,methodID,args); - va_end(args); - return result; - } - jshort CallStaticShortMethodV(jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallStaticShortMethodV(this,clazz,methodID,args); - } - jshort CallStaticShortMethodA(jclass clazz, - jmethodID methodID, const jvalue *args) { - return functions->CallStaticShortMethodA(this,clazz,methodID,args); - } - - jint CallStaticIntMethod(jclass clazz, - jmethodID methodID, ...) { - va_list args; - jint result; - va_start(args,methodID); - result = functions->CallStaticIntMethodV(this,clazz,methodID,args); - va_end(args); - return result; - } - jint CallStaticIntMethodV(jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallStaticIntMethodV(this,clazz,methodID,args); - } - jint CallStaticIntMethodA(jclass clazz, - jmethodID methodID, const jvalue *args) { - return functions->CallStaticIntMethodA(this,clazz,methodID,args); - } - - jlong CallStaticLongMethod(jclass clazz, - jmethodID methodID, ...) { - va_list args; - jlong result; - va_start(args,methodID); - result = functions->CallStaticLongMethodV(this,clazz,methodID,args); - va_end(args); - return result; - } - jlong CallStaticLongMethodV(jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallStaticLongMethodV(this,clazz,methodID,args); - } - jlong CallStaticLongMethodA(jclass clazz, - jmethodID methodID, const jvalue *args) { - return functions->CallStaticLongMethodA(this,clazz,methodID,args); - } - - jfloat CallStaticFloatMethod(jclass clazz, - jmethodID methodID, ...) { - va_list args; - jfloat result; - va_start(args,methodID); - result = functions->CallStaticFloatMethodV(this,clazz,methodID,args); - va_end(args); - return result; - } - jfloat CallStaticFloatMethodV(jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallStaticFloatMethodV(this,clazz,methodID,args); - } - jfloat CallStaticFloatMethodA(jclass clazz, - jmethodID methodID, const jvalue *args) { - return functions->CallStaticFloatMethodA(this,clazz,methodID,args); - } - - jdouble CallStaticDoubleMethod(jclass clazz, - jmethodID methodID, ...) { - va_list args; - jdouble result; - va_start(args,methodID); - result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args); - va_end(args); - return result; - } - jdouble CallStaticDoubleMethodV(jclass clazz, - jmethodID methodID, va_list args) { - return functions->CallStaticDoubleMethodV(this,clazz,methodID,args); - } - jdouble CallStaticDoubleMethodA(jclass clazz, - jmethodID methodID, const jvalue *args) { - return functions->CallStaticDoubleMethodA(this,clazz,methodID,args); - } - - void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) { - va_list args; - va_start(args,methodID); - functions->CallStaticVoidMethodV(this,cls,methodID,args); - va_end(args); - } - void CallStaticVoidMethodV(jclass cls, jmethodID methodID, - va_list args) { - functions->CallStaticVoidMethodV(this,cls,methodID,args); - } - void CallStaticVoidMethodA(jclass cls, jmethodID methodID, - const jvalue * args) { - functions->CallStaticVoidMethodA(this,cls,methodID,args); - } - - jfieldID GetStaticFieldID(jclass clazz, const char *name, - const char *sig) { - return functions->GetStaticFieldID(this,clazz,name,sig); - } - jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) { - return functions->GetStaticObjectField(this,clazz,fieldID); - } - jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) { - return functions->GetStaticBooleanField(this,clazz,fieldID); - } - jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) { - return functions->GetStaticByteField(this,clazz,fieldID); - } - jchar GetStaticCharField(jclass clazz, jfieldID fieldID) { - return functions->GetStaticCharField(this,clazz,fieldID); - } - jshort GetStaticShortField(jclass clazz, jfieldID fieldID) { - return functions->GetStaticShortField(this,clazz,fieldID); - } - jint GetStaticIntField(jclass clazz, jfieldID fieldID) { - return functions->GetStaticIntField(this,clazz,fieldID); - } - jlong GetStaticLongField(jclass clazz, jfieldID fieldID) { - return functions->GetStaticLongField(this,clazz,fieldID); - } - jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) { - return functions->GetStaticFloatField(this,clazz,fieldID); - } - jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) { - return functions->GetStaticDoubleField(this,clazz,fieldID); - } - - void SetStaticObjectField(jclass clazz, jfieldID fieldID, - jobject value) { - functions->SetStaticObjectField(this,clazz,fieldID,value); - } - void SetStaticBooleanField(jclass clazz, jfieldID fieldID, - jboolean value) { - functions->SetStaticBooleanField(this,clazz,fieldID,value); - } - void SetStaticByteField(jclass clazz, jfieldID fieldID, - jbyte value) { - functions->SetStaticByteField(this,clazz,fieldID,value); - } - void SetStaticCharField(jclass clazz, jfieldID fieldID, - jchar value) { - functions->SetStaticCharField(this,clazz,fieldID,value); - } - void SetStaticShortField(jclass clazz, jfieldID fieldID, - jshort value) { - functions->SetStaticShortField(this,clazz,fieldID,value); - } - void SetStaticIntField(jclass clazz, jfieldID fieldID, - jint value) { - functions->SetStaticIntField(this,clazz,fieldID,value); - } - void SetStaticLongField(jclass clazz, jfieldID fieldID, - jlong value) { - functions->SetStaticLongField(this,clazz,fieldID,value); - } - void SetStaticFloatField(jclass clazz, jfieldID fieldID, - jfloat value) { - functions->SetStaticFloatField(this,clazz,fieldID,value); - } - void SetStaticDoubleField(jclass clazz, jfieldID fieldID, - jdouble value) { - functions->SetStaticDoubleField(this,clazz,fieldID,value); - } - - jstring NewString(const jchar *unicode, jsize len) { - return functions->NewString(this,unicode,len); - } - jsize GetStringLength(jstring str) { - return functions->GetStringLength(this,str); - } - const jchar *GetStringChars(jstring str, jboolean *isCopy) { - return functions->GetStringChars(this,str,isCopy); - } - void ReleaseStringChars(jstring str, const jchar *chars) { - functions->ReleaseStringChars(this,str,chars); - } - - jstring NewStringUTF(const char *utf) { - return functions->NewStringUTF(this,utf); - } - jsize GetStringUTFLength(jstring str) { - return functions->GetStringUTFLength(this,str); - } - const char* GetStringUTFChars(jstring str, jboolean *isCopy) { - return functions->GetStringUTFChars(this,str,isCopy); - } - void ReleaseStringUTFChars(jstring str, const char* chars) { - functions->ReleaseStringUTFChars(this,str,chars); - } - - jsize GetArrayLength(jarray array) { - return functions->GetArrayLength(this,array); - } - - jobjectArray NewObjectArray(jsize len, jclass clazz, - jobject init) { - return functions->NewObjectArray(this,len,clazz,init); - } - jobject GetObjectArrayElement(jobjectArray array, jsize index) { - return functions->GetObjectArrayElement(this,array,index); - } - void SetObjectArrayElement(jobjectArray array, jsize index, - jobject val) { - functions->SetObjectArrayElement(this,array,index,val); - } - - jbooleanArray NewBooleanArray(jsize len) { - return functions->NewBooleanArray(this,len); - } - jbyteArray NewByteArray(jsize len) { - return functions->NewByteArray(this,len); - } - jcharArray NewCharArray(jsize len) { - return functions->NewCharArray(this,len); - } - jshortArray NewShortArray(jsize len) { - return functions->NewShortArray(this,len); - } - jintArray NewIntArray(jsize len) { - return functions->NewIntArray(this,len); - } - jlongArray NewLongArray(jsize len) { - return functions->NewLongArray(this,len); - } - jfloatArray NewFloatArray(jsize len) { - return functions->NewFloatArray(this,len); - } - jdoubleArray NewDoubleArray(jsize len) { - return functions->NewDoubleArray(this,len); - } - - jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) { - return functions->GetBooleanArrayElements(this,array,isCopy); - } - jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) { - return functions->GetByteArrayElements(this,array,isCopy); - } - jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) { - return functions->GetCharArrayElements(this,array,isCopy); - } - jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) { - return functions->GetShortArrayElements(this,array,isCopy); - } - jint * GetIntArrayElements(jintArray array, jboolean *isCopy) { - return functions->GetIntArrayElements(this,array,isCopy); - } - jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) { - return functions->GetLongArrayElements(this,array,isCopy); - } - jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) { - return functions->GetFloatArrayElements(this,array,isCopy); - } - jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) { - return functions->GetDoubleArrayElements(this,array,isCopy); - } - - void ReleaseBooleanArrayElements(jbooleanArray array, - jboolean *elems, - jint mode) { - functions->ReleaseBooleanArrayElements(this,array,elems,mode); - } - void ReleaseByteArrayElements(jbyteArray array, - jbyte *elems, - jint mode) { - functions->ReleaseByteArrayElements(this,array,elems,mode); - } - void ReleaseCharArrayElements(jcharArray array, - jchar *elems, - jint mode) { - functions->ReleaseCharArrayElements(this,array,elems,mode); - } - void ReleaseShortArrayElements(jshortArray array, - jshort *elems, - jint mode) { - functions->ReleaseShortArrayElements(this,array,elems,mode); - } - void ReleaseIntArrayElements(jintArray array, - jint *elems, - jint mode) { - functions->ReleaseIntArrayElements(this,array,elems,mode); - } - void ReleaseLongArrayElements(jlongArray array, - jlong *elems, - jint mode) { - functions->ReleaseLongArrayElements(this,array,elems,mode); - } - void ReleaseFloatArrayElements(jfloatArray array, - jfloat *elems, - jint mode) { - functions->ReleaseFloatArrayElements(this,array,elems,mode); - } - void ReleaseDoubleArrayElements(jdoubleArray array, - jdouble *elems, - jint mode) { - functions->ReleaseDoubleArrayElements(this,array,elems,mode); - } - - void GetBooleanArrayRegion(jbooleanArray array, - jsize start, jsize len, jboolean *buf) { - functions->GetBooleanArrayRegion(this,array,start,len,buf); - } - void GetByteArrayRegion(jbyteArray array, - jsize start, jsize len, jbyte *buf) { - functions->GetByteArrayRegion(this,array,start,len,buf); - } - void GetCharArrayRegion(jcharArray array, - jsize start, jsize len, jchar *buf) { - functions->GetCharArrayRegion(this,array,start,len,buf); - } - void GetShortArrayRegion(jshortArray array, - jsize start, jsize len, jshort *buf) { - functions->GetShortArrayRegion(this,array,start,len,buf); - } - void GetIntArrayRegion(jintArray array, - jsize start, jsize len, jint *buf) { - functions->GetIntArrayRegion(this,array,start,len,buf); - } - void GetLongArrayRegion(jlongArray array, - jsize start, jsize len, jlong *buf) { - functions->GetLongArrayRegion(this,array,start,len,buf); - } - void GetFloatArrayRegion(jfloatArray array, - jsize start, jsize len, jfloat *buf) { - functions->GetFloatArrayRegion(this,array,start,len,buf); - } - void GetDoubleArrayRegion(jdoubleArray array, - jsize start, jsize len, jdouble *buf) { - functions->GetDoubleArrayRegion(this,array,start,len,buf); - } - - void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, - const jboolean *buf) { - functions->SetBooleanArrayRegion(this,array,start,len,buf); - } - void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, - const jbyte *buf) { - functions->SetByteArrayRegion(this,array,start,len,buf); - } - void SetCharArrayRegion(jcharArray array, jsize start, jsize len, - const jchar *buf) { - functions->SetCharArrayRegion(this,array,start,len,buf); - } - void SetShortArrayRegion(jshortArray array, jsize start, jsize len, - const jshort *buf) { - functions->SetShortArrayRegion(this,array,start,len,buf); - } - void SetIntArrayRegion(jintArray array, jsize start, jsize len, - const jint *buf) { - functions->SetIntArrayRegion(this,array,start,len,buf); - } - void SetLongArrayRegion(jlongArray array, jsize start, jsize len, - const jlong *buf) { - functions->SetLongArrayRegion(this,array,start,len,buf); - } - void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, - const jfloat *buf) { - functions->SetFloatArrayRegion(this,array,start,len,buf); - } - void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, - const jdouble *buf) { - functions->SetDoubleArrayRegion(this,array,start,len,buf); - } - - jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, - jint nMethods) { - return functions->RegisterNatives(this,clazz,methods,nMethods); - } - jint UnregisterNatives(jclass clazz) { - return functions->UnregisterNatives(this,clazz); - } - - jint MonitorEnter(jobject obj) { - return functions->MonitorEnter(this,obj); - } - jint MonitorExit(jobject obj) { - return functions->MonitorExit(this,obj); - } - - jint GetJavaVM(JavaVM **vm) { - return functions->GetJavaVM(this,vm); - } - - void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) { - functions->GetStringRegion(this,str,start,len,buf); - } - void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) { - functions->GetStringUTFRegion(this,str,start,len,buf); - } - - void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { - return functions->GetPrimitiveArrayCritical(this,array,isCopy); - } - void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { - functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); - } - - const jchar * GetStringCritical(jstring string, jboolean *isCopy) { - return functions->GetStringCritical(this,string,isCopy); - } - void ReleaseStringCritical(jstring string, const jchar *cstring) { - functions->ReleaseStringCritical(this,string,cstring); - } - - jweak NewWeakGlobalRef(jobject obj) { - return functions->NewWeakGlobalRef(this,obj); - } - void DeleteWeakGlobalRef(jweak ref) { - functions->DeleteWeakGlobalRef(this,ref); - } - - jboolean ExceptionCheck() { - return functions->ExceptionCheck(this); - } - - jobject NewDirectByteBuffer(void* address, jlong capacity) { - return functions->NewDirectByteBuffer(this, address, capacity); - } - void* GetDirectBufferAddress(jobject buf) { - return functions->GetDirectBufferAddress(this, buf); - } - jlong GetDirectBufferCapacity(jobject buf) { - return functions->GetDirectBufferCapacity(this, buf); - } - jobjectRefType GetObjectRefType(jobject obj) { - return functions->GetObjectRefType(this, obj); - } - - /* Module Features */ - - jobject GetModule(jclass clazz) { - return functions->GetModule(this, clazz); - } - -#endif /* __cplusplus */ -}; - -/* - * optionString may be any option accepted by the JVM, or one of the - * following: - * - * -D= Set a system property. - * -verbose[:class|gc|jni] Enable verbose output, comma-separated. E.g. - * "-verbose:class" or "-verbose:gc,class" - * Standard names include: gc, class, and jni. - * All nonstandard (VM-specific) names must begin - * with "X". - * vfprintf extraInfo is a pointer to the vfprintf hook. - * exit extraInfo is a pointer to the exit hook. - * abort extraInfo is a pointer to the abort hook. - */ -typedef struct JavaVMOption { - char *optionString; - void *extraInfo; -} JavaVMOption; - -typedef struct JavaVMInitArgs { - jint version; - - jint nOptions; - JavaVMOption *options; - jboolean ignoreUnrecognized; -} JavaVMInitArgs; - -typedef struct JavaVMAttachArgs { - jint version; - - char *name; - jobject group; -} JavaVMAttachArgs; - -/* These will be VM-specific. */ - -#define JDK1_2 -#define JDK1_4 - -/* End VM-specific. */ - -struct JNIInvokeInterface_ { - void *reserved0; - void *reserved1; - void *reserved2; - - jint (JNICALL *DestroyJavaVM)(JavaVM *vm); - - jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args); - - jint (JNICALL *DetachCurrentThread)(JavaVM *vm); - - jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version); - - jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args); -}; - -struct JavaVM_ { - const struct JNIInvokeInterface_ *functions; -#ifdef __cplusplus - - jint DestroyJavaVM() { - return functions->DestroyJavaVM(this); - } - jint AttachCurrentThread(void **penv, void *args) { - return functions->AttachCurrentThread(this, penv, args); - } - jint DetachCurrentThread() { - return functions->DetachCurrentThread(this); - } - - jint GetEnv(void **penv, jint version) { - return functions->GetEnv(this, penv, version); - } - jint AttachCurrentThreadAsDaemon(void **penv, void *args) { - return functions->AttachCurrentThreadAsDaemon(this, penv, args); - } -#endif -}; - -#ifdef _JNI_IMPLEMENTATION_ -#define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT -#else -#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT -#endif -_JNI_IMPORT_OR_EXPORT_ jint JNICALL -JNI_GetDefaultJavaVMInitArgs(void *args); - -_JNI_IMPORT_OR_EXPORT_ jint JNICALL -JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args); - -_JNI_IMPORT_OR_EXPORT_ jint JNICALL -JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *); - -/* Defined by native libraries. */ -JNIEXPORT jint JNICALL -JNI_OnLoad(JavaVM *vm, void *reserved); - -JNIEXPORT void JNICALL -JNI_OnUnload(JavaVM *vm, void *reserved); - -#define JNI_VERSION_1_1 0x00010001 -#define JNI_VERSION_1_2 0x00010002 -#define JNI_VERSION_1_4 0x00010004 -#define JNI_VERSION_1_6 0x00010006 -#define JNI_VERSION_1_8 0x00010008 -#define JNI_VERSION_9 0x00090000 -#define JNI_VERSION_10 0x000a0000 - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* __cplusplus */ - -#endif /* !_JAVASOFT_JNI_H_ */ diff --git a/arthas-vmtool/src/main/native/head/jvmti.h b/arthas-vmtool/src/main/native/head/jvmti.h deleted file mode 100755 index 87df35ae..00000000 --- a/arthas-vmtool/src/main/native/head/jvmti.h +++ /dev/null @@ -1,2625 +0,0 @@ -/* - * Copyright (c) 2002, 2020, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - - /* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */ - - /* Include file for the Java(tm) Virtual Machine Tool Interface */ - -#ifndef _JAVA_JVMTI_H_ -#define _JAVA_JVMTI_H_ - -#include "jni.h" - -#ifdef __cplusplus -extern "C" { -#endif - -enum { - JVMTI_VERSION_1 = 0x30010000, - JVMTI_VERSION_1_0 = 0x30010000, - JVMTI_VERSION_1_1 = 0x30010100, - JVMTI_VERSION_1_2 = 0x30010200, - JVMTI_VERSION_9 = 0x30090000, - JVMTI_VERSION_11 = 0x300B0000, - - JVMTI_VERSION = 0x30000000 + (16 * 0x10000) + ( 0 * 0x100) + 0 /* version: 16.0.0 */ -}; - -JNIEXPORT jint JNICALL -Agent_OnLoad(JavaVM *vm, char *options, void *reserved); - -JNIEXPORT jint JNICALL -Agent_OnAttach(JavaVM* vm, char* options, void* reserved); - -JNIEXPORT void JNICALL -Agent_OnUnload(JavaVM *vm); - - /* Forward declaration of the environment */ - -struct _jvmtiEnv; - -struct jvmtiInterface_1_; - -#ifdef __cplusplus -typedef _jvmtiEnv jvmtiEnv; -#else -typedef const struct jvmtiInterface_1_ *jvmtiEnv; -#endif /* __cplusplus */ - -/* Derived Base Types */ - -typedef jobject jthread; -typedef jobject jthreadGroup; -typedef jlong jlocation; -struct _jrawMonitorID; -typedef struct _jrawMonitorID *jrawMonitorID; -typedef struct JNINativeInterface_ jniNativeInterface; - - /* Constants */ - - - /* Thread State Flags */ - -enum { - JVMTI_THREAD_STATE_ALIVE = 0x0001, - JVMTI_THREAD_STATE_TERMINATED = 0x0002, - JVMTI_THREAD_STATE_RUNNABLE = 0x0004, - JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400, - JVMTI_THREAD_STATE_WAITING = 0x0080, - JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010, - JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020, - JVMTI_THREAD_STATE_SLEEPING = 0x0040, - JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100, - JVMTI_THREAD_STATE_PARKED = 0x0200, - JVMTI_THREAD_STATE_SUSPENDED = 0x100000, - JVMTI_THREAD_STATE_INTERRUPTED = 0x200000, - JVMTI_THREAD_STATE_IN_NATIVE = 0x400000, - JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000, - JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000, - JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000 -}; - - /* java.lang.Thread.State Conversion Masks */ - -enum { - 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, - JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0, - JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED, - JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE, - JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER, - JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY, - JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT -}; - - /* Thread Priority Constants */ - -enum { - JVMTI_THREAD_MIN_PRIORITY = 1, - JVMTI_THREAD_NORM_PRIORITY = 5, - JVMTI_THREAD_MAX_PRIORITY = 10 -}; - - /* Heap Filter Flags */ - -enum { - JVMTI_HEAP_FILTER_TAGGED = 0x4, - JVMTI_HEAP_FILTER_UNTAGGED = 0x8, - JVMTI_HEAP_FILTER_CLASS_TAGGED = 0x10, - JVMTI_HEAP_FILTER_CLASS_UNTAGGED = 0x20 -}; - - /* Heap Visit Control Flags */ - -enum { - JVMTI_VISIT_OBJECTS = 0x100, - JVMTI_VISIT_ABORT = 0x8000 -}; - - /* Heap Reference Enumeration */ - -typedef enum { - JVMTI_HEAP_REFERENCE_CLASS = 1, - JVMTI_HEAP_REFERENCE_FIELD = 2, - JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT = 3, - JVMTI_HEAP_REFERENCE_CLASS_LOADER = 4, - JVMTI_HEAP_REFERENCE_SIGNERS = 5, - JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN = 6, - JVMTI_HEAP_REFERENCE_INTERFACE = 7, - JVMTI_HEAP_REFERENCE_STATIC_FIELD = 8, - JVMTI_HEAP_REFERENCE_CONSTANT_POOL = 9, - JVMTI_HEAP_REFERENCE_SUPERCLASS = 10, - JVMTI_HEAP_REFERENCE_JNI_GLOBAL = 21, - JVMTI_HEAP_REFERENCE_SYSTEM_CLASS = 22, - JVMTI_HEAP_REFERENCE_MONITOR = 23, - JVMTI_HEAP_REFERENCE_STACK_LOCAL = 24, - JVMTI_HEAP_REFERENCE_JNI_LOCAL = 25, - JVMTI_HEAP_REFERENCE_THREAD = 26, - JVMTI_HEAP_REFERENCE_OTHER = 27 -} jvmtiHeapReferenceKind; - - /* Primitive Type Enumeration */ - -typedef enum { - JVMTI_PRIMITIVE_TYPE_BOOLEAN = 90, - JVMTI_PRIMITIVE_TYPE_BYTE = 66, - JVMTI_PRIMITIVE_TYPE_CHAR = 67, - JVMTI_PRIMITIVE_TYPE_SHORT = 83, - JVMTI_PRIMITIVE_TYPE_INT = 73, - JVMTI_PRIMITIVE_TYPE_LONG = 74, - JVMTI_PRIMITIVE_TYPE_FLOAT = 70, - JVMTI_PRIMITIVE_TYPE_DOUBLE = 68 -} jvmtiPrimitiveType; - - /* Heap Object Filter Enumeration */ - -typedef enum { - JVMTI_HEAP_OBJECT_TAGGED = 1, - JVMTI_HEAP_OBJECT_UNTAGGED = 2, - JVMTI_HEAP_OBJECT_EITHER = 3 -} jvmtiHeapObjectFilter; - - /* Heap Root Kind Enumeration */ - -typedef enum { - JVMTI_HEAP_ROOT_JNI_GLOBAL = 1, - JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2, - JVMTI_HEAP_ROOT_MONITOR = 3, - JVMTI_HEAP_ROOT_STACK_LOCAL = 4, - JVMTI_HEAP_ROOT_JNI_LOCAL = 5, - JVMTI_HEAP_ROOT_THREAD = 6, - JVMTI_HEAP_ROOT_OTHER = 7 -} jvmtiHeapRootKind; - - /* Object Reference Enumeration */ - -typedef enum { - JVMTI_REFERENCE_CLASS = 1, - JVMTI_REFERENCE_FIELD = 2, - JVMTI_REFERENCE_ARRAY_ELEMENT = 3, - JVMTI_REFERENCE_CLASS_LOADER = 4, - JVMTI_REFERENCE_SIGNERS = 5, - JVMTI_REFERENCE_PROTECTION_DOMAIN = 6, - JVMTI_REFERENCE_INTERFACE = 7, - JVMTI_REFERENCE_STATIC_FIELD = 8, - JVMTI_REFERENCE_CONSTANT_POOL = 9 -} jvmtiObjectReferenceKind; - - /* Iteration Control Enumeration */ - -typedef enum { - JVMTI_ITERATION_CONTINUE = 1, - JVMTI_ITERATION_IGNORE = 2, - JVMTI_ITERATION_ABORT = 0 -} jvmtiIterationControl; - - /* Class Status Flags */ - -enum { - JVMTI_CLASS_STATUS_VERIFIED = 1, - JVMTI_CLASS_STATUS_PREPARED = 2, - JVMTI_CLASS_STATUS_INITIALIZED = 4, - JVMTI_CLASS_STATUS_ERROR = 8, - JVMTI_CLASS_STATUS_ARRAY = 16, - JVMTI_CLASS_STATUS_PRIMITIVE = 32 -}; - - /* Event Enable/Disable */ - -typedef enum { - JVMTI_ENABLE = 1, - JVMTI_DISABLE = 0 -} jvmtiEventMode; - - /* Extension Function/Event Parameter Types */ - -typedef enum { - JVMTI_TYPE_JBYTE = 101, - JVMTI_TYPE_JCHAR = 102, - JVMTI_TYPE_JSHORT = 103, - JVMTI_TYPE_JINT = 104, - JVMTI_TYPE_JLONG = 105, - JVMTI_TYPE_JFLOAT = 106, - JVMTI_TYPE_JDOUBLE = 107, - JVMTI_TYPE_JBOOLEAN = 108, - JVMTI_TYPE_JOBJECT = 109, - JVMTI_TYPE_JTHREAD = 110, - JVMTI_TYPE_JCLASS = 111, - JVMTI_TYPE_JVALUE = 112, - JVMTI_TYPE_JFIELDID = 113, - JVMTI_TYPE_JMETHODID = 114, - JVMTI_TYPE_CCHAR = 115, - JVMTI_TYPE_CVOID = 116, - JVMTI_TYPE_JNIENV = 117 -} jvmtiParamTypes; - - /* Extension Function/Event Parameter Kinds */ - -typedef enum { - JVMTI_KIND_IN = 91, - JVMTI_KIND_IN_PTR = 92, - JVMTI_KIND_IN_BUF = 93, - JVMTI_KIND_ALLOC_BUF = 94, - JVMTI_KIND_ALLOC_ALLOC_BUF = 95, - JVMTI_KIND_OUT = 96, - JVMTI_KIND_OUT_BUF = 97 -} jvmtiParamKind; - - /* Timer Kinds */ - -typedef enum { - JVMTI_TIMER_USER_CPU = 30, - JVMTI_TIMER_TOTAL_CPU = 31, - JVMTI_TIMER_ELAPSED = 32 -} jvmtiTimerKind; - - /* Phases of execution */ - -typedef enum { - JVMTI_PHASE_ONLOAD = 1, - JVMTI_PHASE_PRIMORDIAL = 2, - JVMTI_PHASE_START = 6, - JVMTI_PHASE_LIVE = 4, - JVMTI_PHASE_DEAD = 8 -} jvmtiPhase; - - /* Version Interface Types */ - -enum { - JVMTI_VERSION_INTERFACE_JNI = 0x00000000, - JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000 -}; - - /* Version Masks */ - -enum { - JVMTI_VERSION_MASK_INTERFACE_TYPE = 0x70000000, - JVMTI_VERSION_MASK_MAJOR = 0x0FFF0000, - JVMTI_VERSION_MASK_MINOR = 0x0000FF00, - JVMTI_VERSION_MASK_MICRO = 0x000000FF -}; - - /* Version Shifts */ - -enum { - JVMTI_VERSION_SHIFT_MAJOR = 16, - JVMTI_VERSION_SHIFT_MINOR = 8, - JVMTI_VERSION_SHIFT_MICRO = 0 -}; - - /* Verbose Flag Enumeration */ - -typedef enum { - JVMTI_VERBOSE_OTHER = 0, - JVMTI_VERBOSE_GC = 1, - JVMTI_VERBOSE_CLASS = 2, - JVMTI_VERBOSE_JNI = 4 -} jvmtiVerboseFlag; - - /* JLocation Format Enumeration */ - -typedef enum { - JVMTI_JLOCATION_JVMBCI = 1, - JVMTI_JLOCATION_MACHINEPC = 2, - JVMTI_JLOCATION_OTHER = 0 -} jvmtiJlocationFormat; - - /* Resource Exhaustion Flags */ - -enum { - JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR = 0x0001, - JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP = 0x0002, - JVMTI_RESOURCE_EXHAUSTED_THREADS = 0x0004 -}; - - /* Errors */ - -typedef enum { - JVMTI_ERROR_NONE = 0, - JVMTI_ERROR_INVALID_THREAD = 10, - JVMTI_ERROR_INVALID_THREAD_GROUP = 11, - JVMTI_ERROR_INVALID_PRIORITY = 12, - JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13, - JVMTI_ERROR_THREAD_SUSPENDED = 14, - JVMTI_ERROR_THREAD_NOT_ALIVE = 15, - JVMTI_ERROR_INVALID_OBJECT = 20, - JVMTI_ERROR_INVALID_CLASS = 21, - JVMTI_ERROR_CLASS_NOT_PREPARED = 22, - JVMTI_ERROR_INVALID_METHODID = 23, - JVMTI_ERROR_INVALID_LOCATION = 24, - JVMTI_ERROR_INVALID_FIELDID = 25, - JVMTI_ERROR_INVALID_MODULE = 26, - JVMTI_ERROR_NO_MORE_FRAMES = 31, - JVMTI_ERROR_OPAQUE_FRAME = 32, - JVMTI_ERROR_TYPE_MISMATCH = 34, - JVMTI_ERROR_INVALID_SLOT = 35, - JVMTI_ERROR_DUPLICATE = 40, - JVMTI_ERROR_NOT_FOUND = 41, - JVMTI_ERROR_INVALID_MONITOR = 50, - JVMTI_ERROR_NOT_MONITOR_OWNER = 51, - JVMTI_ERROR_INTERRUPT = 52, - JVMTI_ERROR_INVALID_CLASS_FORMAT = 60, - JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61, - JVMTI_ERROR_FAILS_VERIFICATION = 62, - JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63, - JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64, - JVMTI_ERROR_INVALID_TYPESTATE = 65, - JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66, - JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67, - JVMTI_ERROR_UNSUPPORTED_VERSION = 68, - JVMTI_ERROR_NAMES_DONT_MATCH = 69, - JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70, - JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71, - JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_ATTRIBUTE_CHANGED = 72, - JVMTI_ERROR_UNMODIFIABLE_CLASS = 79, - JVMTI_ERROR_UNMODIFIABLE_MODULE = 80, - JVMTI_ERROR_NOT_AVAILABLE = 98, - JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99, - JVMTI_ERROR_NULL_POINTER = 100, - JVMTI_ERROR_ABSENT_INFORMATION = 101, - JVMTI_ERROR_INVALID_EVENT_TYPE = 102, - JVMTI_ERROR_ILLEGAL_ARGUMENT = 103, - JVMTI_ERROR_NATIVE_METHOD = 104, - JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED = 106, - JVMTI_ERROR_OUT_OF_MEMORY = 110, - JVMTI_ERROR_ACCESS_DENIED = 111, - JVMTI_ERROR_WRONG_PHASE = 112, - JVMTI_ERROR_INTERNAL = 113, - JVMTI_ERROR_UNATTACHED_THREAD = 115, - JVMTI_ERROR_INVALID_ENVIRONMENT = 116, - JVMTI_ERROR_MAX = 116 -} jvmtiError; - - /* Event IDs */ - -typedef enum { - JVMTI_MIN_EVENT_TYPE_VAL = 50, - JVMTI_EVENT_VM_INIT = 50, - JVMTI_EVENT_VM_DEATH = 51, - JVMTI_EVENT_THREAD_START = 52, - JVMTI_EVENT_THREAD_END = 53, - JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54, - JVMTI_EVENT_CLASS_LOAD = 55, - JVMTI_EVENT_CLASS_PREPARE = 56, - JVMTI_EVENT_VM_START = 57, - JVMTI_EVENT_EXCEPTION = 58, - JVMTI_EVENT_EXCEPTION_CATCH = 59, - JVMTI_EVENT_SINGLE_STEP = 60, - JVMTI_EVENT_FRAME_POP = 61, - JVMTI_EVENT_BREAKPOINT = 62, - JVMTI_EVENT_FIELD_ACCESS = 63, - JVMTI_EVENT_FIELD_MODIFICATION = 64, - JVMTI_EVENT_METHOD_ENTRY = 65, - JVMTI_EVENT_METHOD_EXIT = 66, - JVMTI_EVENT_NATIVE_METHOD_BIND = 67, - JVMTI_EVENT_COMPILED_METHOD_LOAD = 68, - JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69, - JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70, - JVMTI_EVENT_DATA_DUMP_REQUEST = 71, - JVMTI_EVENT_MONITOR_WAIT = 73, - JVMTI_EVENT_MONITOR_WAITED = 74, - JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75, - JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76, - JVMTI_EVENT_RESOURCE_EXHAUSTED = 80, - JVMTI_EVENT_GARBAGE_COLLECTION_START = 81, - JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82, - JVMTI_EVENT_OBJECT_FREE = 83, - JVMTI_EVENT_VM_OBJECT_ALLOC = 84, - JVMTI_EVENT_SAMPLED_OBJECT_ALLOC = 86, - JVMTI_MAX_EVENT_TYPE_VAL = 86 -} jvmtiEvent; - - - /* Pre-Declarations */ -struct jvmtiThreadInfo; -typedef struct jvmtiThreadInfo jvmtiThreadInfo; -struct jvmtiMonitorStackDepthInfo; -typedef struct jvmtiMonitorStackDepthInfo jvmtiMonitorStackDepthInfo; -struct jvmtiThreadGroupInfo; -typedef struct jvmtiThreadGroupInfo jvmtiThreadGroupInfo; -struct jvmtiFrameInfo; -typedef struct jvmtiFrameInfo jvmtiFrameInfo; -struct jvmtiStackInfo; -typedef struct jvmtiStackInfo jvmtiStackInfo; -struct jvmtiHeapReferenceInfoField; -typedef struct jvmtiHeapReferenceInfoField jvmtiHeapReferenceInfoField; -struct jvmtiHeapReferenceInfoArray; -typedef struct jvmtiHeapReferenceInfoArray jvmtiHeapReferenceInfoArray; -struct jvmtiHeapReferenceInfoConstantPool; -typedef struct jvmtiHeapReferenceInfoConstantPool jvmtiHeapReferenceInfoConstantPool; -struct jvmtiHeapReferenceInfoStackLocal; -typedef struct jvmtiHeapReferenceInfoStackLocal jvmtiHeapReferenceInfoStackLocal; -struct jvmtiHeapReferenceInfoJniLocal; -typedef struct jvmtiHeapReferenceInfoJniLocal jvmtiHeapReferenceInfoJniLocal; -struct jvmtiHeapReferenceInfoReserved; -typedef struct jvmtiHeapReferenceInfoReserved jvmtiHeapReferenceInfoReserved; -union jvmtiHeapReferenceInfo; -typedef union jvmtiHeapReferenceInfo jvmtiHeapReferenceInfo; -struct jvmtiHeapCallbacks; -typedef struct jvmtiHeapCallbacks jvmtiHeapCallbacks; -struct jvmtiClassDefinition; -typedef struct jvmtiClassDefinition jvmtiClassDefinition; -struct jvmtiMonitorUsage; -typedef struct jvmtiMonitorUsage jvmtiMonitorUsage; -struct jvmtiLineNumberEntry; -typedef struct jvmtiLineNumberEntry jvmtiLineNumberEntry; -struct jvmtiLocalVariableEntry; -typedef struct jvmtiLocalVariableEntry jvmtiLocalVariableEntry; -struct jvmtiParamInfo; -typedef struct jvmtiParamInfo jvmtiParamInfo; -struct jvmtiExtensionFunctionInfo; -typedef struct jvmtiExtensionFunctionInfo jvmtiExtensionFunctionInfo; -struct jvmtiExtensionEventInfo; -typedef struct jvmtiExtensionEventInfo jvmtiExtensionEventInfo; -struct jvmtiTimerInfo; -typedef struct jvmtiTimerInfo jvmtiTimerInfo; -struct jvmtiAddrLocationMap; -typedef struct jvmtiAddrLocationMap jvmtiAddrLocationMap; - - /* Function Types */ - -typedef void (JNICALL *jvmtiStartFunction) - (jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg); - -typedef jint (JNICALL *jvmtiHeapIterationCallback) - (jlong class_tag, jlong size, jlong* tag_ptr, jint length, void* user_data); - -typedef jint (JNICALL *jvmtiHeapReferenceCallback) - (jvmtiHeapReferenceKind reference_kind, const jvmtiHeapReferenceInfo* reference_info, jlong class_tag, jlong referrer_class_tag, jlong size, jlong* tag_ptr, jlong* referrer_tag_ptr, jint length, void* user_data); - -typedef jint (JNICALL *jvmtiPrimitiveFieldCallback) - (jvmtiHeapReferenceKind kind, const jvmtiHeapReferenceInfo* info, jlong object_class_tag, jlong* object_tag_ptr, jvalue value, jvmtiPrimitiveType value_type, void* user_data); - -typedef jint (JNICALL *jvmtiArrayPrimitiveValueCallback) - (jlong class_tag, jlong size, jlong* tag_ptr, jint element_count, jvmtiPrimitiveType element_type, const void* elements, void* user_data); - -typedef jint (JNICALL *jvmtiStringPrimitiveValueCallback) - (jlong class_tag, jlong size, jlong* tag_ptr, const jchar* value, jint value_length, void* user_data); - -typedef jint (JNICALL *jvmtiReservedCallback) - (); - -typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback) - (jlong class_tag, jlong size, jlong* tag_ptr, void* user_data); - -typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback) - (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, void* user_data); - -typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback) - (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_data); - -typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback) - (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data); - -typedef jvmtiError (JNICALL *jvmtiExtensionFunction) - (jvmtiEnv* jvmti_env, ...); - -typedef void (JNICALL *jvmtiExtensionEvent) - (jvmtiEnv* jvmti_env, ...); - - - /* Structure Types */ -struct jvmtiThreadInfo { - char* name; - jint priority; - jboolean is_daemon; - jthreadGroup thread_group; - jobject context_class_loader; -}; -struct jvmtiMonitorStackDepthInfo { - jobject monitor; - jint stack_depth; -}; -struct jvmtiThreadGroupInfo { - jthreadGroup parent; - char* name; - jint max_priority; - jboolean is_daemon; -}; -struct jvmtiFrameInfo { - jmethodID method; - jlocation location; -}; -struct jvmtiStackInfo { - jthread thread; - jint state; - jvmtiFrameInfo* frame_buffer; - jint frame_count; -}; -struct jvmtiHeapReferenceInfoField { - jint index; -}; -struct jvmtiHeapReferenceInfoArray { - jint index; -}; -struct jvmtiHeapReferenceInfoConstantPool { - jint index; -}; -struct jvmtiHeapReferenceInfoStackLocal { - jlong thread_tag; - jlong thread_id; - jint depth; - jmethodID method; - jlocation location; - jint slot; -}; -struct jvmtiHeapReferenceInfoJniLocal { - jlong thread_tag; - jlong thread_id; - jint depth; - jmethodID method; -}; -struct jvmtiHeapReferenceInfoReserved { - jlong reserved1; - jlong reserved2; - jlong reserved3; - jlong reserved4; - jlong reserved5; - jlong reserved6; - jlong reserved7; - jlong reserved8; -}; -union jvmtiHeapReferenceInfo { - jvmtiHeapReferenceInfoField field; - jvmtiHeapReferenceInfoArray array; - jvmtiHeapReferenceInfoConstantPool constant_pool; - jvmtiHeapReferenceInfoStackLocal stack_local; - jvmtiHeapReferenceInfoJniLocal jni_local; - jvmtiHeapReferenceInfoReserved other; -}; -struct jvmtiHeapCallbacks { - jvmtiHeapIterationCallback heap_iteration_callback; - jvmtiHeapReferenceCallback heap_reference_callback; - jvmtiPrimitiveFieldCallback primitive_field_callback; - jvmtiArrayPrimitiveValueCallback array_primitive_value_callback; - jvmtiStringPrimitiveValueCallback string_primitive_value_callback; - jvmtiReservedCallback reserved5; - jvmtiReservedCallback reserved6; - jvmtiReservedCallback reserved7; - jvmtiReservedCallback reserved8; - jvmtiReservedCallback reserved9; - jvmtiReservedCallback reserved10; - jvmtiReservedCallback reserved11; - jvmtiReservedCallback reserved12; - jvmtiReservedCallback reserved13; - jvmtiReservedCallback reserved14; - jvmtiReservedCallback reserved15; -}; -struct jvmtiClassDefinition { - jclass klass; - jint class_byte_count; - const unsigned char* class_bytes; -}; -struct jvmtiMonitorUsage { - jthread owner; - jint entry_count; - jint waiter_count; - jthread* waiters; - jint notify_waiter_count; - jthread* notify_waiters; -}; -struct jvmtiLineNumberEntry { - jlocation start_location; - jint line_number; -}; -struct jvmtiLocalVariableEntry { - jlocation start_location; - jint length; - char* name; - char* signature; - char* generic_signature; - jint slot; -}; -struct jvmtiParamInfo { - char* name; - jvmtiParamKind kind; - jvmtiParamTypes base_type; - jboolean null_ok; -}; -struct jvmtiExtensionFunctionInfo { - jvmtiExtensionFunction func; - char* id; - char* short_description; - jint param_count; - jvmtiParamInfo* params; - jint error_count; - jvmtiError* errors; -}; -struct jvmtiExtensionEventInfo { - jint extension_event_index; - char* id; - char* short_description; - jint param_count; - jvmtiParamInfo* params; -}; -struct jvmtiTimerInfo { - jlong max_value; - jboolean may_skip_forward; - jboolean may_skip_backward; - jvmtiTimerKind kind; - jlong reserved1; - jlong reserved2; -}; -struct jvmtiAddrLocationMap { - const void* start_address; - jlocation location; -}; - -typedef struct { - unsigned int can_tag_objects : 1; - unsigned int can_generate_field_modification_events : 1; - unsigned int can_generate_field_access_events : 1; - unsigned int can_get_bytecodes : 1; - unsigned int can_get_synthetic_attribute : 1; - unsigned int can_get_owned_monitor_info : 1; - unsigned int can_get_current_contended_monitor : 1; - unsigned int can_get_monitor_info : 1; - unsigned int can_pop_frame : 1; - unsigned int can_redefine_classes : 1; - unsigned int can_signal_thread : 1; - unsigned int can_get_source_file_name : 1; - unsigned int can_get_line_numbers : 1; - unsigned int can_get_source_debug_extension : 1; - unsigned int can_access_local_variables : 1; - unsigned int can_maintain_original_method_order : 1; - unsigned int can_generate_single_step_events : 1; - unsigned int can_generate_exception_events : 1; - unsigned int can_generate_frame_pop_events : 1; - unsigned int can_generate_breakpoint_events : 1; - unsigned int can_suspend : 1; - unsigned int can_redefine_any_class : 1; - unsigned int can_get_current_thread_cpu_time : 1; - unsigned int can_get_thread_cpu_time : 1; - unsigned int can_generate_method_entry_events : 1; - unsigned int can_generate_method_exit_events : 1; - unsigned int can_generate_all_class_hook_events : 1; - unsigned int can_generate_compiled_method_load_events : 1; - unsigned int can_generate_monitor_events : 1; - unsigned int can_generate_vm_object_alloc_events : 1; - unsigned int can_generate_native_method_bind_events : 1; - unsigned int can_generate_garbage_collection_events : 1; - unsigned int can_generate_object_free_events : 1; - unsigned int can_force_early_return : 1; - unsigned int can_get_owned_monitor_stack_depth_info : 1; - unsigned int can_get_constant_pool : 1; - unsigned int can_set_native_method_prefix : 1; - unsigned int can_retransform_classes : 1; - unsigned int can_retransform_any_class : 1; - unsigned int can_generate_resource_exhaustion_heap_events : 1; - unsigned int can_generate_resource_exhaustion_threads_events : 1; - unsigned int can_generate_early_vmstart : 1; - unsigned int can_generate_early_class_hook_events : 1; - unsigned int can_generate_sampled_object_alloc_events : 1; - unsigned int : 4; - unsigned int : 16; - unsigned int : 16; - unsigned int : 16; - unsigned int : 16; - unsigned int : 16; -} jvmtiCapabilities; - - - /* Event Definitions */ - -typedef void (JNICALL *jvmtiEventReserved)(void); - - -typedef void (JNICALL *jvmtiEventBreakpoint) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jmethodID method, - jlocation location); - -typedef void (JNICALL *jvmtiEventClassFileLoadHook) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jclass class_being_redefined, - jobject loader, - const char* name, - jobject protection_domain, - jint class_data_len, - const unsigned char* class_data, - jint* new_class_data_len, - unsigned char** new_class_data); - -typedef void (JNICALL *jvmtiEventClassLoad) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jclass klass); - -typedef void (JNICALL *jvmtiEventClassPrepare) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jclass klass); - -typedef void (JNICALL *jvmtiEventCompiledMethodLoad) - (jvmtiEnv *jvmti_env, - jmethodID method, - jint code_size, - const void* code_addr, - jint map_length, - const jvmtiAddrLocationMap* map, - const void* compile_info); - -typedef void (JNICALL *jvmtiEventCompiledMethodUnload) - (jvmtiEnv *jvmti_env, - jmethodID method, - const void* code_addr); - -typedef void (JNICALL *jvmtiEventDataDumpRequest) - (jvmtiEnv *jvmti_env); - -typedef void (JNICALL *jvmtiEventDynamicCodeGenerated) - (jvmtiEnv *jvmti_env, - const char* name, - const void* address, - jint length); - -typedef void (JNICALL *jvmtiEventException) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jmethodID method, - jlocation location, - jobject exception, - jmethodID catch_method, - jlocation catch_location); - -typedef void (JNICALL *jvmtiEventExceptionCatch) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jmethodID method, - jlocation location, - jobject exception); - -typedef void (JNICALL *jvmtiEventFieldAccess) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jmethodID method, - jlocation location, - jclass field_klass, - jobject object, - jfieldID field); - -typedef void (JNICALL *jvmtiEventFieldModification) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jmethodID method, - jlocation location, - jclass field_klass, - jobject object, - jfieldID field, - char signature_type, - jvalue new_value); - -typedef void (JNICALL *jvmtiEventFramePop) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jmethodID method, - jboolean was_popped_by_exception); - -typedef void (JNICALL *jvmtiEventGarbageCollectionFinish) - (jvmtiEnv *jvmti_env); - -typedef void (JNICALL *jvmtiEventGarbageCollectionStart) - (jvmtiEnv *jvmti_env); - -typedef void (JNICALL *jvmtiEventMethodEntry) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jmethodID method); - -typedef void (JNICALL *jvmtiEventMethodExit) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jmethodID method, - jboolean was_popped_by_exception, - jvalue return_value); - -typedef void (JNICALL *jvmtiEventMonitorContendedEnter) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jobject object); - -typedef void (JNICALL *jvmtiEventMonitorContendedEntered) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jobject object); - -typedef void (JNICALL *jvmtiEventMonitorWait) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jobject object, - jlong timeout); - -typedef void (JNICALL *jvmtiEventMonitorWaited) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jobject object, - jboolean timed_out); - -typedef void (JNICALL *jvmtiEventNativeMethodBind) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jmethodID method, - void* address, - void** new_address_ptr); - -typedef void (JNICALL *jvmtiEventObjectFree) - (jvmtiEnv *jvmti_env, - jlong tag); - -typedef void (JNICALL *jvmtiEventResourceExhausted) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jint flags, - const void* reserved, - const char* description); - -typedef void (JNICALL *jvmtiEventSampledObjectAlloc) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jobject object, - jclass object_klass, - jlong size); - -typedef void (JNICALL *jvmtiEventSingleStep) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jmethodID method, - jlocation location); - -typedef void (JNICALL *jvmtiEventThreadEnd) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread); - -typedef void (JNICALL *jvmtiEventThreadStart) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread); - -typedef void (JNICALL *jvmtiEventVMDeath) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env); - -typedef void (JNICALL *jvmtiEventVMInit) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread); - -typedef void (JNICALL *jvmtiEventVMObjectAlloc) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env, - jthread thread, - jobject object, - jclass object_klass, - jlong size); - -typedef void (JNICALL *jvmtiEventVMStart) - (jvmtiEnv *jvmti_env, - JNIEnv* jni_env); - - /* Event Callback Structure */ - -typedef struct { - /* 50 : VM Initialization Event */ - jvmtiEventVMInit VMInit; - /* 51 : VM Death Event */ - jvmtiEventVMDeath VMDeath; - /* 52 : Thread Start */ - jvmtiEventThreadStart ThreadStart; - /* 53 : Thread End */ - jvmtiEventThreadEnd ThreadEnd; - /* 54 : Class File Load Hook */ - jvmtiEventClassFileLoadHook ClassFileLoadHook; - /* 55 : Class Load */ - jvmtiEventClassLoad ClassLoad; - /* 56 : Class Prepare */ - jvmtiEventClassPrepare ClassPrepare; - /* 57 : VM Start Event */ - jvmtiEventVMStart VMStart; - /* 58 : Exception */ - jvmtiEventException Exception; - /* 59 : Exception Catch */ - jvmtiEventExceptionCatch ExceptionCatch; - /* 60 : Single Step */ - jvmtiEventSingleStep SingleStep; - /* 61 : Frame Pop */ - jvmtiEventFramePop FramePop; - /* 62 : Breakpoint */ - jvmtiEventBreakpoint Breakpoint; - /* 63 : Field Access */ - jvmtiEventFieldAccess FieldAccess; - /* 64 : Field Modification */ - jvmtiEventFieldModification FieldModification; - /* 65 : Method Entry */ - jvmtiEventMethodEntry MethodEntry; - /* 66 : Method Exit */ - jvmtiEventMethodExit MethodExit; - /* 67 : Native Method Bind */ - jvmtiEventNativeMethodBind NativeMethodBind; - /* 68 : Compiled Method Load */ - jvmtiEventCompiledMethodLoad CompiledMethodLoad; - /* 69 : Compiled Method Unload */ - jvmtiEventCompiledMethodUnload CompiledMethodUnload; - /* 70 : Dynamic Code Generated */ - jvmtiEventDynamicCodeGenerated DynamicCodeGenerated; - /* 71 : Data Dump Request */ - jvmtiEventDataDumpRequest DataDumpRequest; - /* 72 */ - jvmtiEventReserved reserved72; - /* 73 : Monitor Wait */ - jvmtiEventMonitorWait MonitorWait; - /* 74 : Monitor Waited */ - jvmtiEventMonitorWaited MonitorWaited; - /* 75 : Monitor Contended Enter */ - jvmtiEventMonitorContendedEnter MonitorContendedEnter; - /* 76 : Monitor Contended Entered */ - jvmtiEventMonitorContendedEntered MonitorContendedEntered; - /* 77 */ - jvmtiEventReserved reserved77; - /* 78 */ - jvmtiEventReserved reserved78; - /* 79 */ - jvmtiEventReserved reserved79; - /* 80 : Resource Exhausted */ - jvmtiEventResourceExhausted ResourceExhausted; - /* 81 : Garbage Collection Start */ - jvmtiEventGarbageCollectionStart GarbageCollectionStart; - /* 82 : Garbage Collection Finish */ - jvmtiEventGarbageCollectionFinish GarbageCollectionFinish; - /* 83 : Object Free */ - jvmtiEventObjectFree ObjectFree; - /* 84 : VM Object Allocation */ - jvmtiEventVMObjectAlloc VMObjectAlloc; - /* 85 */ - jvmtiEventReserved reserved85; - /* 86 : Sampled Object Allocation */ - jvmtiEventSampledObjectAlloc SampledObjectAlloc; -} jvmtiEventCallbacks; - - - /* Function Interface */ - -typedef struct jvmtiInterface_1_ { - - /* 1 : RESERVED */ - void *reserved1; - - /* 2 : Set Event Notification Mode */ - jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv* env, - jvmtiEventMode mode, - jvmtiEvent event_type, - jthread event_thread, - ...); - - /* 3 : Get All Modules */ - jvmtiError (JNICALL *GetAllModules) (jvmtiEnv* env, - jint* module_count_ptr, - jobject** modules_ptr); - - /* 4 : Get All Threads */ - jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv* env, - jint* threads_count_ptr, - jthread** threads_ptr); - - /* 5 : Suspend Thread */ - jvmtiError (JNICALL *SuspendThread) (jvmtiEnv* env, - jthread thread); - - /* 6 : Resume Thread */ - jvmtiError (JNICALL *ResumeThread) (jvmtiEnv* env, - jthread thread); - - /* 7 : Stop Thread */ - jvmtiError (JNICALL *StopThread) (jvmtiEnv* env, - jthread thread, - jobject exception); - - /* 8 : Interrupt Thread */ - jvmtiError (JNICALL *InterruptThread) (jvmtiEnv* env, - jthread thread); - - /* 9 : Get Thread Info */ - jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv* env, - jthread thread, - jvmtiThreadInfo* info_ptr); - - /* 10 : Get Owned Monitor Info */ - jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv* env, - jthread thread, - jint* owned_monitor_count_ptr, - jobject** owned_monitors_ptr); - - /* 11 : Get Current Contended Monitor */ - jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv* env, - jthread thread, - jobject* monitor_ptr); - - /* 12 : Run Agent Thread */ - jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv* env, - jthread thread, - jvmtiStartFunction proc, - const void* arg, - jint priority); - - /* 13 : Get Top Thread Groups */ - jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv* env, - jint* group_count_ptr, - jthreadGroup** groups_ptr); - - /* 14 : Get Thread Group Info */ - jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv* env, - jthreadGroup group, - jvmtiThreadGroupInfo* info_ptr); - - /* 15 : Get Thread Group Children */ - jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv* env, - jthreadGroup group, - jint* thread_count_ptr, - jthread** threads_ptr, - jint* group_count_ptr, - jthreadGroup** groups_ptr); - - /* 16 : Get Frame Count */ - jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env, - jthread thread, - jint* count_ptr); - - /* 17 : Get Thread State */ - jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env, - jthread thread, - jint* thread_state_ptr); - - /* 18 : Get Current Thread */ - jvmtiError (JNICALL *GetCurrentThread) (jvmtiEnv* env, - jthread* thread_ptr); - - /* 19 : Get Frame Location */ - jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env, - jthread thread, - jint depth, - jmethodID* method_ptr, - jlocation* location_ptr); - - /* 20 : Notify Frame Pop */ - jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env, - jthread thread, - jint depth); - - /* 21 : Get Local Variable - Object */ - jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv* env, - jthread thread, - jint depth, - jint slot, - jobject* value_ptr); - - /* 22 : Get Local Variable - Int */ - jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv* env, - jthread thread, - jint depth, - jint slot, - jint* value_ptr); - - /* 23 : Get Local Variable - Long */ - jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv* env, - jthread thread, - jint depth, - jint slot, - jlong* value_ptr); - - /* 24 : Get Local Variable - Float */ - jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv* env, - jthread thread, - jint depth, - jint slot, - jfloat* value_ptr); - - /* 25 : Get Local Variable - Double */ - jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv* env, - jthread thread, - jint depth, - jint slot, - jdouble* value_ptr); - - /* 26 : Set Local Variable - Object */ - jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv* env, - jthread thread, - jint depth, - jint slot, - jobject value); - - /* 27 : Set Local Variable - Int */ - jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv* env, - jthread thread, - jint depth, - jint slot, - jint value); - - /* 28 : Set Local Variable - Long */ - jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv* env, - jthread thread, - jint depth, - jint slot, - jlong value); - - /* 29 : Set Local Variable - Float */ - jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv* env, - jthread thread, - jint depth, - jint slot, - jfloat value); - - /* 30 : Set Local Variable - Double */ - jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv* env, - jthread thread, - jint depth, - jint slot, - jdouble value); - - /* 31 : Create Raw Monitor */ - jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv* env, - const char* name, - jrawMonitorID* monitor_ptr); - - /* 32 : Destroy Raw Monitor */ - jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv* env, - jrawMonitorID monitor); - - /* 33 : Raw Monitor Enter */ - jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv* env, - jrawMonitorID monitor); - - /* 34 : Raw Monitor Exit */ - jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv* env, - jrawMonitorID monitor); - - /* 35 : Raw Monitor Wait */ - jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv* env, - jrawMonitorID monitor, - jlong millis); - - /* 36 : Raw Monitor Notify */ - jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv* env, - jrawMonitorID monitor); - - /* 37 : Raw Monitor Notify All */ - jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv* env, - jrawMonitorID monitor); - - /* 38 : Set Breakpoint */ - jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv* env, - jmethodID method, - jlocation location); - - /* 39 : Clear Breakpoint */ - jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv* env, - jmethodID method, - jlocation location); - - /* 40 : Get Named Module */ - jvmtiError (JNICALL *GetNamedModule) (jvmtiEnv* env, - jobject class_loader, - const char* package_name, - jobject* module_ptr); - - /* 41 : Set Field Access Watch */ - jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv* env, - jclass klass, - jfieldID field); - - /* 42 : Clear Field Access Watch */ - jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv* env, - jclass klass, - jfieldID field); - - /* 43 : Set Field Modification Watch */ - jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env, - jclass klass, - jfieldID field); - - /* 44 : Clear Field Modification Watch */ - jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env, - jclass klass, - jfieldID field); - - /* 45 : Is Modifiable Class */ - jvmtiError (JNICALL *IsModifiableClass) (jvmtiEnv* env, - jclass klass, - jboolean* is_modifiable_class_ptr); - - /* 46 : Allocate */ - jvmtiError (JNICALL *Allocate) (jvmtiEnv* env, - jlong size, - unsigned char** mem_ptr); - - /* 47 : Deallocate */ - jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env, - unsigned char* mem); - - /* 48 : Get Class Signature */ - jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv* env, - jclass klass, - char** signature_ptr, - char** generic_ptr); - - /* 49 : Get Class Status */ - jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv* env, - jclass klass, - jint* status_ptr); - - /* 50 : Get Source File Name */ - jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv* env, - jclass klass, - char** source_name_ptr); - - /* 51 : Get Class Modifiers */ - jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv* env, - jclass klass, - jint* modifiers_ptr); - - /* 52 : Get Class Methods */ - jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv* env, - jclass klass, - jint* method_count_ptr, - jmethodID** methods_ptr); - - /* 53 : Get Class Fields */ - jvmtiError (JNICALL *GetClassFields) (jvmtiEnv* env, - jclass klass, - jint* field_count_ptr, - jfieldID** fields_ptr); - - /* 54 : Get Implemented Interfaces */ - jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv* env, - jclass klass, - jint* interface_count_ptr, - jclass** interfaces_ptr); - - /* 55 : Is Interface */ - jvmtiError (JNICALL *IsInterface) (jvmtiEnv* env, - jclass klass, - jboolean* is_interface_ptr); - - /* 56 : Is Array Class */ - jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv* env, - jclass klass, - jboolean* is_array_class_ptr); - - /* 57 : Get Class Loader */ - jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv* env, - jclass klass, - jobject* classloader_ptr); - - /* 58 : Get Object Hash Code */ - jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv* env, - jobject object, - jint* hash_code_ptr); - - /* 59 : Get Object Monitor Usage */ - jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv* env, - jobject object, - jvmtiMonitorUsage* info_ptr); - - /* 60 : Get Field Name (and Signature) */ - jvmtiError (JNICALL *GetFieldName) (jvmtiEnv* env, - jclass klass, - jfieldID field, - char** name_ptr, - char** signature_ptr, - char** generic_ptr); - - /* 61 : Get Field Declaring Class */ - jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv* env, - jclass klass, - jfieldID field, - jclass* declaring_class_ptr); - - /* 62 : Get Field Modifiers */ - jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv* env, - jclass klass, - jfieldID field, - jint* modifiers_ptr); - - /* 63 : Is Field Synthetic */ - jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv* env, - jclass klass, - jfieldID field, - jboolean* is_synthetic_ptr); - - /* 64 : Get Method Name (and Signature) */ - jvmtiError (JNICALL *GetMethodName) (jvmtiEnv* env, - jmethodID method, - char** name_ptr, - char** signature_ptr, - char** generic_ptr); - - /* 65 : Get Method Declaring Class */ - jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv* env, - jmethodID method, - jclass* declaring_class_ptr); - - /* 66 : Get Method Modifiers */ - jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv* env, - jmethodID method, - jint* modifiers_ptr); - - /* 67 : RESERVED */ - void *reserved67; - - /* 68 : Get Max Locals */ - jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv* env, - jmethodID method, - jint* max_ptr); - - /* 69 : Get Arguments Size */ - jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv* env, - jmethodID method, - jint* size_ptr); - - /* 70 : Get Line Number Table */ - jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv* env, - jmethodID method, - jint* entry_count_ptr, - jvmtiLineNumberEntry** table_ptr); - - /* 71 : Get Method Location */ - jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv* env, - jmethodID method, - jlocation* start_location_ptr, - jlocation* end_location_ptr); - - /* 72 : Get Local Variable Table */ - jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env, - jmethodID method, - jint* entry_count_ptr, - jvmtiLocalVariableEntry** table_ptr); - - /* 73 : Set Native Method Prefix */ - jvmtiError (JNICALL *SetNativeMethodPrefix) (jvmtiEnv* env, - const char* prefix); - - /* 74 : Set Native Method Prefixes */ - jvmtiError (JNICALL *SetNativeMethodPrefixes) (jvmtiEnv* env, - jint prefix_count, - char** prefixes); - - /* 75 : Get Bytecodes */ - jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env, - jmethodID method, - jint* bytecode_count_ptr, - unsigned char** bytecodes_ptr); - - /* 76 : Is Method Native */ - jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env, - jmethodID method, - jboolean* is_native_ptr); - - /* 77 : Is Method Synthetic */ - jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv* env, - jmethodID method, - jboolean* is_synthetic_ptr); - - /* 78 : Get Loaded Classes */ - jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv* env, - jint* class_count_ptr, - jclass** classes_ptr); - - /* 79 : Get Classloader Classes */ - jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env, - jobject initiating_loader, - jint* class_count_ptr, - jclass** classes_ptr); - - /* 80 : Pop Frame */ - jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env, - jthread thread); - - /* 81 : Force Early Return - Object */ - jvmtiError (JNICALL *ForceEarlyReturnObject) (jvmtiEnv* env, - jthread thread, - jobject value); - - /* 82 : Force Early Return - Int */ - jvmtiError (JNICALL *ForceEarlyReturnInt) (jvmtiEnv* env, - jthread thread, - jint value); - - /* 83 : Force Early Return - Long */ - jvmtiError (JNICALL *ForceEarlyReturnLong) (jvmtiEnv* env, - jthread thread, - jlong value); - - /* 84 : Force Early Return - Float */ - jvmtiError (JNICALL *ForceEarlyReturnFloat) (jvmtiEnv* env, - jthread thread, - jfloat value); - - /* 85 : Force Early Return - Double */ - jvmtiError (JNICALL *ForceEarlyReturnDouble) (jvmtiEnv* env, - jthread thread, - jdouble value); - - /* 86 : Force Early Return - Void */ - jvmtiError (JNICALL *ForceEarlyReturnVoid) (jvmtiEnv* env, - jthread thread); - - /* 87 : Redefine Classes */ - jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env, - jint class_count, - const jvmtiClassDefinition* class_definitions); - - /* 88 : Get Version Number */ - jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env, - jint* version_ptr); - - /* 89 : Get Capabilities */ - jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv* env, - jvmtiCapabilities* capabilities_ptr); - - /* 90 : Get Source Debug Extension */ - jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv* env, - jclass klass, - char** source_debug_extension_ptr); - - /* 91 : Is Method Obsolete */ - jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv* env, - jmethodID method, - jboolean* is_obsolete_ptr); - - /* 92 : Suspend Thread List */ - jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv* env, - jint request_count, - const jthread* request_list, - jvmtiError* results); - - /* 93 : Resume Thread List */ - jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv* env, - jint request_count, - const jthread* request_list, - jvmtiError* results); - - /* 94 : Add Module Reads */ - jvmtiError (JNICALL *AddModuleReads) (jvmtiEnv* env, - jobject module, - jobject to_module); - - /* 95 : Add Module Exports */ - jvmtiError (JNICALL *AddModuleExports) (jvmtiEnv* env, - jobject module, - const char* pkg_name, - jobject to_module); - - /* 96 : Add Module Opens */ - jvmtiError (JNICALL *AddModuleOpens) (jvmtiEnv* env, - jobject module, - const char* pkg_name, - jobject to_module); - - /* 97 : Add Module Uses */ - jvmtiError (JNICALL *AddModuleUses) (jvmtiEnv* env, - jobject module, - jclass service); - - /* 98 : Add Module Provides */ - jvmtiError (JNICALL *AddModuleProvides) (jvmtiEnv* env, - jobject module, - jclass service, - jclass impl_class); - - /* 99 : Is Modifiable Module */ - jvmtiError (JNICALL *IsModifiableModule) (jvmtiEnv* env, - jobject module, - jboolean* is_modifiable_module_ptr); - - /* 100 : Get All Stack Traces */ - jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv* env, - jint max_frame_count, - jvmtiStackInfo** stack_info_ptr, - jint* thread_count_ptr); - - /* 101 : Get Thread List Stack Traces */ - jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv* env, - jint thread_count, - const jthread* thread_list, - jint max_frame_count, - jvmtiStackInfo** stack_info_ptr); - - /* 102 : Get Thread Local Storage */ - jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv* env, - jthread thread, - void** data_ptr); - - /* 103 : Set Thread Local Storage */ - jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv* env, - jthread thread, - const void* data); - - /* 104 : Get Stack Trace */ - jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv* env, - jthread thread, - jint start_depth, - jint max_frame_count, - jvmtiFrameInfo* frame_buffer, - jint* count_ptr); - - /* 105 : RESERVED */ - void *reserved105; - - /* 106 : Get Tag */ - jvmtiError (JNICALL *GetTag) (jvmtiEnv* env, - jobject object, - jlong* tag_ptr); - - /* 107 : Set Tag */ - jvmtiError (JNICALL *SetTag) (jvmtiEnv* env, - jobject object, - jlong tag); - - /* 108 : Force Garbage Collection */ - jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env); - - /* 109 : Iterate Over Objects Reachable From Object */ - jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* env, - jobject object, - jvmtiObjectReferenceCallback object_reference_callback, - const void* user_data); - - /* 110 : Iterate Over Reachable Objects */ - jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv* env, - jvmtiHeapRootCallback heap_root_callback, - jvmtiStackReferenceCallback stack_ref_callback, - jvmtiObjectReferenceCallback object_ref_callback, - const void* user_data); - - /* 111 : Iterate Over Heap */ - jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env, - jvmtiHeapObjectFilter object_filter, - jvmtiHeapObjectCallback heap_object_callback, - const void* user_data); - - /* 112 : Iterate Over Instances Of Class */ - jvmtiError (JNICALL *IterateOverInstancesOfClass) (jvmtiEnv* env, - jclass klass, - jvmtiHeapObjectFilter object_filter, - jvmtiHeapObjectCallback heap_object_callback, - const void* user_data); - - /* 113 : RESERVED */ - void *reserved113; - - /* 114 : Get Objects With Tags */ - jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv* env, - jint tag_count, - const jlong* tags, - jint* count_ptr, - jobject** object_result_ptr, - jlong** tag_result_ptr); - - /* 115 : Follow References */ - jvmtiError (JNICALL *FollowReferences) (jvmtiEnv* env, - jint heap_filter, - jclass klass, - jobject initial_object, - const jvmtiHeapCallbacks* callbacks, - const void* user_data); - - /* 116 : Iterate Through Heap */ - jvmtiError (JNICALL *IterateThroughHeap) (jvmtiEnv* env, - jint heap_filter, - jclass klass, - const jvmtiHeapCallbacks* callbacks, - const void* user_data); - - /* 117 : RESERVED */ - void *reserved117; - - /* 118 : RESERVED */ - void *reserved118; - - /* 119 : RESERVED */ - void *reserved119; - - /* 120 : Set JNI Function Table */ - jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv* env, - const jniNativeInterface* function_table); - - /* 121 : Get JNI Function Table */ - jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv* env, - jniNativeInterface** function_table); - - /* 122 : Set Event Callbacks */ - jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv* env, - const jvmtiEventCallbacks* callbacks, - jint size_of_callbacks); - - /* 123 : Generate Events */ - jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv* env, - jvmtiEvent event_type); - - /* 124 : Get Extension Functions */ - jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv* env, - jint* extension_count_ptr, - jvmtiExtensionFunctionInfo** extensions); - - /* 125 : Get Extension Events */ - jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv* env, - jint* extension_count_ptr, - jvmtiExtensionEventInfo** extensions); - - /* 126 : Set Extension Event Callback */ - jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv* env, - jint extension_event_index, - jvmtiExtensionEvent callback); - - /* 127 : Dispose Environment */ - jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv* env); - - /* 128 : Get Error Name */ - jvmtiError (JNICALL *GetErrorName) (jvmtiEnv* env, - jvmtiError error, - char** name_ptr); - - /* 129 : Get JLocation Format */ - jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv* env, - jvmtiJlocationFormat* format_ptr); - - /* 130 : Get System Properties */ - jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv* env, - jint* count_ptr, - char*** property_ptr); - - /* 131 : Get System Property */ - jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv* env, - const char* property, - char** value_ptr); - - /* 132 : Set System Property */ - jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv* env, - const char* property, - const char* value_ptr); - - /* 133 : Get Phase */ - jvmtiError (JNICALL *GetPhase) (jvmtiEnv* env, - jvmtiPhase* phase_ptr); - - /* 134 : Get Current Thread CPU Timer Information */ - jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv* env, - jvmtiTimerInfo* info_ptr); - - /* 135 : Get Current Thread CPU Time */ - jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv* env, - jlong* nanos_ptr); - - /* 136 : Get Thread CPU Timer Information */ - jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv* env, - jvmtiTimerInfo* info_ptr); - - /* 137 : Get Thread CPU Time */ - jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv* env, - jthread thread, - jlong* nanos_ptr); - - /* 138 : Get Timer Information */ - jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv* env, - jvmtiTimerInfo* info_ptr); - - /* 139 : Get Time */ - jvmtiError (JNICALL *GetTime) (jvmtiEnv* env, - jlong* nanos_ptr); - - /* 140 : Get Potential Capabilities */ - jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv* env, - jvmtiCapabilities* capabilities_ptr); - - /* 141 : RESERVED */ - void *reserved141; - - /* 142 : Add Capabilities */ - jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv* env, - const jvmtiCapabilities* capabilities_ptr); - - /* 143 : Relinquish Capabilities */ - jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env, - const jvmtiCapabilities* capabilities_ptr); - - /* 144 : Get Available Processors */ - jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env, - jint* processor_count_ptr); - - /* 145 : Get Class Version Numbers */ - jvmtiError (JNICALL *GetClassVersionNumbers) (jvmtiEnv* env, - jclass klass, - jint* minor_version_ptr, - jint* major_version_ptr); - - /* 146 : Get Constant Pool */ - jvmtiError (JNICALL *GetConstantPool) (jvmtiEnv* env, - jclass klass, - jint* constant_pool_count_ptr, - jint* constant_pool_byte_count_ptr, - unsigned char** constant_pool_bytes_ptr); - - /* 147 : Get Environment Local Storage */ - jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env, - void** data_ptr); - - /* 148 : Set Environment Local Storage */ - jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env, - const void* data); - - /* 149 : Add To Bootstrap Class Loader Search */ - jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env, - const char* segment); - - /* 150 : Set Verbose Flag */ - jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env, - jvmtiVerboseFlag flag, - jboolean value); - - /* 151 : Add To System Class Loader Search */ - jvmtiError (JNICALL *AddToSystemClassLoaderSearch) (jvmtiEnv* env, - const char* segment); - - /* 152 : Retransform Classes */ - jvmtiError (JNICALL *RetransformClasses) (jvmtiEnv* env, - jint class_count, - const jclass* classes); - - /* 153 : Get Owned Monitor Stack Depth Info */ - jvmtiError (JNICALL *GetOwnedMonitorStackDepthInfo) (jvmtiEnv* env, - jthread thread, - jint* monitor_info_count_ptr, - jvmtiMonitorStackDepthInfo** monitor_info_ptr); - - /* 154 : Get Object Size */ - jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv* env, - jobject object, - jlong* size_ptr); - - /* 155 : Get Local Instance */ - jvmtiError (JNICALL *GetLocalInstance) (jvmtiEnv* env, - jthread thread, - jint depth, - jobject* value_ptr); - - /* 156 : Set Heap Sampling Interval */ - jvmtiError (JNICALL *SetHeapSamplingInterval) (jvmtiEnv* env, - jint sampling_interval); - -} jvmtiInterface_1; - -struct _jvmtiEnv { - const struct jvmtiInterface_1_ *functions; -#ifdef __cplusplus - - - jvmtiError Allocate(jlong size, - unsigned char** mem_ptr) { - return functions->Allocate(this, size, mem_ptr); - } - - jvmtiError Deallocate(unsigned char* mem) { - return functions->Deallocate(this, mem); - } - - jvmtiError GetThreadState(jthread thread, - jint* thread_state_ptr) { - return functions->GetThreadState(this, thread, thread_state_ptr); - } - - jvmtiError GetCurrentThread(jthread* thread_ptr) { - return functions->GetCurrentThread(this, thread_ptr); - } - - jvmtiError GetAllThreads(jint* threads_count_ptr, - jthread** threads_ptr) { - return functions->GetAllThreads(this, threads_count_ptr, threads_ptr); - } - - jvmtiError SuspendThread(jthread thread) { - return functions->SuspendThread(this, thread); - } - - jvmtiError SuspendThreadList(jint request_count, - const jthread* request_list, - jvmtiError* results) { - return functions->SuspendThreadList(this, request_count, request_list, results); - } - - jvmtiError ResumeThread(jthread thread) { - return functions->ResumeThread(this, thread); - } - - jvmtiError ResumeThreadList(jint request_count, - const jthread* request_list, - jvmtiError* results) { - return functions->ResumeThreadList(this, request_count, request_list, results); - } - - jvmtiError StopThread(jthread thread, - jobject exception) { - return functions->StopThread(this, thread, exception); - } - - jvmtiError InterruptThread(jthread thread) { - return functions->InterruptThread(this, thread); - } - - jvmtiError GetThreadInfo(jthread thread, - jvmtiThreadInfo* info_ptr) { - return functions->GetThreadInfo(this, thread, info_ptr); - } - - jvmtiError GetOwnedMonitorInfo(jthread thread, - jint* owned_monitor_count_ptr, - jobject** owned_monitors_ptr) { - return functions->GetOwnedMonitorInfo(this, thread, owned_monitor_count_ptr, owned_monitors_ptr); - } - - jvmtiError GetOwnedMonitorStackDepthInfo(jthread thread, - jint* monitor_info_count_ptr, - jvmtiMonitorStackDepthInfo** monitor_info_ptr) { - return functions->GetOwnedMonitorStackDepthInfo(this, thread, monitor_info_count_ptr, monitor_info_ptr); - } - - jvmtiError GetCurrentContendedMonitor(jthread thread, - jobject* monitor_ptr) { - return functions->GetCurrentContendedMonitor(this, thread, monitor_ptr); - } - - jvmtiError RunAgentThread(jthread thread, - jvmtiStartFunction proc, - const void* arg, - jint priority) { - return functions->RunAgentThread(this, thread, proc, arg, priority); - } - - jvmtiError SetThreadLocalStorage(jthread thread, - const void* data) { - return functions->SetThreadLocalStorage(this, thread, data); - } - - jvmtiError GetThreadLocalStorage(jthread thread, - void** data_ptr) { - return functions->GetThreadLocalStorage(this, thread, data_ptr); - } - - jvmtiError GetTopThreadGroups(jint* group_count_ptr, - jthreadGroup** groups_ptr) { - return functions->GetTopThreadGroups(this, group_count_ptr, groups_ptr); - } - - jvmtiError GetThreadGroupInfo(jthreadGroup group, - jvmtiThreadGroupInfo* info_ptr) { - return functions->GetThreadGroupInfo(this, group, info_ptr); - } - - jvmtiError GetThreadGroupChildren(jthreadGroup group, - jint* thread_count_ptr, - jthread** threads_ptr, - jint* group_count_ptr, - jthreadGroup** groups_ptr) { - return functions->GetThreadGroupChildren(this, group, thread_count_ptr, threads_ptr, group_count_ptr, groups_ptr); - } - - jvmtiError GetStackTrace(jthread thread, - jint start_depth, - jint max_frame_count, - jvmtiFrameInfo* frame_buffer, - jint* count_ptr) { - return functions->GetStackTrace(this, thread, start_depth, max_frame_count, frame_buffer, count_ptr); - } - - jvmtiError GetAllStackTraces(jint max_frame_count, - jvmtiStackInfo** stack_info_ptr, - jint* thread_count_ptr) { - return functions->GetAllStackTraces(this, max_frame_count, stack_info_ptr, thread_count_ptr); - } - - jvmtiError GetThreadListStackTraces(jint thread_count, - const jthread* thread_list, - jint max_frame_count, - jvmtiStackInfo** stack_info_ptr) { - return functions->GetThreadListStackTraces(this, thread_count, thread_list, max_frame_count, stack_info_ptr); - } - - jvmtiError GetFrameCount(jthread thread, - jint* count_ptr) { - return functions->GetFrameCount(this, thread, count_ptr); - } - - jvmtiError PopFrame(jthread thread) { - return functions->PopFrame(this, thread); - } - - jvmtiError GetFrameLocation(jthread thread, - jint depth, - jmethodID* method_ptr, - jlocation* location_ptr) { - return functions->GetFrameLocation(this, thread, depth, method_ptr, location_ptr); - } - - jvmtiError NotifyFramePop(jthread thread, - jint depth) { - return functions->NotifyFramePop(this, thread, depth); - } - - jvmtiError ForceEarlyReturnObject(jthread thread, - jobject value) { - return functions->ForceEarlyReturnObject(this, thread, value); - } - - jvmtiError ForceEarlyReturnInt(jthread thread, - jint value) { - return functions->ForceEarlyReturnInt(this, thread, value); - } - - jvmtiError ForceEarlyReturnLong(jthread thread, - jlong value) { - return functions->ForceEarlyReturnLong(this, thread, value); - } - - jvmtiError ForceEarlyReturnFloat(jthread thread, - jfloat value) { - return functions->ForceEarlyReturnFloat(this, thread, value); - } - - jvmtiError ForceEarlyReturnDouble(jthread thread, - jdouble value) { - return functions->ForceEarlyReturnDouble(this, thread, value); - } - - jvmtiError ForceEarlyReturnVoid(jthread thread) { - return functions->ForceEarlyReturnVoid(this, thread); - } - - jvmtiError FollowReferences(jint heap_filter, - jclass klass, - jobject initial_object, - const jvmtiHeapCallbacks* callbacks, - const void* user_data) { - return functions->FollowReferences(this, heap_filter, klass, initial_object, callbacks, user_data); - } - - jvmtiError IterateThroughHeap(jint heap_filter, - jclass klass, - const jvmtiHeapCallbacks* callbacks, - const void* user_data) { - return functions->IterateThroughHeap(this, heap_filter, klass, callbacks, user_data); - } - - jvmtiError GetTag(jobject object, - jlong* tag_ptr) { - return functions->GetTag(this, object, tag_ptr); - } - - jvmtiError SetTag(jobject object, - jlong tag) { - return functions->SetTag(this, object, tag); - } - - jvmtiError GetObjectsWithTags(jint tag_count, - const jlong* tags, - jint* count_ptr, - jobject** object_result_ptr, - jlong** tag_result_ptr) { - return functions->GetObjectsWithTags(this, tag_count, tags, count_ptr, object_result_ptr, tag_result_ptr); - } - - jvmtiError ForceGarbageCollection() { - return functions->ForceGarbageCollection(this); - } - - jvmtiError IterateOverObjectsReachableFromObject(jobject object, - jvmtiObjectReferenceCallback object_reference_callback, - const void* user_data) { - return functions->IterateOverObjectsReachableFromObject(this, object, object_reference_callback, user_data); - } - - jvmtiError IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback, - jvmtiStackReferenceCallback stack_ref_callback, - jvmtiObjectReferenceCallback object_ref_callback, - const void* user_data) { - return functions->IterateOverReachableObjects(this, heap_root_callback, stack_ref_callback, object_ref_callback, user_data); - } - - jvmtiError IterateOverHeap(jvmtiHeapObjectFilter object_filter, - jvmtiHeapObjectCallback heap_object_callback, - const void* user_data) { - return functions->IterateOverHeap(this, object_filter, heap_object_callback, user_data); - } - - jvmtiError IterateOverInstancesOfClass(jclass klass, - jvmtiHeapObjectFilter object_filter, - jvmtiHeapObjectCallback heap_object_callback, - const void* user_data) { - return functions->IterateOverInstancesOfClass(this, klass, object_filter, heap_object_callback, user_data); - } - - jvmtiError GetLocalObject(jthread thread, - jint depth, - jint slot, - jobject* value_ptr) { - return functions->GetLocalObject(this, thread, depth, slot, value_ptr); - } - - jvmtiError GetLocalInstance(jthread thread, - jint depth, - jobject* value_ptr) { - return functions->GetLocalInstance(this, thread, depth, value_ptr); - } - - jvmtiError GetLocalInt(jthread thread, - jint depth, - jint slot, - jint* value_ptr) { - return functions->GetLocalInt(this, thread, depth, slot, value_ptr); - } - - jvmtiError GetLocalLong(jthread thread, - jint depth, - jint slot, - jlong* value_ptr) { - return functions->GetLocalLong(this, thread, depth, slot, value_ptr); - } - - jvmtiError GetLocalFloat(jthread thread, - jint depth, - jint slot, - jfloat* value_ptr) { - return functions->GetLocalFloat(this, thread, depth, slot, value_ptr); - } - - jvmtiError GetLocalDouble(jthread thread, - jint depth, - jint slot, - jdouble* value_ptr) { - return functions->GetLocalDouble(this, thread, depth, slot, value_ptr); - } - - jvmtiError SetLocalObject(jthread thread, - jint depth, - jint slot, - jobject value) { - return functions->SetLocalObject(this, thread, depth, slot, value); - } - - jvmtiError SetLocalInt(jthread thread, - jint depth, - jint slot, - jint value) { - return functions->SetLocalInt(this, thread, depth, slot, value); - } - - jvmtiError SetLocalLong(jthread thread, - jint depth, - jint slot, - jlong value) { - return functions->SetLocalLong(this, thread, depth, slot, value); - } - - jvmtiError SetLocalFloat(jthread thread, - jint depth, - jint slot, - jfloat value) { - return functions->SetLocalFloat(this, thread, depth, slot, value); - } - - jvmtiError SetLocalDouble(jthread thread, - jint depth, - jint slot, - jdouble value) { - return functions->SetLocalDouble(this, thread, depth, slot, value); - } - - jvmtiError SetBreakpoint(jmethodID method, - jlocation location) { - return functions->SetBreakpoint(this, method, location); - } - - jvmtiError ClearBreakpoint(jmethodID method, - jlocation location) { - return functions->ClearBreakpoint(this, method, location); - } - - jvmtiError SetFieldAccessWatch(jclass klass, - jfieldID field) { - return functions->SetFieldAccessWatch(this, klass, field); - } - - jvmtiError ClearFieldAccessWatch(jclass klass, - jfieldID field) { - return functions->ClearFieldAccessWatch(this, klass, field); - } - - jvmtiError SetFieldModificationWatch(jclass klass, - jfieldID field) { - return functions->SetFieldModificationWatch(this, klass, field); - } - - jvmtiError ClearFieldModificationWatch(jclass klass, - jfieldID field) { - return functions->ClearFieldModificationWatch(this, klass, field); - } - - jvmtiError GetAllModules(jint* module_count_ptr, - jobject** modules_ptr) { - return functions->GetAllModules(this, module_count_ptr, modules_ptr); - } - - jvmtiError GetNamedModule(jobject class_loader, - const char* package_name, - jobject* module_ptr) { - return functions->GetNamedModule(this, class_loader, package_name, module_ptr); - } - - jvmtiError AddModuleReads(jobject module, - jobject to_module) { - return functions->AddModuleReads(this, module, to_module); - } - - jvmtiError AddModuleExports(jobject module, - const char* pkg_name, - jobject to_module) { - return functions->AddModuleExports(this, module, pkg_name, to_module); - } - - jvmtiError AddModuleOpens(jobject module, - const char* pkg_name, - jobject to_module) { - return functions->AddModuleOpens(this, module, pkg_name, to_module); - } - - jvmtiError AddModuleUses(jobject module, - jclass service) { - return functions->AddModuleUses(this, module, service); - } - - jvmtiError AddModuleProvides(jobject module, - jclass service, - jclass impl_class) { - return functions->AddModuleProvides(this, module, service, impl_class); - } - - jvmtiError IsModifiableModule(jobject module, - jboolean* is_modifiable_module_ptr) { - return functions->IsModifiableModule(this, module, is_modifiable_module_ptr); - } - - jvmtiError GetLoadedClasses(jint* class_count_ptr, - jclass** classes_ptr) { - return functions->GetLoadedClasses(this, class_count_ptr, classes_ptr); - } - - jvmtiError GetClassLoaderClasses(jobject initiating_loader, - jint* class_count_ptr, - jclass** classes_ptr) { - return functions->GetClassLoaderClasses(this, initiating_loader, class_count_ptr, classes_ptr); - } - - jvmtiError GetClassSignature(jclass klass, - char** signature_ptr, - char** generic_ptr) { - return functions->GetClassSignature(this, klass, signature_ptr, generic_ptr); - } - - jvmtiError GetClassStatus(jclass klass, - jint* status_ptr) { - return functions->GetClassStatus(this, klass, status_ptr); - } - - jvmtiError GetSourceFileName(jclass klass, - char** source_name_ptr) { - return functions->GetSourceFileName(this, klass, source_name_ptr); - } - - jvmtiError GetClassModifiers(jclass klass, - jint* modifiers_ptr) { - return functions->GetClassModifiers(this, klass, modifiers_ptr); - } - - jvmtiError GetClassMethods(jclass klass, - jint* method_count_ptr, - jmethodID** methods_ptr) { - return functions->GetClassMethods(this, klass, method_count_ptr, methods_ptr); - } - - jvmtiError GetClassFields(jclass klass, - jint* field_count_ptr, - jfieldID** fields_ptr) { - return functions->GetClassFields(this, klass, field_count_ptr, fields_ptr); - } - - jvmtiError GetImplementedInterfaces(jclass klass, - jint* interface_count_ptr, - jclass** interfaces_ptr) { - return functions->GetImplementedInterfaces(this, klass, interface_count_ptr, interfaces_ptr); - } - - jvmtiError GetClassVersionNumbers(jclass klass, - jint* minor_version_ptr, - jint* major_version_ptr) { - return functions->GetClassVersionNumbers(this, klass, minor_version_ptr, major_version_ptr); - } - - jvmtiError GetConstantPool(jclass klass, - jint* constant_pool_count_ptr, - jint* constant_pool_byte_count_ptr, - unsigned char** constant_pool_bytes_ptr) { - return functions->GetConstantPool(this, klass, constant_pool_count_ptr, constant_pool_byte_count_ptr, constant_pool_bytes_ptr); - } - - jvmtiError IsInterface(jclass klass, - jboolean* is_interface_ptr) { - return functions->IsInterface(this, klass, is_interface_ptr); - } - - jvmtiError IsArrayClass(jclass klass, - jboolean* is_array_class_ptr) { - return functions->IsArrayClass(this, klass, is_array_class_ptr); - } - - jvmtiError IsModifiableClass(jclass klass, - jboolean* is_modifiable_class_ptr) { - return functions->IsModifiableClass(this, klass, is_modifiable_class_ptr); - } - - jvmtiError GetClassLoader(jclass klass, - jobject* classloader_ptr) { - return functions->GetClassLoader(this, klass, classloader_ptr); - } - - jvmtiError GetSourceDebugExtension(jclass klass, - char** source_debug_extension_ptr) { - return functions->GetSourceDebugExtension(this, klass, source_debug_extension_ptr); - } - - jvmtiError RetransformClasses(jint class_count, - const jclass* classes) { - return functions->RetransformClasses(this, class_count, classes); - } - - jvmtiError RedefineClasses(jint class_count, - const jvmtiClassDefinition* class_definitions) { - return functions->RedefineClasses(this, class_count, class_definitions); - } - - jvmtiError GetObjectSize(jobject object, - jlong* size_ptr) { - return functions->GetObjectSize(this, object, size_ptr); - } - - jvmtiError GetObjectHashCode(jobject object, - jint* hash_code_ptr) { - return functions->GetObjectHashCode(this, object, hash_code_ptr); - } - - jvmtiError GetObjectMonitorUsage(jobject object, - jvmtiMonitorUsage* info_ptr) { - return functions->GetObjectMonitorUsage(this, object, info_ptr); - } - - jvmtiError GetFieldName(jclass klass, - jfieldID field, - char** name_ptr, - char** signature_ptr, - char** generic_ptr) { - return functions->GetFieldName(this, klass, field, name_ptr, signature_ptr, generic_ptr); - } - - jvmtiError GetFieldDeclaringClass(jclass klass, - jfieldID field, - jclass* declaring_class_ptr) { - return functions->GetFieldDeclaringClass(this, klass, field, declaring_class_ptr); - } - - jvmtiError GetFieldModifiers(jclass klass, - jfieldID field, - jint* modifiers_ptr) { - return functions->GetFieldModifiers(this, klass, field, modifiers_ptr); - } - - jvmtiError IsFieldSynthetic(jclass klass, - jfieldID field, - jboolean* is_synthetic_ptr) { - return functions->IsFieldSynthetic(this, klass, field, is_synthetic_ptr); - } - - jvmtiError GetMethodName(jmethodID method, - char** name_ptr, - char** signature_ptr, - char** generic_ptr) { - return functions->GetMethodName(this, method, name_ptr, signature_ptr, generic_ptr); - } - - jvmtiError GetMethodDeclaringClass(jmethodID method, - jclass* declaring_class_ptr) { - return functions->GetMethodDeclaringClass(this, method, declaring_class_ptr); - } - - jvmtiError GetMethodModifiers(jmethodID method, - jint* modifiers_ptr) { - return functions->GetMethodModifiers(this, method, modifiers_ptr); - } - - jvmtiError GetMaxLocals(jmethodID method, - jint* max_ptr) { - return functions->GetMaxLocals(this, method, max_ptr); - } - - jvmtiError GetArgumentsSize(jmethodID method, - jint* size_ptr) { - return functions->GetArgumentsSize(this, method, size_ptr); - } - - jvmtiError GetLineNumberTable(jmethodID method, - jint* entry_count_ptr, - jvmtiLineNumberEntry** table_ptr) { - return functions->GetLineNumberTable(this, method, entry_count_ptr, table_ptr); - } - - jvmtiError GetMethodLocation(jmethodID method, - jlocation* start_location_ptr, - jlocation* end_location_ptr) { - return functions->GetMethodLocation(this, method, start_location_ptr, end_location_ptr); - } - - jvmtiError GetLocalVariableTable(jmethodID method, - jint* entry_count_ptr, - jvmtiLocalVariableEntry** table_ptr) { - return functions->GetLocalVariableTable(this, method, entry_count_ptr, table_ptr); - } - - jvmtiError GetBytecodes(jmethodID method, - jint* bytecode_count_ptr, - unsigned char** bytecodes_ptr) { - return functions->GetBytecodes(this, method, bytecode_count_ptr, bytecodes_ptr); - } - - jvmtiError IsMethodNative(jmethodID method, - jboolean* is_native_ptr) { - return functions->IsMethodNative(this, method, is_native_ptr); - } - - jvmtiError IsMethodSynthetic(jmethodID method, - jboolean* is_synthetic_ptr) { - return functions->IsMethodSynthetic(this, method, is_synthetic_ptr); - } - - jvmtiError IsMethodObsolete(jmethodID method, - jboolean* is_obsolete_ptr) { - return functions->IsMethodObsolete(this, method, is_obsolete_ptr); - } - - jvmtiError SetNativeMethodPrefix(const char* prefix) { - return functions->SetNativeMethodPrefix(this, prefix); - } - - jvmtiError SetNativeMethodPrefixes(jint prefix_count, - char** prefixes) { - return functions->SetNativeMethodPrefixes(this, prefix_count, prefixes); - } - - jvmtiError CreateRawMonitor(const char* name, - jrawMonitorID* monitor_ptr) { - return functions->CreateRawMonitor(this, name, monitor_ptr); - } - - jvmtiError DestroyRawMonitor(jrawMonitorID monitor) { - return functions->DestroyRawMonitor(this, monitor); - } - - jvmtiError RawMonitorEnter(jrawMonitorID monitor) { - return functions->RawMonitorEnter(this, monitor); - } - - jvmtiError RawMonitorExit(jrawMonitorID monitor) { - return functions->RawMonitorExit(this, monitor); - } - - jvmtiError RawMonitorWait(jrawMonitorID monitor, - jlong millis) { - return functions->RawMonitorWait(this, monitor, millis); - } - - jvmtiError RawMonitorNotify(jrawMonitorID monitor) { - return functions->RawMonitorNotify(this, monitor); - } - - jvmtiError RawMonitorNotifyAll(jrawMonitorID monitor) { - return functions->RawMonitorNotifyAll(this, monitor); - } - - jvmtiError SetJNIFunctionTable(const jniNativeInterface* function_table) { - return functions->SetJNIFunctionTable(this, function_table); - } - - jvmtiError GetJNIFunctionTable(jniNativeInterface** function_table) { - return functions->GetJNIFunctionTable(this, function_table); - } - - jvmtiError SetEventCallbacks(const jvmtiEventCallbacks* callbacks, - jint size_of_callbacks) { - return functions->SetEventCallbacks(this, callbacks, size_of_callbacks); - } - - jvmtiError SetEventNotificationMode(jvmtiEventMode mode, - jvmtiEvent event_type, - jthread event_thread, - ...) { - return functions->SetEventNotificationMode(this, mode, event_type, event_thread); - } - - jvmtiError GenerateEvents(jvmtiEvent event_type) { - return functions->GenerateEvents(this, event_type); - } - - jvmtiError GetExtensionFunctions(jint* extension_count_ptr, - jvmtiExtensionFunctionInfo** extensions) { - return functions->GetExtensionFunctions(this, extension_count_ptr, extensions); - } - - jvmtiError GetExtensionEvents(jint* extension_count_ptr, - jvmtiExtensionEventInfo** extensions) { - return functions->GetExtensionEvents(this, extension_count_ptr, extensions); - } - - jvmtiError SetExtensionEventCallback(jint extension_event_index, - jvmtiExtensionEvent callback) { - return functions->SetExtensionEventCallback(this, extension_event_index, callback); - } - - jvmtiError GetPotentialCapabilities(jvmtiCapabilities* capabilities_ptr) { - return functions->GetPotentialCapabilities(this, capabilities_ptr); - } - - jvmtiError AddCapabilities(const jvmtiCapabilities* capabilities_ptr) { - return functions->AddCapabilities(this, capabilities_ptr); - } - - jvmtiError RelinquishCapabilities(const jvmtiCapabilities* capabilities_ptr) { - return functions->RelinquishCapabilities(this, capabilities_ptr); - } - - jvmtiError GetCapabilities(jvmtiCapabilities* capabilities_ptr) { - return functions->GetCapabilities(this, capabilities_ptr); - } - - jvmtiError GetCurrentThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) { - return functions->GetCurrentThreadCpuTimerInfo(this, info_ptr); - } - - jvmtiError GetCurrentThreadCpuTime(jlong* nanos_ptr) { - return functions->GetCurrentThreadCpuTime(this, nanos_ptr); - } - - jvmtiError GetThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) { - return functions->GetThreadCpuTimerInfo(this, info_ptr); - } - - jvmtiError GetThreadCpuTime(jthread thread, - jlong* nanos_ptr) { - return functions->GetThreadCpuTime(this, thread, nanos_ptr); - } - - jvmtiError GetTimerInfo(jvmtiTimerInfo* info_ptr) { - return functions->GetTimerInfo(this, info_ptr); - } - - jvmtiError GetTime(jlong* nanos_ptr) { - return functions->GetTime(this, nanos_ptr); - } - - jvmtiError GetAvailableProcessors(jint* processor_count_ptr) { - return functions->GetAvailableProcessors(this, processor_count_ptr); - } - - jvmtiError AddToBootstrapClassLoaderSearch(const char* segment) { - return functions->AddToBootstrapClassLoaderSearch(this, segment); - } - - jvmtiError AddToSystemClassLoaderSearch(const char* segment) { - return functions->AddToSystemClassLoaderSearch(this, segment); - } - - jvmtiError GetSystemProperties(jint* count_ptr, - char*** property_ptr) { - return functions->GetSystemProperties(this, count_ptr, property_ptr); - } - - jvmtiError GetSystemProperty(const char* property, - char** value_ptr) { - return functions->GetSystemProperty(this, property, value_ptr); - } - - jvmtiError SetSystemProperty(const char* property, - const char* value_ptr) { - return functions->SetSystemProperty(this, property, value_ptr); - } - - jvmtiError GetPhase(jvmtiPhase* phase_ptr) { - return functions->GetPhase(this, phase_ptr); - } - - jvmtiError DisposeEnvironment() { - return functions->DisposeEnvironment(this); - } - - jvmtiError SetEnvironmentLocalStorage(const void* data) { - return functions->SetEnvironmentLocalStorage(this, data); - } - - jvmtiError GetEnvironmentLocalStorage(void** data_ptr) { - return functions->GetEnvironmentLocalStorage(this, data_ptr); - } - - jvmtiError GetVersionNumber(jint* version_ptr) { - return functions->GetVersionNumber(this, version_ptr); - } - - jvmtiError GetErrorName(jvmtiError error, - char** name_ptr) { - return functions->GetErrorName(this, error, name_ptr); - } - - jvmtiError SetVerboseFlag(jvmtiVerboseFlag flag, - jboolean value) { - return functions->SetVerboseFlag(this, flag, value); - } - - jvmtiError GetJLocationFormat(jvmtiJlocationFormat* format_ptr) { - return functions->GetJLocationFormat(this, format_ptr); - } - - jvmtiError SetHeapSamplingInterval(jint sampling_interval) { - return functions->SetHeapSamplingInterval(this, sampling_interval); - } - -#endif /* __cplusplus */ -}; - - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* __cplusplus */ - -#endif /* !_JAVA_JVMTI_H_ */ diff --git a/arthas-vmtool/src/main/native/head/jvmticmlr.h b/arthas-vmtool/src/main/native/head/jvmticmlr.h deleted file mode 100755 index c2106d3a..00000000 --- a/arthas-vmtool/src/main/native/head/jvmticmlr.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * This header file defines the data structures sent by the VM - * through the JVMTI CompiledMethodLoad callback function via the - * "void * compile_info" parameter. The memory pointed to by the - * compile_info parameter may not be referenced after returning from - * the CompiledMethodLoad callback. These are VM implementation - * specific data structures that may evolve in future releases. A - * JVMTI agent should interpret a non-NULL compile_info as a pointer - * to a region of memory containing a list of records. In a typical - * usage scenario, a JVMTI agent would cast each record to a - * jvmtiCompiledMethodLoadRecordHeader, a struct that represents - * arbitrary information. This struct contains a kind field to indicate - * the kind of information being passed, and a pointer to the next - * record. If the kind field indicates inlining information, then the - * agent would cast the record to a jvmtiCompiledMethodLoadInlineRecord. - * This record contains an array of PCStackInfo structs, which indicate - * for every pc address what are the methods on the invocation stack. - * The "methods" and "bcis" fields in each PCStackInfo struct specify a - * 1-1 mapping between these inlined methods and their bytecode indices. - * This can be used to derive the proper source lines of the inlined - * methods. - */ - -#ifndef _JVMTI_CMLR_H_ -#define _JVMTI_CMLR_H_ - -enum { - JVMTI_CMLR_MAJOR_VERSION_1 = 0x00000001, - JVMTI_CMLR_MINOR_VERSION_0 = 0x00000000, - - JVMTI_CMLR_MAJOR_VERSION = 0x00000001, - JVMTI_CMLR_MINOR_VERSION = 0x00000000 - - /* - * This comment is for the "JDK import from HotSpot" sanity check: - * version: 1.0.0 - */ -}; - -typedef enum { - JVMTI_CMLR_DUMMY = 1, - JVMTI_CMLR_INLINE_INFO = 2 -} jvmtiCMLRKind; - -/* - * Record that represents arbitrary information passed through JVMTI - * CompiledMethodLoadEvent void pointer. - */ -typedef struct _jvmtiCompiledMethodLoadRecordHeader { - jvmtiCMLRKind kind; /* id for the kind of info passed in the record */ - jint majorinfoversion; /* major and minor info version values. Init'ed */ - jint minorinfoversion; /* to current version value in jvmtiExport.cpp. */ - - struct _jvmtiCompiledMethodLoadRecordHeader* next; -} jvmtiCompiledMethodLoadRecordHeader; - -/* - * Record that gives information about the methods on the compile-time - * stack at a specific pc address of a compiled method. Each element in - * the methods array maps to same element in the bcis array. - */ -typedef struct _PCStackInfo { - void* pc; /* the pc address for this compiled method */ - jint numstackframes; /* number of methods on the stack */ - jmethodID* methods; /* array of numstackframes method ids */ - jint* bcis; /* array of numstackframes bytecode indices */ -} PCStackInfo; - -/* - * Record that contains inlining information for each pc address of - * an nmethod. - */ -typedef struct _jvmtiCompiledMethodLoadInlineRecord { - jvmtiCompiledMethodLoadRecordHeader header; /* common header for casting */ - jint numpcs; /* number of pc descriptors in this nmethod */ - PCStackInfo* pcinfo; /* array of numpcs pc descriptors */ -} jvmtiCompiledMethodLoadInlineRecord; - -/* - * Dummy record used to test that we can pass records with different - * information through the void pointer provided that they can be cast - * to a jvmtiCompiledMethodLoadRecordHeader. - */ - -typedef struct _jvmtiCompiledMethodLoadDummyRecord { - jvmtiCompiledMethodLoadRecordHeader header; /* common header for casting */ - char message[50]; -} jvmtiCompiledMethodLoadDummyRecord; - -#endif diff --git a/arthas-vmtool/src/main/native/head/linux/jawt_md.h b/arthas-vmtool/src/main/native/head/linux/jawt_md.h deleted file mode 100644 index 2ba3a8e8..00000000 --- a/arthas-vmtool/src/main/native/head/linux/jawt_md.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#ifndef _JAVASOFT_JAWT_MD_H_ -#define _JAVASOFT_JAWT_MD_H_ - -#include -#include -#include "jawt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * X11-specific declarations for AWT native interface. - * See notes in jawt.h for an example of use. - */ -typedef struct jawt_X11DrawingSurfaceInfo { - Drawable drawable; - Display* display; - VisualID visualID; - Colormap colormapID; - int depth; - /* - * Since 1.4 - * Returns a pixel value from a set of RGB values. - * This is useful for paletted color (256 color) modes. - */ - int (JNICALL *GetAWTColor)(JAWT_DrawingSurface* ds, - int r, int g, int b); -} JAWT_X11DrawingSurfaceInfo; - -#ifdef __cplusplus -} -#endif - -#endif /* !_JAVASOFT_JAWT_MD_H_ */ diff --git a/arthas-vmtool/src/main/native/head/linux/jni_md.h b/arthas-vmtool/src/main/native/head/linux/jni_md.h deleted file mode 100644 index 6e583da7..00000000 --- a/arthas-vmtool/src/main/native/head/linux/jni_md.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#ifndef _JAVASOFT_JNI_MD_H_ -#define _JAVASOFT_JNI_MD_H_ - -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif - -#ifndef JNIEXPORT - #if (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility) - #ifdef ARM - #define JNIEXPORT __attribute__((externally_visible,visibility("default"))) - #else - #define JNIEXPORT __attribute__((visibility("default"))) - #endif - #else - #define JNIEXPORT - #endif -#endif - -#if (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility) - #ifdef ARM - #define JNIIMPORT __attribute__((externally_visible,visibility("default"))) - #else - #define JNIIMPORT __attribute__((visibility("default"))) - #endif -#else - #define JNIIMPORT -#endif - -#define JNICALL - -typedef int jint; -#ifdef _LP64 -typedef long jlong; -#else -typedef long long jlong; -#endif - -typedef signed char jbyte; - -#endif /* !_JAVASOFT_JNI_MD_H_ */ diff --git a/arthas-vmtool/src/main/native/head/macos/jawt_md.h b/arthas-vmtool/src/main/native/head/macos/jawt_md.h deleted file mode 100644 index 94a13c9a..00000000 --- a/arthas-vmtool/src/main/native/head/macos/jawt_md.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#ifndef _JAVASOFT_JAWT_MD_H_ -#define _JAVASOFT_JAWT_MD_H_ - -#include "jawt.h" - -#ifdef __OBJC__ -#import -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * MacOS specific declarations for AWT native interface. - * See notes in jawt.h for an example of use. - */ - -/* - * When calling JAWT_GetAWT with a JAWT version less than 1.7, you must pass this - * flag or you will not be able to get a valid drawing surface and JAWT_GetAWT will - * return false. This is to maintain compatibility with applications that used the - * interface with Java 6 which had multiple rendering models. This flag is not necessary - * when JAWT version 1.7 or greater is used as this is the only supported rendering mode. - * - * Example: - * JAWT awt; - * awt.version = JAWT_VERSION_1_4 | JAWT_MACOSX_USE_CALAYER; - * jboolean success = JAWT_GetAWT(env, &awt); - */ -#define JAWT_MACOSX_USE_CALAYER 0x80000000 - -/* - * When the native Cocoa toolkit is in use, the pointer stored in - * JAWT_DrawingSurfaceInfo->platformInfo points to a NSObject that conforms to the - * JAWT_SurfaceLayers protocol. Setting the layer property of this object will cause the - * specified layer to be overlaid on the Components rectangle. If the window the - * Component belongs to has a CALayer attached to it, this layer will be accessible via - * the windowLayer property. - */ -#ifdef __OBJC__ -@protocol JAWT_SurfaceLayers -@property (readwrite, retain) CALayer *layer; -@property (readonly) CALayer *windowLayer; -@end -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* !_JAVASOFT_JAWT_MD_H_ */ diff --git a/arthas-vmtool/src/main/native/head/macos/jni_md.h b/arthas-vmtool/src/main/native/head/macos/jni_md.h deleted file mode 100644 index f0cf64eb..00000000 --- a/arthas-vmtool/src/main/native/head/macos/jni_md.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#ifndef _JAVASOFT_JNI_MD_H_ -#define _JAVASOFT_JNI_MD_H_ - -#define JNIEXPORT __attribute__((visibility("default"))) -#define JNIIMPORT __attribute__((visibility("default"))) -#define JNICALL - -typedef int jint; -#ifdef _LP64 /* 64-bit */ -typedef long jlong; -#else -typedef long long jlong; -#endif - -typedef signed char jbyte; - -#endif /* !_JAVASOFT_JNI_MD_H_ */ diff --git a/arthas-vmtool/src/main/native/head/windows/AccessBridgeCallbacks.h b/arthas-vmtool/src/main/native/head/windows/AccessBridgeCallbacks.h deleted file mode 100755 index 3f907d5f..00000000 --- a/arthas-vmtool/src/main/native/head/windows/AccessBridgeCallbacks.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * Header file defining callback typedefs for Windows routines - * which are called from Java (responding to events, etc.). - */ - -#ifndef __AccessBridgeCallbacks_H__ -#define __AccessBridgeCallbacks_H__ - -#include -#include "AccessBridgePackages.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void (*AccessBridge_PropertyChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, - wchar_t *property, wchar_t *oldValue, wchar_t *newValue); - -typedef void (*AccessBridge_JavaShutdownFP) (long vmID); -typedef void (*AccessBridge_JavaShutdownFP) (long vmID); - -typedef void (*AccessBridge_FocusGainedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_FocusLostFP) (long vmID, JOBJECT64 event, JOBJECT64 source); - -typedef void (*AccessBridge_CaretUpdateFP) (long vmID, JOBJECT64 event, JOBJECT64 source); - -typedef void (*AccessBridge_MouseClickedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_MouseEnteredFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_MouseExitedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_MousePressedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_MouseReleasedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); - -typedef void (*AccessBridge_MenuCanceledFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_MenuDeselectedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_MenuSelectedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_PopupMenuCanceledFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_PopupMenuWillBecomeInvisibleFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_PopupMenuWillBecomeVisibleFP) (long vmID, JOBJECT64 event, JOBJECT64 source); - -typedef void (*AccessBridge_PropertyNameChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, - wchar_t *oldName, wchar_t *newName); -typedef void (*AccessBridge_PropertyDescriptionChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, - wchar_t *oldDescription, wchar_t *newDescription); -typedef void (*AccessBridge_PropertyStateChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, - wchar_t *oldState, wchar_t *newState); -typedef void (*AccessBridge_PropertyValueChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, - wchar_t *oldValue, wchar_t *newValue); -typedef void (*AccessBridge_PropertySelectionChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_PropertyTextChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_PropertyCaretChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, - int oldPosition, int newPosition); -typedef void (*AccessBridge_PropertyVisibleDataChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source); -typedef void (*AccessBridge_PropertyChildChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, - JOBJECT64 oldChild, JOBJECT64 newChild); -typedef void (*AccessBridge_PropertyActiveDescendentChangeFP) (long vmID, JOBJECT64 event, - JOBJECT64 source, - JOBJECT64 oldActiveDescendent, - JOBJECT64 newActiveDescendent); - -typedef void (*AccessBridge_PropertyTableModelChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 src, - wchar_t *oldValue, wchar_t *newValue); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/arthas-vmtool/src/main/native/head/windows/AccessBridgeCalls.c b/arthas-vmtool/src/main/native/head/windows/AccessBridgeCalls.c deleted file mode 100755 index 105f342a..00000000 --- a/arthas-vmtool/src/main/native/head/windows/AccessBridgeCalls.c +++ /dev/null @@ -1,1130 +0,0 @@ -/* - * - * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * - Neither the name of Oracle nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Wrapper functions around calls to the AccessBridge DLL - */ - - -#include -#include - - -//#define ACCESSBRIDGE_32 -//#define ACCESSBRIDGE_64 - -#include "AccessBridgeCalls.h" - -#ifdef __cplusplus -extern "C" { -#endif - - HINSTANCE theAccessBridgeInstance; - AccessBridgeFPs theAccessBridge; - - BOOL theAccessBridgeInitializedFlag = FALSE; - -#define LOAD_FP(result, type, name) \ - if ((theAccessBridge.result = \ - (type) GetProcAddress(theAccessBridgeInstance, name)) == (type) 0) { \ - return FALSE; \ - } - - BOOL initializeAccessBridge() { - -#ifdef ACCESSBRIDGE_ARCH_32 // For 32 bit AT interfacing with Java on 64 bit OS - theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE-32"); -#else -#ifdef ACCESSBRIDGE_ARCH_64 // For 64 bit AT interfacing with Java on 64 bit OS - theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE-64"); -#else // For 32 bit AT interfacing with Java on 32 bit OS - theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE"); -#endif -#endif - if (theAccessBridgeInstance != 0) { - LOAD_FP(Windows_run, Windows_runFP, "Windows_run"); - - LOAD_FP(SetJavaShutdown, SetJavaShutdownFP, "setJavaShutdownFP"); - LOAD_FP(SetFocusGained, SetFocusGainedFP, "setFocusGainedFP"); - LOAD_FP(SetFocusLost, SetFocusLostFP, "setFocusLostFP"); - - LOAD_FP(SetCaretUpdate, SetCaretUpdateFP, "setCaretUpdateFP"); - - LOAD_FP(SetMouseClicked, SetMouseClickedFP, "setMouseClickedFP"); - LOAD_FP(SetMouseEntered, SetMouseEnteredFP, "setMouseEnteredFP"); - LOAD_FP(SetMouseExited, SetMouseExitedFP, "setMouseExitedFP"); - LOAD_FP(SetMousePressed, SetMousePressedFP, "setMousePressedFP"); - LOAD_FP(SetMouseReleased, SetMouseReleasedFP, "setMouseReleasedFP"); - - LOAD_FP(SetMenuCanceled, SetMenuCanceledFP, "setMenuCanceledFP"); - LOAD_FP(SetMenuDeselected, SetMenuDeselectedFP, "setMenuDeselectedFP"); - LOAD_FP(SetMenuSelected, SetMenuSelectedFP, "setMenuSelectedFP"); - LOAD_FP(SetPopupMenuCanceled, SetPopupMenuCanceledFP, "setPopupMenuCanceledFP"); - LOAD_FP(SetPopupMenuWillBecomeInvisible, SetPopupMenuWillBecomeInvisibleFP, "setPopupMenuWillBecomeInvisibleFP"); - LOAD_FP(SetPopupMenuWillBecomeVisible, SetPopupMenuWillBecomeVisibleFP, "setPopupMenuWillBecomeVisibleFP"); - - LOAD_FP(SetPropertyNameChange, SetPropertyNameChangeFP, "setPropertyNameChangeFP"); - LOAD_FP(SetPropertyDescriptionChange, SetPropertyDescriptionChangeFP, "setPropertyDescriptionChangeFP"); - LOAD_FP(SetPropertyStateChange, SetPropertyStateChangeFP, "setPropertyStateChangeFP"); - LOAD_FP(SetPropertyValueChange, SetPropertyValueChangeFP, "setPropertyValueChangeFP"); - LOAD_FP(SetPropertySelectionChange, SetPropertySelectionChangeFP, "setPropertySelectionChangeFP"); - LOAD_FP(SetPropertyTextChange, SetPropertyTextChangeFP, "setPropertyTextChangeFP"); - LOAD_FP(SetPropertyCaretChange, SetPropertyCaretChangeFP, "setPropertyCaretChangeFP"); - LOAD_FP(SetPropertyVisibleDataChange, SetPropertyVisibleDataChangeFP, "setPropertyVisibleDataChangeFP"); - LOAD_FP(SetPropertyChildChange, SetPropertyChildChangeFP, "setPropertyChildChangeFP"); - LOAD_FP(SetPropertyActiveDescendentChange, SetPropertyActiveDescendentChangeFP, "setPropertyActiveDescendentChangeFP"); - - LOAD_FP(SetPropertyTableModelChange, SetPropertyTableModelChangeFP, "setPropertyTableModelChangeFP"); - - LOAD_FP(ReleaseJavaObject, ReleaseJavaObjectFP, "releaseJavaObject"); - LOAD_FP(GetVersionInfo, GetVersionInfoFP, "getVersionInfo"); - - LOAD_FP(IsJavaWindow, IsJavaWindowFP, "isJavaWindow"); - LOAD_FP(IsSameObject, IsSameObjectFP, "isSameObject"); - LOAD_FP(GetAccessibleContextFromHWND, GetAccessibleContextFromHWNDFP, "getAccessibleContextFromHWND"); - LOAD_FP(getHWNDFromAccessibleContext, getHWNDFromAccessibleContextFP, "getHWNDFromAccessibleContext"); - - LOAD_FP(GetAccessibleContextAt, GetAccessibleContextAtFP, "getAccessibleContextAt"); - LOAD_FP(GetAccessibleContextWithFocus, GetAccessibleContextWithFocusFP, "getAccessibleContextWithFocus"); - LOAD_FP(GetAccessibleContextInfo, GetAccessibleContextInfoFP, "getAccessibleContextInfo"); - LOAD_FP(GetAccessibleChildFromContext, GetAccessibleChildFromContextFP, "getAccessibleChildFromContext"); - LOAD_FP(GetAccessibleParentFromContext, GetAccessibleParentFromContextFP, "getAccessibleParentFromContext"); - - /* begin AccessibleTable */ - LOAD_FP(getAccessibleTableInfo, getAccessibleTableInfoFP, "getAccessibleTableInfo"); - LOAD_FP(getAccessibleTableCellInfo, getAccessibleTableCellInfoFP, "getAccessibleTableCellInfo"); - - LOAD_FP(getAccessibleTableRowHeader, getAccessibleTableRowHeaderFP, "getAccessibleTableRowHeader"); - LOAD_FP(getAccessibleTableColumnHeader, getAccessibleTableColumnHeaderFP, "getAccessibleTableColumnHeader"); - - LOAD_FP(getAccessibleTableRowDescription, getAccessibleTableRowDescriptionFP, "getAccessibleTableRowDescription"); - LOAD_FP(getAccessibleTableColumnDescription, getAccessibleTableColumnDescriptionFP, "getAccessibleTableColumnDescription"); - - LOAD_FP(getAccessibleTableRowSelectionCount, getAccessibleTableRowSelectionCountFP, - "getAccessibleTableRowSelectionCount"); - LOAD_FP(isAccessibleTableRowSelected, isAccessibleTableRowSelectedFP, - "isAccessibleTableRowSelected"); - LOAD_FP(getAccessibleTableRowSelections, getAccessibleTableRowSelectionsFP, - "getAccessibleTableRowSelections"); - - LOAD_FP(getAccessibleTableColumnSelectionCount, getAccessibleTableColumnSelectionCountFP, - "getAccessibleTableColumnSelectionCount"); - LOAD_FP(isAccessibleTableColumnSelected, isAccessibleTableColumnSelectedFP, - "isAccessibleTableColumnSelected"); - LOAD_FP(getAccessibleTableColumnSelections, getAccessibleTableColumnSelectionsFP, - "getAccessibleTableColumnSelections"); - - LOAD_FP(getAccessibleTableRow, getAccessibleTableRowFP, - "getAccessibleTableRow"); - LOAD_FP(getAccessibleTableColumn, getAccessibleTableColumnFP, - "getAccessibleTableColumn"); - LOAD_FP(getAccessibleTableIndex, getAccessibleTableIndexFP, - "getAccessibleTableIndex"); - - /* end AccessibleTable */ - - /* AccessibleRelationSet */ - LOAD_FP(getAccessibleRelationSet, getAccessibleRelationSetFP, "getAccessibleRelationSet"); - - /* AccessibleHypertext */ - LOAD_FP(getAccessibleHypertext, getAccessibleHypertextFP, "getAccessibleHypertext"); - LOAD_FP(activateAccessibleHyperlink, activateAccessibleHyperlinkFP, "activateAccessibleHyperlink"); - LOAD_FP(getAccessibleHyperlinkCount, getAccessibleHyperlinkCountFP, "getAccessibleHyperlinkCount"); - LOAD_FP(getAccessibleHypertextExt, getAccessibleHypertextExtFP, "getAccessibleHypertextExt"); - LOAD_FP(getAccessibleHypertextLinkIndex, getAccessibleHypertextLinkIndexFP, "getAccessibleHypertextLinkIndex"); - LOAD_FP(getAccessibleHyperlink, getAccessibleHyperlinkFP, "getAccessibleHyperlink"); - - /* Accessible KeyBinding, Icon and Action */ - LOAD_FP(getAccessibleKeyBindings, getAccessibleKeyBindingsFP, "getAccessibleKeyBindings"); - LOAD_FP(getAccessibleIcons, getAccessibleIconsFP, "getAccessibleIcons"); - LOAD_FP(getAccessibleActions, getAccessibleActionsFP, "getAccessibleActions"); - LOAD_FP(doAccessibleActions, doAccessibleActionsFP, "doAccessibleActions"); - - /* AccessibleText */ - LOAD_FP(GetAccessibleTextInfo, GetAccessibleTextInfoFP, "getAccessibleTextInfo"); - LOAD_FP(GetAccessibleTextItems, GetAccessibleTextItemsFP, "getAccessibleTextItems"); - LOAD_FP(GetAccessibleTextSelectionInfo, GetAccessibleTextSelectionInfoFP, "getAccessibleTextSelectionInfo"); - LOAD_FP(GetAccessibleTextAttributes, GetAccessibleTextAttributesFP, "getAccessibleTextAttributes"); - LOAD_FP(GetAccessibleTextRect, GetAccessibleTextRectFP, "getAccessibleTextRect"); - LOAD_FP(GetAccessibleTextLineBounds, GetAccessibleTextLineBoundsFP, "getAccessibleTextLineBounds"); - LOAD_FP(GetAccessibleTextRange, GetAccessibleTextRangeFP, "getAccessibleTextRange"); - - LOAD_FP(GetCurrentAccessibleValueFromContext, GetCurrentAccessibleValueFromContextFP, "getCurrentAccessibleValueFromContext"); - LOAD_FP(GetMaximumAccessibleValueFromContext, GetMaximumAccessibleValueFromContextFP, "getMaximumAccessibleValueFromContext"); - LOAD_FP(GetMinimumAccessibleValueFromContext, GetMinimumAccessibleValueFromContextFP, "getMinimumAccessibleValueFromContext"); - - LOAD_FP(AddAccessibleSelectionFromContext, AddAccessibleSelectionFromContextFP, "addAccessibleSelectionFromContext"); - LOAD_FP(ClearAccessibleSelectionFromContext, ClearAccessibleSelectionFromContextFP, "clearAccessibleSelectionFromContext"); - LOAD_FP(GetAccessibleSelectionFromContext, GetAccessibleSelectionFromContextFP, "getAccessibleSelectionFromContext"); - LOAD_FP(GetAccessibleSelectionCountFromContext, GetAccessibleSelectionCountFromContextFP, "getAccessibleSelectionCountFromContext"); - LOAD_FP(IsAccessibleChildSelectedFromContext, IsAccessibleChildSelectedFromContextFP, "isAccessibleChildSelectedFromContext"); - LOAD_FP(RemoveAccessibleSelectionFromContext, RemoveAccessibleSelectionFromContextFP, "removeAccessibleSelectionFromContext"); - LOAD_FP(SelectAllAccessibleSelectionFromContext, SelectAllAccessibleSelectionFromContextFP, "selectAllAccessibleSelectionFromContext"); - - LOAD_FP(setTextContents, setTextContentsFP, "setTextContents"); - LOAD_FP(getParentWithRole, getParentWithRoleFP, "getParentWithRole"); - LOAD_FP(getTopLevelObject, getTopLevelObjectFP, "getTopLevelObject"); - LOAD_FP(getParentWithRoleElseRoot, getParentWithRoleElseRootFP, "getParentWithRoleElseRoot"); - LOAD_FP(getObjectDepth, getObjectDepthFP, "getObjectDepth"); - LOAD_FP(getActiveDescendent, getActiveDescendentFP, "getActiveDescendent"); - - // additional methods for Teton - LOAD_FP(getVirtualAccessibleName, getVirtualAccessibleNameFP, "getVirtualAccessibleName"); - LOAD_FP(requestFocus, requestFocusFP, "requestFocus"); - LOAD_FP(selectTextRange, selectTextRangeFP, "selectTextRange"); - LOAD_FP(getTextAttributesInRange, getTextAttributesInRangeFP, "getTextAttributesInRange"); - LOAD_FP(getVisibleChildrenCount, getVisibleChildrenCountFP, "getVisibleChildrenCount"); - LOAD_FP(getVisibleChildren, getVisibleChildrenFP, "getVisibleChildren"); - LOAD_FP(setCaretPosition, setCaretPositionFP, "setCaretPosition"); - LOAD_FP(getCaretLocation, getCaretLocationFP, "getCaretLocation"); - - LOAD_FP(getEventsWaiting, getEventsWaitingFP, "getEventsWaiting"); - - theAccessBridge.Windows_run(); - - theAccessBridgeInitializedFlag = TRUE; - return TRUE; - } else { - return FALSE; - } - } - - - BOOL shutdownAccessBridge() { - BOOL result; - DWORD error; - theAccessBridgeInitializedFlag = FALSE; - if (theAccessBridgeInstance != (HANDLE) 0) { - result = FreeLibrary(theAccessBridgeInstance); - if (result != TRUE) { - error = GetLastError(); - } - return TRUE; - } - return FALSE; - } - - - void SetJavaShutdown(AccessBridge_JavaShutdownFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetJavaShutdown(fp); - } - } - - void SetFocusGained(AccessBridge_FocusGainedFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetFocusGained(fp); - } - } - - void SetFocusLost(AccessBridge_FocusLostFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetFocusLost(fp); - } - } - - - void SetCaretUpdate(AccessBridge_CaretUpdateFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetCaretUpdate(fp); - } - } - - - void SetMouseClicked(AccessBridge_MouseClickedFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetMouseClicked(fp); - } - } - - void SetMouseEntered(AccessBridge_MouseEnteredFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetMouseEntered(fp); - } - } - - void SetMouseExited(AccessBridge_MouseExitedFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetMouseExited(fp); - } - } - - void SetMousePressed(AccessBridge_MousePressedFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetMousePressed(fp); - } - } - - void SetMouseReleased(AccessBridge_MouseReleasedFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetMouseReleased(fp); - } - } - - - void SetMenuCanceled(AccessBridge_MenuCanceledFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetMenuCanceled(fp); - } - } - - void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetMenuDeselected(fp); - } - } - - void SetMenuSelected(AccessBridge_MenuSelectedFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetMenuSelected(fp); - } - } - - void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPopupMenuCanceled(fp); - } - } - - void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPopupMenuWillBecomeInvisible(fp); - } - } - - void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPopupMenuWillBecomeVisible(fp); - } - } - - - void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPropertyNameChange(fp); - } - } - - void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPropertyDescriptionChange(fp); - } - } - - void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPropertyStateChange(fp); - } - } - - void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPropertyValueChange(fp); - } - } - - void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPropertySelectionChange(fp); - } - } - - void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPropertyTextChange(fp); - } - } - - void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPropertyCaretChange(fp); - } - } - - void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPropertyVisibleDataChange(fp); - } - } - - void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPropertyChildChange(fp); - } - } - - void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPropertyActiveDescendentChange(fp); - } - } - - void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SetPropertyTableModelChange(fp); - } - } - - /** - * General routines - */ - void ReleaseJavaObject(long vmID, Java_Object object) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.ReleaseJavaObject(vmID, object); - } - } - - BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetVersionInfo(vmID, info); - } - return FALSE; - } - - - /** - * Window routines - */ - BOOL IsJavaWindow(HWND window) { - if (theAccessBridgeInitializedFlag == TRUE) { - BOOL ret ; - ret = theAccessBridge.IsJavaWindow(window); - return ret ; - - } - return FALSE; - } - - - /** - * Returns the virtual machine ID and AccessibleContext for a top-level window - */ - BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleContextFromHWND(target, vmID, ac); - } - return FALSE; - } - - /** - * Returns the HWND from the AccessibleContext of a top-level window. Returns 0 - * on error or if the AccessibleContext does not refer to a top-level window. - */ - HWND getHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getHWNDFromAccessibleContext(vmID, accesibleContext); - } - return (HWND)0; - } - - /** - * returns whether two objects are the same - */ - BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.IsSameObject(vmID, obj1, obj2); - } - return FALSE; - } - - /** - * Sets editable text contents. The AccessibleContext must implement AccessibleEditableText and - * be editable. The maximum text length is MAX_STRING_SIZE - 1. - * Returns whether successful - */ - BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text) { - - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.setTextContents(vmID, accessibleContext, text); - } - return FALSE; - } - - /** - * Returns the Accessible Context with the specified role that is the - * ancestor of a given object. The role is one of the role strings - * defined in AccessBridgePackages.h - * If there is no ancestor object that has the specified role, - * returns (AccessibleContext)0. - */ - AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, - const wchar_t *role) { - - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getParentWithRole(vmID, accessibleContext, role); - } - return (AccessibleContext)0; - } - - /** - * Returns the Accessible Context with the specified role that is the - * ancestor of a given object. The role is one of the role strings - * defined in AccessBridgePackages.h. If an object with the specified - * role does not exist, returns the top level object for the Java Window. - * Returns (AccessibleContext)0 on error. - */ - AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, - const wchar_t *role) { - - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getParentWithRoleElseRoot(vmID, accessibleContext, role); - } - return (AccessibleContext)0; - } - - /** - * Returns the Accessible Context for the top level object in - * a Java Window. This is same Accessible Context that is obtained - * from GetAccessibleContextFromHWND for that window. Returns - * (AccessibleContext)0 on error. - */ - AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext) { - - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getTopLevelObject(vmID, accessibleContext); - } - return (AccessibleContext)0; - } - - /** - * Returns how deep in the object hierarchy a given object is. - * The top most object in the object hierarchy has an object depth of 0. - * Returns -1 on error. - */ - int getObjectDepth (const long vmID, const AccessibleContext accessibleContext) { - - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getObjectDepth(vmID, accessibleContext); - } - return -1; - } - - /** - * Returns the Accessible Context of the current ActiveDescendent of an object. - * This method assumes the ActiveDescendent is the component that is currently - * selected in a container object. - * Returns (AccessibleContext)0 on error or if there is no selection. - */ - AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext) { - - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getActiveDescendent(vmID, accessibleContext); - } - return (AccessibleContext)0; - } - - - /** - * Accessible Context routines - */ - BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent, - jint x, jint y, AccessibleContext *ac) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleContextAt(vmID, acParent, x, y, ac); - } - return FALSE; - } - - BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleContextWithFocus(window, vmID, ac); - } - return FALSE; - } - - BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleContextInfo(vmID, ac, info); - } - return FALSE; - } - - AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleChildFromContext(vmID, ac, index); - } - return (AccessibleContext) 0; - } - - AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleParentFromContext(vmID, ac); - } - return (AccessibleContext) 0; - } - - /* begin AccessibleTable routines */ - - /* - * get information about an AccessibleTable - */ - BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableInfo(vmID, acParent, tableInfo); - } - return FALSE; - } - - /* - * get information about an AccessibleTable cell - */ - BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, - jint row, jint column, AccessibleTableCellInfo *tableCellInfo) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableCellInfo(vmID, accessibleTable, row, column, tableCellInfo); - } - return FALSE; - } - - /* - * get information about an AccessibleTable row header - */ - BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableRowHeader(vmID, acParent, tableInfo); - } - return FALSE; - } - - /* - * get information about an AccessibleTable column header - */ - BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { - - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableColumnHeader(vmID, acParent, tableInfo); - } - return FALSE; - } - - /* - * return a description of an AccessibleTable row header - */ - AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableRowDescription(vmID, acParent, row); - } - return (AccessibleContext)0; - } - - /* - * return a description of an AccessibleTable column header - */ - AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableColumnDescription(vmID, acParent, column); - } - return (AccessibleContext)0; - } - - /* - * return the number of rows selected in an AccessibleTable - */ - jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableRowSelectionCount(vmID, table); - } - return -1; - } - - /* - * return whether a row is selected in an AccessibleTable - */ - BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.isAccessibleTableRowSelected(vmID, table, row); - } - return FALSE; - } - - /* - * get an array of selected rows in an AccessibleTable - */ - BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableRowSelections(vmID, table, count, selections); - } - return FALSE; - } - - /* - * return the number of columns selected in an AccessibleTable - */ - jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableColumnSelectionCount(vmID, table); - } - return -1; - } - - /* - * return whether a column is selected in an AccessibleTable - */ - BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.isAccessibleTableColumnSelected(vmID, table, column); - } - return FALSE; - } - - /* - * get an array of columns selected in an AccessibleTable - */ - BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableColumnSelections(vmID, table, count, selections); - } - return FALSE; - } - - /* - * return the row number for a cell at a given index - */ - jint - getAccessibleTableRow(long vmID, AccessibleTable table, jint index) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableRow(vmID, table, index); - } - return -1; - } - - /* - * return the column number for a cell at a given index - */ - jint - getAccessibleTableColumn(long vmID, AccessibleTable table, jint index) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableColumn(vmID, table, index); - } - return -1; - } - - /* - * return the index of a cell at a given row and column - */ - jint - getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleTableIndex(vmID, table, row, column); - } - return -1; - } - - /* end AccessibleTable routines */ - - - /** - * Accessible Text routines - */ - BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleTextInfo(vmID, at, textInfo, x, y); - } - return FALSE; - } - - BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleTextItems(vmID, at, textItems, index); - } - return FALSE; - } - - BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleTextSelectionInfo(vmID, at, textSelection); - } - return FALSE; - } - - BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleTextAttributes(vmID, at, index, attributes); - } - return FALSE; - } - - BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleTextRect(vmID, at, rectInfo, index); - } - return FALSE; - } - - BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleTextLineBounds(vmID, at, index, startIndex, endIndex); - } - return FALSE; - } - - BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleTextRange(vmID, at, start, end, text, len); - } - return FALSE; - } - - /** - * AccessibleRelationSet routines - */ - BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext, - AccessibleRelationSetInfo *relationSetInfo) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleRelationSet(vmID, accessibleContext, relationSetInfo); - } - return FALSE; - } - - /** - * AccessibleHypertext routines - */ - - // Gets AccessibleHypertext for an AccessibleContext - BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext, - AccessibleHypertextInfo *hypertextInfo) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleHypertext(vmID, accessibleContext, hypertextInfo); - } - return FALSE; - } - - // Activates an AccessibleHyperlink for an AccessibleContext - BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext, - AccessibleHyperlink accessibleHyperlink) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.activateAccessibleHyperlink(vmID, accessibleContext, accessibleHyperlink); - } - return FALSE; - } - - /* - * Returns the number of hyperlinks in a component - * Maps to AccessibleHypertext.getLinkCount. - * Returns -1 on error. - */ - jint getAccessibleHyperlinkCount(const long vmID, - const AccessibleContext accessibleContext) { - - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleHyperlinkCount(vmID, accessibleContext); - } - return -1; - } - - /* - * This method is used to iterate through the hyperlinks in a component. It - * returns hypertext information for a component starting at hyperlink index - * nStartIndex. No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will - * be returned for each call to this method. - * returns FALSE on error. - */ - BOOL getAccessibleHypertextExt(const long vmID, - const AccessibleContext accessibleContext, - const jint nStartIndex, - /* OUT */ AccessibleHypertextInfo *hypertextInfo) { - - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleHypertextExt(vmID, - accessibleContext, - nStartIndex, - hypertextInfo); - } - return FALSE; - } - - /* - * Returns the index into an array of hyperlinks that is associated with - * a character index in document; - * Maps to AccessibleHypertext.getLinkIndex. - * Returns -1 on error. - */ - jint getAccessibleHypertextLinkIndex(const long vmID, - const AccessibleHypertext hypertext, - const jint nIndex) { - - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleHypertextLinkIndex(vmID, - hypertext, - nIndex); - } - return -1; - } - - /* - * Returns the nth hyperlink in a document. - * Maps to AccessibleHypertext.getLink. - * Returns -1 on error - */ - BOOL getAccessibleHyperlink(const long vmID, - const AccessibleHypertext hypertext, - const jint nIndex, - /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo) { - - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleHyperlink(vmID, - hypertext, - nIndex, - hyperlinkInfo); - } - return FALSE; - } - - - /* Accessible KeyBindings, Icons and Actions */ - BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext, - AccessibleKeyBindings *keyBindings) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleKeyBindings(vmID, accessibleContext, keyBindings); - } - return FALSE; - } - - BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext, - AccessibleIcons *icons) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleIcons(vmID, accessibleContext, icons); - } - return FALSE; - } - - BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext, - AccessibleActions *actions) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getAccessibleActions(vmID, accessibleContext, actions); - } - return FALSE; - } - - BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext, - AccessibleActionsToDo *actionsToDo, jint *failure) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.doAccessibleActions(vmID, accessibleContext, actionsToDo, failure); - } - return FALSE; - } - - /** - * Accessible Value routines - */ - BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetCurrentAccessibleValueFromContext(vmID, av, value, len); - } - return FALSE; - } - - BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetMaximumAccessibleValueFromContext(vmID, av, value, len); - } - return FALSE; - } - - BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetMinimumAccessibleValueFromContext(vmID, av, value, len); - } - return FALSE; - } - - - /** - * Accessible Selection routines - */ - void addAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.AddAccessibleSelectionFromContext(vmID, as, i); - } - } - - void clearAccessibleSelectionFromContext(long vmID, AccessibleSelection as) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.ClearAccessibleSelectionFromContext(vmID, as); - } - } - - JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleSelectionFromContext(vmID, as, i); - } - return (JOBJECT64) 0; - } - - int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.GetAccessibleSelectionCountFromContext(vmID, as); - } - return -1; - } - - BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.IsAccessibleChildSelectedFromContext(vmID, as, i); - } - return FALSE; - } - - void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.RemoveAccessibleSelectionFromContext(vmID, as, i); - } - } - - void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection as) { - if (theAccessBridgeInitializedFlag == TRUE) { - theAccessBridge.SelectAllAccessibleSelectionFromContext(vmID, as); - } - } - - /** - * Additional methods for Teton - */ - - /** - * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns - * whether successful. - * - * Bug ID 4916682 - Implement JAWS AccessibleName policy - */ - BOOL getVirtualAccessibleName(const long vmID, const AccessibleContext accessibleContext, - wchar_t *name, int len) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getVirtualAccessibleName(vmID, accessibleContext, name, len); - } - return FALSE; - } - - /** - * Request focus for a component. Returns whether successful; - * - * Bug ID 4944757 - requestFocus method needed - */ - BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.requestFocus(vmID, accessibleContext); - } - return FALSE; - } - - /** - * Selects text between two indices. Selection includes the text at the start index - * and the text at the end index. Returns whether successful; - * - * Bug ID 4944758 - selectTextRange method needed - */ - BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext, - const int startIndex, const int endIndex) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.selectTextRange(vmID, accessibleContext, startIndex, endIndex); - } - return FALSE; - } - - /** - * Get text attributes between two indices. The attribute list includes the text at the - * start index and the text at the end index. Returns whether successful; - * - * Bug ID 4944761 - getTextAttributes between two indices method needed - */ - BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext, - const int startIndex, const int endIndex, - AccessibleTextAttributesInfo *attributes, short *len) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getTextAttributesInRange(vmID, accessibleContext, startIndex, - endIndex, attributes, len); - } - return FALSE; - } - - /** - * Returns the number of visible children of a component. Returns -1 on error. - * - * Bug ID 4944762- getVisibleChildren for list-like components needed - */ - int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getVisibleChildrenCount(vmID, accessibleContext); - } - return FALSE; - } - - /** - * Gets the visible children of an AccessibleContext. Returns whether successful; - * - * Bug ID 4944762- getVisibleChildren for list-like components needed - */ - BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext, - const int startIndex, VisibleChildrenInfo *visibleChildrenInfo) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getVisibleChildren(vmID, accessibleContext, startIndex, - visibleChildrenInfo); - } - return FALSE; - } - - /** - * Set the caret to a text position. Returns whether successful; - * - * Bug ID 4944770 - setCaretPosition method needed - */ - BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext, - const int position) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.setCaretPosition(vmID, accessibleContext, position); - } - return FALSE; - } - - /** - * Gets the text caret location - */ - BOOL getCaretLocation(long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index) { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getCaretLocation(vmID, ac, rectInfo, index); - } - return FALSE; - } - - /** - * Gets the number of events waiting to fire - */ - int getEventsWaiting() { - if (theAccessBridgeInitializedFlag == TRUE) { - return theAccessBridge.getEventsWaiting(); - } - return FALSE; - } - -#ifdef __cplusplus -} -#endif diff --git a/arthas-vmtool/src/main/native/head/windows/AccessBridgeCalls.h b/arthas-vmtool/src/main/native/head/windows/AccessBridgeCalls.h deleted file mode 100755 index 46b42fd1..00000000 --- a/arthas-vmtool/src/main/native/head/windows/AccessBridgeCalls.h +++ /dev/null @@ -1,725 +0,0 @@ -/* - * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* Note: In addition to this header file AccessBridgeCalls.c must be compiled and - * linked to your application. AccessBridgeCalls.c implements the Java Access - * Bridge API and also hides the complexities associated with interfacing to the - * associated Java Access Bridge DLL which is installed when Java is installed. - * - * AccessBridgeCalls.c is available for download from the OpenJDK repository using - * the following link: - * - * http://hg.openjdk.java.net/jdk9/jdk9/jdk/raw-file/tip/src/jdk.accessibility/windows/native/bridge/AccessBridgeCalls.c - * - * Also note that the API is used in the jaccessinspector and jaccesswalker tools. - * The source for those tools is available in the OpenJDK repository at these links: - * - * http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/tip/src/jdk.accessibility/windows/native/jaccessinspector/jaccessinspector.cpp - * http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/tip/src/jdk.accessibility/windows/native/jaccesswalker/jaccesswalker.cpp - * - * - */ - -/* - * Wrapper functions around calls to the AccessBridge DLL - */ - -#include -#include -#include "AccessBridgeCallbacks.h" -#include "AccessBridgePackages.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define null NULL - - typedef JOBJECT64 AccessibleContext; - typedef JOBJECT64 AccessibleText; - typedef JOBJECT64 AccessibleValue; - typedef JOBJECT64 AccessibleSelection; - typedef JOBJECT64 Java_Object; - typedef JOBJECT64 PropertyChangeEvent; - typedef JOBJECT64 FocusEvent; - typedef JOBJECT64 CaretEvent; - typedef JOBJECT64 MouseEvent; - typedef JOBJECT64 MenuEvent; - typedef JOBJECT64 AccessibleTable; - typedef JOBJECT64 AccessibleHyperlink; - typedef JOBJECT64 AccessibleHypertext; - - - typedef void (*Windows_runFP) (); - - typedef void (*SetPropertyChangeFP) (AccessBridge_PropertyChangeFP fp); - - typedef void (*SetJavaShutdownFP) (AccessBridge_JavaShutdownFP fp); - typedef void (*SetFocusGainedFP) (AccessBridge_FocusGainedFP fp); - typedef void (*SetFocusLostFP) (AccessBridge_FocusLostFP fp); - - typedef void (*SetCaretUpdateFP) (AccessBridge_CaretUpdateFP fp); - - typedef void (*SetMouseClickedFP) (AccessBridge_MouseClickedFP fp); - typedef void (*SetMouseEnteredFP) (AccessBridge_MouseEnteredFP fp); - typedef void (*SetMouseExitedFP) (AccessBridge_MouseExitedFP fp); - typedef void (*SetMousePressedFP) (AccessBridge_MousePressedFP fp); - typedef void (*SetMouseReleasedFP) (AccessBridge_MouseReleasedFP fp); - - typedef void (*SetMenuCanceledFP) (AccessBridge_MenuCanceledFP fp); - typedef void (*SetMenuDeselectedFP) (AccessBridge_MenuDeselectedFP fp); - typedef void (*SetMenuSelectedFP) (AccessBridge_MenuSelectedFP fp); - typedef void (*SetPopupMenuCanceledFP) (AccessBridge_PopupMenuCanceledFP fp); - typedef void (*SetPopupMenuWillBecomeInvisibleFP) (AccessBridge_PopupMenuWillBecomeInvisibleFP fp); - typedef void (*SetPopupMenuWillBecomeVisibleFP) (AccessBridge_PopupMenuWillBecomeVisibleFP fp); - - typedef void (*SetPropertyNameChangeFP) (AccessBridge_PropertyNameChangeFP fp); - typedef void (*SetPropertyDescriptionChangeFP) (AccessBridge_PropertyDescriptionChangeFP fp); - typedef void (*SetPropertyStateChangeFP) (AccessBridge_PropertyStateChangeFP fp); - typedef void (*SetPropertyValueChangeFP) (AccessBridge_PropertyValueChangeFP fp); - typedef void (*SetPropertySelectionChangeFP) (AccessBridge_PropertySelectionChangeFP fp); - typedef void (*SetPropertyTextChangeFP) (AccessBridge_PropertyTextChangeFP fp); - typedef void (*SetPropertyCaretChangeFP) (AccessBridge_PropertyCaretChangeFP fp); - typedef void (*SetPropertyVisibleDataChangeFP) (AccessBridge_PropertyVisibleDataChangeFP fp); - typedef void (*SetPropertyChildChangeFP) (AccessBridge_PropertyChildChangeFP fp); - typedef void (*SetPropertyActiveDescendentChangeFP) (AccessBridge_PropertyActiveDescendentChangeFP fp); - - typedef void (*SetPropertyTableModelChangeFP) (AccessBridge_PropertyTableModelChangeFP fp); - - typedef void (*ReleaseJavaObjectFP) (long vmID, Java_Object object); - - typedef BOOL (*GetVersionInfoFP) (long vmID, AccessBridgeVersionInfo *info); - - typedef BOOL (*IsJavaWindowFP) (HWND window); - typedef BOOL (*IsSameObjectFP) (long vmID, JOBJECT64 obj1, JOBJECT64 obj2); - typedef BOOL (*GetAccessibleContextFromHWNDFP) (HWND window, long *vmID, AccessibleContext *ac); - typedef HWND (*getHWNDFromAccessibleContextFP) (long vmID, AccessibleContext ac); - - typedef BOOL (*GetAccessibleContextAtFP) (long vmID, AccessibleContext acParent, - jint x, jint y, AccessibleContext *ac); - typedef BOOL (*GetAccessibleContextWithFocusFP) (HWND window, long *vmID, AccessibleContext *ac); - typedef BOOL (*GetAccessibleContextInfoFP) (long vmID, AccessibleContext ac, AccessibleContextInfo *info); - typedef AccessibleContext (*GetAccessibleChildFromContextFP) (long vmID, AccessibleContext ac, jint i); - typedef AccessibleContext (*GetAccessibleParentFromContextFP) (long vmID, AccessibleContext ac); - - /* begin AccessibleTable */ - typedef BOOL (*getAccessibleTableInfoFP) (long vmID, AccessibleContext ac, AccessibleTableInfo *tableInfo); - typedef BOOL (*getAccessibleTableCellInfoFP) (long vmID, AccessibleTable accessibleTable, - jint row, jint column, AccessibleTableCellInfo *tableCellInfo); - - typedef BOOL (*getAccessibleTableRowHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); - typedef BOOL (*getAccessibleTableColumnHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); - - typedef AccessibleContext (*getAccessibleTableRowDescriptionFP) (long vmID, AccessibleContext acParent, jint row); - typedef AccessibleContext (*getAccessibleTableColumnDescriptionFP) (long vmID, AccessibleContext acParent, jint column); - - typedef jint (*getAccessibleTableRowSelectionCountFP) (long vmID, AccessibleTable table); - typedef BOOL (*isAccessibleTableRowSelectedFP) (long vmID, AccessibleTable table, jint row); - typedef BOOL (*getAccessibleTableRowSelectionsFP) (long vmID, AccessibleTable table, jint count, - jint *selections); - - typedef jint (*getAccessibleTableColumnSelectionCountFP) (long vmID, AccessibleTable table); - typedef BOOL (*isAccessibleTableColumnSelectedFP) (long vmID, AccessibleTable table, jint column); - typedef BOOL (*getAccessibleTableColumnSelectionsFP) (long vmID, AccessibleTable table, jint count, - jint *selections); - - typedef jint (*getAccessibleTableRowFP) (long vmID, AccessibleTable table, jint index); - typedef jint (*getAccessibleTableColumnFP) (long vmID, AccessibleTable table, jint index); - typedef jint (*getAccessibleTableIndexFP) (long vmID, AccessibleTable table, jint row, jint column); - /* end AccessibleTable */ - - /* AccessibleRelationSet */ - typedef BOOL (*getAccessibleRelationSetFP) (long vmID, AccessibleContext accessibleContext, - AccessibleRelationSetInfo *relationSetInfo); - - /* AccessibleHypertext */ - typedef BOOL (*getAccessibleHypertextFP)(long vmID, AccessibleContext accessibleContext, - AccessibleHypertextInfo *hypertextInfo); - - typedef BOOL (*activateAccessibleHyperlinkFP)(long vmID, AccessibleContext accessibleContext, - AccessibleHyperlink accessibleHyperlink); - - typedef jint (*getAccessibleHyperlinkCountFP)(const long vmID, - const AccessibleContext accessibleContext); - - typedef BOOL (*getAccessibleHypertextExtFP) (const long vmID, - const AccessibleContext accessibleContext, - const jint nStartIndex, - AccessibleHypertextInfo *hypertextInfo); - - typedef jint (*getAccessibleHypertextLinkIndexFP)(const long vmID, - const AccessibleHypertext hypertext, - const jint nIndex); - - typedef BOOL (*getAccessibleHyperlinkFP)(const long vmID, - const AccessibleHypertext hypertext, - const jint nIndex, - AccessibleHyperlinkInfo *hyperlinkInfo); - - - /* Accessible KeyBindings, Icons and Actions */ - typedef BOOL (*getAccessibleKeyBindingsFP)(long vmID, AccessibleContext accessibleContext, - AccessibleKeyBindings *keyBindings); - - typedef BOOL (*getAccessibleIconsFP)(long vmID, AccessibleContext accessibleContext, - AccessibleIcons *icons); - - typedef BOOL (*getAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext, - AccessibleActions *actions); - - typedef BOOL (*doAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext, - AccessibleActionsToDo *actionsToDo, jint *failure); - - - /* AccessibleText */ - - typedef BOOL (*GetAccessibleTextInfoFP) (long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y); - typedef BOOL (*GetAccessibleTextItemsFP) (long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index); - typedef BOOL (*GetAccessibleTextSelectionInfoFP) (long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection); - typedef BOOL (*GetAccessibleTextAttributesFP) (long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes); - typedef BOOL (*GetAccessibleTextRectFP) (long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index); - typedef BOOL (*GetAccessibleTextLineBoundsFP) (long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex); - typedef BOOL (*GetAccessibleTextRangeFP) (long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len); - - typedef BOOL (*GetCurrentAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len); - typedef BOOL (*GetMaximumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len); - typedef BOOL (*GetMinimumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len); - - typedef void (*AddAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i); - typedef void (*ClearAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as); - typedef JOBJECT64 (*GetAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i); - typedef int (*GetAccessibleSelectionCountFromContextFP) (long vmID, AccessibleSelection as); - typedef BOOL (*IsAccessibleChildSelectedFromContextFP) (long vmID, AccessibleSelection as, int i); - typedef void (*RemoveAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i); - typedef void (*SelectAllAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as); - - /* Utility methods */ - - typedef BOOL (*setTextContentsFP) (const long vmID, const AccessibleContext ac, const wchar_t *text); - typedef AccessibleContext (*getParentWithRoleFP) (const long vmID, const AccessibleContext ac, const wchar_t *role); - typedef AccessibleContext (*getParentWithRoleElseRootFP) (const long vmID, const AccessibleContext ac, const wchar_t *role); - typedef AccessibleContext (*getTopLevelObjectFP) (const long vmID, const AccessibleContext ac); - typedef int (*getObjectDepthFP) (const long vmID, const AccessibleContext ac); - typedef AccessibleContext (*getActiveDescendentFP) (const long vmID, const AccessibleContext ac); - - - typedef BOOL (*getVirtualAccessibleNameFP) (const long vmID, const AccessibleContext accessibleContext, - wchar_t *name, int len); - - typedef BOOL (*requestFocusFP) (const long vmID, const AccessibleContext accessibleContext); - - typedef BOOL (*selectTextRangeFP) (const long vmID, const AccessibleContext accessibleContext, - const int startIndex, const int endIndex); - - typedef BOOL (*getTextAttributesInRangeFP) (const long vmID, const AccessibleContext accessibleContext, - const int startIndex, const int endIndex, - AccessibleTextAttributesInfo *attributes, short *len); - - typedef int (*getVisibleChildrenCountFP) (const long vmID, const AccessibleContext accessibleContext); - - typedef BOOL (*getVisibleChildrenFP) (const long vmID, const AccessibleContext accessibleContext, - const int startIndex, VisibleChildrenInfo *children); - - typedef BOOL (*setCaretPositionFP) (const long vmID, const AccessibleContext accessibleContext, const int position); - - typedef BOOL (*getCaretLocationFP) (long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index); - - typedef int (*getEventsWaitingFP) (); - - typedef struct AccessBridgeFPsTag { - Windows_runFP Windows_run; - - SetPropertyChangeFP SetPropertyChange; - - SetJavaShutdownFP SetJavaShutdown; - SetFocusGainedFP SetFocusGained; - SetFocusLostFP SetFocusLost; - - SetCaretUpdateFP SetCaretUpdate; - - SetMouseClickedFP SetMouseClicked; - SetMouseEnteredFP SetMouseEntered; - SetMouseExitedFP SetMouseExited; - SetMousePressedFP SetMousePressed; - SetMouseReleasedFP SetMouseReleased; - - SetMenuCanceledFP SetMenuCanceled; - SetMenuDeselectedFP SetMenuDeselected; - SetMenuSelectedFP SetMenuSelected; - SetPopupMenuCanceledFP SetPopupMenuCanceled; - SetPopupMenuWillBecomeInvisibleFP SetPopupMenuWillBecomeInvisible; - SetPopupMenuWillBecomeVisibleFP SetPopupMenuWillBecomeVisible; - - SetPropertyNameChangeFP SetPropertyNameChange; - SetPropertyDescriptionChangeFP SetPropertyDescriptionChange; - SetPropertyStateChangeFP SetPropertyStateChange; - SetPropertyValueChangeFP SetPropertyValueChange; - SetPropertySelectionChangeFP SetPropertySelectionChange; - SetPropertyTextChangeFP SetPropertyTextChange; - SetPropertyCaretChangeFP SetPropertyCaretChange; - SetPropertyVisibleDataChangeFP SetPropertyVisibleDataChange; - SetPropertyChildChangeFP SetPropertyChildChange; - SetPropertyActiveDescendentChangeFP SetPropertyActiveDescendentChange; - - SetPropertyTableModelChangeFP SetPropertyTableModelChange; - - ReleaseJavaObjectFP ReleaseJavaObject; - GetVersionInfoFP GetVersionInfo; - - IsJavaWindowFP IsJavaWindow; - IsSameObjectFP IsSameObject; - GetAccessibleContextFromHWNDFP GetAccessibleContextFromHWND; - getHWNDFromAccessibleContextFP getHWNDFromAccessibleContext; - - GetAccessibleContextAtFP GetAccessibleContextAt; - GetAccessibleContextWithFocusFP GetAccessibleContextWithFocus; - GetAccessibleContextInfoFP GetAccessibleContextInfo; - GetAccessibleChildFromContextFP GetAccessibleChildFromContext; - GetAccessibleParentFromContextFP GetAccessibleParentFromContext; - - getAccessibleTableInfoFP getAccessibleTableInfo; - getAccessibleTableCellInfoFP getAccessibleTableCellInfo; - - getAccessibleTableRowHeaderFP getAccessibleTableRowHeader; - getAccessibleTableColumnHeaderFP getAccessibleTableColumnHeader; - - getAccessibleTableRowDescriptionFP getAccessibleTableRowDescription; - getAccessibleTableColumnDescriptionFP getAccessibleTableColumnDescription; - - getAccessibleTableRowSelectionCountFP getAccessibleTableRowSelectionCount; - isAccessibleTableRowSelectedFP isAccessibleTableRowSelected; - getAccessibleTableRowSelectionsFP getAccessibleTableRowSelections; - - getAccessibleTableColumnSelectionCountFP getAccessibleTableColumnSelectionCount; - isAccessibleTableColumnSelectedFP isAccessibleTableColumnSelected; - getAccessibleTableColumnSelectionsFP getAccessibleTableColumnSelections; - - getAccessibleTableRowFP getAccessibleTableRow; - getAccessibleTableColumnFP getAccessibleTableColumn; - getAccessibleTableIndexFP getAccessibleTableIndex; - - getAccessibleRelationSetFP getAccessibleRelationSet; - - getAccessibleHypertextFP getAccessibleHypertext; - activateAccessibleHyperlinkFP activateAccessibleHyperlink; - getAccessibleHyperlinkCountFP getAccessibleHyperlinkCount; - getAccessibleHypertextExtFP getAccessibleHypertextExt; - getAccessibleHypertextLinkIndexFP getAccessibleHypertextLinkIndex; - getAccessibleHyperlinkFP getAccessibleHyperlink; - - getAccessibleKeyBindingsFP getAccessibleKeyBindings; - getAccessibleIconsFP getAccessibleIcons; - getAccessibleActionsFP getAccessibleActions; - doAccessibleActionsFP doAccessibleActions; - - GetAccessibleTextInfoFP GetAccessibleTextInfo; - GetAccessibleTextItemsFP GetAccessibleTextItems; - GetAccessibleTextSelectionInfoFP GetAccessibleTextSelectionInfo; - GetAccessibleTextAttributesFP GetAccessibleTextAttributes; - GetAccessibleTextRectFP GetAccessibleTextRect; - GetAccessibleTextLineBoundsFP GetAccessibleTextLineBounds; - GetAccessibleTextRangeFP GetAccessibleTextRange; - - GetCurrentAccessibleValueFromContextFP GetCurrentAccessibleValueFromContext; - GetMaximumAccessibleValueFromContextFP GetMaximumAccessibleValueFromContext; - GetMinimumAccessibleValueFromContextFP GetMinimumAccessibleValueFromContext; - - AddAccessibleSelectionFromContextFP AddAccessibleSelectionFromContext; - ClearAccessibleSelectionFromContextFP ClearAccessibleSelectionFromContext; - GetAccessibleSelectionFromContextFP GetAccessibleSelectionFromContext; - GetAccessibleSelectionCountFromContextFP GetAccessibleSelectionCountFromContext; - IsAccessibleChildSelectedFromContextFP IsAccessibleChildSelectedFromContext; - RemoveAccessibleSelectionFromContextFP RemoveAccessibleSelectionFromContext; - SelectAllAccessibleSelectionFromContextFP SelectAllAccessibleSelectionFromContext; - - setTextContentsFP setTextContents; - getParentWithRoleFP getParentWithRole; - getTopLevelObjectFP getTopLevelObject; - getParentWithRoleElseRootFP getParentWithRoleElseRoot; - getObjectDepthFP getObjectDepth; - getActiveDescendentFP getActiveDescendent; - - getVirtualAccessibleNameFP getVirtualAccessibleName; - requestFocusFP requestFocus; - selectTextRangeFP selectTextRange; - getTextAttributesInRangeFP getTextAttributesInRange; - getVisibleChildrenCountFP getVisibleChildrenCount; - getVisibleChildrenFP getVisibleChildren; - setCaretPositionFP setCaretPosition; - getCaretLocationFP getCaretLocation; - - getEventsWaitingFP getEventsWaiting; - - } AccessBridgeFPs; - - - /** - * Initialize the world - */ - BOOL initializeAccessBridge(); - BOOL shutdownAccessBridge(); - - /** - * Window routines - */ - BOOL IsJavaWindow(HWND window); - - // Returns the virtual machine ID and AccessibleContext for a top-level window - BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac); - - // Returns the HWND from the AccessibleContext of a top-level window - HWND getHWNDFromAccessibleContext(long vmID, AccessibleContext ac); - - - /** - * Event handling routines - */ - void SetJavaShutdown(AccessBridge_JavaShutdownFP fp); - void SetFocusGained(AccessBridge_FocusGainedFP fp); - void SetFocusLost(AccessBridge_FocusLostFP fp); - - void SetCaretUpdate(AccessBridge_CaretUpdateFP fp); - - void SetMouseClicked(AccessBridge_MouseClickedFP fp); - void SetMouseEntered(AccessBridge_MouseEnteredFP fp); - void SetMouseExited(AccessBridge_MouseExitedFP fp); - void SetMousePressed(AccessBridge_MousePressedFP fp); - void SetMouseReleased(AccessBridge_MouseReleasedFP fp); - - void SetMenuCanceled(AccessBridge_MenuCanceledFP fp); - void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp); - void SetMenuSelected(AccessBridge_MenuSelectedFP fp); - void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp); - void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp); - void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp); - - void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp); - void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp); - void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp); - void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp); - void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp); - void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp); - void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp); - void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp); - void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp); - void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp); - - void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp); - - - /** - * General routines - */ - void ReleaseJavaObject(long vmID, Java_Object object); - BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info); - HWND GetHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext); - - /** - * Accessible Context routines - */ - BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent, - jint x, jint y, AccessibleContext *ac); - BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac); - BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info); - AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index); - AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac); - - /** - * Accessible Text routines - */ - BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y); - BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index); - BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection); - BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes); - BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index); - BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex); - BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len); - - /* begin AccessibleTable routines */ - BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); - - BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, jint row, jint column, - AccessibleTableCellInfo *tableCellInfo); - - BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); - BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); - - AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row); - AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column); - - jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table); - BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row); - BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections); - - jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table); - BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column); - BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections); - - jint getAccessibleTableRow(long vmID, AccessibleTable table, jint index); - jint getAccessibleTableColumn(long vmID, AccessibleTable table, jint index); - jint getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column); - /* end AccessibleTable */ - - /* ----- AccessibleRelationSet routines */ - BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext, - AccessibleRelationSetInfo *relationSetInfo); - - /* ----- AccessibleHypertext routines */ - - /* - * Returns hypertext information associated with a component. - */ - BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext, - AccessibleHypertextInfo *hypertextInfo); - - /* - * Requests that a hyperlink be activated. - */ - BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext, - AccessibleHyperlink accessibleHyperlink); - - /* - * Returns the number of hyperlinks in a component - * Maps to AccessibleHypertext.getLinkCount. - * Returns -1 on error. - */ - jint getAccessibleHyperlinkCount(const long vmID, - const AccessibleHypertext hypertext); - - /* - * This method is used to iterate through the hyperlinks in a component. It - * returns hypertext information for a component starting at hyperlink index - * nStartIndex. No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will - * be returned for each call to this method. - * Returns FALSE on error. - */ - BOOL getAccessibleHypertextExt(const long vmID, - const AccessibleContext accessibleContext, - const jint nStartIndex, - /* OUT */ AccessibleHypertextInfo *hypertextInfo); - - /* - * Returns the index into an array of hyperlinks that is associated with - * a character index in document; maps to AccessibleHypertext.getLinkIndex - * Returns -1 on error. - */ - jint getAccessibleHypertextLinkIndex(const long vmID, - const AccessibleHypertext hypertext, - const jint nIndex); - - /* - * Returns the nth hyperlink in a document - * Maps to AccessibleHypertext.getLink. - * Returns FALSE on error - */ - BOOL getAccessibleHyperlink(const long vmID, - const AccessibleHypertext hypertext, - const jint nIndex, - /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo); - - /* Accessible KeyBindings, Icons and Actions */ - - /* - * Returns a list of key bindings associated with a component. - */ - BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext, - AccessibleKeyBindings *keyBindings); - - /* - * Returns a list of icons associate with a component. - */ - BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext, - AccessibleIcons *icons); - - /* - * Returns a list of actions that a component can perform. - */ - BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext, - AccessibleActions *actions); - - /* - * Request that a list of AccessibleActions be performed by a component. - * Returns TRUE if all actions are performed. Returns FALSE - * when the first requested action fails in which case "failure" - * contains the index of the action that failed. - */ - BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext, - AccessibleActionsToDo *actionsToDo, jint *failure); - - - - /* Additional utility methods */ - - /* - * Returns whether two object references refer to the same object. - */ - BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2); - - /** - * Sets editable text contents. The AccessibleContext must implement AccessibleEditableText and - * be editable. The maximum text length that can be set is MAX_STRING_SIZE - 1. - * Returns whether successful - */ - BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text); - - /** - * Returns the Accessible Context with the specified role that is the - * ancestor of a given object. The role is one of the role strings - * defined in AccessBridgePackages.h - * If there is no ancestor object that has the specified role, - * returns (AccessibleContext)0. - */ - AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, - const wchar_t *role); - - /** - * Returns the Accessible Context with the specified role that is the - * ancestor of a given object. The role is one of the role strings - * defined in AccessBridgePackages.h. If an object with the specified - * role does not exist, returns the top level object for the Java Window. - * Returns (AccessibleContext)0 on error. - */ - AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, - const wchar_t *role); - - /** - * Returns the Accessible Context for the top level object in - * a Java Window. This is same Accessible Context that is obtained - * from GetAccessibleContextFromHWND for that window. Returns - * (AccessibleContext)0 on error. - */ - AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext); - - /** - * Returns how deep in the object hierarchy a given object is. - * The top most object in the object hierarchy has an object depth of 0. - * Returns -1 on error. - */ - int getObjectDepth (const long vmID, const AccessibleContext accessibleContext); - - /** - * Returns the Accessible Context of the current ActiveDescendent of an object. - * This method assumes the ActiveDescendent is the component that is currently - * selected in a container object. - * Returns (AccessibleContext)0 on error or if there is no selection. - */ - AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext); - - /** - /** - * Accessible Value routines - */ - BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len); - BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len); - BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len); - - /** - * Accessible Selection routines - */ - void AddAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i); - void ClearAccessibleSelectionFromContext(long vmID, AccessibleSelection as); - JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i); - int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as); - BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i); - void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i); - void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection as); - - /** - * Additional methods for Teton - */ - - /** - * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns - * whether successful. - * - * Bug ID 4916682 - Implement JAWS AccessibleName policy - */ - BOOL getVirtualAccessibleName(const long vmID, const AccessibleContext accessibleContext, - wchar_t *name, int len); - - /** - * Request focus for a component. Returns whether successful. - * - * Bug ID 4944757 - requestFocus method needed - */ - BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext); - - /** - * Selects text between two indices. Selection includes the text at the start index - * and the text at the end index. Returns whether successful. - * - * Bug ID 4944758 - selectTextRange method needed - */ - BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext, const int startIndex, - const int endIndex); - - /** - * Get text attributes between two indices. The attribute list includes the text at the - * start index and the text at the end index. Returns whether successful; - * - * Bug ID 4944761 - getTextAttributes between two indices method needed - */ - BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext, - const int startIndex, const int endIndex, - AccessibleTextAttributesInfo *attributes, short *len); - - /** - * Returns the number of visible children of a component. Returns -1 on error. - * - * Bug ID 4944762- getVisibleChildren for list-like components needed - */ - int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext); - - /** - * Gets the visible children of an AccessibleContext. Returns whether successful. - * - * Bug ID 4944762- getVisibleChildren for list-like components needed - */ - BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext, - const int startIndex, - VisibleChildrenInfo *visibleChildrenInfo); - - /** - * Set the caret to a text position. Returns whether successful. - * - * Bug ID 4944770 - setCaretPosition method needed - */ - BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext, - const int position); - - /** - * Gets the text caret location - */ - BOOL getCaretLocation(long vmID, AccessibleContext ac, - AccessibleTextRectInfo *rectInfo, jint index); - - /** - * Gets the number of events waiting to fire - */ - int getEventsWaiting(); - -#ifdef __cplusplus -} -#endif diff --git a/arthas-vmtool/src/main/native/head/windows/AccessBridgePackages.h b/arthas-vmtool/src/main/native/head/windows/AccessBridgePackages.h deleted file mode 100755 index 27c31be0..00000000 --- a/arthas-vmtool/src/main/native/head/windows/AccessBridgePackages.h +++ /dev/null @@ -1,2215 +0,0 @@ -/* - * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * Header file for packages of paramaters passed between Java Accessibility - * and native Assistive Technologies - */ - -#ifndef __AccessBridgePackages_H__ -#define __AccessBridgePackages_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef ACCESSBRIDGE_ARCH_LEGACY -typedef jobject JOBJECT64; -typedef HWND ABHWND64; -#define ABHandleToLong -#define ABLongToHandle -#else -typedef jlong JOBJECT64; -typedef long ABHWND64; -#define ABHandleToLong HandleToLong -#define ABLongToHandle LongToHandle -#endif - -#define MAX_BUFFER_SIZE 10240 -#define MAX_STRING_SIZE 1024 -#define SHORT_STRING_SIZE 256 - - // object types - typedef JOBJECT64 AccessibleContext; - typedef JOBJECT64 AccessibleText; - typedef JOBJECT64 AccessibleValue; - typedef JOBJECT64 AccessibleSelection; - typedef JOBJECT64 Java_Object; - typedef JOBJECT64 PropertyChangeEvent; - typedef JOBJECT64 FocusEvent; - typedef JOBJECT64 CaretEvent; - typedef JOBJECT64 MouseEvent; - typedef JOBJECT64 MenuEvent; - typedef JOBJECT64 AccessibleTable; - typedef JOBJECT64 AccessibleHyperlink; - typedef JOBJECT64 AccessibleHypertext; - - /** - ****************************************************** - * Java event types - ****************************************************** - */ - -#define cPropertyChangeEvent (jlong) 1 // 1 -#define cFocusGainedEvent (jlong) 2 // 2 -#define cFocusLostEvent (jlong) 4 // 4 -#define cCaretUpdateEvent (jlong) 8 // 8 -#define cMouseClickedEvent (jlong) 16 // 10 -#define cMouseEnteredEvent (jlong) 32 // 20 -#define cMouseExitedEvent (jlong) 64 // 40 -#define cMousePressedEvent (jlong) 128 // 80 -#define cMouseReleasedEvent (jlong) 256 // 100 -#define cMenuCanceledEvent (jlong) 512 // 200 -#define cMenuDeselectedEvent (jlong) 1024 // 400 -#define cMenuSelectedEvent (jlong) 2048 // 800 -#define cPopupMenuCanceledEvent (jlong) 4096 // 1000 -#define cPopupMenuWillBecomeInvisibleEvent (jlong) 8192 // 2000 -#define cPopupMenuWillBecomeVisibleEvent (jlong) 16384 // 4000 -#define cJavaShutdownEvent (jlong) 32768 // 8000 - - /** - ****************************************************** - * Accessible Roles - * Defines all AccessibleRoles in Local.US - ****************************************************** - */ - - /** - * Object is used to alert the user about something. - */ -#define ACCESSIBLE_ALERT L"alert" - - /** - * The header for a column of data. - */ -#define ACCESSIBLE_COLUMN_HEADER L"column header" - - /** - * Object that can be drawn into and is used to trap - * events. - * see ACCESSIBLE_FRAME - * see ACCESSIBLE_GLASS_PANE - * see ACCESSIBLE_LAYERED_PANE - */ -#define ACCESSIBLE_CANVAS L"canvas" - - /** - * A list of choices the user can select from. Also optionally - * allows the user to enter a choice of their own. - */ -#define ACCESSIBLE_COMBO_BOX L"combo box" - - /** - * An iconified internal frame in a DESKTOP_PANE. - * see ACCESSIBLE_DESKTOP_PANE - * see ACCESSIBLE_INTERNAL_FRAME - */ -#define ACCESSIBLE_DESKTOP_ICON L"desktop icon" - - /** - * A frame-like object that is clipped by a desktop pane. The - * desktop pane, internal frame, and desktop icon objects are - * often used to create multiple document interfaces within an - * application. - * see ACCESSIBLE_DESKTOP_ICON - * see ACCESSIBLE_DESKTOP_PANE - * see ACCESSIBLE_FRAME - */ -#define ACCESSIBLE_INTERNAL_FRAME L"internal frame" - - /** - * A pane that supports internal frames and - * iconified versions of those internal frames. - * see ACCESSIBLE_DESKTOP_ICON - * see ACCESSIBLE_INTERNAL_FRAME - */ -#define ACCESSIBLE_DESKTOP_PANE L"desktop pane" - - /** - * A specialized pane whose primary use is inside a DIALOG - * see ACCESSIBLE_DIALOG - */ -#define ACCESSIBLE_OPTION_PANE L"option pane" - - /** - * A top level window with no title or border. - * see ACCESSIBLE_FRAME - * see ACCESSIBLE_DIALOG - */ -#define ACCESSIBLE_WINDOW L"window" - - /** - * A top level window with a title bar, border, menu bar, etc. It is - * often used as the primary window for an application. - * see ACCESSIBLE_DIALOG - * see ACCESSIBLE_CANVAS - * see ACCESSIBLE_WINDOW - */ -#define ACCESSIBLE_FRAME L"frame" - - /** - * A top level window with title bar and a border. A dialog is similar - * to a frame, but it has fewer properties and is often used as a - * secondary window for an application. - * see ACCESSIBLE_FRAME - * see ACCESSIBLE_WINDOW - */ -#define ACCESSIBLE_DIALOG L"dialog" - - /** - * A specialized dialog that lets the user choose a color. - */ -#define ACCESSIBLE_COLOR_CHOOSER L"color chooser" - - - /** - * A pane that allows the user to navigate through - * and select the contents of a directory. May be used - * by a file chooser. - * see ACCESSIBLE_FILE_CHOOSER - */ -#define ACCESSIBLE_DIRECTORY_PANE L"directory pane" - - /** - * A specialized dialog that displays the files in the directory - * and lets the user select a file, browse a different directory, - * or specify a filename. May use the directory pane to show the - * contents of a directory. - * see ACCESSIBLE_DIRECTORY_PANE - */ -#define ACCESSIBLE_FILE_CHOOSER L"file chooser" - - /** - * An object that fills up space in a user interface. It is often - * used in interfaces to tweak the spacing between components, - * but serves no other purpose. - */ -#define ACCESSIBLE_FILLER L"filler" - - /** - * A hypertext anchor - */ -#define ACCESSIBLE_HYPERLINK L"hyperlink" - - /** - * A small fixed size picture, typically used to decorate components. - */ -#define ACCESSIBLE_ICON L"icon" - - /** - * An object used to present an icon or short string in an interface. - */ -#define ACCESSIBLE_LABEL L"label" - - /** - * A specialized pane that has a glass pane and a layered pane as its - * children. - * see ACCESSIBLE_GLASS_PANE - * see ACCESSIBLE_LAYERED_PANE - */ -#define ACCESSIBLE_ROOT_PANE L"root pane" - - /** - * A pane that is guaranteed to be painted on top - * of all panes beneath it. - * see ACCESSIBLE_ROOT_PANE - * see ACCESSIBLE_CANVAS - */ -#define ACCESSIBLE_GLASS_PANE L"glass pane" - - /** - * A specialized pane that allows its children to be drawn in layers, - * providing a form of stacking order. This is usually the pane that - * holds the menu bar as well as the pane that contains most of the - * visual components in a window. - * see ACCESSIBLE_GLASS_PANE - * see ACCESSIBLE_ROOT_PANE - */ -#define ACCESSIBLE_LAYERED_PANE L"layered pane" - - /** - * An object that presents a list of objects to the user and allows the - * user to select one or more of them. A list is usually contained - * within a scroll pane. - * see ACCESSIBLE_SCROLL_PANE - * see ACCESSIBLE_LIST_ITEM - */ -#define ACCESSIBLE_LIST L"list" - - /** - * An object that presents an element in a list. A list is usually - * contained within a scroll pane. - * see ACCESSIBLE_SCROLL_PANE - * see ACCESSIBLE_LIST - */ -#define ACCESSIBLE_LIST_ITEM L"list item" - - /** - * An object usually drawn at the top of the primary dialog box of - * an application that contains a list of menus the user can choose - * from. For example, a menu bar might contain menus for "File," - * "Edit," and "Help." - * see ACCESSIBLE_MENU - * see ACCESSIBLE_POPUP_MENU - * see ACCESSIBLE_LAYERED_PANE - */ -#define ACCESSIBLE_MENU_BAR L"menu bar" - - /** - * A temporary window that is usually used to offer the user a - * list of choices, and then hides when the user selects one of - * those choices. - * see ACCESSIBLE_MENU - * see ACCESSIBLE_MENU_ITEM - */ -#define ACCESSIBLE_POPUP_MENU L"popup menu" - - /** - * An object usually found inside a menu bar that contains a list - * of actions the user can choose from. A menu can have any object - * as its children, but most often they are menu items, other menus, - * or rudimentary objects such as radio buttons, check boxes, or - * separators. For example, an application may have an "Edit" menu - * that contains menu items for "Cut" and "Paste." - * see ACCESSIBLE_MENU_BAR - * see ACCESSIBLE_MENU_ITEM - * see ACCESSIBLE_SEPARATOR - * see ACCESSIBLE_RADIO_BUTTON - * see ACCESSIBLE_CHECK_BOX - * see ACCESSIBLE_POPUP_MENU - */ -#define ACCESSIBLE_MENU L"menu" - - /** - * An object usually contained in a menu that presents an action - * the user can choose. For example, the "Cut" menu item in an - * "Edit" menu would be an action the user can select to cut the - * selected area of text in a document. - * see ACCESSIBLE_MENU_BAR - * see ACCESSIBLE_SEPARATOR - * see ACCESSIBLE_POPUP_MENU - */ -#define ACCESSIBLE_MENU_ITEM L"menu item" - - /** - * An object usually contained in a menu to provide a visual - * and logical separation of the contents in a menu. For example, - * the "File" menu of an application might contain menu items for - * "Open," "Close," and "Exit," and will place a separator between - * "Close" and "Exit" menu items. - * see ACCESSIBLE_MENU - * see ACCESSIBLE_MENU_ITEM - */ -#define ACCESSIBLE_SEPARATOR L"separator" - - /** - * An object that presents a series of panels (or page tabs), one at a - * time, through some mechanism provided by the object. The most common - * mechanism is a list of tabs at the top of the panel. The children of - * a page tab list are all page tabs. - * see ACCESSIBLE_PAGE_TAB - */ -#define ACCESSIBLE_PAGE_TAB_LIST L"page tab list" - - /** - * An object that is a child of a page tab list. Its sole child is - * the panel that is to be presented to the user when the user - * selects the page tab from the list of tabs in the page tab list. - * see ACCESSIBLE_PAGE_TAB_LIST - */ -#define ACCESSIBLE_PAGE_TAB L"page tab" - - /** - * A generic container that is often used to group objects. - */ -#define ACCESSIBLE_PANEL L"panel" - - /** - * An object used to indicate how much of a task has been completed. - */ -#define ACCESSIBLE_PROGRESS_BAR L"progress bar" - - /** - * A text object used for passwords, or other places where the - * text contents is not shown visibly to the user - */ -#define ACCESSIBLE_PASSWORD_TEXT L"password text" - - /** - * An object the user can manipulate to tell the application to do - * something. - * see ACCESSIBLE_CHECK_BOX - * see ACCESSIBLE_TOGGLE_BUTTON - * see ACCESSIBLE_RADIO_BUTTON - */ -#define ACCESSIBLE_PUSH_BUTTON L"push button" - - /** - * A specialized push button that can be checked or unchecked, but - * does not provide a separate indicator for the current state. - * see ACCESSIBLE_PUSH_BUTTON - * see ACCESSIBLE_CHECK_BOX - * see ACCESSIBLE_RADIO_BUTTON - */ -#define ACCESSIBLE_TOGGLE_BUTTON L"toggle button" - - /** - * A choice that can be checked or unchecked and provides a - * separate indicator for the current state. - * see ACCESSIBLE_PUSH_BUTTON - * see ACCESSIBLE_TOGGLE_BUTTON - * see ACCESSIBLE_RADIO_BUTTON - */ -#define ACCESSIBLE_CHECK_BOX L"check box" - - /** - * A specialized check box that will cause other radio buttons in the - * same group to become unchecked when this one is checked. - * see ACCESSIBLE_PUSH_BUTTON - * see ACCESSIBLE_TOGGLE_BUTTON - * see ACCESSIBLE_CHECK_BOX - */ -#define ACCESSIBLE_RADIO_BUTTON L"radio button" - - /** - * The header for a row of data. - */ -#define ACCESSIBLE_ROW_HEADER L"row header" - - /** - * An object that allows a user to incrementally view a large amount - * of information. Its children can include scroll bars and a viewport. - * see ACCESSIBLE_SCROLL_BAR - * see ACCESSIBLE_VIEWPORT - */ -#define ACCESSIBLE_SCROLL_PANE L"scroll pane" - - /** - * An object usually used to allow a user to incrementally view a - * large amount of data. Usually used only by a scroll pane. - * see ACCESSIBLE_SCROLL_PANE - */ -#define ACCESSIBLE_SCROLL_BAR L"scroll bar" - - /** - * An object usually used in a scroll pane. It represents the portion - * of the entire data that the user can see. As the user manipulates - * the scroll bars, the contents of the viewport can change. - * see ACCESSIBLE_SCROLL_PANE - */ -#define ACCESSIBLE_VIEWPORT L"viewport" - - /** - * An object that allows the user to select from a bounded range. For - * example, a slider might be used to select a number between 0 and 100. - */ -#define ACCESSIBLE_SLIDER L"slider" - - /** - * A specialized panel that presents two other panels at the same time. - * Between the two panels is a divider the user can manipulate to make - * one panel larger and the other panel smaller. - */ -#define ACCESSIBLE_SPLIT_PANE L"split pane" - - /** - * An object used to present information in terms of rows and columns. - * An example might include a spreadsheet application. - */ -#define ACCESSIBLE_TABLE L"table" - - /** - * An object that presents text to the user. The text is usually - * editable by the user as opposed to a label. - * see ACCESSIBLE_LABEL - */ -#define ACCESSIBLE_TEXT L"text" - - /** - * An object used to present hierarchical information to the user. - * The individual nodes in the tree can be collapsed and expanded - * to provide selective disclosure of the tree's contents. - */ -#define ACCESSIBLE_TREE L"tree" - - /** - * A bar or palette usually composed of push buttons or toggle buttons. - * It is often used to provide the most frequently used functions for an - * application. - */ -#define ACCESSIBLE_TOOL_BAR L"tool bar" - - /** - * An object that provides information about another object. The - * accessibleDescription property of the tool tip is often displayed - * to the user in a small L"help bubble" when the user causes the - * mouse to hover over the object associated with the tool tip. - */ -#define ACCESSIBLE_TOOL_TIP L"tool tip" - - /** - * An AWT component, but nothing else is known about it. - * see ACCESSIBLE_SWING_COMPONENT - * see ACCESSIBLE_UNKNOWN - */ -#define ACCESSIBLE_AWT_COMPONENT L"awt component" - - /** - * A Swing component, but nothing else is known about it. - * see ACCESSIBLE_AWT_COMPONENT - * see ACCESSIBLE_UNKNOWN - */ -#define ACCESSIBLE_SWING_COMPONENT L"swing component" - - /** - * The object contains some Accessible information, but its role is - * not known. - * see ACCESSIBLE_AWT_COMPONENT - * see ACCESSIBLE_SWING_COMPONENT - */ -#define ACCESSIBLE_UNKNOWN L"unknown" - - /** - * A STATUS_BAR is an simple component that can contain - * multiple labels of status information to the user. - */ -#define ACCESSIBLE_STATUS_BAR L"status bar" - - /** - * A DATE_EDITOR is a component that allows users to edit - * java.util.Date and java.util.Time objects - */ -#define ACCESSIBLE_DATE_EDITOR L"date editor" - - /** - * A SPIN_BOX is a simple spinner component and its main use - * is for simple numbers. - */ -#define ACCESSIBLE_SPIN_BOX L"spin box" - - /** - * A FONT_CHOOSER is a component that lets the user pick various - * attributes for fonts. - */ -#define ACCESSIBLE_FONT_CHOOSER L"font chooser" - - /** - * A GROUP_BOX is a simple container that contains a border - * around it and contains components inside it. - */ -#define ACCESSIBLE_GROUP_BOX L"group box" - - /** - * A text header - */ -#define ACCESSIBLE_HEADER L"header" - - /** - * A text footer - */ -#define ACCESSIBLE_FOOTER L"footer" - - /** - * A text paragraph - */ -#define ACCESSIBLE_PARAGRAPH L"paragraph" - - /** - * A ruler is an object used to measure distance - */ -#define ACCESSIBLE_RULER L"ruler" - - /** - * A role indicating the object acts as a formula for - * calculating a value. An example is a formula in - * a spreadsheet cell. - */ -#define ACCESSIBLE_EDITBAR L"editbar" - - /** - * A role indicating the object monitors the progress - * of some operation. - */ -#define PROGRESS_MONITOR L"progress monitor" - - - /** - ****************************************************** - * Accessibility event types - ****************************************************** - */ - -#define cPropertyNameChangeEvent (jlong) 1 // 1 -#define cPropertyDescriptionChangeEvent (jlong) 2 // 2 -#define cPropertyStateChangeEvent (jlong) 4 // 4 -#define cPropertyValueChangeEvent (jlong) 8 // 8 -#define cPropertySelectionChangeEvent (jlong) 16 // 10 -#define cPropertyTextChangeEvent (jlong) 32 // 20 -#define cPropertyCaretChangeEvent (jlong) 64 // 40 -#define cPropertyVisibleDataChangeEvent (jlong) 128 // 80 -#define cPropertyChildChangeEvent (jlong) 256 // 100 -#define cPropertyActiveDescendentChangeEvent (jlong) 512 // 200 -#define cPropertyTableModelChangeEvent (jlong) 1024 // 400 - - /** - ****************************************************** - * optional AccessibleContext interfaces - * - * This version of the bridge reuses the accessibleValue - * field in the AccessibleContextInfo struct to represent - * additional optional interfaces that are supported by - * the Java AccessibleContext. This is backwardly compatable - * because the old accessibleValue was set to the BOOL - * value TRUE (i.e., 1) if the AccessibleValue interface is - * supported. - ****************************************************** - */ - -#define cAccessibleValueInterface (jlong) 1 // 1 << 1 (TRUE) -#define cAccessibleActionInterface (jlong) 2 // 1 << 2 -#define cAccessibleComponentInterface (jlong) 4 // 1 << 3 -#define cAccessibleSelectionInterface (jlong) 8 // 1 << 4 -#define cAccessibleTableInterface (jlong) 16 // 1 << 5 -#define cAccessibleTextInterface (jlong) 32 // 1 << 6 -#define cAccessibleHypertextInterface (jlong) 64 // 1 << 7 - - - /** - ****************************************************** - * Accessibility information bundles - ****************************************************** - */ - - typedef struct AccessBridgeVersionInfoTag { - wchar_t VMversion[SHORT_STRING_SIZE]; // output of "java -version" - wchar_t bridgeJavaClassVersion[SHORT_STRING_SIZE]; // version of the AccessBridge.class - wchar_t bridgeJavaDLLVersion[SHORT_STRING_SIZE]; // version of JavaAccessBridge.dll - wchar_t bridgeWinDLLVersion[SHORT_STRING_SIZE]; // version of WindowsAccessBridge.dll - } AccessBridgeVersionInfo; - - - typedef struct AccessibleContextInfoTag { - wchar_t name[MAX_STRING_SIZE]; // the AccessibleName of the object - wchar_t description[MAX_STRING_SIZE]; // the AccessibleDescription of the object - - wchar_t role[SHORT_STRING_SIZE]; // localized AccesibleRole string - wchar_t role_en_US[SHORT_STRING_SIZE]; // AccesibleRole string in the en_US locale - wchar_t states[SHORT_STRING_SIZE]; // localized AccesibleStateSet string (comma separated) - wchar_t states_en_US[SHORT_STRING_SIZE]; // AccesibleStateSet string in the en_US locale (comma separated) - - jint indexInParent; // index of object in parent - jint childrenCount; // # of children, if any - - jint x; // screen coords in pixels - jint y; // " - jint width; // pixel width of object - jint height; // pixel height of object - - BOOL accessibleComponent; // flags for various additional - BOOL accessibleAction; // Java Accessibility interfaces - BOOL accessibleSelection; // FALSE if this object doesn't - BOOL accessibleText; // implement the additional interface - // in question - - // BOOL accessibleValue; // old BOOL indicating whether AccessibleValue is supported - BOOL accessibleInterfaces; // new bitfield containing additional interface flags - - } AccessibleContextInfo; - - - - // AccessibleText packages - typedef struct AccessibleTextInfoTag { - jint charCount; // # of characters in this text object - jint caretIndex; // index of caret - jint indexAtPoint; // index at the passsed in point - } AccessibleTextInfo; - - typedef struct AccessibleTextItemsInfoTag { - wchar_t letter; - wchar_t word[SHORT_STRING_SIZE]; - wchar_t sentence[MAX_STRING_SIZE]; - } AccessibleTextItemsInfo; - - typedef struct AccessibleTextSelectionInfoTag { - jint selectionStartIndex; - jint selectionEndIndex; - wchar_t selectedText[MAX_STRING_SIZE]; - } AccessibleTextSelectionInfo; - - typedef struct AccessibleTextRectInfoTag { - jint x; // bounding rect of char at index - jint y; // " - jint width; // " - jint height; // " - } AccessibleTextRectInfo; - - // standard attributes for text; note: tabstops are not supported - typedef struct AccessibleTextAttributesInfoTag { - BOOL bold; - BOOL italic; - BOOL underline; - BOOL strikethrough; - BOOL superscript; - BOOL subscript; - - wchar_t backgroundColor[SHORT_STRING_SIZE]; - wchar_t foregroundColor[SHORT_STRING_SIZE]; - wchar_t fontFamily[SHORT_STRING_SIZE]; - jint fontSize; - - jint alignment; - jint bidiLevel; - - jfloat firstLineIndent; - jfloat leftIndent; - jfloat rightIndent; - jfloat lineSpacing; - jfloat spaceAbove; - jfloat spaceBelow; - - wchar_t fullAttributesString[MAX_STRING_SIZE]; - } AccessibleTextAttributesInfo; - - /** - ****************************************************** - * IPC management typedefs - ****************************************************** - */ - -#define cMemoryMappedNameSize 255 - - /** - * sent by the WindowsDLL -> the memory-mapped file is setup - * - */ - typedef struct MemoryMappedFileCreatedPackageTag { -// HWND bridgeWindow; // redundant, but easier to get to here... - ABHWND64 bridgeWindow; // redundant, but easier to get to here... - char filename[cMemoryMappedNameSize]; - } MemoryMappedFileCreatedPackage; - - - - - /** - * sent when a new JavaVM attaches to the Bridge - * - */ - typedef struct JavaVMCreatedPackageTag { - ABHWND64 bridgeWindow; - long vmID; - } JavaVMCreatedPackage; - - /** - * sent when a JavaVM detatches from the Bridge - * - */ - typedef struct JavaVMDestroyedPackageTag { - ABHWND64 bridgeWindow; - } JavaVMDestroyedPackage; - - /** - * sent when a new AT attaches to the Bridge - * - */ - typedef struct WindowsATCreatedPackageTag { - ABHWND64 bridgeWindow; - } WindowsATCreatedPackage; - - /** - * sent when an AT detatches from the Bridge - * - */ - typedef struct WindowsATDestroyedPackageTag { - ABHWND64 bridgeWindow; - } WindowsATDestroyedPackage; - - - /** - * sent by JVM Bridges in response to a WindowsATCreate - * message; saying "howdy, welcome to the neighborhood" - * - */ - typedef struct JavaVMPresentNotificationPackageTag { - ABHWND64 bridgeWindow; - long vmID; - } JavaVMPresentNotificationPackage; - - /** - * sent by AT Bridges in response to a JavaVMCreate - * message; saying "howdy, welcome to the neighborhood" - * - */ - typedef struct WindowsATPresentNotificationPackageTag { - ABHWND64 bridgeWindow; - } WindowsATPresentNotificationPackage; - - - /** - ****************************************************** - * Core packages - ****************************************************** - */ - - typedef struct ReleaseJavaObjectPackageTag { - long vmID; - JOBJECT64 object; - } ReleaseJavaObjectPackage; - - typedef struct GetAccessBridgeVersionPackageTag { - long vmID; // can't get VM info w/out a VM! - AccessBridgeVersionInfo rVersionInfo; - } GetAccessBridgeVersionPackage; - - typedef struct IsSameObjectPackageTag { - long vmID; - JOBJECT64 obj1; - JOBJECT64 obj2; - jboolean rResult; - } IsSameObjectPackage; - - /** - ****************************************************** - * Windows packages - ****************************************************** - */ - - typedef struct IsJavaWindowPackageTag { - jint window; - jboolean rResult; - } IsJavaWindowPackage; - - typedef struct GetAccessibleContextFromHWNDPackageTag { - jint window; - long rVMID; - JOBJECT64 rAccessibleContext; - } GetAccessibleContextFromHWNDPackage; - - typedef struct GetHWNDFromAccessibleContextPackageTag { - JOBJECT64 accessibleContext; - ABHWND64 rHWND; - } GetHWNDFromAccessibleContextPackage; - - /** -****************************************************** -* AccessibleContext packages -****************************************************** -*/ - - typedef struct GetAccessibleContextAtPackageTag { - jint x; - jint y; - long vmID; - JOBJECT64 AccessibleContext; // look within this AC - JOBJECT64 rAccessibleContext; - } GetAccessibleContextAtPackage; - - typedef struct GetAccessibleContextWithFocusPackageTag { - long rVMID; - JOBJECT64 rAccessibleContext; - } GetAccessibleContextWithFocusPackage; - - typedef struct GetAccessibleContextInfoPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - AccessibleContextInfo rAccessibleContextInfo; - } GetAccessibleContextInfoPackage; - - typedef struct GetAccessibleChildFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint childIndex; - JOBJECT64 rAccessibleContext; - } GetAccessibleChildFromContextPackage; - - typedef struct GetAccessibleParentFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - JOBJECT64 rAccessibleContext; - } GetAccessibleParentFromContextPackage; - - /** -****************************************************** -* AccessibleTable packages -****************************************************** -*/ - -#define MAX_TABLE_SELECTIONS 64 - - // table information - typedef struct AccessibleTableInfoTag { - JOBJECT64 caption; // AccesibleContext - JOBJECT64 summary; // AccessibleContext - jint rowCount; - jint columnCount; - JOBJECT64 accessibleContext; - JOBJECT64 accessibleTable; - } AccessibleTableInfo; - - typedef struct GetAccessibleTableInfoPackageTag { - long vmID; - JOBJECT64 accessibleContext; - AccessibleTableInfo rTableInfo; - } GetAccessibleTableInfoPackage; - - // table cell information - typedef struct AccessibleTableCellInfoTag { - JOBJECT64 accessibleContext; - jint index; - jint row; - jint column; - jint rowExtent; - jint columnExtent; - jboolean isSelected; - } AccessibleTableCellInfo; - - typedef struct GetAccessibleTableCellInfoPackageTag { - long vmID; - JOBJECT64 accessibleTable; - jint row; - jint column; - AccessibleTableCellInfo rTableCellInfo; - } GetAccessibleTableCellInfoPackage; - - typedef struct GetAccessibleTableRowHeaderPackageTag { - long vmID; - JOBJECT64 accessibleContext; - AccessibleTableInfo rTableInfo; - } GetAccessibleTableRowHeaderPackage; - - typedef struct GetAccessibleTableColumnHeaderPackageTag { - long vmID; - JOBJECT64 accessibleContext; - AccessibleTableInfo rTableInfo; - } GetAccessibleTableColumnHeaderPackage; - - typedef struct GetAccessibleTableRowDescriptionPackageTag { - long vmID; - JOBJECT64 accessibleContext; - jint row; - JOBJECT64 rAccessibleContext; - } GetAccessibleTableRowDescriptionPackage; - - typedef struct GetAccessibleTableColumnDescriptionPackageTag { - long vmID; - JOBJECT64 accessibleContext; - jint column; - JOBJECT64 rAccessibleContext; - } GetAccessibleTableColumnDescriptionPackage; - - typedef struct GetAccessibleTableRowSelectionCountPackageTag { - long vmID; - JOBJECT64 accessibleTable; - jint rCount; - } GetAccessibleTableRowSelectionCountPackage; - - typedef struct IsAccessibleTableRowSelectedPackageTag { - long vmID; - JOBJECT64 accessibleTable; - jint row; - jboolean rResult; - } IsAccessibleTableRowSelectedPackage; - - typedef struct GetAccessibleTableRowSelectionsPackageTag { - long vmID; - JOBJECT64 accessibleTable; - jint count; - jint rSelections[MAX_TABLE_SELECTIONS]; - } GetAccessibleTableRowSelectionsPackage; - - typedef struct GetAccessibleTableColumnSelectionCountPackageTag { - long vmID; - JOBJECT64 accessibleTable; - jint rCount; - } GetAccessibleTableColumnSelectionCountPackage; - - typedef struct IsAccessibleTableColumnSelectedPackageTag { - long vmID; - JOBJECT64 accessibleTable; - jint column; - jboolean rResult; - } IsAccessibleTableColumnSelectedPackage; - - typedef struct GetAccessibleTableColumnSelectionsPackageTag { - long vmID; - JOBJECT64 accessibleTable; - jint count; - jint rSelections[MAX_TABLE_SELECTIONS]; - } GetAccessibleTableColumnSelectionsPackage; - - - typedef struct GetAccessibleTableRowPackageTag { - long vmID; - JOBJECT64 accessibleTable; - jint index; - jint rRow; - } GetAccessibleTableRowPackage; - - typedef struct GetAccessibleTableColumnPackageTag { - long vmID; - JOBJECT64 accessibleTable; - jint index; - jint rColumn; - } GetAccessibleTableColumnPackage; - - typedef struct GetAccessibleTableIndexPackageTag { - long vmID; - JOBJECT64 accessibleTable; - jint row; - jint column; - jint rIndex; - } GetAccessibleTableIndexPackage; - - - /** - ****************************************************** - * AccessibleRelationSet packages - ****************************************************** - */ - -#define MAX_RELATION_TARGETS 25 -#define MAX_RELATIONS 5 - - typedef struct AccessibleRelationInfoTag { - wchar_t key[SHORT_STRING_SIZE]; - jint targetCount; - JOBJECT64 targets[MAX_RELATION_TARGETS]; // AccessibleContexts - } AccessibleRelationInfo; - - typedef struct AccessibleRelationSetInfoTag { - jint relationCount; - AccessibleRelationInfo relations[MAX_RELATIONS]; - } AccessibleRelationSetInfo; - - typedef struct GetAccessibleRelationSetPackageTag { - long vmID; - JOBJECT64 accessibleContext; - AccessibleRelationSetInfo rAccessibleRelationSetInfo; - } GetAccessibleRelationSetPackage; - - /** - ****************************************************** - * AccessibleHypertext packagess - ****************************************************** - */ - -#define MAX_HYPERLINKS 64 // maximum number of hyperlinks returned - - // hyperlink information - typedef struct AccessibleHyperlinkInfoTag { - wchar_t text[SHORT_STRING_SIZE]; // the hyperlink text - jint startIndex; //index in the hypertext document where the link begins - jint endIndex; //index in the hypertext document where the link ends - JOBJECT64 accessibleHyperlink; // AccessibleHyperlink object - } AccessibleHyperlinkInfo; - - // hypertext information - typedef struct AccessibleHypertextInfoTag { - jint linkCount; // number of hyperlinks - AccessibleHyperlinkInfo links[MAX_HYPERLINKS]; // the hyperlinks - JOBJECT64 accessibleHypertext; // AccessibleHypertext object - } AccessibleHypertextInfo; - - // struct for sending a message to get the hypertext for an AccessibleContext - typedef struct GetAccessibleHypertextPackageTag { - long vmID; // the virtual machine ID - JOBJECT64 accessibleContext; // AccessibleContext with hypertext - AccessibleHypertextInfo rAccessibleHypertextInfo; // returned hypertext - } GetAccessibleHypertextPackage; - - // struct for sending an message to activate a hyperlink - typedef struct ActivateAccessibleHyperlinkPackageTag { - long vmID; // the virtual machine ID - JOBJECT64 accessibleContext; // AccessibleContext containing the link - JOBJECT64 accessibleHyperlink; // the link to activate - BOOL rResult; // hyperlink activation return value - } ActivateAccessibleHyperlinkPackage; - - // struct for sending a message to get the number of hyperlinks in a component - typedef struct GetAccessibleHyperlinkCountPackageTag { - long vmID; // the virtual machine ID - JOBJECT64 accessibleContext; // AccessibleContext containing AccessibleHypertext - jint rLinkCount; // link count return value - } GetAccessibleHyperlinkCountPackage; - - // struct for sending a message to get the hypertext for an AccessibleContext - // starting at a specified index in the document - typedef struct GetAccessibleHypertextExtPackageTag { - long vmID; // the virtual machine ID - JOBJECT64 accessibleContext; // AccessibleContext with hypertext - jint startIndex; // start index in document - AccessibleHypertextInfo rAccessibleHypertextInfo; // returned hypertext - BOOL rSuccess; // whether call succeeded - } GetAccessibleHypertextExtPackage; - - // struct for sending a message to get the nth hyperlink in a document; - // maps to AccessibleHypertext.getLink - typedef struct GetAccessibleHyperlinkPackageTag { - long vmID; // the virtual machine ID - JOBJECT64 hypertext; // AccessibleHypertext - jint linkIndex; // hyperlink index - AccessibleHyperlinkInfo rAccessibleHyperlinkInfo; // returned hyperlink - } GetAccessibleHyperlinkPackage; - - // struct for sending a message to get the index into an array - // of hyperlinks that is associated with a character index in a - // document; maps to AccessibleHypertext.getLinkIndex - typedef struct GetAccessibleHypertextLinkIndexPackageTag { - long vmID; // the virtual machine ID - JOBJECT64 hypertext; // AccessibleHypertext - jint charIndex; // character index in document - jint rLinkIndex; // returned hyperlink index - } GetAccessibleHypertextLinkIndexPackage; - - /** - ****************************************************** - * Accessible Key Bindings packages - ****************************************************** - */ - -#define MAX_KEY_BINDINGS 10 - - // keyboard character modifiers -#define ACCESSIBLE_SHIFT_KEYSTROKE 1 -#define ACCESSIBLE_CONTROL_KEYSTROKE 2 -#define ACCESSIBLE_META_KEYSTROKE 4 -#define ACCESSIBLE_ALT_KEYSTROKE 8 -#define ACCESSIBLE_ALT_GRAPH_KEYSTROKE 16 -#define ACCESSIBLE_BUTTON1_KEYSTROKE 32 -#define ACCESSIBLE_BUTTON2_KEYSTROKE 64 -#define ACCESSIBLE_BUTTON3_KEYSTROKE 128 -#define ACCESSIBLE_FKEY_KEYSTROKE 256 // F key pressed, character contains 1-24 -#define ACCESSIBLE_CONTROLCODE_KEYSTROKE 512 // Control code key pressed, character contains control code. - -// The supported control code keys are: -#define ACCESSIBLE_VK_BACK_SPACE 8 -#define ACCESSIBLE_VK_DELETE 127 -#define ACCESSIBLE_VK_DOWN 40 -#define ACCESSIBLE_VK_END 35 -#define ACCESSIBLE_VK_HOME 36 -#define ACCESSIBLE_VK_INSERT 155 -#define ACCESSIBLE_VK_KP_DOWN 225 -#define ACCESSIBLE_VK_KP_LEFT 226 -#define ACCESSIBLE_VK_KP_RIGHT 227 -#define ACCESSIBLE_VK_KP_UP 224 -#define ACCESSIBLE_VK_LEFT 37 -#define ACCESSIBLE_VK_PAGE_DOWN 34 -#define ACCESSIBLE_VK_PAGE_UP 33 -#define ACCESSIBLE_VK_RIGHT 39 -#define ACCESSIBLE_VK_UP 38 - - // a key binding associates with a component - typedef struct AccessibleKeyBindingInfoTag { - jchar character; // the key character - jint modifiers; // the key modifiers - } AccessibleKeyBindingInfo; - - // all of the key bindings associated with a component - typedef struct AccessibleKeyBindingsTag { - int keyBindingsCount; // number of key bindings - AccessibleKeyBindingInfo keyBindingInfo[MAX_KEY_BINDINGS]; - } AccessibleKeyBindings; - - // struct to get the key bindings associated with a component - typedef struct GetAccessibleKeyBindingsPackageTag { - long vmID; // the virtual machine id - JOBJECT64 accessibleContext; // the component - AccessibleKeyBindings rAccessibleKeyBindings; // the key bindings - } GetAccessibleKeyBindingsPackage; - - /** -****************************************************** -* AccessibleIcon packages -****************************************************** -*/ -#define MAX_ICON_INFO 8 - - // an icon assocated with a component - typedef struct AccessibleIconInfoTag { - wchar_t description[SHORT_STRING_SIZE]; // icon description - jint height; // icon height - jint width; // icon width - } AccessibleIconInfo; - - // all of the icons associated with a component - typedef struct AccessibleIconsTag { - jint iconsCount; // number of icons - AccessibleIconInfo iconInfo[MAX_ICON_INFO]; // the icons - } AccessibleIcons; - - // struct to get the icons associated with a component - typedef struct GetAccessibleIconsPackageTag { - long vmID; // the virtual machine id - JOBJECT64 accessibleContext; // the component - AccessibleIcons rAccessibleIcons; // the icons - } GetAccessibleIconsPackage; - - - /** -****************************************************** -* AccessibleAction packages -****************************************************** -*/ -#define MAX_ACTION_INFO 256 -#define MAX_ACTIONS_TO_DO 32 - - // an action assocated with a component - typedef struct AccessibleActionInfoTag { - wchar_t name[SHORT_STRING_SIZE]; // action name - } AccessibleActionInfo; - - // all of the actions associated with a component - typedef struct AccessibleActionsTag { - jint actionsCount; // number of actions - AccessibleActionInfo actionInfo[MAX_ACTION_INFO]; // the action information - } AccessibleActions; - - // struct for requesting the actions associated with a component - typedef struct GetAccessibleActionsPackageTag { - long vmID; - JOBJECT64 accessibleContext; // the component - AccessibleActions rAccessibleActions; // the actions - } GetAccessibleActionsPackage; - - // list of AccessibleActions to do - typedef struct AccessibleActionsToDoTag { - jint actionsCount; // number of actions to do - AccessibleActionInfo actions[MAX_ACTIONS_TO_DO];// the accessible actions to do - } AccessibleActionsToDo; - - // struct for sending an message to do one or more actions - typedef struct DoAccessibleActionsPackageTag { - long vmID; // the virtual machine ID - JOBJECT64 accessibleContext; // component to do the action - AccessibleActionsToDo actionsToDo; // the accessible actions to do - BOOL rResult; // action return value - jint failure; // index of action that failed if rResult is FALSE - } DoAccessibleActionsPackage; - - /** -****************************************************** -* AccessibleText packages -****************************************************** -*/ - - typedef struct GetAccessibleTextInfoPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint x; - jint y; - AccessibleTextInfo rTextInfo; - } GetAccessibleTextInfoPackage; - - typedef struct GetAccessibleTextItemsPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint index; - AccessibleTextItemsInfo rTextItemsInfo; - } GetAccessibleTextItemsPackage; - - typedef struct GetAccessibleTextSelectionInfoPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - AccessibleTextSelectionInfo rTextSelectionItemsInfo; - } GetAccessibleTextSelectionInfoPackage; - - typedef struct GetAccessibleTextAttributeInfoPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint index; - AccessibleTextAttributesInfo rAttributeInfo; - } GetAccessibleTextAttributeInfoPackage; - - typedef struct GetAccessibleTextRectInfoPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint index; - AccessibleTextRectInfo rTextRectInfo; - } GetAccessibleTextRectInfoPackage; - - typedef struct GetCaretLocationPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint index; - AccessibleTextRectInfo rTextRectInfo; - } GetCaretLocationPackage; - - typedef struct GetAccessibleTextLineBoundsPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint index; - jint rLineStart; - jint rLineEnd; - } GetAccessibleTextLineBoundsPackage; - - typedef struct GetAccessibleTextRangePackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint start; - jint end; - wchar_t rText[MAX_BUFFER_SIZE]; - } GetAccessibleTextRangePackage; - - /** -****************************************************** -* -* Utility method packages -****************************************************** -*/ - - typedef struct SetTextContentsPackageTag { - long vmID; - JOBJECT64 accessibleContext; // the text field - wchar_t text[MAX_STRING_SIZE]; // the text - BOOL rResult; - } SetTextContentsPackage; - - typedef struct GetParentWithRolePackageTag { - long vmID; - JOBJECT64 accessibleContext; - wchar_t role[SHORT_STRING_SIZE]; // one of Accessible Roles above - JOBJECT64 rAccessibleContext; - } GetParentWithRolePackage; - - typedef struct GetTopLevelObjectPackageTag { - long vmID; - JOBJECT64 accessibleContext; - JOBJECT64 rAccessibleContext; - } GetTopLevelObjectPackage; - - typedef struct GetParentWithRoleElseRootPackageTag { - long vmID; - JOBJECT64 accessibleContext; - wchar_t role[SHORT_STRING_SIZE]; // one of Accessible Roles above - JOBJECT64 rAccessibleContext; - } GetParentWithRoleElseRootPackage; - - typedef struct GetObjectDepthPackageTag { - long vmID; - JOBJECT64 accessibleContext; - jint rResult; - } GetObjectDepthPackage; - - typedef struct GetActiveDescendentPackageTag { - long vmID; - JOBJECT64 accessibleContext; - JOBJECT64 rAccessibleContext; - } GetActiveDescendentPackage; - - /** -****************************************************** -* AccessibleValue packages -****************************************************** -*/ - - typedef struct GetCurrentAccessibleValueFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - wchar_t rValue[SHORT_STRING_SIZE]; - } GetCurrentAccessibleValueFromContextPackage; - - typedef struct GetMaximumAccessibleValueFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - wchar_t rValue[SHORT_STRING_SIZE]; - } GetMaximumAccessibleValueFromContextPackage; - - typedef struct GetMinimumAccessibleValueFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - wchar_t rValue[SHORT_STRING_SIZE]; - } GetMinimumAccessibleValueFromContextPackage; - - - /** -****************************************************** -* AccessibleSelection packages -****************************************************** -*/ - - typedef struct AddAccessibleSelectionFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint index; - } AddAccessibleSelectionFromContextPackage; - - typedef struct ClearAccessibleSelectionFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - } ClearAccessibleSelectionFromContextPackage; - - typedef struct GetAccessibleSelectionFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint index; - JOBJECT64 rAccessibleContext; - } GetAccessibleSelectionFromContextPackage; - - typedef struct GetAccessibleSelectionCountFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint rCount; - } GetAccessibleSelectionCountFromContextPackage; - - typedef struct IsAccessibleChildSelectedFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint index; - jboolean rResult; - } IsAccessibleChildSelectedFromContextPackage; - - typedef struct RemoveAccessibleSelectionFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - jint index; - } RemoveAccessibleSelectionFromContextPackage; - - typedef struct SelectAllAccessibleSelectionFromContextPackageTag { - long vmID; - JOBJECT64 AccessibleContext; - } SelectAllAccessibleSelectionFromContextPackage; - - - /** -****************************************************** -* Java Event Notification Registration packages -****************************************************** -*/ - - typedef struct AddJavaEventNotificationPackageTag { - jlong type; - //HWND DLLwindow; - ABHWND64 DLLwindow; - } AddJavaEventNotificationPackage; - - typedef struct RemoveJavaEventNotificationPackageTag { - jlong type; - //HWND DLLwindow; - ABHWND64 DLLwindow; - } RemoveJavaEventNotificationPackage; - - - /** -****************************************************** -* Accessibility Event Notification Registration packages -****************************************************** -*/ - - typedef struct AddAccessibilityEventNotificationPackageTag { - jlong type; - //HWND DLLwindow; - ABHWND64 DLLwindow; - } AddAccessibilityEventNotificationPackage; - - typedef struct RemoveAccessibilityEventNotificationPackageTag { - jlong type; - //HWND DLLwindow; - ABHWND64 DLLwindow; - } RemoveAccessibilityEventNotificationPackage; - - - /** -****************************************************** -* Accessibility Property Change Event packages -****************************************************** -*/ - - typedef struct PropertyCaretChangePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - jint oldPosition; - jint newPosition; - } PropertyCaretChangePackage; - - typedef struct PropertyDescriptionChangePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - wchar_t oldDescription[SHORT_STRING_SIZE]; - wchar_t newDescription[SHORT_STRING_SIZE]; - } PropertyDescriptionChangePackage; - - typedef struct PropertyNameChangePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - wchar_t oldName[SHORT_STRING_SIZE]; - wchar_t newName[SHORT_STRING_SIZE]; - } PropertyNameChangePackage; - - typedef struct PropertySelectionChangePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } PropertySelectionChangePackage; - - typedef struct PropertyStateChangePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - wchar_t oldState[SHORT_STRING_SIZE]; - wchar_t newState[SHORT_STRING_SIZE]; - } PropertyStateChangePackage; - - typedef struct PropertyTextChangePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } PropertyTextChangePackage; - - typedef struct PropertyValueChangePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - wchar_t oldValue[SHORT_STRING_SIZE]; - wchar_t newValue[SHORT_STRING_SIZE]; - } PropertyValueChangePackage; - - typedef struct PropertyVisibleDataChangePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } PropertyVisibleDataChangePackage; - - typedef struct PropertyChildChangePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - JOBJECT64 oldChildAccessibleContext; - JOBJECT64 newChildAccessibleContext; - } PropertyChildChangePackage; - - typedef struct PropertyActiveDescendentChangePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - JOBJECT64 oldActiveDescendentAccessibleContext; - JOBJECT64 newActiveDescendentAccessibleContext; - } PropertyActiveDescendentChangePackage; - - - // String format for newValue is: - // "type" one of "INSERT", "UPDATE" or "DELETE" - // "firstRow" - // "lastRow" - // "firstColumn" - // "lastColumn" - // - // oldValue is currently unused - // - typedef struct PropertyTableModelChangePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - wchar_t oldValue[SHORT_STRING_SIZE]; - wchar_t newValue[SHORT_STRING_SIZE]; - } PropertyTableModelChangePackage; - - - /** -****************************************************** -* Property Change Event packages -****************************************************** -*/ - - /* - typedef struct PropertyChangePackageTag { - long vmID; - jobject Event; - jobject AccessibleContextSource; - char propertyName[SHORT_STRING_SIZE]; - char oldValue[SHORT_STRING_SIZE]; // PropertyChangeEvent().getOldValue().toString() - char newValue[SHORT_STRING_SIZE]; // PropertyChangeEvent().getNewValue().toString() - } PropertyChangePackage; - */ - - /* - * Java shutdown event package - */ - typedef struct JavaShutdownPackageTag { - long vmID; - } JavaShutdownPackage; - - - /** -****************************************************** -* Focus Event packages -****************************************************** -*/ - - typedef struct FocusGainedPackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } FocusGainedPackage; - - typedef struct FocusLostPackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } FocusLostPackage; - - - /** -****************************************************** -* Caret Event packages -****************************************************** -*/ - - typedef struct CaretUpdatePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } CaretUpdatePackage; - - - /** -****************************************************** -* Mouse Event packages -****************************************************** -*/ - - typedef struct MouseClickedPackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } MouseClickedPackage; - - typedef struct MouseEnteredPackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } MouseEnteredPackage; - - typedef struct MouseExitedPackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } MouseExitedPackage; - - typedef struct MousePressedPackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } MousePressedPackage; - - typedef struct MouseReleasedPackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } MouseReleasedPackage; - - - /** -****************************************************** -* Menu/PopupMenu Event packages -****************************************************** -*/ - - typedef struct MenuCanceledPackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } MenuCanceledPackage; - - typedef struct MenuDeselectedPackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } MenuDeselectedPackage; - - typedef struct MenuSelectedPackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } MenuSelectedPackage; - - - typedef struct PopupMenuCanceledPackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } PopupMenuCanceledPackage; - - typedef struct PopupMenuWillBecomeInvisiblePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } PopupMenuWillBecomeInvisiblePackage; - - typedef struct PopupMenuWillBecomeVisiblePackageTag { - long vmID; - JOBJECT64 Event; - JOBJECT64 AccessibleContextSource; - } PopupMenuWillBecomeVisiblePackage; - - /** -****************************************************** -* Additional methods for Teton -****************************************************** -*/ - - /** - * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns - * whether successful. - * - * Bug ID 4916682 - Implement JAWS AccessibleName policy - */ - typedef struct GetVirtualAccessibleNamePackageTag { - long vmID; - AccessibleContext accessibleContext; - wchar_t rName[MAX_STRING_SIZE]; - int len; - } GetVirtualAccessibleNamePackage; - - /** - * Request focus for a component. Returns whether successful; - * - * Bug ID 4944757 - requestFocus method needed - */ - typedef struct RequestFocusPackageTag { - long vmID; - AccessibleContext accessibleContext; - } RequestFocusPackage; - - /** - * Selects text between two indices. Selection includes the text at the start index - * and the text at the end index. Returns whether successful; - * - * Bug ID 4944758 - selectTextRange method needed - */ - typedef struct SelectTextRangePackageTag { - long vmID; - AccessibleContext accessibleContext; - jint startIndex; - jint endIndex; - } SelectTextRangePackage; - - /** - * Gets the number of contiguous characters with the same attributes. - * - * Bug ID 4944761 - getTextAttributes between two indices method needed - */ - typedef struct GetTextAttributesInRangePackageTag { - long vmID; - AccessibleContext accessibleContext; - jint startIndex; // start index (inclusive) - jint endIndex; // end index (inclusive) - AccessibleTextAttributesInfo attributes; // character attributes to match - short rLength; // number of contiguous characters with matching attributes - } GetTextAttributesInRangePackage; - -#define MAX_VISIBLE_CHILDREN 256 - - // visible children information - typedef struct VisibleChildenInfoTag { - int returnedChildrenCount; // number of children returned - AccessibleContext children[MAX_VISIBLE_CHILDREN]; // the visible children - } VisibleChildrenInfo; - - // struct for sending a message to get the number of visible children - typedef struct GetVisibleChildrenCountPackageTag { - long vmID; // the virtual machine ID - JOBJECT64 accessibleContext; // AccessibleContext of parent component - jint rChildrenCount; // visible children count return value - } GetVisibleChildrenCountPackage; - - // struct for sending a message to get the hypertext for an AccessibleContext - // starting at a specified index in the document - typedef struct GetVisibleChildrenPackageTag { - long vmID; // the virtual machine ID - JOBJECT64 accessibleContext; // AccessibleContext of parent component - jint startIndex; // start index for retrieving children - VisibleChildrenInfo rVisibleChildrenInfo; // returned info - BOOL rSuccess; // whether call succeeded - } GetVisibleChildrenPackage; - - /** - * Set the caret to a text position. Returns whether successful; - * - * Bug ID 4944770 - setCaretPosition method needed - */ - typedef struct SetCaretPositionPackageTag { - long vmID; - AccessibleContext accessibleContext; - jint position; - } SetCaretPositionPackage; - - - /** - ****************************************************** - * Wrapping up all of the packages - ****************************************************** - */ - - /** - * What is the type of this package - */ - typedef enum PackageType { - - cMemoryMappedFileCreatedPackage = 0x11000, - - // many of these will go away... - cJavaVMCreatedPackage = 0x10000, - cJavaVMDestroyedPackage, - cWindowsATCreatedPackage, - cWindowsATDestroyedPackage, - cJavaVMPresentNotificationPackage, - cWindowsATPresentNotificationPackage, - - cReleaseJavaObjectPackage = 1, - cGetAccessBridgeVersionPackage = 2, - - cGetAccessibleContextFromHWNDPackage = 0x10, - cIsJavaWindowPackage, - cGetHWNDFromAccessibleContextPackage, - - cGetAccessibleContextAtPackage = 0x100, - cGetAccessibleContextWithFocusPackage, - cGetAccessibleContextInfoPackage, - cGetAccessibleChildFromContextPackage, - cGetAccessibleParentFromContextPackage, - cIsSameObjectPackage, - - cGetAccessibleTextInfoPackage = 0x200, - cGetAccessibleTextItemsPackage, - cGetAccessibleTextSelectionInfoPackage, - cGetAccessibleTextAttributeInfoPackage, - cGetAccessibleTextRectInfoPackage, - cGetAccessibleTextLineBoundsPackage, - cGetAccessibleTextRangePackage, - - cGetCurrentAccessibleValueFromContextPackage = 0x300, - cGetMaximumAccessibleValueFromContextPackage, - cGetMinimumAccessibleValueFromContextPackage, - - cAddAccessibleSelectionFromContextPackage = 0x400, - cClearAccessibleSelectionFromContextPackage, - cGetAccessibleSelectionFromContextPackage, - cGetAccessibleSelectionCountFromContextPackage, - cIsAccessibleChildSelectedFromContextPackage, - cRemoveAccessibleSelectionFromContextPackage, - cSelectAllAccessibleSelectionFromContextPackage, - - cAddJavaEventNotificationPackage = 0x900, - cRemoveJavaEventNotificationPackage, - cAddAccessibilityEventNotificationPackage, - cRemoveAccessibilityEventNotificationPackage, - - cPropertyChangePackage = 0x1000, - - cJavaShutdownPackage = 0x1010, - cFocusGainedPackage, - cFocusLostPackage, - - cCaretUpdatePackage = 0x1020, - - cMouseClickedPackage = 0x1030, - cMouseEnteredPackage, - cMouseExitedPackage, - cMousePressedPackage, - cMouseReleasedPackage, - - cMenuCanceledPackage = 0x1040, - cMenuDeselectedPackage, - cMenuSelectedPackage, - cPopupMenuCanceledPackage, - cPopupMenuWillBecomeInvisiblePackage, - cPopupMenuWillBecomeVisiblePackage, - - cPropertyCaretChangePackage = 0x1100, - cPropertyDescriptionChangePackage, - cPropertyNameChangePackage, - cPropertySelectionChangePackage, - cPropertyStateChangePackage, - cPropertyTextChangePackage, - cPropertyValueChangePackage, - cPropertyVisibleDataChangePackage, - cPropertyChildChangePackage, - cPropertyActiveDescendentChangePackage, - - - // AccessibleTable - cGetAccessibleTableInfoPackage = 0x1200, - cGetAccessibleTableCellInfoPackage, - - cGetAccessibleTableRowHeaderPackage, - cGetAccessibleTableColumnHeaderPackage, - - cGetAccessibleTableRowDescriptionPackage, - cGetAccessibleTableColumnDescriptionPackage, - - cGetAccessibleTableRowSelectionCountPackage, - cIsAccessibleTableRowSelectedPackage, - cGetAccessibleTableRowSelectionsPackage, - - cGetAccessibleTableColumnSelectionCountPackage, - cIsAccessibleTableColumnSelectedPackage, - cGetAccessibleTableColumnSelectionsPackage, - - cGetAccessibleTableRowPackage, - cGetAccessibleTableColumnPackage, - cGetAccessibleTableIndexPackage, - - cPropertyTableModelChangePackage, - - - // AccessibleRelationSet - cGetAccessibleRelationSetPackage = 0x1300, - - // AccessibleHypertext - cGetAccessibleHypertextPackage = 0x1400, - cActivateAccessibleHyperlinkPackage, - cGetAccessibleHyperlinkCountPackage, - cGetAccessibleHypertextExtPackage, - cGetAccessibleHypertextLinkIndexPackage, - cGetAccessibleHyperlinkPackage, - - // Accessible KeyBinding, Icon and Action - cGetAccessibleKeyBindingsPackage = 0x1500, - cGetAccessibleIconsPackage, - cGetAccessibleActionsPackage, - cDoAccessibleActionsPackage, - - // Utility methods - cSetTextContentsPackage = 0x1600, - cGetParentWithRolePackage, - cGetTopLevelObjectPackage, - cGetParentWithRoleElseRootPackage, - cGetObjectDepthPackage, - cGetActiveDescendentPackage, - - // Additional methods for Teton - cGetVirtualAccessibleNamePackage = 0x1700, - cRequestFocusPackage, - cSelectTextRangePackage, - cGetTextAttributesInRangePackage, - cGetSameTextAttributesInRangePackage, - cGetVisibleChildrenCountPackage, - cGetVisibleChildrenPackage, - cSetCaretPositionPackage, - cGetCaretLocationPackage - - - } PackageType; - - - /** - * Union of all package contents - */ - typedef union AllPackagesTag { - - // Initial Rendezvous packages - MemoryMappedFileCreatedPackage memoryMappedFileCreatedPackage; - - JavaVMCreatedPackage javaVMCreatedPackage; - JavaVMDestroyedPackage javaVMDestroyedPackage; - WindowsATCreatedPackage windowsATCreatedPackage; - WindowsATDestroyedPackage windowsATDestroyedPackage; - JavaVMPresentNotificationPackage javaVMPresentNotificationPackage; - WindowsATPresentNotificationPackage windowsATPresentNotificationPackage; - - // Core packages - ReleaseJavaObjectPackage releaseJavaObject; - GetAccessBridgeVersionPackage getAccessBridgeVersion; - - // Window packages - GetAccessibleContextFromHWNDPackage getAccessibleContextFromHWND; - GetHWNDFromAccessibleContextPackage getHWNDFromAccessibleContext; - - // AccessibleContext packages - GetAccessibleContextAtPackage getAccessibleContextAt; - GetAccessibleContextWithFocusPackage getAccessibleContextWithFocus; - GetAccessibleContextInfoPackage getAccessibleContextInfo; - GetAccessibleChildFromContextPackage getAccessibleChildFromContext; - GetAccessibleParentFromContextPackage getAccessibleParentFromContext; - - // AccessibleText packages - GetAccessibleTextInfoPackage getAccessibleTextInfo; - GetAccessibleTextItemsPackage getAccessibleTextItems; - GetAccessibleTextSelectionInfoPackage getAccessibleTextSelectionInfo; - GetAccessibleTextAttributeInfoPackage getAccessibleTextAttributeInfo; - GetAccessibleTextRectInfoPackage getAccessibleTextRectInfo; - GetAccessibleTextLineBoundsPackage getAccessibleTextLineBounds; - GetAccessibleTextRangePackage getAccessibleTextRange; - - // AccessibleValue packages - GetCurrentAccessibleValueFromContextPackage getCurrentAccessibleValueFromContext; - GetMaximumAccessibleValueFromContextPackage getMaximumAccessibleValueFromContext; - GetMinimumAccessibleValueFromContextPackage getMinimumAccessibleValueFromContext; - - // AccessibleSelection packages - AddAccessibleSelectionFromContextPackage addAccessibleSelectionFromContext; - ClearAccessibleSelectionFromContextPackage clearAccessibleSelectionFromContext; - GetAccessibleSelectionFromContextPackage getAccessibleSelectionFromContext; - GetAccessibleSelectionCountFromContextPackage getAccessibleSelectionCountFromContext; - IsAccessibleChildSelectedFromContextPackage isAccessibleChildSelectedFromContext; - RemoveAccessibleSelectionFromContextPackage removeAccessibleSelectionFromContext; - SelectAllAccessibleSelectionFromContextPackage selectAllAccessibleSelectionFromContext; - - // Event Notification Registration packages - AddJavaEventNotificationPackage addJavaEventNotification; - RemoveJavaEventNotificationPackage removeJavaEventNotification; - AddAccessibilityEventNotificationPackage addAccessibilityEventNotification; - RemoveAccessibilityEventNotificationPackage removeAccessibilityEventNotification; - - // Event contents packages - // PropertyChangePackage propertyChange; - PropertyCaretChangePackage propertyCaretChangePackage; - PropertyDescriptionChangePackage propertyDescriptionChangePackage; - PropertyNameChangePackage propertyNameChangePackage; - PropertySelectionChangePackage propertySelectionChangePackage; - PropertyStateChangePackage propertyStateChangePackage; - PropertyTextChangePackage propertyTextChangePackage; - PropertyValueChangePackage propertyValueChangePackage; - PropertyVisibleDataChangePackage propertyVisibleDataChangePackage; - PropertyChildChangePackage propertyChildChangePackage; - PropertyActiveDescendentChangePackage propertyActiveDescendentChangePackage; - - PropertyTableModelChangePackage propertyTableModelChangePackage; - - JavaShutdownPackage JavaShutdown; - FocusGainedPackage focusGained; - FocusLostPackage focusLost; - - CaretUpdatePackage caretUpdate; - - MouseClickedPackage mouseClicked; - MouseEnteredPackage mouseEntered; - MouseExitedPackage mouseExited; - MousePressedPackage mousePressed; - MouseReleasedPackage mouseReleased; - - MenuCanceledPackage menuCanceled; - MenuDeselectedPackage menuDeselected; - MenuSelectedPackage menuSelected; - PopupMenuCanceledPackage popupMenuCanceled; - PopupMenuWillBecomeInvisiblePackage popupMenuWillBecomeInvisible; - PopupMenuWillBecomeVisiblePackage popupMenuWillBecomeVisible; - - // AccessibleRelationSet - GetAccessibleRelationSetPackage getAccessibleRelationSet; - - // AccessibleHypertext - GetAccessibleHypertextPackage _getAccessibleHypertext; - ActivateAccessibleHyperlinkPackage _activateAccessibleHyperlink; - GetAccessibleHyperlinkCountPackage _getAccessibleHyperlinkCount; - GetAccessibleHypertextExtPackage _getAccessibleHypertextExt; - GetAccessibleHypertextLinkIndexPackage _getAccessibleHypertextLinkIndex; - GetAccessibleHyperlinkPackage _getAccessibleHyperlink; - - // Accessible KeyBinding, Icon and Action - GetAccessibleKeyBindingsPackage getAccessibleKeyBindings; - GetAccessibleIconsPackage getAccessibleIcons; - GetAccessibleActionsPackage getAccessibleActions; - DoAccessibleActionsPackage doAccessibleActions; - - // utility methods - SetTextContentsPackage _setTextContents; - GetParentWithRolePackage _getParentWithRole; - GetTopLevelObjectPackage _getTopLevelObject; - GetParentWithRoleElseRootPackage _getParentWithRoleElseRoot; - GetObjectDepthPackage _getObjectDepth; - GetActiveDescendentPackage _getActiveDescendent; - - // Additional methods for Teton - GetVirtualAccessibleNamePackage _getVirtualAccessibleName; - RequestFocusPackage _requestFocus; - SelectTextRangePackage _selectTextRange; - GetTextAttributesInRangePackage _getTextAttributesInRange; - GetVisibleChildrenCountPackage _getVisibleChildrenCount; - GetVisibleChildrenPackage _getVisibleChildren; - SetCaretPositionPackage _setCaretPosition; - - } AllPackages; - - - /** - * Union of all Java-initiated package contents - */ - typedef union JavaInitiatedPackagesTag { - - // Initial Rendezvous packages - JavaVMCreatedPackage javaVMCreatedPackage; - JavaVMDestroyedPackage javaVMDestroyedPackage; - JavaVMPresentNotificationPackage javaVMPresentNotificationPackage; - - // Event contents packages - PropertyCaretChangePackage propertyCaretChangePackage; - PropertyDescriptionChangePackage propertyDescriptionChangePackage; - PropertyNameChangePackage propertyNameChangePackage; - PropertySelectionChangePackage propertySelectionChangePackage; - PropertyStateChangePackage propertyStateChangePackage; - PropertyTextChangePackage propertyTextChangePackage; - PropertyValueChangePackage propertyValueChangePackage; - PropertyVisibleDataChangePackage propertyVisibleDataChangePackage; - PropertyChildChangePackage propertyChildChangePackage; - PropertyActiveDescendentChangePackage propertyActiveDescendentChangePackage; - - PropertyTableModelChangePackage propertyTableModelChangePackage; - - JavaShutdownPackage JavaShutdown; - FocusGainedPackage focusGained; - FocusLostPackage focusLost; - - CaretUpdatePackage caretUpdate; - - MouseClickedPackage mouseClicked; - MouseEnteredPackage mouseEntered; - MouseExitedPackage mouseExited; - MousePressedPackage mousePressed; - MouseReleasedPackage mouseReleased; - - MenuCanceledPackage menuCanceled; - MenuDeselectedPackage menuDeselected; - MenuSelectedPackage menuSelected; - PopupMenuCanceledPackage popupMenuCanceled; - PopupMenuWillBecomeInvisiblePackage popupMenuWillBecomeInvisible; - PopupMenuWillBecomeVisiblePackage popupMenuWillBecomeVisible; - - } JavaInitiatedPackages; - - - /** - * Union of all Windows-initiated package contents - */ - typedef union WindowsInitiatedPackagesTag { - - // Initial Rendezvous packages - MemoryMappedFileCreatedPackage memoryMappedFileCreatedPackage; - - WindowsATCreatedPackage windowsATCreatedPackage; - WindowsATDestroyedPackage windowsATDestroyedPackage; - WindowsATPresentNotificationPackage windowsATPresentNotificationPackage; - - // Core packages - ReleaseJavaObjectPackage releaseJavaObject; - GetAccessBridgeVersionPackage getAccessBridgeVersion; - - // Window packages - GetAccessibleContextFromHWNDPackage getAccessibleContextFromHWND; - GetHWNDFromAccessibleContextPackage getHWNDFromAccessibleContext; - - // AccessibleContext packages - GetAccessibleContextAtPackage getAccessibleContextAt; - GetAccessibleContextWithFocusPackage getAccessibleContextWithFocus; - GetAccessibleContextInfoPackage getAccessibleContextInfo; - GetAccessibleChildFromContextPackage getAccessibleChildFromContext; - GetAccessibleParentFromContextPackage getAccessibleParentFromContext; - - // AccessibleText packages - GetAccessibleTextInfoPackage getAccessibleTextInfo; - GetAccessibleTextItemsPackage getAccessibleTextItems; - GetAccessibleTextSelectionInfoPackage getAccessibleTextSelectionInfo; - GetAccessibleTextAttributeInfoPackage getAccessibleTextAttributeInfo; - GetAccessibleTextRectInfoPackage getAccessibleTextRectInfo; - GetAccessibleTextLineBoundsPackage getAccessibleTextLineBounds; - GetAccessibleTextRangePackage getAccessibleTextRange; - - // AccessibleValue packages - GetCurrentAccessibleValueFromContextPackage getCurrentAccessibleValueFromContext; - GetMaximumAccessibleValueFromContextPackage getMaximumAccessibleValueFromContext; - GetMinimumAccessibleValueFromContextPackage getMinimumAccessibleValueFromContext; - - // AccessibleSelection packages - AddAccessibleSelectionFromContextPackage addAccessibleSelectionFromContext; - ClearAccessibleSelectionFromContextPackage clearAccessibleSelectionFromContext; - GetAccessibleSelectionFromContextPackage getAccessibleSelectionFromContext; - GetAccessibleSelectionCountFromContextPackage getAccessibleSelectionCountFromContext; - IsAccessibleChildSelectedFromContextPackage isAccessibleChildSelectedFromContext; - RemoveAccessibleSelectionFromContextPackage removeAccessibleSelectionFromContext; - SelectAllAccessibleSelectionFromContextPackage selectAllAccessibleSelectionFromContext; - - // Event Notification Registration packages - AddJavaEventNotificationPackage addJavaEventNotification; - RemoveJavaEventNotificationPackage removeJavaEventNotification; - AddAccessibilityEventNotificationPackage addAccessibilityEventNotification; - RemoveAccessibilityEventNotificationPackage removeAccessibilityEventNotification; - - // AccessibleTable - GetAccessibleTableInfoPackage _getAccessibleTableInfo; - GetAccessibleTableCellInfoPackage _getAccessibleTableCellInfo; - - GetAccessibleTableRowHeaderPackage _getAccessibleTableRowHeader; - GetAccessibleTableColumnHeaderPackage _getAccessibleTableColumnHeader; - - GetAccessibleTableRowDescriptionPackage _getAccessibleTableRowDescription; - GetAccessibleTableColumnDescriptionPackage _getAccessibleTableColumnDescription; - - GetAccessibleTableRowSelectionCountPackage _getAccessibleTableRowSelectionCount; - IsAccessibleTableRowSelectedPackage _isAccessibleTableRowSelected; - GetAccessibleTableRowSelectionsPackage _getAccessibleTableRowSelections; - - GetAccessibleTableColumnSelectionCountPackage _getAccessibleTableColumnSelectionCount; - IsAccessibleTableColumnSelectedPackage _isAccessibleTableColumnSelected; - GetAccessibleTableColumnSelectionsPackage _getAccessibleTableColumnSelections; - - GetAccessibleTableRowPackage _getAccessibleTableRow; - GetAccessibleTableColumnPackage _getAccessibleTableColumn; - GetAccessibleTableIndexPackage _getAccessibleTableIndex; - - // AccessibleRelationSet - GetAccessibleRelationSetPackage _getAccessibleRelationSet; - - // Accessible KeyBindings, Icons and Actions - GetAccessibleKeyBindingsPackage _getAccessibleKeyBindings; - GetAccessibleIconsPackage _getAccessibleIcons; - GetAccessibleActionsPackage _getAccessibleActions; - DoAccessibleActionsPackage _doAccessibleActions; - - - IsSameObjectPackage _isSameObject; - - // utility methods - SetTextContentsPackage _setTextContents; - GetParentWithRolePackage _getParentWithRole; - GetTopLevelObjectPackage _getTopLevelObject; - GetParentWithRoleElseRootPackage _getParentWithRoleElseRoot; - GetObjectDepthPackage _getObjectDepth; - GetActiveDescendentPackage _getActiveDescendent; - - // Additional methods for Teton - GetVirtualAccessibleNamePackage _getVirtualAccessibleName; - RequestFocusPackage _requestFocus; - SelectTextRangePackage _selectTextRange; - GetTextAttributesInRangePackage _getTextAttributesInRange; - GetVisibleChildrenCountPackage _getVisibleChildrenCount; - GetVisibleChildrenPackage _getVisibleChildren; - SetCaretPositionPackage _setCaretPosition; - - - } WindowsInitiatedPackages; - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/arthas-vmtool/src/main/native/head/windows/jawt_md.h b/arthas-vmtool/src/main/native/head/windows/jawt_md.h deleted file mode 100755 index 7d43ff82..00000000 --- a/arthas-vmtool/src/main/native/head/windows/jawt_md.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#ifndef _JAVASOFT_JAWT_MD_H_ -#define _JAVASOFT_JAWT_MD_H_ - -#include -#include "jawt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Win32-specific declarations for AWT native interface. - * See notes in jawt.h for an example of use. - */ -typedef struct jawt_Win32DrawingSurfaceInfo { - /* Native window, DDB, or DIB handle */ - union { - HWND hwnd; - HBITMAP hbitmap; - void* pbits; - }; - /* - * This HDC should always be used instead of the HDC returned from - * BeginPaint() or any calls to GetDC(). - */ - HDC hdc; - HPALETTE hpalette; -} JAWT_Win32DrawingSurfaceInfo; - -#ifdef __cplusplus -} -#endif - -#endif /* !_JAVASOFT_JAWT_MD_H_ */ diff --git a/arthas-vmtool/src/main/native/head/windows/jni_md.h b/arthas-vmtool/src/main/native/head/windows/jni_md.h deleted file mode 100755 index b8c144fb..00000000 --- a/arthas-vmtool/src/main/native/head/windows/jni_md.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#ifndef _JAVASOFT_JNI_MD_H_ -#define _JAVASOFT_JNI_MD_H_ - -#ifndef JNIEXPORT - #define JNIEXPORT __declspec(dllexport) -#endif -#define JNIIMPORT __declspec(dllimport) -#define JNICALL __stdcall - -// 'long' is always 32 bit on windows so this matches what jdk expects -typedef long jint; -typedef __int64 jlong; -typedef signed char jbyte; - -#endif /* !_JAVASOFT_JNI_MD_H_ */ diff --git a/pom.xml b/pom.xml index 6948f533..795ba076 100644 --- a/pom.xml +++ b/pom.xml @@ -83,7 +83,6 @@ 1.6 2.7.0 3.0.0 - ${skipTests} 2020-09-27T15:10:43Z 1.0.0 4.1.77.Final @@ -469,31 +468,6 @@ - - org.jacoco - jacoco-maven-plugin - 0.8.5 - - - jacoco-initialize - - prepare-agent - - - - com/taobao/arthas/core/view/ObjectViewTest* - - - - - report-aggregate - verify - - report-aggregate - - - -