blob: db16319bb578cc04632b02cac1d4f5687d855db4 [file]
// Autogenerated file. Do not edit.
// Generated from an annotated version of jni.h provided in Android NDK.
// (NDK Version 23.1.7779620)
// The license for original file is provided below:
/*
* Copyright (C) 2006 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* JNI specification, as defined by Sun:
* http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html
*
* Everything here is expected to be VM-neutral.
*/
// ignore_for_file: always_specify_types
// ignore_for_file: camel_case_types
// ignore_for_file: non_constant_identifier_names
// ignore_for_file: constant_identifier_names
// ignore_for_file: unused_field
// ignore_for_file: unused_element
// coverage:ignore-file
// AUTO GENERATED FILE, DO NOT EDIT.
//
// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
/// Bindings for libdartjni.so which is part of jni plugin.
///
/// It also transitively includes type definitions such as JNIEnv from third_party/jni.h;
///
/// However, functions prefixed JNI_ are not usable because they are in a different shared library.
///
/// Regenerate bindings with `flutter pub run ffigen.dart --config ffigen.yaml`.
///
class JniBindings {
/// Holds the symbol lookup function.
final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
_lookup;
/// The symbols are looked up in [dynamicLibrary].
JniBindings(ffi.DynamicLibrary dynamicLibrary)
: _lookup = dynamicLibrary.lookup;
/// The symbols are looked up with [lookup].
JniBindings.fromLookup(
ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
lookup)
: _lookup = lookup;
ffi.Pointer<JniAccessors> GetAccessors() {
return _GetAccessors();
}
late final _GetAccessorsPtr =
_lookup<ffi.NativeFunction<ffi.Pointer<JniAccessors> Function()>>(
'GetAccessors');
late final _GetAccessors =
_GetAccessorsPtr.asFunction<ffi.Pointer<JniAccessors> Function()>();
ffi.Pointer<JavaVM> GetJavaVM() {
return _GetJavaVM();
}
late final _GetJavaVMPtr =
_lookup<ffi.NativeFunction<ffi.Pointer<JavaVM> Function()>>('GetJavaVM');
late final _GetJavaVM =
_GetJavaVMPtr.asFunction<ffi.Pointer<JavaVM> Function()>();
ffi.Pointer<JniEnv> GetJniEnv() {
return _GetJniEnv();
}
late final _GetJniEnvPtr =
_lookup<ffi.NativeFunction<ffi.Pointer<JniEnv> Function()>>('GetJniEnv');
late final _GetJniEnv =
_GetJniEnvPtr.asFunction<ffi.Pointer<JniEnv> Function()>();
ffi.Pointer<JniEnv> SpawnJvm(
ffi.Pointer<JavaVMInitArgs> args,
) {
return _SpawnJvm(
args,
);
}
late final _SpawnJvmPtr = _lookup<
ffi.NativeFunction<
ffi.Pointer<JniEnv> Function(
ffi.Pointer<JavaVMInitArgs>)>>('SpawnJvm');
late final _SpawnJvm = _SpawnJvmPtr.asFunction<
ffi.Pointer<JniEnv> Function(ffi.Pointer<JavaVMInitArgs>)>();
JClass LoadClass(
ffi.Pointer<ffi.Char> name,
) {
return _LoadClass(
name,
);
}
late final _LoadClassPtr =
_lookup<ffi.NativeFunction<JClass Function(ffi.Pointer<ffi.Char>)>>(
'LoadClass');
late final _LoadClass =
_LoadClassPtr.asFunction<JClass Function(ffi.Pointer<ffi.Char>)>();
JObject GetClassLoader() {
return _GetClassLoader();
}
late final _GetClassLoaderPtr =
_lookup<ffi.NativeFunction<JObject Function()>>('GetClassLoader');
late final _GetClassLoader =
_GetClassLoaderPtr.asFunction<JObject Function()>();
JObject GetApplicationContext() {
return _GetApplicationContext();
}
late final _GetApplicationContextPtr =
_lookup<ffi.NativeFunction<JObject Function()>>('GetApplicationContext');
late final _GetApplicationContext =
_GetApplicationContextPtr.asFunction<JObject Function()>();
JObject GetCurrentActivity() {
return _GetCurrentActivity();
}
late final _GetCurrentActivityPtr =
_lookup<ffi.NativeFunction<JObject Function()>>('GetCurrentActivity');
late final _GetCurrentActivity =
_GetCurrentActivityPtr.asFunction<JObject Function()>();
ffi.Pointer<GlobalJniEnv> GetGlobalEnv() {
return _GetGlobalEnv();
}
late final _GetGlobalEnvPtr =
_lookup<ffi.NativeFunction<ffi.Pointer<GlobalJniEnv> Function()>>(
'GetGlobalEnv');
late final _GetGlobalEnv =
_GetGlobalEnvPtr.asFunction<ffi.Pointer<GlobalJniEnv> Function()>();
}
class jfieldID_ extends ffi.Opaque {}
class jmethodID_ extends ffi.Opaque {}
class JValue extends ffi.Union {
@JBoolean()
external int z;
@JByte()
external int b;
@JChar()
external int c;
@JShort()
external int s;
@JInt()
external int i;
@JLong()
external int j;
@JFloat()
external double f;
@JDouble()
external double d;
external JObject l;
}
/// Primitive types that match up with Java equivalents.
typedef JBoolean = ffi.Uint8;
typedef JByte = ffi.Int8;
typedef JChar = ffi.Uint16;
typedef JShort = ffi.Int16;
typedef JInt = ffi.Int32;
typedef JLong = ffi.Int64;
typedef JFloat = ffi.Float;
typedef JDouble = ffi.Double;
/// Reference types, in C.
typedef JObject = ffi.Pointer<ffi.Void>;
abstract class jobjectRefType {
static const int JNIInvalidRefType = 0;
static const int JNILocalRefType = 1;
static const int JNIGlobalRefType = 2;
static const int JNIWeakGlobalRefType = 3;
}
class JNINativeMethod extends ffi.Struct {
external ffi.Pointer<ffi.Char> name;
external ffi.Pointer<ffi.Char> signature;
external ffi.Pointer<ffi.Void> fnPtr;
}
/// C++ version.
class _JavaVM extends ffi.Struct {
external ffi.Pointer<JNIInvokeInterface> functions;
}
/// JNI invocation interface.
class JNIInvokeInterface extends ffi.Struct {
external ffi.Pointer<ffi.Void> reserved0;
external ffi.Pointer<ffi.Void> reserved1;
external ffi.Pointer<ffi.Void> reserved2;
external ffi.Pointer<ffi.NativeFunction<JInt Function(ffi.Pointer<JavaVM>)>>
DestroyJavaVM;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JavaVM>, ffi.Pointer<ffi.Pointer<JniEnv>>,
ffi.Pointer<ffi.Void>)>> AttachCurrentThread;
external ffi.Pointer<ffi.NativeFunction<JInt Function(ffi.Pointer<JavaVM>)>>
DetachCurrentThread;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JavaVM>, ffi.Pointer<ffi.Pointer<ffi.Void>>,
JInt)>> GetEnv;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JavaVM>, ffi.Pointer<ffi.Pointer<JniEnv>>,
ffi.Pointer<ffi.Void>)>> AttachCurrentThreadAsDaemon;
}
extension JNIInvokeInterfaceExtension on ffi.Pointer<JavaVM> {
int DestroyJavaVM() {
return value.ref.DestroyJavaVM
.asFunction<int Function(ffi.Pointer<JavaVM>)>()(this);
}
int AttachCurrentThread(
ffi.Pointer<ffi.Pointer<JniEnv>> p_env, ffi.Pointer<ffi.Void> thr_args) {
return value.ref.AttachCurrentThread.asFunction<
int Function(ffi.Pointer<JavaVM>, ffi.Pointer<ffi.Pointer<JniEnv>>,
ffi.Pointer<ffi.Void>)>()(this, p_env, thr_args);
}
int DetachCurrentThread() {
return value.ref.DetachCurrentThread
.asFunction<int Function(ffi.Pointer<JavaVM>)>()(this);
}
int GetEnv(ffi.Pointer<ffi.Pointer<ffi.Void>> p_env, int version) {
return value.ref.GetEnv.asFunction<
int Function(ffi.Pointer<JavaVM>, ffi.Pointer<ffi.Pointer<ffi.Void>>,
int)>()(this, p_env, version);
}
int AttachCurrentThreadAsDaemon(
ffi.Pointer<ffi.Pointer<JniEnv>> p_env, ffi.Pointer<ffi.Void> thr_args) {
return value.ref.AttachCurrentThreadAsDaemon.asFunction<
int Function(ffi.Pointer<JavaVM>, ffi.Pointer<ffi.Pointer<JniEnv>>,
ffi.Pointer<ffi.Void>)>()(this, p_env, thr_args);
}
}
typedef JavaVM = ffi.Pointer<JNIInvokeInterface>;
typedef JniEnv = ffi.Pointer<JNINativeInterface>;
/// Table of interface function pointers.
class JNINativeInterface extends ffi.Struct {
external ffi.Pointer<ffi.Void> reserved0;
external ffi.Pointer<ffi.Void> reserved1;
external ffi.Pointer<ffi.Void> reserved2;
external ffi.Pointer<ffi.Void> reserved3;
external ffi.Pointer<ffi.NativeFunction<JInt Function(ffi.Pointer<JniEnv1>)>>
GetVersion;
external ffi.Pointer<
ffi.NativeFunction<
JClass Function(ffi.Pointer<JniEnv1>, ffi.Pointer<ffi.Char>, JObject,
ffi.Pointer<JByte>, JSize)>> DefineClass;
external ffi.Pointer<
ffi.NativeFunction<
JClass Function(ffi.Pointer<JniEnv1>, ffi.Pointer<ffi.Char>)>>
FindClass;
external ffi.Pointer<
ffi.NativeFunction<JMethodID Function(ffi.Pointer<JniEnv1>, JObject)>>
FromReflectedMethod;
external ffi.Pointer<
ffi.NativeFunction<JFieldID Function(ffi.Pointer<JniEnv1>, JObject)>>
FromReflectedField;
/// spec doesn't show jboolean parameter
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(
ffi.Pointer<JniEnv1>, JClass, JMethodID, JBoolean)>>
ToReflectedMethod;
external ffi.Pointer<
ffi.NativeFunction<JClass Function(ffi.Pointer<JniEnv1>, JClass)>>
GetSuperclass;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(ffi.Pointer<JniEnv1>, JClass, JClass)>>
IsAssignableFrom;
/// spec doesn't show jboolean parameter
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(
ffi.Pointer<JniEnv1>, JClass, JFieldID, JBoolean)>>
ToReflectedField;
external ffi.Pointer<
ffi.NativeFunction<JInt Function(ffi.Pointer<JniEnv1>, JThrowable)>>
Throw;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(
ffi.Pointer<JniEnv1>, JClass, ffi.Pointer<ffi.Char>)>> ThrowNew;
external ffi.Pointer<
ffi.NativeFunction<JThrowable Function(ffi.Pointer<JniEnv1>)>>
ExceptionOccurred;
external ffi
.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<JniEnv1>)>>
ExceptionDescribe;
external ffi
.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<JniEnv1>)>>
ExceptionClear;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, ffi.Pointer<ffi.Char>)>>
FatalError;
external ffi.Pointer<
ffi.NativeFunction<JInt Function(ffi.Pointer<JniEnv1>, JInt)>>
PushLocalFrame;
external ffi.Pointer<
ffi.NativeFunction<JObject Function(ffi.Pointer<JniEnv1>, JObject)>>
PopLocalFrame;
external ffi.Pointer<
ffi.NativeFunction<JObject Function(ffi.Pointer<JniEnv1>, JObject)>>
NewGlobalRef;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(ffi.Pointer<JniEnv1>, JObject)>>
DeleteGlobalRef;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(ffi.Pointer<JniEnv1>, JObject)>>
DeleteLocalRef;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(ffi.Pointer<JniEnv1>, JObject, JObject)>>
IsSameObject;
external ffi.Pointer<
ffi.NativeFunction<JObject Function(ffi.Pointer<JniEnv1>, JObject)>>
NewLocalRef;
external ffi.Pointer<
ffi.NativeFunction<JInt Function(ffi.Pointer<JniEnv1>, JInt)>>
EnsureLocalCapacity;
external ffi.Pointer<
ffi.NativeFunction<JObject Function(ffi.Pointer<JniEnv1>, JClass)>>
AllocObject;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(ffi.Pointer<JniEnv1>, JClass, JMethodID)>> NewObject;
external ffi.Pointer<ffi.Void> _NewObjectV;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(ffi.Pointer<JniEnv1>, JClass, JMethodID,
ffi.Pointer<JValue>)>> NewObjectA;
external ffi.Pointer<
ffi.NativeFunction<JClass Function(ffi.Pointer<JniEnv1>, JObject)>>
GetObjectClass;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(ffi.Pointer<JniEnv1>, JObject, JClass)>>
IsInstanceOf;
external ffi.Pointer<
ffi.NativeFunction<
JMethodID Function(ffi.Pointer<JniEnv1>, JClass,
ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>> GetMethodID;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(ffi.Pointer<JniEnv1>, JObject, JMethodID)>>
CallObjectMethod;
external ffi.Pointer<ffi.Void> _CallObjectMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(ffi.Pointer<JniEnv1>, JObject, JMethodID,
ffi.Pointer<JValue>)>> CallObjectMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(ffi.Pointer<JniEnv1>, JObject, JMethodID)>>
CallBooleanMethod;
external ffi.Pointer<ffi.Void> _CallBooleanMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(ffi.Pointer<JniEnv1>, JObject, JMethodID,
ffi.Pointer<JValue>)>> CallBooleanMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JByte Function(ffi.Pointer<JniEnv1>, JObject, JMethodID)>>
CallByteMethod;
external ffi.Pointer<ffi.Void> _CallByteMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JByte Function(ffi.Pointer<JniEnv1>, JObject, JMethodID,
ffi.Pointer<JValue>)>> CallByteMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JChar Function(ffi.Pointer<JniEnv1>, JObject, JMethodID)>>
CallCharMethod;
external ffi.Pointer<ffi.Void> _CallCharMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JChar Function(ffi.Pointer<JniEnv1>, JObject, JMethodID,
ffi.Pointer<JValue>)>> CallCharMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JShort Function(ffi.Pointer<JniEnv1>, JObject, JMethodID)>>
CallShortMethod;
external ffi.Pointer<ffi.Void> _CallShortMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JShort Function(ffi.Pointer<JniEnv1>, JObject, JMethodID,
ffi.Pointer<JValue>)>> CallShortMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JniEnv1>, JObject, JMethodID)>>
CallIntMethod;
external ffi.Pointer<ffi.Void> _CallIntMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JniEnv1>, JObject, JMethodID,
ffi.Pointer<JValue>)>> CallIntMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JLong Function(ffi.Pointer<JniEnv1>, JObject, JMethodID)>>
CallLongMethod;
external ffi.Pointer<ffi.Void> _CallLongMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JLong Function(ffi.Pointer<JniEnv1>, JObject, JMethodID,
ffi.Pointer<JValue>)>> CallLongMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JFloat Function(ffi.Pointer<JniEnv1>, JObject, JMethodID)>>
CallFloatMethod;
external ffi.Pointer<ffi.Void> _CallFloatMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JFloat Function(ffi.Pointer<JniEnv1>, JObject, JMethodID,
ffi.Pointer<JValue>)>> CallFloatMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JDouble Function(ffi.Pointer<JniEnv1>, JObject, JMethodID)>>
CallDoubleMethod;
external ffi.Pointer<ffi.Void> _CallDoubleMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JDouble Function(ffi.Pointer<JniEnv1>, JObject, JMethodID,
ffi.Pointer<JValue>)>> CallDoubleMethodA;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JObject, JMethodID)>>
CallVoidMethod;
external ffi.Pointer<ffi.Void> _CallVoidMethodV;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JObject, JMethodID,
ffi.Pointer<JValue>)>> CallVoidMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(
ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID)>>
CallNonvirtualObjectMethod;
external ffi.Pointer<ffi.Void> _CallNonvirtualObjectMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallNonvirtualObjectMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(
ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID)>>
CallNonvirtualBooleanMethod;
external ffi.Pointer<ffi.Void> _CallNonvirtualBooleanMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallNonvirtualBooleanMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JByte Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID)>>
CallNonvirtualByteMethod;
external ffi.Pointer<ffi.Void> _CallNonvirtualByteMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JByte Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallNonvirtualByteMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JChar Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID)>>
CallNonvirtualCharMethod;
external ffi.Pointer<ffi.Void> _CallNonvirtualCharMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JChar Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallNonvirtualCharMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JShort Function(
ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID)>>
CallNonvirtualShortMethod;
external ffi.Pointer<ffi.Void> _CallNonvirtualShortMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JShort Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallNonvirtualShortMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID)>>
CallNonvirtualIntMethod;
external ffi.Pointer<ffi.Void> _CallNonvirtualIntMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallNonvirtualIntMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JLong Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID)>>
CallNonvirtualLongMethod;
external ffi.Pointer<ffi.Void> _CallNonvirtualLongMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JLong Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallNonvirtualLongMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JFloat Function(
ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID)>>
CallNonvirtualFloatMethod;
external ffi.Pointer<ffi.Void> _CallNonvirtualFloatMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JFloat Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallNonvirtualFloatMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JDouble Function(
ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID)>>
CallNonvirtualDoubleMethod;
external ffi.Pointer<ffi.Void> _CallNonvirtualDoubleMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JDouble Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallNonvirtualDoubleMethodA;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID)>>
CallNonvirtualVoidMethod;
external ffi.Pointer<ffi.Void> _CallNonvirtualVoidMethodV;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JObject, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallNonvirtualVoidMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JFieldID Function(ffi.Pointer<JniEnv1>, JClass, ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Char>)>> GetFieldID;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(ffi.Pointer<JniEnv1>, JObject, JFieldID)>>
GetObjectField;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(ffi.Pointer<JniEnv1>, JObject, JFieldID)>>
GetBooleanField;
external ffi.Pointer<
ffi.NativeFunction<
JByte Function(ffi.Pointer<JniEnv1>, JObject, JFieldID)>>
GetByteField;
external ffi.Pointer<
ffi.NativeFunction<
JChar Function(ffi.Pointer<JniEnv1>, JObject, JFieldID)>>
GetCharField;
external ffi.Pointer<
ffi.NativeFunction<
JShort Function(ffi.Pointer<JniEnv1>, JObject, JFieldID)>>
GetShortField;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JniEnv1>, JObject, JFieldID)>> GetIntField;
external ffi.Pointer<
ffi.NativeFunction<
JLong Function(ffi.Pointer<JniEnv1>, JObject, JFieldID)>>
GetLongField;
external ffi.Pointer<
ffi.NativeFunction<
JFloat Function(ffi.Pointer<JniEnv1>, JObject, JFieldID)>>
GetFloatField;
external ffi.Pointer<
ffi.NativeFunction<
JDouble Function(ffi.Pointer<JniEnv1>, JObject, JFieldID)>>
GetDoubleField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JObject, JFieldID, JObject)>>
SetObjectField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JObject, JFieldID, JBoolean)>>
SetBooleanField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JObject, JFieldID, JByte)>> SetByteField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JObject, JFieldID, JChar)>> SetCharField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JObject, JFieldID, JShort)>> SetShortField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JObject, JFieldID, JInt)>>
SetIntField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JObject, JFieldID, JLong)>> SetLongField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JObject, JFieldID, JFloat)>> SetFloatField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JObject, JFieldID, JDouble)>>
SetDoubleField;
external ffi.Pointer<
ffi.NativeFunction<
JMethodID Function(ffi.Pointer<JniEnv1>, JClass,
ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>> GetStaticMethodID;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(ffi.Pointer<JniEnv1>, JClass, JMethodID)>>
CallStaticObjectMethod;
external ffi.Pointer<ffi.Void> _CallStaticObjectMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(ffi.Pointer<JniEnv1>, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallStaticObjectMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(ffi.Pointer<JniEnv1>, JClass, JMethodID)>>
CallStaticBooleanMethod;
external ffi.Pointer<ffi.Void> _CallStaticBooleanMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(ffi.Pointer<JniEnv1>, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallStaticBooleanMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JByte Function(ffi.Pointer<JniEnv1>, JClass, JMethodID)>>
CallStaticByteMethod;
external ffi.Pointer<ffi.Void> _CallStaticByteMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JByte Function(ffi.Pointer<JniEnv1>, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallStaticByteMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JChar Function(ffi.Pointer<JniEnv1>, JClass, JMethodID)>>
CallStaticCharMethod;
external ffi.Pointer<ffi.Void> _CallStaticCharMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JChar Function(ffi.Pointer<JniEnv1>, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallStaticCharMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JShort Function(ffi.Pointer<JniEnv1>, JClass, JMethodID)>>
CallStaticShortMethod;
external ffi.Pointer<ffi.Void> _CallStaticShortMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JShort Function(ffi.Pointer<JniEnv1>, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallStaticShortMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JniEnv1>, JClass, JMethodID)>>
CallStaticIntMethod;
external ffi.Pointer<ffi.Void> _CallStaticIntMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JniEnv1>, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallStaticIntMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JLong Function(ffi.Pointer<JniEnv1>, JClass, JMethodID)>>
CallStaticLongMethod;
external ffi.Pointer<ffi.Void> _CallStaticLongMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JLong Function(ffi.Pointer<JniEnv1>, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallStaticLongMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JFloat Function(ffi.Pointer<JniEnv1>, JClass, JMethodID)>>
CallStaticFloatMethod;
external ffi.Pointer<ffi.Void> _CallStaticFloatMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JFloat Function(ffi.Pointer<JniEnv1>, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallStaticFloatMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JDouble Function(ffi.Pointer<JniEnv1>, JClass, JMethodID)>>
CallStaticDoubleMethod;
external ffi.Pointer<ffi.Void> _CallStaticDoubleMethodV;
external ffi.Pointer<
ffi.NativeFunction<
JDouble Function(ffi.Pointer<JniEnv1>, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallStaticDoubleMethodA;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JClass, JMethodID)>>
CallStaticVoidMethod;
external ffi.Pointer<ffi.Void> _CallStaticVoidMethodV;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JClass, JMethodID,
ffi.Pointer<JValue>)>> CallStaticVoidMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JFieldID Function(ffi.Pointer<JniEnv1>, JClass, ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Char>)>> GetStaticFieldID;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(ffi.Pointer<JniEnv1>, JClass, JFieldID)>>
GetStaticObjectField;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(ffi.Pointer<JniEnv1>, JClass, JFieldID)>>
GetStaticBooleanField;
external ffi.Pointer<
ffi.NativeFunction<
JByte Function(ffi.Pointer<JniEnv1>, JClass, JFieldID)>>
GetStaticByteField;
external ffi.Pointer<
ffi.NativeFunction<
JChar Function(ffi.Pointer<JniEnv1>, JClass, JFieldID)>>
GetStaticCharField;
external ffi.Pointer<
ffi.NativeFunction<
JShort Function(ffi.Pointer<JniEnv1>, JClass, JFieldID)>>
GetStaticShortField;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JniEnv1>, JClass, JFieldID)>>
GetStaticIntField;
external ffi.Pointer<
ffi.NativeFunction<
JLong Function(ffi.Pointer<JniEnv1>, JClass, JFieldID)>>
GetStaticLongField;
external ffi.Pointer<
ffi.NativeFunction<
JFloat Function(ffi.Pointer<JniEnv1>, JClass, JFieldID)>>
GetStaticFloatField;
external ffi.Pointer<
ffi.NativeFunction<
JDouble Function(ffi.Pointer<JniEnv1>, JClass, JFieldID)>>
GetStaticDoubleField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JClass, JFieldID, JObject)>>
SetStaticObjectField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JClass, JFieldID, JBoolean)>>
SetStaticBooleanField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JClass, JFieldID, JByte)>>
SetStaticByteField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JClass, JFieldID, JChar)>>
SetStaticCharField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JClass, JFieldID, JShort)>>
SetStaticShortField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JClass, JFieldID, JInt)>>
SetStaticIntField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JClass, JFieldID, JLong)>>
SetStaticLongField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JClass, JFieldID, JFloat)>>
SetStaticFloatField;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JClass, JFieldID, JDouble)>>
SetStaticDoubleField;
external ffi.Pointer<
ffi.NativeFunction<
JString Function(
ffi.Pointer<JniEnv1>, ffi.Pointer<JChar>, JSize)>> NewString;
external ffi.Pointer<
ffi.NativeFunction<JSize Function(ffi.Pointer<JniEnv1>, JString)>>
GetStringLength;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JChar> Function(
ffi.Pointer<JniEnv1>, JString, ffi.Pointer<JBoolean>)>>
GetStringChars;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JString, ffi.Pointer<JChar>)>>
ReleaseStringChars;
external ffi.Pointer<
ffi.NativeFunction<
JString Function(ffi.Pointer<JniEnv1>, ffi.Pointer<ffi.Char>)>>
NewStringUTF;
external ffi.Pointer<
ffi.NativeFunction<JSize Function(ffi.Pointer<JniEnv1>, JString)>>
GetStringUTFLength;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<ffi.Char> Function(
ffi.Pointer<JniEnv1>, JString, ffi.Pointer<JBoolean>)>>
GetStringUTFChars;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JString, ffi.Pointer<ffi.Char>)>>
ReleaseStringUTFChars;
external ffi.Pointer<
ffi.NativeFunction<JSize Function(ffi.Pointer<JniEnv1>, JArray)>>
GetArrayLength;
external ffi.Pointer<
ffi.NativeFunction<
JObjectArray Function(
ffi.Pointer<JniEnv1>, JSize, JClass, JObject)>> NewObjectArray;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(ffi.Pointer<JniEnv1>, JObjectArray, JSize)>>
GetObjectArrayElement;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JObjectArray, JSize, JObject)>>
SetObjectArrayElement;
external ffi.Pointer<
ffi.NativeFunction<
JBooleanArray Function(ffi.Pointer<JniEnv1>, JSize)>> NewBooleanArray;
external ffi.Pointer<
ffi.NativeFunction<JByteArray Function(ffi.Pointer<JniEnv1>, JSize)>>
NewByteArray;
external ffi.Pointer<
ffi.NativeFunction<JCharArray Function(ffi.Pointer<JniEnv1>, JSize)>>
NewCharArray;
external ffi.Pointer<
ffi.NativeFunction<JShortArray Function(ffi.Pointer<JniEnv1>, JSize)>>
NewShortArray;
external ffi.Pointer<
ffi.NativeFunction<JIntArray Function(ffi.Pointer<JniEnv1>, JSize)>>
NewIntArray;
external ffi.Pointer<
ffi.NativeFunction<JLongArray Function(ffi.Pointer<JniEnv1>, JSize)>>
NewLongArray;
external ffi.Pointer<
ffi.NativeFunction<JFloatArray Function(ffi.Pointer<JniEnv1>, JSize)>>
NewFloatArray;
external ffi.Pointer<
ffi.NativeFunction<
JDoubleArray Function(ffi.Pointer<JniEnv1>, JSize)>> NewDoubleArray;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JBoolean> Function(
ffi.Pointer<JniEnv1>, JBooleanArray, ffi.Pointer<JBoolean>)>>
GetBooleanArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JByte> Function(
ffi.Pointer<JniEnv1>, JByteArray, ffi.Pointer<JBoolean>)>>
GetByteArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JChar> Function(
ffi.Pointer<JniEnv1>, JCharArray, ffi.Pointer<JBoolean>)>>
GetCharArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JShort> Function(
ffi.Pointer<JniEnv1>, JShortArray, ffi.Pointer<JBoolean>)>>
GetShortArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JInt> Function(
ffi.Pointer<JniEnv1>, JIntArray, ffi.Pointer<JBoolean>)>>
GetIntArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JLong> Function(
ffi.Pointer<JniEnv1>, JLongArray, ffi.Pointer<JBoolean>)>>
GetLongArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JFloat> Function(
ffi.Pointer<JniEnv1>, JFloatArray, ffi.Pointer<JBoolean>)>>
GetFloatArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JDouble> Function(
ffi.Pointer<JniEnv1>, JDoubleArray, ffi.Pointer<JBoolean>)>>
GetDoubleArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JBooleanArray,
ffi.Pointer<JBoolean>, JInt)>> ReleaseBooleanArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JByteArray, ffi.Pointer<JByte>, JInt)>>
ReleaseByteArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JCharArray, ffi.Pointer<JChar>, JInt)>>
ReleaseCharArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JShortArray,
ffi.Pointer<JShort>, JInt)>> ReleaseShortArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JIntArray, ffi.Pointer<JInt>, JInt)>>
ReleaseIntArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JLongArray, ffi.Pointer<JLong>, JInt)>>
ReleaseLongArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JFloatArray,
ffi.Pointer<JFloat>, JInt)>> ReleaseFloatArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JDoubleArray,
ffi.Pointer<JDouble>, JInt)>> ReleaseDoubleArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JBooleanArray, JSize, JSize,
ffi.Pointer<JBoolean>)>> GetBooleanArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JByteArray, JSize, JSize,
ffi.Pointer<JByte>)>> GetByteArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JCharArray, JSize, JSize,
ffi.Pointer<JChar>)>> GetCharArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JShortArray, JSize, JSize,
ffi.Pointer<JShort>)>> GetShortArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JIntArray, JSize, JSize,
ffi.Pointer<JInt>)>> GetIntArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JLongArray, JSize, JSize,
ffi.Pointer<JLong>)>> GetLongArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JFloatArray, JSize, JSize,
ffi.Pointer<JFloat>)>> GetFloatArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JDoubleArray, JSize, JSize,
ffi.Pointer<JDouble>)>> GetDoubleArrayRegion;
/// spec shows these without const; some jni.h do, some don't
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JBooleanArray, JSize, JSize,
ffi.Pointer<JBoolean>)>> SetBooleanArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JByteArray, JSize, JSize,
ffi.Pointer<JByte>)>> SetByteArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JCharArray, JSize, JSize,
ffi.Pointer<JChar>)>> SetCharArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JShortArray, JSize, JSize,
ffi.Pointer<JShort>)>> SetShortArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JIntArray, JSize, JSize,
ffi.Pointer<JInt>)>> SetIntArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JLongArray, JSize, JSize,
ffi.Pointer<JLong>)>> SetLongArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JFloatArray, JSize, JSize,
ffi.Pointer<JFloat>)>> SetFloatArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JDoubleArray, JSize, JSize,
ffi.Pointer<JDouble>)>> SetDoubleArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(ffi.Pointer<JniEnv1>, JClass,
ffi.Pointer<JNINativeMethod>, JInt)>> RegisterNatives;
external ffi.Pointer<
ffi.NativeFunction<JInt Function(ffi.Pointer<JniEnv1>, JClass)>>
UnregisterNatives;
external ffi.Pointer<
ffi.NativeFunction<JInt Function(ffi.Pointer<JniEnv1>, JObject)>>
MonitorEnter;
external ffi.Pointer<
ffi.NativeFunction<JInt Function(ffi.Pointer<JniEnv1>, JObject)>>
MonitorExit;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(
ffi.Pointer<JniEnv1>, ffi.Pointer<ffi.Pointer<JavaVM>>)>>
GetJavaVM;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JString, JSize, JSize,
ffi.Pointer<JChar>)>> GetStringRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(ffi.Pointer<JniEnv1>, JString, JSize, JSize,
ffi.Pointer<ffi.Char>)>> GetStringUTFRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<ffi.Void> Function(
ffi.Pointer<JniEnv1>, JArray, ffi.Pointer<JBoolean>)>>
GetPrimitiveArrayCritical;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JArray, ffi.Pointer<ffi.Void>, JInt)>>
ReleasePrimitiveArrayCritical;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JChar> Function(
ffi.Pointer<JniEnv1>, JString, ffi.Pointer<JBoolean>)>>
GetStringCritical;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<JniEnv1>, JString, ffi.Pointer<JChar>)>>
ReleaseStringCritical;
external ffi.Pointer<
ffi.NativeFunction<JWeak Function(ffi.Pointer<JniEnv1>, JObject)>>
NewWeakGlobalRef;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(ffi.Pointer<JniEnv1>, JWeak)>>
DeleteWeakGlobalRef;
external ffi
.Pointer<ffi.NativeFunction<JBoolean Function(ffi.Pointer<JniEnv1>)>>
ExceptionCheck;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(
ffi.Pointer<JniEnv1>, ffi.Pointer<ffi.Void>, JLong)>>
NewDirectByteBuffer;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<ffi.Void> Function(ffi.Pointer<JniEnv1>, JObject)>>
GetDirectBufferAddress;
external ffi.Pointer<
ffi.NativeFunction<JLong Function(ffi.Pointer<JniEnv1>, JObject)>>
GetDirectBufferCapacity;
/// added in JNI 1.6
external ffi.Pointer<
ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<JniEnv1>, JObject)>>
GetObjectRefType;
}
typedef JniEnv1 = ffi.Pointer<JNINativeInterface>;
typedef JClass = JObject;
/// "cardinal indices and sizes"
typedef JSize = JInt;
typedef JMethodID = ffi.Pointer<jmethodID_>;
typedef JFieldID = ffi.Pointer<jfieldID_>;
typedef JThrowable = JObject;
typedef JString = JObject;
typedef JArray = JObject;
typedef JObjectArray = JArray;
typedef JBooleanArray = JArray;
typedef JByteArray = JArray;
typedef JCharArray = JArray;
typedef JShortArray = JArray;
typedef JIntArray = JArray;
typedef JLongArray = JArray;
typedef JFloatArray = JArray;
typedef JDoubleArray = JArray;
typedef JWeak = JObject;
class JavaVMAttachArgs extends ffi.Struct {
/// must be >= JNI_VERSION_1_2
@JInt()
external int version;
/// NULL or name of thread as modified UTF-8 str
external ffi.Pointer<ffi.Char> name;
/// global ref of a ThreadGroup object, or NULL
external JObject group;
}
/// JNI 1.2+ initialization. (As of 1.6, the pre-1.2 structures are no
/// longer supported.)
class JavaVMOption extends ffi.Struct {
external ffi.Pointer<ffi.Char> optionString;
external ffi.Pointer<ffi.Void> extraInfo;
}
class JavaVMInitArgs extends ffi.Struct {
/// use JNI_VERSION_1_2 or later
@JInt()
external int version;
@JInt()
external int nOptions;
external ffi.Pointer<JavaVMOption> options;
@JBoolean()
external int ignoreUnrecognized;
}
/// Types used by JNI API to distinguish between primitive types.
abstract class JniType {
static const int booleanType = 0;
static const int byteType = 1;
static const int shortType = 2;
static const int charType = 3;
static const int intType = 4;
static const int longType = 5;
static const int floatType = 6;
static const int doubleType = 7;
static const int objectType = 8;
static const int voidType = 9;
}
/// Result type for use by JNI.
///
/// If [exception] is null, it means the result is valid.
/// It's assumed that the caller knows the expected type in [result].
class JniResult extends ffi.Struct {
external JValue result;
external JThrowable exception;
}
/// Similar to [JniResult] but for class lookups.
class JniClassLookupResult extends ffi.Struct {
external JClass classRef;
external JThrowable exception;
}
/// Similar to [JniResult] but for method/field ID lookups.
class JniPointerResult extends ffi.Struct {
external ffi.Pointer<ffi.Void> id;
external JThrowable exception;
}
/// JniExceptionDetails holds 2 jstring objects, one is the result of
/// calling `toString` on exception object, other is stack trace;
class JniExceptionDetails extends ffi.Struct {
external JString message;
external JString stacktrace;
}
/// This struct contains functions which wrap method call / field access conveniently along with
/// exception checking.
///
/// Flutter embedding checks for pending JNI exceptions before an FFI transition, which requires us
/// to check for and clear the exception before returning to dart code, which requires these functions
/// to return result types.
class JniAccessors extends ffi.Struct {
external ffi.Pointer<
ffi.NativeFunction<
JniClassLookupResult Function(ffi.Pointer<ffi.Char>)>> getClass;
external ffi.Pointer<
ffi.NativeFunction<
JniPointerResult Function(
JClass, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>>
getFieldID;
external ffi.Pointer<
ffi.NativeFunction<
JniPointerResult Function(
JClass, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>>
getStaticFieldID;
external ffi.Pointer<
ffi.NativeFunction<
JniPointerResult Function(
JClass, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>>
getMethodID;
external ffi.Pointer<
ffi.NativeFunction<
JniPointerResult Function(
JClass, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>>
getStaticMethodID;
external ffi.Pointer<
ffi.NativeFunction<
JniResult Function(JClass, JMethodID, ffi.Pointer<JValue>)>>
newObject;
external ffi.Pointer<
ffi.NativeFunction<
JniResult Function(
JObject, JMethodID, ffi.Int, ffi.Pointer<JValue>)>> callMethod;
external ffi.Pointer<
ffi.NativeFunction<
JniResult Function(
JClass, JMethodID, ffi.Int, ffi.Pointer<JValue>)>>
callStaticMethod;
external ffi.Pointer<
ffi.NativeFunction<JniResult Function(JObject, JFieldID, ffi.Int)>>
getField;
external ffi.Pointer<
ffi.NativeFunction<JniResult Function(JClass, JFieldID, ffi.Int)>>
getStaticField;
external ffi
.Pointer<ffi.NativeFunction<JniExceptionDetails Function(JThrowable)>>
getExceptionDetails;
}
extension JniAccessorsExtension on ffi.Pointer<JniAccessors> {
JniClassLookupResult getClass(ffi.Pointer<ffi.Char> internalName) {
return ref.getClass
.asFunction<JniClassLookupResult Function(ffi.Pointer<ffi.Char>)>()(
internalName);
}
JniPointerResult getFieldID(JClass cls, ffi.Pointer<ffi.Char> fieldName,
ffi.Pointer<ffi.Char> signature) {
return ref.getFieldID.asFunction<
JniPointerResult Function(JClass, ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Char>)>()(cls, fieldName, signature);
}
JniPointerResult getStaticFieldID(JClass cls, ffi.Pointer<ffi.Char> fieldName,
ffi.Pointer<ffi.Char> signature) {
return ref.getStaticFieldID.asFunction<
JniPointerResult Function(JClass, ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Char>)>()(cls, fieldName, signature);
}
JniPointerResult getMethodID(JClass cls, ffi.Pointer<ffi.Char> methodName,
ffi.Pointer<ffi.Char> signature) {
return ref.getMethodID.asFunction<
JniPointerResult Function(JClass, ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Char>)>()(cls, methodName, signature);
}
JniPointerResult getStaticMethodID(JClass cls,
ffi.Pointer<ffi.Char> methodName, ffi.Pointer<ffi.Char> signature) {
return ref.getStaticMethodID.asFunction<
JniPointerResult Function(JClass, ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Char>)>()(cls, methodName, signature);
}
JniResult newObject(JClass cls, JMethodID ctor, ffi.Pointer<JValue> args) {
return ref.newObject.asFunction<
JniResult Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(cls, ctor, args);
}
JniResult callMethod(
JObject obj, JMethodID methodID, int callType, ffi.Pointer<JValue> args) {
return ref.callMethod.asFunction<
JniResult Function(JObject, JMethodID, int, ffi.Pointer<JValue>)>()(
obj, methodID, callType, args);
}
JniResult callStaticMethod(
JClass cls, JMethodID methodID, int callType, ffi.Pointer<JValue> args) {
return ref.callStaticMethod.asFunction<
JniResult Function(JClass, JMethodID, int, ffi.Pointer<JValue>)>()(
cls, methodID, callType, args);
}
JniResult getField(JObject obj, JFieldID fieldID, int callType) {
return ref.getField
.asFunction<JniResult Function(JObject, JFieldID, int)>()(
obj, fieldID, callType);
}
JniResult getStaticField(JClass cls, JFieldID fieldID, int callType) {
return ref.getStaticField
.asFunction<JniResult Function(JClass, JFieldID, int)>()(
cls, fieldID, callType);
}
JniExceptionDetails getExceptionDetails(JThrowable exception) {
return ref.getExceptionDetails
.asFunction<JniExceptionDetails Function(JThrowable)>()(exception);
}
}
/// Wrapper over JNIEnv in the JNI API, which can be used from multiple Dart
/// Threads.
///
/// It consists of wrappers to JNIEnv methods which manage the thread-local
/// JNIEnv pointer in C code. Additionally, any returned local reference value
/// is converted to global reference.
///
/// For the documentation on methods themselves, see the JNI Specification at
/// https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html
///
/// Apart from the specification, the Android NDK's JNI page consists of useful
/// information about using the JNI:
/// https://developer.android.com/training/articles/perf-jni
class GlobalJniEnv extends ffi.Struct {
external ffi.Pointer<ffi.NativeFunction<JInt Function()>> GetVersion;
external ffi.Pointer<
ffi.NativeFunction<
JClass Function(
ffi.Pointer<ffi.Char>, JObject, ffi.Pointer<JByte>, JSize)>>
DefineClass;
external ffi
.Pointer<ffi.NativeFunction<JClass Function(ffi.Pointer<ffi.Char>)>>
FindClass;
external ffi.Pointer<ffi.NativeFunction<JMethodID Function(JObject)>>
FromReflectedMethod;
external ffi.Pointer<ffi.NativeFunction<JFieldID Function(JObject)>>
FromReflectedField;
external ffi.Pointer<
ffi.NativeFunction<JObject Function(JClass, JMethodID, JBoolean)>>
ToReflectedMethod;
external ffi.Pointer<ffi.NativeFunction<JClass Function(JClass)>>
GetSuperclass;
external ffi.Pointer<ffi.NativeFunction<JBoolean Function(JClass, JClass)>>
IsAssignableFrom;
external ffi.Pointer<
ffi.NativeFunction<JObject Function(JClass, JFieldID, JBoolean)>>
ToReflectedField;
external ffi.Pointer<ffi.NativeFunction<JInt Function(JThrowable)>> Throw;
external ffi.Pointer<
ffi.NativeFunction<JInt Function(JClass, ffi.Pointer<ffi.Char>)>>
ThrowNew;
external ffi.Pointer<ffi.NativeFunction<JThrowable Function()>>
ExceptionOccurred;
external ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>
ExceptionDescribe;
external ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> ExceptionClear;
external ffi
.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Char>)>>
FatalError;
external ffi.Pointer<ffi.NativeFunction<JInt Function(JInt)>> PushLocalFrame;
external ffi.Pointer<ffi.NativeFunction<JObject Function(JObject)>>
PopLocalFrame;
external ffi.Pointer<ffi.NativeFunction<JObject Function(JObject)>>
NewGlobalRef;
external ffi.Pointer<ffi.NativeFunction<ffi.Void Function(JObject)>>
DeleteGlobalRef;
external ffi.Pointer<ffi.NativeFunction<JBoolean Function(JObject, JObject)>>
IsSameObject;
external ffi.Pointer<ffi.NativeFunction<JInt Function(JInt)>>
EnsureLocalCapacity;
external ffi.Pointer<ffi.NativeFunction<JObject Function(JClass)>>
AllocObject;
external ffi.Pointer<ffi.NativeFunction<JObject Function(JClass, JMethodID)>>
NewObject;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(JClass, JMethodID, ffi.Pointer<JValue>)>> NewObjectA;
external ffi.Pointer<ffi.NativeFunction<JClass Function(JObject)>>
GetObjectClass;
external ffi.Pointer<ffi.NativeFunction<JBoolean Function(JObject, JClass)>>
IsInstanceOf;
external ffi.Pointer<
ffi.NativeFunction<
JMethodID Function(
JClass, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>>
GetMethodID;
external ffi.Pointer<ffi.NativeFunction<JObject Function(JObject, JMethodID)>>
CallObjectMethod;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(JObject, JMethodID, ffi.Pointer<JValue>)>>
CallObjectMethodA;
external ffi
.Pointer<ffi.NativeFunction<JBoolean Function(JObject, JMethodID)>>
CallBooleanMethod;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(JObject, JMethodID, ffi.Pointer<JValue>)>>
CallBooleanMethodA;
external ffi.Pointer<ffi.NativeFunction<JByte Function(JObject, JMethodID)>>
CallByteMethod;
external ffi.Pointer<
ffi.NativeFunction<
JByte Function(JObject, JMethodID, ffi.Pointer<JValue>)>>
CallByteMethodA;
external ffi.Pointer<ffi.NativeFunction<JChar Function(JObject, JMethodID)>>
CallCharMethod;
external ffi.Pointer<
ffi.NativeFunction<
JChar Function(JObject, JMethodID, ffi.Pointer<JValue>)>>
CallCharMethodA;
external ffi.Pointer<ffi.NativeFunction<JShort Function(JObject, JMethodID)>>
CallShortMethod;
external ffi.Pointer<
ffi.NativeFunction<
JShort Function(JObject, JMethodID, ffi.Pointer<JValue>)>>
CallShortMethodA;
external ffi.Pointer<ffi.NativeFunction<JInt Function(JObject, JMethodID)>>
CallIntMethod;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(JObject, JMethodID, ffi.Pointer<JValue>)>>
CallIntMethodA;
external ffi.Pointer<ffi.NativeFunction<JLong Function(JObject, JMethodID)>>
CallLongMethod;
external ffi.Pointer<
ffi.NativeFunction<
JLong Function(JObject, JMethodID, ffi.Pointer<JValue>)>>
CallLongMethodA;
external ffi.Pointer<ffi.NativeFunction<JFloat Function(JObject, JMethodID)>>
CallFloatMethod;
external ffi.Pointer<
ffi.NativeFunction<
JFloat Function(JObject, JMethodID, ffi.Pointer<JValue>)>>
CallFloatMethodA;
external ffi.Pointer<ffi.NativeFunction<JDouble Function(JObject, JMethodID)>>
CallDoubleMethod;
external ffi.Pointer<
ffi.NativeFunction<
JDouble Function(JObject, JMethodID, ffi.Pointer<JValue>)>>
CallDoubleMethodA;
external ffi
.Pointer<ffi.NativeFunction<ffi.Void Function(JObject, JMethodID)>>
CallVoidMethod;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JObject, JMethodID, ffi.Pointer<JValue>)>>
CallVoidMethodA;
external ffi.Pointer<
ffi.NativeFunction<JObject Function(JObject, JClass, JMethodID)>>
CallNonvirtualObjectMethod;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(
JObject, JClass, JMethodID, ffi.Pointer<JValue>)>>
CallNonvirtualObjectMethodA;
external ffi.Pointer<
ffi.NativeFunction<JBoolean Function(JObject, JClass, JMethodID)>>
CallNonvirtualBooleanMethod;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(
JObject, JClass, JMethodID, ffi.Pointer<JValue>)>>
CallNonvirtualBooleanMethodA;
external ffi.Pointer<
ffi.NativeFunction<JByte Function(JObject, JClass, JMethodID)>>
CallNonvirtualByteMethod;
external ffi.Pointer<
ffi.NativeFunction<
JByte Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>>
CallNonvirtualByteMethodA;
external ffi.Pointer<
ffi.NativeFunction<JChar Function(JObject, JClass, JMethodID)>>
CallNonvirtualCharMethod;
external ffi.Pointer<
ffi.NativeFunction<
JChar Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>>
CallNonvirtualCharMethodA;
external ffi.Pointer<
ffi.NativeFunction<JShort Function(JObject, JClass, JMethodID)>>
CallNonvirtualShortMethod;
external ffi.Pointer<
ffi.NativeFunction<
JShort Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>>
CallNonvirtualShortMethodA;
external ffi.Pointer<
ffi.NativeFunction<JInt Function(JObject, JClass, JMethodID)>>
CallNonvirtualIntMethod;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>>
CallNonvirtualIntMethodA;
external ffi.Pointer<
ffi.NativeFunction<JLong Function(JObject, JClass, JMethodID)>>
CallNonvirtualLongMethod;
external ffi.Pointer<
ffi.NativeFunction<
JLong Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>>
CallNonvirtualLongMethodA;
external ffi.Pointer<
ffi.NativeFunction<JFloat Function(JObject, JClass, JMethodID)>>
CallNonvirtualFloatMethod;
external ffi.Pointer<
ffi.NativeFunction<
JFloat Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>>
CallNonvirtualFloatMethodA;
external ffi.Pointer<
ffi.NativeFunction<JDouble Function(JObject, JClass, JMethodID)>>
CallNonvirtualDoubleMethod;
external ffi.Pointer<
ffi.NativeFunction<
JDouble Function(
JObject, JClass, JMethodID, ffi.Pointer<JValue>)>>
CallNonvirtualDoubleMethodA;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JObject, JClass, JMethodID)>>
CallNonvirtualVoidMethod;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
JObject, JClass, JMethodID, ffi.Pointer<JValue>)>>
CallNonvirtualVoidMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JFieldID Function(
JClass, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>>
GetFieldID;
external ffi.Pointer<ffi.NativeFunction<JObject Function(JObject, JFieldID)>>
GetObjectField;
external ffi.Pointer<ffi.NativeFunction<JBoolean Function(JObject, JFieldID)>>
GetBooleanField;
external ffi.Pointer<ffi.NativeFunction<JByte Function(JObject, JFieldID)>>
GetByteField;
external ffi.Pointer<ffi.NativeFunction<JChar Function(JObject, JFieldID)>>
GetCharField;
external ffi.Pointer<ffi.NativeFunction<JShort Function(JObject, JFieldID)>>
GetShortField;
external ffi.Pointer<ffi.NativeFunction<JInt Function(JObject, JFieldID)>>
GetIntField;
external ffi.Pointer<ffi.NativeFunction<JLong Function(JObject, JFieldID)>>
GetLongField;
external ffi.Pointer<ffi.NativeFunction<JFloat Function(JObject, JFieldID)>>
GetFloatField;
external ffi.Pointer<ffi.NativeFunction<JDouble Function(JObject, JFieldID)>>
GetDoubleField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JObject, JFieldID, JObject)>>
SetObjectField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JObject, JFieldID, JBoolean)>>
SetBooleanField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JObject, JFieldID, JByte)>>
SetByteField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JObject, JFieldID, JChar)>>
SetCharField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JObject, JFieldID, JShort)>>
SetShortField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JObject, JFieldID, JInt)>>
SetIntField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JObject, JFieldID, JLong)>>
SetLongField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JObject, JFieldID, JFloat)>>
SetFloatField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JObject, JFieldID, JDouble)>>
SetDoubleField;
external ffi.Pointer<
ffi.NativeFunction<
JMethodID Function(
JClass, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>>
GetStaticMethodID;
external ffi.Pointer<ffi.NativeFunction<JObject Function(JClass, JMethodID)>>
CallStaticObjectMethod;
external ffi.Pointer<
ffi.NativeFunction<
JObject Function(JClass, JMethodID, ffi.Pointer<JValue>)>>
CallStaticObjectMethodA;
external ffi.Pointer<ffi.NativeFunction<JBoolean Function(JClass, JMethodID)>>
CallStaticBooleanMethod;
external ffi.Pointer<
ffi.NativeFunction<
JBoolean Function(JClass, JMethodID, ffi.Pointer<JValue>)>>
CallStaticBooleanMethodA;
external ffi.Pointer<ffi.NativeFunction<JByte Function(JClass, JMethodID)>>
CallStaticByteMethod;
external ffi.Pointer<
ffi.NativeFunction<
JByte Function(JClass, JMethodID, ffi.Pointer<JValue>)>>
CallStaticByteMethodA;
external ffi.Pointer<ffi.NativeFunction<JChar Function(JClass, JMethodID)>>
CallStaticCharMethod;
external ffi.Pointer<
ffi.NativeFunction<
JChar Function(JClass, JMethodID, ffi.Pointer<JValue>)>>
CallStaticCharMethodA;
external ffi.Pointer<ffi.NativeFunction<JShort Function(JClass, JMethodID)>>
CallStaticShortMethod;
external ffi.Pointer<
ffi.NativeFunction<
JShort Function(JClass, JMethodID, ffi.Pointer<JValue>)>>
CallStaticShortMethodA;
external ffi.Pointer<ffi.NativeFunction<JInt Function(JClass, JMethodID)>>
CallStaticIntMethod;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(JClass, JMethodID, ffi.Pointer<JValue>)>>
CallStaticIntMethodA;
external ffi.Pointer<ffi.NativeFunction<JLong Function(JClass, JMethodID)>>
CallStaticLongMethod;
external ffi.Pointer<
ffi.NativeFunction<
JLong Function(JClass, JMethodID, ffi.Pointer<JValue>)>>
CallStaticLongMethodA;
external ffi.Pointer<ffi.NativeFunction<JFloat Function(JClass, JMethodID)>>
CallStaticFloatMethod;
external ffi.Pointer<
ffi.NativeFunction<
JFloat Function(JClass, JMethodID, ffi.Pointer<JValue>)>>
CallStaticFloatMethodA;
external ffi.Pointer<ffi.NativeFunction<JDouble Function(JClass, JMethodID)>>
CallStaticDoubleMethod;
external ffi.Pointer<
ffi.NativeFunction<
JDouble Function(JClass, JMethodID, ffi.Pointer<JValue>)>>
CallStaticDoubleMethodA;
external ffi.Pointer<ffi.NativeFunction<ffi.Void Function(JClass, JMethodID)>>
CallStaticVoidMethod;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JClass, JMethodID, ffi.Pointer<JValue>)>>
CallStaticVoidMethodA;
external ffi.Pointer<
ffi.NativeFunction<
JFieldID Function(
JClass, ffi.Pointer<ffi.Char>, ffi.Pointer<ffi.Char>)>>
GetStaticFieldID;
external ffi.Pointer<ffi.NativeFunction<JObject Function(JClass, JFieldID)>>
GetStaticObjectField;
external ffi.Pointer<ffi.NativeFunction<JBoolean Function(JClass, JFieldID)>>
GetStaticBooleanField;
external ffi.Pointer<ffi.NativeFunction<JByte Function(JClass, JFieldID)>>
GetStaticByteField;
external ffi.Pointer<ffi.NativeFunction<JChar Function(JClass, JFieldID)>>
GetStaticCharField;
external ffi.Pointer<ffi.NativeFunction<JShort Function(JClass, JFieldID)>>
GetStaticShortField;
external ffi.Pointer<ffi.NativeFunction<JInt Function(JClass, JFieldID)>>
GetStaticIntField;
external ffi.Pointer<ffi.NativeFunction<JLong Function(JClass, JFieldID)>>
GetStaticLongField;
external ffi.Pointer<ffi.NativeFunction<JFloat Function(JClass, JFieldID)>>
GetStaticFloatField;
external ffi.Pointer<ffi.NativeFunction<JDouble Function(JClass, JFieldID)>>
GetStaticDoubleField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JClass, JFieldID, JObject)>>
SetStaticObjectField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JClass, JFieldID, JBoolean)>>
SetStaticBooleanField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JClass, JFieldID, JByte)>>
SetStaticByteField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JClass, JFieldID, JChar)>>
SetStaticCharField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JClass, JFieldID, JShort)>>
SetStaticShortField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JClass, JFieldID, JInt)>>
SetStaticIntField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JClass, JFieldID, JLong)>>
SetStaticLongField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JClass, JFieldID, JFloat)>>
SetStaticFloatField;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JClass, JFieldID, JDouble)>>
SetStaticDoubleField;
external ffi.Pointer<
ffi.NativeFunction<JString Function(ffi.Pointer<JChar>, JSize)>>
NewString;
external ffi.Pointer<ffi.NativeFunction<JSize Function(JString)>>
GetStringLength;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JChar> Function(JString, ffi.Pointer<JBoolean>)>>
GetStringChars;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JString, ffi.Pointer<JChar>)>>
ReleaseStringChars;
external ffi
.Pointer<ffi.NativeFunction<JString Function(ffi.Pointer<ffi.Char>)>>
NewStringUTF;
external ffi.Pointer<ffi.NativeFunction<JSize Function(JString)>>
GetStringUTFLength;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<ffi.Char> Function(JString, ffi.Pointer<JBoolean>)>>
GetStringUTFChars;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JString, ffi.Pointer<ffi.Char>)>>
ReleaseStringUTFChars;
external ffi.Pointer<ffi.NativeFunction<JSize Function(JArray)>>
GetArrayLength;
external ffi.Pointer<
ffi.NativeFunction<JObjectArray Function(JSize, JClass, JObject)>>
NewObjectArray;
external ffi
.Pointer<ffi.NativeFunction<JObject Function(JObjectArray, JSize)>>
GetObjectArrayElement;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JObjectArray, JSize, JObject)>>
SetObjectArrayElement;
external ffi.Pointer<ffi.NativeFunction<JBooleanArray Function(JSize)>>
NewBooleanArray;
external ffi.Pointer<ffi.NativeFunction<JByteArray Function(JSize)>>
NewByteArray;
external ffi.Pointer<ffi.NativeFunction<JCharArray Function(JSize)>>
NewCharArray;
external ffi.Pointer<ffi.NativeFunction<JShortArray Function(JSize)>>
NewShortArray;
external ffi.Pointer<ffi.NativeFunction<JIntArray Function(JSize)>>
NewIntArray;
external ffi.Pointer<ffi.NativeFunction<JLongArray Function(JSize)>>
NewLongArray;
external ffi.Pointer<ffi.NativeFunction<JFloatArray Function(JSize)>>
NewFloatArray;
external ffi.Pointer<ffi.NativeFunction<JDoubleArray Function(JSize)>>
NewDoubleArray;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JBoolean> Function(
JBooleanArray, ffi.Pointer<JBoolean>)>> GetBooleanArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JByte> Function(JByteArray, ffi.Pointer<JBoolean>)>>
GetByteArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JChar> Function(JCharArray, ffi.Pointer<JBoolean>)>>
GetCharArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JShort> Function(JShortArray, ffi.Pointer<JBoolean>)>>
GetShortArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JInt> Function(JIntArray, ffi.Pointer<JBoolean>)>>
GetIntArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JLong> Function(JLongArray, ffi.Pointer<JBoolean>)>>
GetLongArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JFloat> Function(JFloatArray, ffi.Pointer<JBoolean>)>>
GetFloatArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JDouble> Function(
JDoubleArray, ffi.Pointer<JBoolean>)>> GetDoubleArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JBooleanArray, ffi.Pointer<JBoolean>, JInt)>>
ReleaseBooleanArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JByteArray, ffi.Pointer<JByte>, JInt)>>
ReleaseByteArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JCharArray, ffi.Pointer<JChar>, JInt)>>
ReleaseCharArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JShortArray, ffi.Pointer<JShort>, JInt)>>
ReleaseShortArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JIntArray, ffi.Pointer<JInt>, JInt)>>
ReleaseIntArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JLongArray, ffi.Pointer<JLong>, JInt)>>
ReleaseLongArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JFloatArray, ffi.Pointer<JFloat>, JInt)>>
ReleaseFloatArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JDoubleArray, ffi.Pointer<JDouble>, JInt)>>
ReleaseDoubleArrayElements;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
JBooleanArray, JSize, JSize, ffi.Pointer<JBoolean>)>>
GetBooleanArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JByteArray, JSize, JSize, ffi.Pointer<JByte>)>>
GetByteArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JCharArray, JSize, JSize, ffi.Pointer<JChar>)>>
GetCharArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
JShortArray, JSize, JSize, ffi.Pointer<JShort>)>>
GetShortArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JIntArray, JSize, JSize, ffi.Pointer<JInt>)>>
GetIntArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JLongArray, JSize, JSize, ffi.Pointer<JLong>)>>
GetLongArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
JFloatArray, JSize, JSize, ffi.Pointer<JFloat>)>>
GetFloatArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
JDoubleArray, JSize, JSize, ffi.Pointer<JDouble>)>>
GetDoubleArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
JBooleanArray, JSize, JSize, ffi.Pointer<JBoolean>)>>
SetBooleanArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JByteArray, JSize, JSize, ffi.Pointer<JByte>)>>
SetByteArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JCharArray, JSize, JSize, ffi.Pointer<JChar>)>>
SetCharArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
JShortArray, JSize, JSize, ffi.Pointer<JShort>)>>
SetShortArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JIntArray, JSize, JSize, ffi.Pointer<JInt>)>>
SetIntArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JLongArray, JSize, JSize, ffi.Pointer<JLong>)>>
SetLongArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
JFloatArray, JSize, JSize, ffi.Pointer<JFloat>)>>
SetFloatArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
JDoubleArray, JSize, JSize, ffi.Pointer<JDouble>)>>
SetDoubleArrayRegion;
external ffi.Pointer<
ffi.NativeFunction<
JInt Function(JClass, ffi.Pointer<JNINativeMethod>, JInt)>>
RegisterNatives;
external ffi.Pointer<ffi.NativeFunction<JInt Function(JClass)>>
UnregisterNatives;
external ffi.Pointer<ffi.NativeFunction<JInt Function(JObject)>> MonitorEnter;
external ffi.Pointer<ffi.NativeFunction<JInt Function(JObject)>> MonitorExit;
external ffi.Pointer<
ffi.NativeFunction<JInt Function(ffi.Pointer<ffi.Pointer<JavaVM>>)>>
GetJavaVM;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JString, JSize, JSize, ffi.Pointer<JChar>)>>
GetStringRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JString, JSize, JSize, ffi.Pointer<ffi.Char>)>>
GetStringUTFRegion;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<ffi.Void> Function(JArray, ffi.Pointer<JBoolean>)>>
GetPrimitiveArrayCritical;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(JArray, ffi.Pointer<ffi.Void>, JInt)>>
ReleasePrimitiveArrayCritical;
external ffi.Pointer<
ffi.NativeFunction<
ffi.Pointer<JChar> Function(JString, ffi.Pointer<JBoolean>)>>
GetStringCritical;
external ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(JString, ffi.Pointer<JChar>)>>
ReleaseStringCritical;
external ffi.Pointer<ffi.NativeFunction<JWeak Function(JObject)>>
NewWeakGlobalRef;
external ffi.Pointer<ffi.NativeFunction<ffi.Void Function(JWeak)>>
DeleteWeakGlobalRef;
external ffi.Pointer<ffi.NativeFunction<JBoolean Function()>> ExceptionCheck;
external ffi.Pointer<
ffi.NativeFunction<JObject Function(ffi.Pointer<ffi.Void>, JLong)>>
NewDirectByteBuffer;
external ffi
.Pointer<ffi.NativeFunction<ffi.Pointer<ffi.Void> Function(JObject)>>
GetDirectBufferAddress;
external ffi.Pointer<ffi.NativeFunction<JLong Function(JObject)>>
GetDirectBufferCapacity;
external ffi.Pointer<ffi.NativeFunction<ffi.Int32 Function(JObject)>>
GetObjectRefType;
}
extension GlobalJniEnvExtension on ffi.Pointer<GlobalJniEnv> {
int GetVersion() {
return ref.GetVersion.asFunction<int Function()>()();
}
JClass DefineClass(ffi.Pointer<ffi.Char> name, JObject loader,
ffi.Pointer<JByte> buf, int bufLen) {
return ref.DefineClass.asFunction<
JClass Function(ffi.Pointer<ffi.Char>, JObject, ffi.Pointer<JByte>,
int)>()(name, loader, buf, bufLen);
}
JClass FindClass(ffi.Pointer<ffi.Char> name) {
return ref.FindClass.asFunction<JClass Function(ffi.Pointer<ffi.Char>)>()(
name);
}
JMethodID FromReflectedMethod(JObject method) {
return ref.FromReflectedMethod.asFunction<JMethodID Function(JObject)>()(
method);
}
JFieldID FromReflectedField(JObject field) {
return ref.FromReflectedField.asFunction<JFieldID Function(JObject)>()(
field);
}
JObject ToReflectedMethod(JClass cls, JMethodID methodId, int isStatic) {
return ref.ToReflectedMethod.asFunction<
JObject Function(JClass, JMethodID, int)>()(cls, methodId, isStatic);
}
JClass GetSuperclass(JClass clazz) {
return ref.GetSuperclass.asFunction<JClass Function(JClass)>()(clazz);
}
int IsAssignableFrom(JClass clazz1, JClass clazz2) {
return ref.IsAssignableFrom.asFunction<int Function(JClass, JClass)>()(
clazz1, clazz2);
}
JObject ToReflectedField(JClass cls, JFieldID fieldID, int isStatic) {
return ref.ToReflectedField.asFunction<
JObject Function(JClass, JFieldID, int)>()(cls, fieldID, isStatic);
}
int Throw(JThrowable obj) {
return ref.Throw.asFunction<int Function(JThrowable)>()(obj);
}
int ThrowNew(JClass clazz, ffi.Pointer<ffi.Char> message) {
return ref.ThrowNew.asFunction<
int Function(JClass, ffi.Pointer<ffi.Char>)>()(clazz, message);
}
JThrowable ExceptionOccurred() {
return ref.ExceptionOccurred.asFunction<JThrowable Function()>()();
}
void ExceptionDescribe() {
return ref.ExceptionDescribe.asFunction<void Function()>()();
}
void ExceptionClear() {
return ref.ExceptionClear.asFunction<void Function()>()();
}
void FatalError(ffi.Pointer<ffi.Char> msg) {
return ref.FatalError.asFunction<void Function(ffi.Pointer<ffi.Char>)>()(
msg);
}
int PushLocalFrame(int capacity) {
return ref.PushLocalFrame.asFunction<int Function(int)>()(capacity);
}
JObject PopLocalFrame(JObject result) {
return ref.PopLocalFrame.asFunction<JObject Function(JObject)>()(result);
}
JObject NewGlobalRef(JObject obj) {
return ref.NewGlobalRef.asFunction<JObject Function(JObject)>()(obj);
}
void DeleteGlobalRef(JObject globalRef) {
return ref.DeleteGlobalRef.asFunction<void Function(JObject)>()(globalRef);
}
int IsSameObject(JObject ref1, JObject ref2) {
return ref.IsSameObject.asFunction<int Function(JObject, JObject)>()(
ref1, ref2);
}
int EnsureLocalCapacity(int capacity) {
return ref.EnsureLocalCapacity.asFunction<int Function(int)>()(capacity);
}
JObject AllocObject(JClass clazz) {
return ref.AllocObject.asFunction<JObject Function(JClass)>()(clazz);
}
JObject NewObject(JClass arg1, JMethodID arg2) {
return ref.NewObject.asFunction<JObject Function(JClass, JMethodID)>()(
arg1, arg2);
}
JObject NewObjectA(
JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.NewObjectA.asFunction<
JObject Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(clazz, methodID, args);
}
JClass GetObjectClass(JObject obj) {
return ref.GetObjectClass.asFunction<JClass Function(JObject)>()(obj);
}
int IsInstanceOf(JObject obj, JClass clazz) {
return ref.IsInstanceOf.asFunction<int Function(JObject, JClass)>()(
obj, clazz);
}
JMethodID GetMethodID(
JClass clazz, ffi.Pointer<ffi.Char> name, ffi.Pointer<ffi.Char> sig) {
return ref.GetMethodID.asFunction<
JMethodID Function(JClass, ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Char>)>()(clazz, name, sig);
}
JObject CallObjectMethod(JObject arg1, JMethodID arg2) {
return ref.CallObjectMethod.asFunction<
JObject Function(JObject, JMethodID)>()(arg1, arg2);
}
JObject CallObjectMethodA(
JObject obj, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallObjectMethodA.asFunction<
JObject Function(
JObject, JMethodID, ffi.Pointer<JValue>)>()(obj, methodID, args);
}
int CallBooleanMethod(JObject arg1, JMethodID arg2) {
return ref.CallBooleanMethod.asFunction<int Function(JObject, JMethodID)>()(
arg1, arg2);
}
int CallBooleanMethodA(
JObject obj, JMethodID methodId, ffi.Pointer<JValue> args) {
return ref.CallBooleanMethodA.asFunction<
int Function(
JObject, JMethodID, ffi.Pointer<JValue>)>()(obj, methodId, args);
}
int CallByteMethod(JObject arg1, JMethodID arg2) {
return ref.CallByteMethod.asFunction<int Function(JObject, JMethodID)>()(
arg1, arg2);
}
int CallByteMethodA(
JObject obj, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallByteMethodA.asFunction<
int Function(
JObject, JMethodID, ffi.Pointer<JValue>)>()(obj, methodID, args);
}
int CallCharMethod(JObject arg1, JMethodID arg2) {
return ref.CallCharMethod.asFunction<int Function(JObject, JMethodID)>()(
arg1, arg2);
}
int CallCharMethodA(
JObject obj, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallCharMethodA.asFunction<
int Function(
JObject, JMethodID, ffi.Pointer<JValue>)>()(obj, methodID, args);
}
int CallShortMethod(JObject arg1, JMethodID arg2) {
return ref.CallShortMethod.asFunction<int Function(JObject, JMethodID)>()(
arg1, arg2);
}
int CallShortMethodA(
JObject obj, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallShortMethodA.asFunction<
int Function(
JObject, JMethodID, ffi.Pointer<JValue>)>()(obj, methodID, args);
}
int CallIntMethod(JObject arg1, JMethodID arg2) {
return ref.CallIntMethod.asFunction<int Function(JObject, JMethodID)>()(
arg1, arg2);
}
int CallIntMethodA(
JObject obj, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallIntMethodA.asFunction<
int Function(
JObject, JMethodID, ffi.Pointer<JValue>)>()(obj, methodID, args);
}
int CallLongMethod(JObject arg1, JMethodID arg2) {
return ref.CallLongMethod.asFunction<int Function(JObject, JMethodID)>()(
arg1, arg2);
}
int CallLongMethodA(
JObject obj, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallLongMethodA.asFunction<
int Function(
JObject, JMethodID, ffi.Pointer<JValue>)>()(obj, methodID, args);
}
double CallFloatMethod(JObject arg1, JMethodID arg2) {
return ref.CallFloatMethod.asFunction<
double Function(JObject, JMethodID)>()(arg1, arg2);
}
double CallFloatMethodA(
JObject obj, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallFloatMethodA.asFunction<
double Function(
JObject, JMethodID, ffi.Pointer<JValue>)>()(obj, methodID, args);
}
double CallDoubleMethod(JObject arg1, JMethodID arg2) {
return ref.CallDoubleMethod.asFunction<
double Function(JObject, JMethodID)>()(arg1, arg2);
}
double CallDoubleMethodA(
JObject obj, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallDoubleMethodA.asFunction<
double Function(
JObject, JMethodID, ffi.Pointer<JValue>)>()(obj, methodID, args);
}
void CallVoidMethod(JObject arg1, JMethodID arg2) {
return ref.CallVoidMethod.asFunction<void Function(JObject, JMethodID)>()(
arg1, arg2);
}
void CallVoidMethodA(
JObject obj, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallVoidMethodA.asFunction<
void Function(
JObject, JMethodID, ffi.Pointer<JValue>)>()(obj, methodID, args);
}
JObject CallNonvirtualObjectMethod(
JObject arg1, JClass arg2, JMethodID arg3) {
return ref.CallNonvirtualObjectMethod.asFunction<
JObject Function(JObject, JClass, JMethodID)>()(arg1, arg2, arg3);
}
JObject CallNonvirtualObjectMethodA(
JObject obj, JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallNonvirtualObjectMethodA.asFunction<
JObject Function(JObject, JClass, JMethodID,
ffi.Pointer<JValue>)>()(obj, clazz, methodID, args);
}
int CallNonvirtualBooleanMethod(JObject arg1, JClass arg2, JMethodID arg3) {
return ref.CallNonvirtualBooleanMethod.asFunction<
int Function(JObject, JClass, JMethodID)>()(arg1, arg2, arg3);
}
int CallNonvirtualBooleanMethodA(
JObject obj, JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallNonvirtualBooleanMethodA.asFunction<
int Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>()(
obj, clazz, methodID, args);
}
int CallNonvirtualByteMethod(JObject arg1, JClass arg2, JMethodID arg3) {
return ref.CallNonvirtualByteMethod.asFunction<
int Function(JObject, JClass, JMethodID)>()(arg1, arg2, arg3);
}
int CallNonvirtualByteMethodA(
JObject obj, JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallNonvirtualByteMethodA.asFunction<
int Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>()(
obj, clazz, methodID, args);
}
int CallNonvirtualCharMethod(JObject arg1, JClass arg2, JMethodID arg3) {
return ref.CallNonvirtualCharMethod.asFunction<
int Function(JObject, JClass, JMethodID)>()(arg1, arg2, arg3);
}
int CallNonvirtualCharMethodA(
JObject obj, JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallNonvirtualCharMethodA.asFunction<
int Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>()(
obj, clazz, methodID, args);
}
int CallNonvirtualShortMethod(JObject arg1, JClass arg2, JMethodID arg3) {
return ref.CallNonvirtualShortMethod.asFunction<
int Function(JObject, JClass, JMethodID)>()(arg1, arg2, arg3);
}
int CallNonvirtualShortMethodA(
JObject obj, JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallNonvirtualShortMethodA.asFunction<
int Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>()(
obj, clazz, methodID, args);
}
int CallNonvirtualIntMethod(JObject arg1, JClass arg2, JMethodID arg3) {
return ref.CallNonvirtualIntMethod.asFunction<
int Function(JObject, JClass, JMethodID)>()(arg1, arg2, arg3);
}
int CallNonvirtualIntMethodA(
JObject obj, JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallNonvirtualIntMethodA.asFunction<
int Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>()(
obj, clazz, methodID, args);
}
int CallNonvirtualLongMethod(JObject arg1, JClass arg2, JMethodID arg3) {
return ref.CallNonvirtualLongMethod.asFunction<
int Function(JObject, JClass, JMethodID)>()(arg1, arg2, arg3);
}
int CallNonvirtualLongMethodA(
JObject obj, JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallNonvirtualLongMethodA.asFunction<
int Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>()(
obj, clazz, methodID, args);
}
double CallNonvirtualFloatMethod(JObject arg1, JClass arg2, JMethodID arg3) {
return ref.CallNonvirtualFloatMethod.asFunction<
double Function(JObject, JClass, JMethodID)>()(arg1, arg2, arg3);
}
double CallNonvirtualFloatMethodA(
JObject obj, JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallNonvirtualFloatMethodA.asFunction<
double Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>()(
obj, clazz, methodID, args);
}
double CallNonvirtualDoubleMethod(JObject arg1, JClass arg2, JMethodID arg3) {
return ref.CallNonvirtualDoubleMethod.asFunction<
double Function(JObject, JClass, JMethodID)>()(arg1, arg2, arg3);
}
double CallNonvirtualDoubleMethodA(
JObject obj, JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallNonvirtualDoubleMethodA.asFunction<
double Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>()(
obj, clazz, methodID, args);
}
void CallNonvirtualVoidMethod(JObject arg1, JClass arg2, JMethodID arg3) {
return ref.CallNonvirtualVoidMethod.asFunction<
void Function(JObject, JClass, JMethodID)>()(arg1, arg2, arg3);
}
void CallNonvirtualVoidMethodA(
JObject obj, JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallNonvirtualVoidMethodA.asFunction<
void Function(JObject, JClass, JMethodID, ffi.Pointer<JValue>)>()(
obj, clazz, methodID, args);
}
JFieldID GetFieldID(
JClass clazz, ffi.Pointer<ffi.Char> name, ffi.Pointer<ffi.Char> sig) {
return ref.GetFieldID.asFunction<
JFieldID Function(JClass, ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Char>)>()(clazz, name, sig);
}
JObject GetObjectField(JObject obj, JFieldID fieldID) {
return ref.GetObjectField.asFunction<JObject Function(JObject, JFieldID)>()(
obj, fieldID);
}
int GetBooleanField(JObject obj, JFieldID fieldID) {
return ref.GetBooleanField.asFunction<int Function(JObject, JFieldID)>()(
obj, fieldID);
}
int GetByteField(JObject obj, JFieldID fieldID) {
return ref.GetByteField.asFunction<int Function(JObject, JFieldID)>()(
obj, fieldID);
}
int GetCharField(JObject obj, JFieldID fieldID) {
return ref.GetCharField.asFunction<int Function(JObject, JFieldID)>()(
obj, fieldID);
}
int GetShortField(JObject obj, JFieldID fieldID) {
return ref.GetShortField.asFunction<int Function(JObject, JFieldID)>()(
obj, fieldID);
}
int GetIntField(JObject obj, JFieldID fieldID) {
return ref.GetIntField.asFunction<int Function(JObject, JFieldID)>()(
obj, fieldID);
}
int GetLongField(JObject obj, JFieldID fieldID) {
return ref.GetLongField.asFunction<int Function(JObject, JFieldID)>()(
obj, fieldID);
}
double GetFloatField(JObject obj, JFieldID fieldID) {
return ref.GetFloatField.asFunction<double Function(JObject, JFieldID)>()(
obj, fieldID);
}
double GetDoubleField(JObject obj, JFieldID fieldID) {
return ref.GetDoubleField.asFunction<double Function(JObject, JFieldID)>()(
obj, fieldID);
}
void SetObjectField(JObject obj, JFieldID fieldID, JObject val) {
return ref.SetObjectField.asFunction<
void Function(JObject, JFieldID, JObject)>()(obj, fieldID, val);
}
void SetBooleanField(JObject obj, JFieldID fieldID, int val) {
return ref.SetBooleanField.asFunction<
void Function(JObject, JFieldID, int)>()(obj, fieldID, val);
}
void SetByteField(JObject obj, JFieldID fieldID, int val) {
return ref.SetByteField.asFunction<void Function(JObject, JFieldID, int)>()(
obj, fieldID, val);
}
void SetCharField(JObject obj, JFieldID fieldID, int val) {
return ref.SetCharField.asFunction<void Function(JObject, JFieldID, int)>()(
obj, fieldID, val);
}
void SetShortField(JObject obj, JFieldID fieldID, int val) {
return ref.SetShortField.asFunction<
void Function(JObject, JFieldID, int)>()(obj, fieldID, val);
}
void SetIntField(JObject obj, JFieldID fieldID, int val) {
return ref.SetIntField.asFunction<void Function(JObject, JFieldID, int)>()(
obj, fieldID, val);
}
void SetLongField(JObject obj, JFieldID fieldID, int val) {
return ref.SetLongField.asFunction<void Function(JObject, JFieldID, int)>()(
obj, fieldID, val);
}
void SetFloatField(JObject obj, JFieldID fieldID, double val) {
return ref.SetFloatField.asFunction<
void Function(JObject, JFieldID, double)>()(obj, fieldID, val);
}
void SetDoubleField(JObject obj, JFieldID fieldID, double val) {
return ref.SetDoubleField.asFunction<
void Function(JObject, JFieldID, double)>()(obj, fieldID, val);
}
JMethodID GetStaticMethodID(
JClass clazz, ffi.Pointer<ffi.Char> name, ffi.Pointer<ffi.Char> sig) {
return ref.GetStaticMethodID.asFunction<
JMethodID Function(JClass, ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Char>)>()(clazz, name, sig);
}
JObject CallStaticObjectMethod(JClass arg1, JMethodID arg2) {
return ref.CallStaticObjectMethod.asFunction<
JObject Function(JClass, JMethodID)>()(arg1, arg2);
}
JObject CallStaticObjectMethodA(
JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallStaticObjectMethodA.asFunction<
JObject Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(clazz, methodID, args);
}
int CallStaticBooleanMethod(JClass arg1, JMethodID arg2) {
return ref.CallStaticBooleanMethod.asFunction<
int Function(JClass, JMethodID)>()(arg1, arg2);
}
int CallStaticBooleanMethodA(
JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallStaticBooleanMethodA.asFunction<
int Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(clazz, methodID, args);
}
int CallStaticByteMethod(JClass arg1, JMethodID arg2) {
return ref.CallStaticByteMethod.asFunction<
int Function(JClass, JMethodID)>()(arg1, arg2);
}
int CallStaticByteMethodA(
JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallStaticByteMethodA.asFunction<
int Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(clazz, methodID, args);
}
int CallStaticCharMethod(JClass arg1, JMethodID arg2) {
return ref.CallStaticCharMethod.asFunction<
int Function(JClass, JMethodID)>()(arg1, arg2);
}
int CallStaticCharMethodA(
JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallStaticCharMethodA.asFunction<
int Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(clazz, methodID, args);
}
int CallStaticShortMethod(JClass arg1, JMethodID arg2) {
return ref.CallStaticShortMethod.asFunction<
int Function(JClass, JMethodID)>()(arg1, arg2);
}
int CallStaticShortMethodA(
JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallStaticShortMethodA.asFunction<
int Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(clazz, methodID, args);
}
int CallStaticIntMethod(JClass arg1, JMethodID arg2) {
return ref.CallStaticIntMethod.asFunction<
int Function(JClass, JMethodID)>()(arg1, arg2);
}
int CallStaticIntMethodA(
JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallStaticIntMethodA.asFunction<
int Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(clazz, methodID, args);
}
int CallStaticLongMethod(JClass arg1, JMethodID arg2) {
return ref.CallStaticLongMethod.asFunction<
int Function(JClass, JMethodID)>()(arg1, arg2);
}
int CallStaticLongMethodA(
JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallStaticLongMethodA.asFunction<
int Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(clazz, methodID, args);
}
double CallStaticFloatMethod(JClass arg1, JMethodID arg2) {
return ref.CallStaticFloatMethod.asFunction<
double Function(JClass, JMethodID)>()(arg1, arg2);
}
double CallStaticFloatMethodA(
JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallStaticFloatMethodA.asFunction<
double Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(clazz, methodID, args);
}
double CallStaticDoubleMethod(JClass arg1, JMethodID arg2) {
return ref.CallStaticDoubleMethod.asFunction<
double Function(JClass, JMethodID)>()(arg1, arg2);
}
double CallStaticDoubleMethodA(
JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallStaticDoubleMethodA.asFunction<
double Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(clazz, methodID, args);
}
void CallStaticVoidMethod(JClass arg1, JMethodID arg2) {
return ref.CallStaticVoidMethod.asFunction<
void Function(JClass, JMethodID)>()(arg1, arg2);
}
void CallStaticVoidMethodA(
JClass clazz, JMethodID methodID, ffi.Pointer<JValue> args) {
return ref.CallStaticVoidMethodA.asFunction<
void Function(
JClass, JMethodID, ffi.Pointer<JValue>)>()(clazz, methodID, args);
}
JFieldID GetStaticFieldID(
JClass clazz, ffi.Pointer<ffi.Char> name, ffi.Pointer<ffi.Char> sig) {
return ref.GetStaticFieldID.asFunction<
JFieldID Function(JClass, ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Char>)>()(clazz, name, sig);
}
JObject GetStaticObjectField(JClass clazz, JFieldID fieldID) {
return ref.GetStaticObjectField.asFunction<
JObject Function(JClass, JFieldID)>()(clazz, fieldID);
}
int GetStaticBooleanField(JClass clazz, JFieldID fieldID) {
return ref.GetStaticBooleanField.asFunction<
int Function(JClass, JFieldID)>()(clazz, fieldID);
}
int GetStaticByteField(JClass clazz, JFieldID fieldID) {
return ref.GetStaticByteField.asFunction<int Function(JClass, JFieldID)>()(
clazz, fieldID);
}
int GetStaticCharField(JClass clazz, JFieldID fieldID) {
return ref.GetStaticCharField.asFunction<int Function(JClass, JFieldID)>()(
clazz, fieldID);
}
int GetStaticShortField(JClass clazz, JFieldID fieldID) {
return ref.GetStaticShortField.asFunction<int Function(JClass, JFieldID)>()(
clazz, fieldID);
}
int GetStaticIntField(JClass clazz, JFieldID fieldID) {
return ref.GetStaticIntField.asFunction<int Function(JClass, JFieldID)>()(
clazz, fieldID);
}
int GetStaticLongField(JClass clazz, JFieldID fieldID) {
return ref.GetStaticLongField.asFunction<int Function(JClass, JFieldID)>()(
clazz, fieldID);
}
double GetStaticFloatField(JClass clazz, JFieldID fieldID) {
return ref.GetStaticFloatField.asFunction<
double Function(JClass, JFieldID)>()(clazz, fieldID);
}
double GetStaticDoubleField(JClass clazz, JFieldID fieldID) {
return ref.GetStaticDoubleField.asFunction<
double Function(JClass, JFieldID)>()(clazz, fieldID);
}
void SetStaticObjectField(JClass clazz, JFieldID fieldID, JObject val) {
return ref.SetStaticObjectField.asFunction<
void Function(JClass, JFieldID, JObject)>()(clazz, fieldID, val);
}
void SetStaticBooleanField(JClass clazz, JFieldID fieldID, int val) {
return ref.SetStaticBooleanField.asFunction<
void Function(JClass, JFieldID, int)>()(clazz, fieldID, val);
}
void SetStaticByteField(JClass clazz, JFieldID fieldID, int val) {
return ref.SetStaticByteField.asFunction<
void Function(JClass, JFieldID, int)>()(clazz, fieldID, val);
}
void SetStaticCharField(JClass clazz, JFieldID fieldID, int val) {
return ref.SetStaticCharField.asFunction<
void Function(JClass, JFieldID, int)>()(clazz, fieldID, val);
}
void SetStaticShortField(JClass clazz, JFieldID fieldID, int val) {
return ref.SetStaticShortField.asFunction<
void Function(JClass, JFieldID, int)>()(clazz, fieldID, val);
}
void SetStaticIntField(JClass clazz, JFieldID fieldID, int val) {
return ref.SetStaticIntField.asFunction<
void Function(JClass, JFieldID, int)>()(clazz, fieldID, val);
}
void SetStaticLongField(JClass clazz, JFieldID fieldID, int val) {
return ref.SetStaticLongField.asFunction<
void Function(JClass, JFieldID, int)>()(clazz, fieldID, val);
}
void SetStaticFloatField(JClass clazz, JFieldID fieldID, double val) {
return ref.SetStaticFloatField.asFunction<
void Function(JClass, JFieldID, double)>()(clazz, fieldID, val);
}
void SetStaticDoubleField(JClass clazz, JFieldID fieldID, double val) {
return ref.SetStaticDoubleField.asFunction<
void Function(JClass, JFieldID, double)>()(clazz, fieldID, val);
}
JString NewString(ffi.Pointer<JChar> unicodeChars, int len) {
return ref.NewString.asFunction<
JString Function(ffi.Pointer<JChar>, int)>()(unicodeChars, len);
}
int GetStringLength(JString string) {
return ref.GetStringLength.asFunction<int Function(JString)>()(string);
}
ffi.Pointer<JChar> GetStringChars(
JString string, ffi.Pointer<JBoolean> isCopy) {
return ref.GetStringChars.asFunction<
ffi.Pointer<JChar> Function(
JString, ffi.Pointer<JBoolean>)>()(string, isCopy);
}
void ReleaseStringChars(JString string, ffi.Pointer<JChar> isCopy) {
return ref.ReleaseStringChars.asFunction<
void Function(JString, ffi.Pointer<JChar>)>()(string, isCopy);
}
JString NewStringUTF(ffi.Pointer<ffi.Char> bytes) {
return ref.NewStringUTF.asFunction<
JString Function(ffi.Pointer<ffi.Char>)>()(bytes);
}
int GetStringUTFLength(JString string) {
return ref.GetStringUTFLength.asFunction<int Function(JString)>()(string);
}
ffi.Pointer<ffi.Char> GetStringUTFChars(
JString string, ffi.Pointer<JBoolean> isCopy) {
return ref.GetStringUTFChars.asFunction<
ffi.Pointer<ffi.Char> Function(
JString, ffi.Pointer<JBoolean>)>()(string, isCopy);
}
void ReleaseStringUTFChars(JString string, ffi.Pointer<ffi.Char> utf) {
return ref.ReleaseStringUTFChars.asFunction<
void Function(JString, ffi.Pointer<ffi.Char>)>()(string, utf);
}
int GetArrayLength(JArray array) {
return ref.GetArrayLength.asFunction<int Function(JArray)>()(array);
}
JObjectArray NewObjectArray(
int length, JClass elementClass, JObject initialElement) {
return ref.NewObjectArray.asFunction<
JObjectArray Function(
int, JClass, JObject)>()(length, elementClass, initialElement);
}
JObject GetObjectArrayElement(JObjectArray array, int index) {
return ref.GetObjectArrayElement.asFunction<
JObject Function(JObjectArray, int)>()(array, index);
}
void SetObjectArrayElement(JObjectArray array, int index, JObject val) {
return ref.SetObjectArrayElement.asFunction<
void Function(JObjectArray, int, JObject)>()(array, index, val);
}
JBooleanArray NewBooleanArray(int length) {
return ref.NewBooleanArray.asFunction<JBooleanArray Function(int)>()(
length);
}
JByteArray NewByteArray(int length) {
return ref.NewByteArray.asFunction<JByteArray Function(int)>()(length);
}
JCharArray NewCharArray(int length) {
return ref.NewCharArray.asFunction<JCharArray Function(int)>()(length);
}
JShortArray NewShortArray(int length) {
return ref.NewShortArray.asFunction<JShortArray Function(int)>()(length);
}
JIntArray NewIntArray(int length) {
return ref.NewIntArray.asFunction<JIntArray Function(int)>()(length);
}
JLongArray NewLongArray(int length) {
return ref.NewLongArray.asFunction<JLongArray Function(int)>()(length);
}
JFloatArray NewFloatArray(int length) {
return ref.NewFloatArray.asFunction<JFloatArray Function(int)>()(length);
}
JDoubleArray NewDoubleArray(int length) {
return ref.NewDoubleArray.asFunction<JDoubleArray Function(int)>()(length);
}
ffi.Pointer<JBoolean> GetBooleanArrayElements(
JBooleanArray array, ffi.Pointer<JBoolean> isCopy) {
return ref.GetBooleanArrayElements.asFunction<
ffi.Pointer<JBoolean> Function(
JBooleanArray, ffi.Pointer<JBoolean>)>()(array, isCopy);
}
ffi.Pointer<JByte> GetByteArrayElements(
JByteArray array, ffi.Pointer<JBoolean> isCopy) {
return ref.GetByteArrayElements.asFunction<
ffi.Pointer<JByte> Function(
JByteArray, ffi.Pointer<JBoolean>)>()(array, isCopy);
}
ffi.Pointer<JChar> GetCharArrayElements(
JCharArray array, ffi.Pointer<JBoolean> isCopy) {
return ref.GetCharArrayElements.asFunction<
ffi.Pointer<JChar> Function(
JCharArray, ffi.Pointer<JBoolean>)>()(array, isCopy);
}
ffi.Pointer<JShort> GetShortArrayElements(
JShortArray array, ffi.Pointer<JBoolean> isCopy) {
return ref.GetShortArrayElements.asFunction<
ffi.Pointer<JShort> Function(
JShortArray, ffi.Pointer<JBoolean>)>()(array, isCopy);
}
ffi.Pointer<JInt> GetIntArrayElements(
JIntArray array, ffi.Pointer<JBoolean> isCopy) {
return ref.GetIntArrayElements.asFunction<
ffi.Pointer<JInt> Function(
JIntArray, ffi.Pointer<JBoolean>)>()(array, isCopy);
}
ffi.Pointer<JLong> GetLongArrayElements(
JLongArray array, ffi.Pointer<JBoolean> isCopy) {
return ref.GetLongArrayElements.asFunction<
ffi.Pointer<JLong> Function(
JLongArray, ffi.Pointer<JBoolean>)>()(array, isCopy);
}
ffi.Pointer<JFloat> GetFloatArrayElements(
JFloatArray array, ffi.Pointer<JBoolean> isCopy) {
return ref.GetFloatArrayElements.asFunction<
ffi.Pointer<JFloat> Function(
JFloatArray, ffi.Pointer<JBoolean>)>()(array, isCopy);
}
ffi.Pointer<JDouble> GetDoubleArrayElements(
JDoubleArray array, ffi.Pointer<JBoolean> isCopy) {
return ref.GetDoubleArrayElements.asFunction<
ffi.Pointer<JDouble> Function(
JDoubleArray, ffi.Pointer<JBoolean>)>()(array, isCopy);
}
void ReleaseBooleanArrayElements(
JBooleanArray array, ffi.Pointer<JBoolean> elems, int mode) {
return ref.ReleaseBooleanArrayElements.asFunction<
void Function(
JBooleanArray, ffi.Pointer<JBoolean>, int)>()(array, elems, mode);
}
void ReleaseByteArrayElements(
JByteArray array, ffi.Pointer<JByte> elems, int mode) {
return ref.ReleaseByteArrayElements.asFunction<
void Function(
JByteArray, ffi.Pointer<JByte>, int)>()(array, elems, mode);
}
void ReleaseCharArrayElements(
JCharArray array, ffi.Pointer<JChar> elems, int mode) {
return ref.ReleaseCharArrayElements.asFunction<
void Function(
JCharArray, ffi.Pointer<JChar>, int)>()(array, elems, mode);
}
void ReleaseShortArrayElements(
JShortArray array, ffi.Pointer<JShort> elems, int mode) {
return ref.ReleaseShortArrayElements.asFunction<
void Function(
JShortArray, ffi.Pointer<JShort>, int)>()(array, elems, mode);
}
void ReleaseIntArrayElements(
JIntArray array, ffi.Pointer<JInt> elems, int mode) {
return ref.ReleaseIntArrayElements.asFunction<
void Function(JIntArray, ffi.Pointer<JInt>, int)>()(array, elems, mode);
}
void ReleaseLongArrayElements(
JLongArray array, ffi.Pointer<JLong> elems, int mode) {
return ref.ReleaseLongArrayElements.asFunction<
void Function(
JLongArray, ffi.Pointer<JLong>, int)>()(array, elems, mode);
}
void ReleaseFloatArrayElements(
JFloatArray array, ffi.Pointer<JFloat> elems, int mode) {
return ref.ReleaseFloatArrayElements.asFunction<
void Function(
JFloatArray, ffi.Pointer<JFloat>, int)>()(array, elems, mode);
}
void ReleaseDoubleArrayElements(
JDoubleArray array, ffi.Pointer<JDouble> elems, int mode) {
return ref.ReleaseDoubleArrayElements.asFunction<
void Function(
JDoubleArray, ffi.Pointer<JDouble>, int)>()(array, elems, mode);
}
void GetBooleanArrayRegion(
JBooleanArray array, int start, int len, ffi.Pointer<JBoolean> buf) {
return ref.GetBooleanArrayRegion.asFunction<
void Function(JBooleanArray, int, int, ffi.Pointer<JBoolean>)>()(
array, start, len, buf);
}
void GetByteArrayRegion(
JByteArray array, int start, int len, ffi.Pointer<JByte> buf) {
return ref.GetByteArrayRegion.asFunction<
void Function(JByteArray, int, int, ffi.Pointer<JByte>)>()(
array, start, len, buf);
}
void GetCharArrayRegion(
JCharArray array, int start, int len, ffi.Pointer<JChar> buf) {
return ref.GetCharArrayRegion.asFunction<
void Function(JCharArray, int, int, ffi.Pointer<JChar>)>()(
array, start, len, buf);
}
void GetShortArrayRegion(
JShortArray array, int start, int len, ffi.Pointer<JShort> buf) {
return ref.GetShortArrayRegion.asFunction<
void Function(JShortArray, int, int, ffi.Pointer<JShort>)>()(
array, start, len, buf);
}
void GetIntArrayRegion(
JIntArray array, int start, int len, ffi.Pointer<JInt> buf) {
return ref.GetIntArrayRegion.asFunction<
void Function(
JIntArray, int, int, ffi.Pointer<JInt>)>()(array, start, len, buf);
}
void GetLongArrayRegion(
JLongArray array, int start, int len, ffi.Pointer<JLong> buf) {
return ref.GetLongArrayRegion.asFunction<
void Function(JLongArray, int, int, ffi.Pointer<JLong>)>()(
array, start, len, buf);
}
void GetFloatArrayRegion(
JFloatArray array, int start, int len, ffi.Pointer<JFloat> buf) {
return ref.GetFloatArrayRegion.asFunction<
void Function(JFloatArray, int, int, ffi.Pointer<JFloat>)>()(
array, start, len, buf);
}
void GetDoubleArrayRegion(
JDoubleArray array, int start, int len, ffi.Pointer<JDouble> buf) {
return ref.GetDoubleArrayRegion.asFunction<
void Function(JDoubleArray, int, int, ffi.Pointer<JDouble>)>()(
array, start, len, buf);
}
void SetBooleanArrayRegion(
JBooleanArray array, int start, int len, ffi.Pointer<JBoolean> buf) {
return ref.SetBooleanArrayRegion.asFunction<
void Function(JBooleanArray, int, int, ffi.Pointer<JBoolean>)>()(
array, start, len, buf);
}
void SetByteArrayRegion(
JByteArray array, int start, int len, ffi.Pointer<JByte> buf) {
return ref.SetByteArrayRegion.asFunction<
void Function(JByteArray, int, int, ffi.Pointer<JByte>)>()(
array, start, len, buf);
}
void SetCharArrayRegion(
JCharArray array, int start, int len, ffi.Pointer<JChar> buf) {
return ref.SetCharArrayRegion.asFunction<
void Function(JCharArray, int, int, ffi.Pointer<JChar>)>()(
array, start, len, buf);
}
void SetShortArrayRegion(
JShortArray array, int start, int len, ffi.Pointer<JShort> buf) {
return ref.SetShortArrayRegion.asFunction<
void Function(JShortArray, int, int, ffi.Pointer<JShort>)>()(
array, start, len, buf);
}
void SetIntArrayRegion(
JIntArray array, int start, int len, ffi.Pointer<JInt> buf) {
return ref.SetIntArrayRegion.asFunction<
void Function(
JIntArray, int, int, ffi.Pointer<JInt>)>()(array, start, len, buf);
}
void SetLongArrayRegion(
JLongArray array, int start, int len, ffi.Pointer<JLong> buf) {
return ref.SetLongArrayRegion.asFunction<
void Function(JLongArray, int, int, ffi.Pointer<JLong>)>()(
array, start, len, buf);
}
void SetFloatArrayRegion(
JFloatArray array, int start, int len, ffi.Pointer<JFloat> buf) {
return ref.SetFloatArrayRegion.asFunction<
void Function(JFloatArray, int, int, ffi.Pointer<JFloat>)>()(
array, start, len, buf);
}
void SetDoubleArrayRegion(
JDoubleArray array, int start, int len, ffi.Pointer<JDouble> buf) {
return ref.SetDoubleArrayRegion.asFunction<
void Function(JDoubleArray, int, int, ffi.Pointer<JDouble>)>()(
array, start, len, buf);
}
int RegisterNatives(
JClass clazz, ffi.Pointer<JNINativeMethod> methods, int nMethods) {
return ref.RegisterNatives.asFunction<
int Function(JClass, ffi.Pointer<JNINativeMethod>, int)>()(
clazz, methods, nMethods);
}
int UnregisterNatives(JClass clazz) {
return ref.UnregisterNatives.asFunction<int Function(JClass)>()(clazz);
}
int MonitorEnter(JObject obj) {
return ref.MonitorEnter.asFunction<int Function(JObject)>()(obj);
}
int MonitorExit(JObject obj) {
return ref.MonitorExit.asFunction<int Function(JObject)>()(obj);
}
int GetJavaVM(ffi.Pointer<ffi.Pointer<JavaVM>> vm) {
return ref.GetJavaVM.asFunction<
int Function(ffi.Pointer<ffi.Pointer<JavaVM>>)>()(vm);
}
void GetStringRegion(
JString str, int start, int len, ffi.Pointer<JChar> buf) {
return ref.GetStringRegion.asFunction<
void Function(
JString, int, int, ffi.Pointer<JChar>)>()(str, start, len, buf);
}
void GetStringUTFRegion(
JString str, int start, int len, ffi.Pointer<ffi.Char> buf) {
return ref.GetStringUTFRegion.asFunction<
void Function(
JString, int, int, ffi.Pointer<ffi.Char>)>()(str, start, len, buf);
}
ffi.Pointer<ffi.Void> GetPrimitiveArrayCritical(
JArray array, ffi.Pointer<JBoolean> isCopy) {
return ref.GetPrimitiveArrayCritical.asFunction<
ffi.Pointer<ffi.Void> Function(
JArray, ffi.Pointer<JBoolean>)>()(array, isCopy);
}
void ReleasePrimitiveArrayCritical(
JArray array, ffi.Pointer<ffi.Void> carray, int mode) {
return ref.ReleasePrimitiveArrayCritical.asFunction<
void Function(
JArray, ffi.Pointer<ffi.Void>, int)>()(array, carray, mode);
}
ffi.Pointer<JChar> GetStringCritical(
JString str, ffi.Pointer<JBoolean> isCopy) {
return ref.GetStringCritical.asFunction<
ffi.Pointer<JChar> Function(
JString, ffi.Pointer<JBoolean>)>()(str, isCopy);
}
void ReleaseStringCritical(JString str, ffi.Pointer<JChar> carray) {
return ref.ReleaseStringCritical.asFunction<
void Function(JString, ffi.Pointer<JChar>)>()(str, carray);
}
JWeak NewWeakGlobalRef(JObject obj) {
return ref.NewWeakGlobalRef.asFunction<JWeak Function(JObject)>()(obj);
}
void DeleteWeakGlobalRef(JWeak obj) {
return ref.DeleteWeakGlobalRef.asFunction<void Function(JWeak)>()(obj);
}
int ExceptionCheck() {
return ref.ExceptionCheck.asFunction<int Function()>()();
}
JObject NewDirectByteBuffer(ffi.Pointer<ffi.Void> address, int capacity) {
return ref.NewDirectByteBuffer.asFunction<
JObject Function(ffi.Pointer<ffi.Void>, int)>()(address, capacity);
}
ffi.Pointer<ffi.Void> GetDirectBufferAddress(JObject buf) {
return ref.GetDirectBufferAddress.asFunction<
ffi.Pointer<ffi.Void> Function(JObject)>()(buf);
}
int GetDirectBufferCapacity(JObject buf) {
return ref.GetDirectBufferCapacity.asFunction<int Function(JObject)>()(buf);
}
int GetObjectRefType(JObject obj) {
return ref.GetObjectRefType.asFunction<int Function(JObject)>()(obj);
}
}
const int JNI_FALSE = 0;
const int JNI_TRUE = 1;
const int JNI_VERSION_1_1 = 65537;
const int JNI_VERSION_1_2 = 65538;
const int JNI_VERSION_1_4 = 65540;
const int JNI_VERSION_1_6 = 65542;
const int JNI_OK = 0;
const int JNI_ERR = -1;
const int JNI_EDETACHED = -2;
const int JNI_EVERSION = -3;
const int JNI_ENOMEM = -4;
const int JNI_EEXIST = -5;
const int JNI_EINVAL = -6;
const int JNI_COMMIT = 1;
const int JNI_ABORT = 2;