    class
    	JNI_ENVIRONMENT

    General
    	cluster: eiffel2java
    	description: "Holds information abouy JNI environment. Potentially many JNI environments can exists at once, but more than one was never tested"
    	create: make

    Ancestors
    	ANY

    Queries
    	call_boolean_method (oid, mid, args: POINTER): BOOLEAN
    	call_byte_method (oid, mid, args: POINTER): INTEGER_8
    	call_char_method (oid, mid, args: POINTER): CHARACTER_8
    	call_double_method (oid, mid, args: POINTER): REAL_64
    	call_float_method (oid, mid, args: POINTER): REAL_32
    	call_int_method (oid, mid, args: POINTER): INTEGER_32
    	call_long_method (oid, mid, args: POINTER): INTEGER_64
    	call_object_method (oid, mid, argsp: POINTER): POINTER
    	call_short_method (oid, mid, args: POINTER): INTEGER_16
    	call_static_boolean_method (cls, mid, argp: POINTER): BOOLEAN
    	call_static_byte_method (cls, mid, argp: POINTER): INTEGER_8
    	call_static_char_method (cls, mid, argp: POINTER): CHARACTER_8
    	call_static_double_method (cls, mid, argp: POINTER): REAL_64
    	call_static_float_method (cls, mid, argp: POINTER): REAL_32
    	call_static_int_method (cls, mid, argp: POINTER): INTEGER_32
    	call_static_long_method (cls, mid, argp: POINTER): INTEGER_64
    	call_static_object_method (cls, mid, argp: POINTER): POINTER
    	call_static_short_method (cls, mid, argp: POINTER): INTEGER_16
    	call_static_string_method (cls, mid, argsp: POINTER): STRING_8
    	call_string_method (oid, mid, args: POINTER): STRING_8
    	find_class (name: STRING_8): JAVA_CLASS
    	find_class_by_pointer (classp: POINTER): JAVA_CLASS
    	find_class_pointer (name: STRING_8): POINTER
    	get_array_length (jarray: POINTER): INTEGER_32
    	get_boolean_array_elements (jarray, is_copy: POINTER): POINTER
    	get_boolean_field (oid, fid: POINTER): BOOLEAN
    	get_byte_array_elements (jarray, is_copy: POINTER): POINTER
    	get_byte_field (oid, fid: POINTER): INTEGER_8
    	get_char_array_elements (jarray, is_copy: POINTER): POINTER
    	get_char_field (oid, fid: POINTER): CHARACTER_8
    	get_class (an_obj: POINTER): POINTER
    	get_double_array_elements (jarray, is_copy: POINTER): POINTER
    	get_double_field (oid, fid: POINTER): REAL_64
    	get_field_id (cls, fname, sig: POINTER): POINTER
    	get_float_array_elements (jarray, is_copy: POINTER): POINTER
    	get_float_field (oid, fid: POINTER): REAL_32
    	get_int_array_elements (jarray, is_copy: POINTER): POINTER
    	get_integer_field (oid, fid: POINTER): INTEGER_32
    	get_long_array_elements (jarray, is_copy: POINTER): POINTER
    	get_long_field (oid, fid: POINTER): INTEGER_64
    	get_method_id (cls, mname, sig: POINTER): POINTER
    	get_object_array_element (jarray: POINTER; indx: INTEGER_32): POINTER
    	get_object_field (oid, fid: POINTER): POINTER
    	get_short_array_elements (jarray, is_copy: POINTER): POINTER
    	get_short_field (oid, fid: POINTER): INTEGER_16
    	get_static_boolean_field (cls, fid: POINTER): BOOLEAN
    	get_static_byte_field (cls, fid: POINTER): INTEGER_8
    	get_static_char_field (cls, fid: POINTER): CHARACTER_8
    	get_static_double_field (cls, fid: POINTER): REAL_64
    	get_static_field_id (cls, fname, sig: POINTER): POINTER
    	get_static_float_field (cls, fid: POINTER): REAL_32
    	get_static_integer_field (cls, fid: POINTER): INTEGER_32
    	get_static_long_field (cls, fid: POINTER): INTEGER_64
    	get_static_method_id (cls, mname, sig: POINTER): POINTER
    	get_static_object_field (cls, fid: POINTER): POINTER
    	get_static_short_field (cls, fid: POINTER): INTEGER_16
    	get_static_string_field (cls, fid: POINTER): STRING_8
    	get_string (a_str: POINTER): STRING_8
    	get_string_field (oid, fid: POINTER): STRING_8
    	new_boolean_array (a_size: INTEGER_32): POINTER
    	new_byte_array (a_size: INTEGER_32): POINTER
    	new_char_array (a_size: INTEGER_32): POINTER
    	new_double_array (a_size: INTEGER_32): POINTER
    	new_float_array (a_size: INTEGER_32): POINTER
    	new_int_array (a_size: INTEGER_32): POINTER
    	new_long_array (a_size: INTEGER_32): POINTER
    	new_object (cls, constructor, args: POINTER): POINTER
    	new_object_array (a_size: INTEGER_32; element_class, init_elt: POINTER): POINTER
    	new_short_array (a_size: INTEGER_32): POINTER
    	new_string (v: STRING_8): POINTER

    Commands
    	attach_current_thread
    	c_throw_custom_exception (lenv, jclass_id, msg: POINTER)
    	c_throw_java_exception (lenv, jthrowable: POINTER)
    	call_static_void_method (cls, mid, argp: POINTER)
    	call_void_method (oid, mid, args: POINTER)
    	check_for_exceptions
    	destroy_vm
    	detach_current_thread
    	release_boolean_array_elements (jarray, elts: POINTER; mode: INTEGER_32)
    	release_byte_array_elements (jarray, elts: POINTER; mode: INTEGER_32)
    	release_char_array_elements (jarray, elts: POINTER; mode: INTEGER_32)
    	release_double_array_elements (jarray, elts: POINTER; mode: INTEGER_32)
    	release_float_array_elements (jarray, elts: POINTER; mode: INTEGER_32)
    	release_int_array_elements (jarray, elts: POINTER; mode: INTEGER_32)
    	release_long_array_elements (jarray, elts: POINTER; mode: INTEGER_32)
    	release_short_array_elements (jarray, elts: POINTER; mode: INTEGER_32)
    	set_boolean_field (oid, fid: POINTER; v: BOOLEAN)
    	set_byte_field (oid, fid: POINTER; v: INTEGER_8)
    	set_char_field (oid, fid: POINTER; v: CHARACTER_8)
    	set_double_field (oid, fid: POINTER; v: REAL_64)
    	set_float_field (oid, fid: POINTER; v: REAL_32)
    	set_integer_field (oid, fid: POINTER; v: INTEGER_32)
    	set_long_field (oid, fid: POINTER; v: INTEGER_64)
    	set_object_array_element (jarray: POINTER; indx: INTEGER_32; v: POINTER)
    	set_object_field (oid, fid, v: POINTER)
    	set_short_field (oid, fid: POINTER; v: INTEGER_16)
    	set_static_boolean_field (cls, fid: POINTER; v: BOOLEAN)
    	set_static_byte_field (cls, fid: POINTER; v: INTEGER_8)
    	set_static_char_field (cls, fid: POINTER; v: CHARACTER_8)
    	set_static_double_field (cls, fid: POINTER; v: REAL_64)
    	set_static_float_field (cls, fid: POINTER; v: REAL_32)
    	set_static_integer_field (cls, fid: POINTER; v: INTEGER_32)
    	set_static_long_field (cls, fid: POINTER; v: INTEGER_64)
    	set_static_object_field (cls, fid, v: POINTER)
    	set_static_short_field (cls, fid: POINTER; v: INTEGER_16)
    	set_static_string_field (cls, fid: POINTER; value: STRING_8)
    	set_string_field (oid, fid: POINTER; v: STRING_8)
    	throw_custom_exception (jclass: JAVA_CLASS; msg: STRING_8)
    	throw_java_exception (jthrowable: JAVA_OBJECT)

    Constraints
    	jvm not void
    	java class table not void
    	java object table not void