Establishing repository
This commit is contained in:
		
						commit
						99dbc9f0cb
					
				| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
* text=auto
 | 
			
		||||
 | 
			
		||||
*.c      text diff=c
 | 
			
		||||
*.h      text diff=c
 | 
			
		||||
*.html   text diff=html
 | 
			
		||||
*.java   text diff=java
 | 
			
		||||
*.sample text
 | 
			
		||||
*.txt    text
 | 
			
		||||
 | 
			
		||||
*.class binary
 | 
			
		||||
*.dll   binary
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,588 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
 | 
			
		||||
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef CLASSFILE_CONSTANTS_H
 | 
			
		||||
#define CLASSFILE_CONSTANTS_H
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Classfile version number for this information */
 | 
			
		||||
#define JVM_CLASSFILE_MAJOR_VERSION 58
 | 
			
		||||
#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 */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,356 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
 | 
			
		||||
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#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 <assert.h>
 | 
			
		||||
 *
 | 
			
		||||
 * 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_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,276 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
 | 
			
		||||
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * 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 */
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,115 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
 | 
			
		||||
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * 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
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,92 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
 | 
			
		||||
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Header file defining callback typedefs for Windows routines
 | 
			
		||||
 * which are called from Java (responding to events, etc.).
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __AccessBridgeCallbacks_H__
 | 
			
		||||
#define __AccessBridgeCallbacks_H__
 | 
			
		||||
 | 
			
		||||
#include <jni.h>
 | 
			
		||||
#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
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,725 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
 | 
			
		||||
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* 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 <windows.h>
 | 
			
		||||
#include <jni.h>
 | 
			
		||||
#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
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,59 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
 | 
			
		||||
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _JAVASOFT_JAWT_MD_H_
 | 
			
		||||
#define _JAVASOFT_JAWT_MD_H_
 | 
			
		||||
 | 
			
		||||
#include <windows.h>
 | 
			
		||||
#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_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 1996, 1998, Oracle and/or its affiliates. All rights reserved.
 | 
			
		||||
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _JAVASOFT_JNI_MD_H_
 | 
			
		||||
#define _JAVASOFT_JNI_MD_H_
 | 
			
		||||
 | 
			
		||||
#define JNIEXPORT __declspec(dllexport)
 | 
			
		||||
#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_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
Copyright (C) 2019 Planet Virtual Boy
 | 
			
		||||
 | 
			
		||||
This software is provided 'as-is', without any express or implied
 | 
			
		||||
warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
including commercial applications, and to alter it and redistribute it
 | 
			
		||||
freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
   claim that you wrote the original software. If you use this software
 | 
			
		||||
   in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
   appreciated but is not required.
 | 
			
		||||
2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
   misrepresented as being the original software.
 | 
			
		||||
3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,157 @@
 | 
			
		|||
# Java include directory pathnames
 | 
			
		||||
# The Windows files need to be copied from a Windows JDK installation
 | 
			
		||||
include_linux   = /usr/lib/jvm/java-13-openjdk-`\
 | 
			
		||||
    uname -r | sed 's/.*-//'`/include
 | 
			
		||||
include_windows = jni-windows-include
 | 
			
		||||
 | 
			
		||||
# Default goal
 | 
			
		||||
.PHONY: default
 | 
			
		||||
default:
 | 
			
		||||
	@echo
 | 
			
		||||
	@echo "Planet Virtual Boy Emulator"
 | 
			
		||||
	@echo "  https://www.planetvb.com/"
 | 
			
		||||
	@echo "  July 30, 2020"
 | 
			
		||||
	@echo
 | 
			
		||||
	@echo "Intended build environment: Debian i386 or amd64"
 | 
			
		||||
	@echo "  gcc-multilib"
 | 
			
		||||
	@echo "  mingw-w64"
 | 
			
		||||
	@echo "  openjdk-13-jdk"
 | 
			
		||||
	@echo
 | 
			
		||||
	@echo "Usage: make <recipe>"
 | 
			
		||||
	@echo "  Package recipes:"
 | 
			
		||||
	@echo "    build    Produces a .jar and deletes all intermediate files"
 | 
			
		||||
	@echo "    clean    Deletes all output files"
 | 
			
		||||
	@echo "    core     Check the native core library for style errors"
 | 
			
		||||
	@echo "    desktop  Compiles the Java desktop application"
 | 
			
		||||
	@echo "    native   Builds all native modules"
 | 
			
		||||
	@echo "    pack     Bundles everything in a .jar file"
 | 
			
		||||
	@echo "  Native recipes:"
 | 
			
		||||
	@echo "    lin32    Builds native module linux_x86"
 | 
			
		||||
	@echo "    lin64    Builds native module linux_x86-64"
 | 
			
		||||
	@echo "    win32    Builds native module windows_x86"
 | 
			
		||||
	@echo "    win64    Builds native module windows_x86-64"
 | 
			
		||||
	@echo
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
###############################################################################
 | 
			
		||||
#                               Package Recipes                               #
 | 
			
		||||
###############################################################################
 | 
			
		||||
 | 
			
		||||
# Perform a full build process
 | 
			
		||||
.PHONY: build
 | 
			
		||||
build:
 | 
			
		||||
	@make -s core
 | 
			
		||||
	@make -s desktop
 | 
			
		||||
	@make -s native
 | 
			
		||||
	@make -s pack
 | 
			
		||||
	@echo "  Removing temporary files"
 | 
			
		||||
	@make -s clean_most
 | 
			
		||||
 | 
			
		||||
# Delete all output files
 | 
			
		||||
.PHONY: clean
 | 
			
		||||
clean: clean_most
 | 
			
		||||
	@rm -f pvbemu_*.jar
 | 
			
		||||
 | 
			
		||||
# Check the native core library for style errors
 | 
			
		||||
.PHONY: core
 | 
			
		||||
core:
 | 
			
		||||
	@echo "  Checking native core library for style errors"
 | 
			
		||||
	$(eval coreargs = -c -Isrc/core/include -Wall -Wextra \
 | 
			
		||||
        -fno-strict-aliasing -fsyntax-only src/core/vue.c)
 | 
			
		||||
	@gcc -std=c90 $(coreargs)
 | 
			
		||||
	@gcc -std=c99 $(coreargs)
 | 
			
		||||
	@gcc -std=c11 $(coreargs)
 | 
			
		||||
 | 
			
		||||
# Compile the Java desktop application
 | 
			
		||||
.PHONY: desktop
 | 
			
		||||
desktop: clean_desktop
 | 
			
		||||
	@echo "  Compiling Java desktop application"
 | 
			
		||||
	@javac -sourcepath src/desktop -d . src/desktop/Main.java
 | 
			
		||||
 | 
			
		||||
# Build all native modules
 | 
			
		||||
.PHONY: native
 | 
			
		||||
native:
 | 
			
		||||
	@make -s lin32
 | 
			
		||||
	@make -s lin64
 | 
			
		||||
	@make -s win32
 | 
			
		||||
	@make -s win64
 | 
			
		||||
 | 
			
		||||
# Package the release into a .jar file
 | 
			
		||||
.PHONY: pack
 | 
			
		||||
pack:
 | 
			
		||||
	$(eval jarname = "pvbemu_`date +%Y%m%d`.jar")
 | 
			
		||||
	@echo "  Bundling into $(jarname)"
 | 
			
		||||
	@jar -cfe $(jarname) Main *.class \
 | 
			
		||||
        locale native src vue makefile license.txt
 | 
			
		||||
 | 
			
		||||
# Delete only Java .class files
 | 
			
		||||
.PHONY: clean_desktop
 | 
			
		||||
clean_desktop:
 | 
			
		||||
	@rm -r -f *.class vue
 | 
			
		||||
 | 
			
		||||
# Delete everything but the .jar
 | 
			
		||||
.PHONY: clean_most
 | 
			
		||||
clean_most: clean_desktop
 | 
			
		||||
	@rm -f src/desktop/native/vue_NativeVUE.h native/*
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
###############################################################################
 | 
			
		||||
#                               Native Recipes                                #
 | 
			
		||||
###############################################################################
 | 
			
		||||
 | 
			
		||||
# JNI header file
 | 
			
		||||
src/desktop/native/vue_NativeVUE.h: src/desktop/vue/NativeVUE.java
 | 
			
		||||
	@javac -h src/desktop/native -sourcepath src/desktop -d . \
 | 
			
		||||
        src/desktop/vue/NativeVUE.java
 | 
			
		||||
 | 
			
		||||
# linux_x86
 | 
			
		||||
.PHONY: lin32_pre
 | 
			
		||||
lin32_pre: src/desktop/native/vue_NativeVUE.h
 | 
			
		||||
	$(eval name    = linux_x86)
 | 
			
		||||
	$(eval prefix  = `uname -m`-linux-gnu-)
 | 
			
		||||
	$(eval include = -I$(include_linux) -I$(include_linux)/linux)
 | 
			
		||||
	$(eval gccargs = -m32 -lm)
 | 
			
		||||
	$(eval ext     = .so)
 | 
			
		||||
.PHONY: lin32
 | 
			
		||||
lin32: lin32_pre native_common
 | 
			
		||||
 | 
			
		||||
# linux_x86-64
 | 
			
		||||
.PHONY: lin64_pre
 | 
			
		||||
lin64_pre: src/desktop/native/vue_NativeVUE.h
 | 
			
		||||
	$(eval name    = linux_x86-64)
 | 
			
		||||
	$(eval prefix  = `uname -m`-linux-gnu-)
 | 
			
		||||
	$(eval include = -I$(include_linux) -I$(include_linux)/linux)
 | 
			
		||||
	$(eval gccargs = -m64 -lm)
 | 
			
		||||
	$(eval ext     = .so)
 | 
			
		||||
.PHONY: lin64
 | 
			
		||||
lin64: lin64_pre native_common
 | 
			
		||||
 | 
			
		||||
# windows_x86
 | 
			
		||||
.PHONY: win32_pre
 | 
			
		||||
win32_pre: src/desktop/native/vue_NativeVUE.h
 | 
			
		||||
	$(eval name    = windows_x86)
 | 
			
		||||
	$(eval prefix  = i686-w64-mingw32-)
 | 
			
		||||
	$(eval include = -I$(include_windows) -I$(include_windows)/win32)
 | 
			
		||||
	$(eval ext     = .dll)
 | 
			
		||||
.PHONY: win32
 | 
			
		||||
win32: win32_pre native_common
 | 
			
		||||
 | 
			
		||||
# windows_x86-64
 | 
			
		||||
.PHONY: win64_pre
 | 
			
		||||
win64_pre: src/desktop/native/vue_NativeVUE.h
 | 
			
		||||
	$(eval name    = windows_x86-64)
 | 
			
		||||
	$(eval prefix  = x86_64-w64-mingw32-)
 | 
			
		||||
	$(eval include = -I$(include_windows) -I$(include_windows)/win32)
 | 
			
		||||
	$(eval ext     = .dll)
 | 
			
		||||
.PHONY: win64
 | 
			
		||||
win64: win64_pre native_common
 | 
			
		||||
 | 
			
		||||
# Common recipe for building native modules
 | 
			
		||||
.PHONY: native_common
 | 
			
		||||
native_common:
 | 
			
		||||
	@echo "  Building native module $(name)"
 | 
			
		||||
	@$(prefix)gcc $(include) -Isrc/core/include $(gccargs) -s -shared -Os \
 | 
			
		||||
        -fno-strict-aliasing \
 | 
			
		||||
        -o native/$(name)$(ext) src/desktop/native/native.c src/core/vue.c
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
#ifndef __VUE_H__
 | 
			
		||||
#define __VUE_H__
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* API management */
 | 
			
		||||
#ifndef VUEAPI
 | 
			
		||||
#define VUEAPI extern
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Header includes */
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* __VUE_H__ */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
#define VUEAPI
 | 
			
		||||
#include <vue.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
// Desktop application primary class
 | 
			
		||||
public class Main {
 | 
			
		||||
 | 
			
		||||
    // Program entry point
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
        System.out.println("Hello, world!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
#include <jni.h>
 | 
			
		||||
#include "vue_NativeVUE.h"
 | 
			
		||||
 | 
			
		||||
JNIEXPORT jint JNICALL Java_vue_NativeVUE_test(JNIEnv *env, jobject obj,
 | 
			
		||||
    jint x, jint y) {
 | 
			
		||||
    return x * y;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
package vue;
 | 
			
		||||
 | 
			
		||||
// Native-backed emulation core implementation
 | 
			
		||||
class NativeVUE extends VUE {
 | 
			
		||||
 | 
			
		||||
    // Retrieve the implementation's name
 | 
			
		||||
    public String getName() {
 | 
			
		||||
        return "Native";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    native int test(int x, int y);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
package vue;
 | 
			
		||||
 | 
			
		||||
// Template class for emulation core implementations
 | 
			
		||||
public abstract class VUE {
 | 
			
		||||
 | 
			
		||||
    // Retrieve the implementation's name
 | 
			
		||||
    public abstract String getName();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue