using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;

namespace LibKenjinx.Jni.Values;

[SuppressMessage("CodeQuality", "IDE0051:Remove unused private members",
                 Justification = "This struct is created only by binary operations.")]
[StructLayout(LayoutKind.Sequential)]
public readonly struct JNativeInterface
{
#pragma warning disable 0169
	private readonly IntPtr _reserved0;
	private readonly IntPtr _reserved1;
	private readonly IntPtr _reserved2;
	private readonly IntPtr _reserved3;
#pragma warning restore 0169
	internal readonly IntPtr GetVersionPointer { get; init; }
	internal readonly IntPtr DefineClassPointer { get; init; }
	internal readonly IntPtr FindClassPointer { get; init; }
	internal readonly IntPtr FromReflectedMethodPointer { get; init; }
	internal readonly IntPtr FromReflectedFieldPointer { get; init; }
	internal readonly IntPtr ToReflectedMethodPointer { get; init; }
	internal readonly IntPtr GetSuperclassPointer { get; init; }
	internal readonly IntPtr IsAssignableFromPointer { get; init; }
	internal readonly IntPtr ToReflectedFieldPointer { get; init; }
	internal readonly IntPtr ThrowPointer { get; init; }
	internal readonly IntPtr ThrowNewPointer { get; init; }
	internal readonly IntPtr ExceptionOccurredPointer { get; init; }
	internal readonly IntPtr ExceptionDescribePointer { get; init; }
	internal readonly IntPtr ExceptionClearPointer { get; init; }
	internal readonly IntPtr FatalErrorPointer { get; init; }
	internal readonly IntPtr PushLocalFramePointer { get; init; }
	internal readonly IntPtr PopLocalFramePointer { get; init; }
	internal readonly IntPtr NewGlobalRefPointer { get; init; }
	internal readonly IntPtr DeleteGlobalRefPointer { get; init; }
	internal readonly IntPtr DeleteLocalRefPointer { get; init; }
	internal readonly IntPtr IsSameObjectPointer { get; init; }
	internal readonly IntPtr NewLocalRefPointer { get; init; }
	internal readonly IntPtr EnsureLocalCapacityPointer { get; init; }
	internal readonly IntPtr AllocObjectPointer { get; init; }
	internal readonly IntPtr NewObjectPointer { get; init; }
	internal readonly IntPtr NewObjectVPointer { get; init; }
	internal readonly IntPtr NewObjectAPointer { get; init; }
	internal readonly IntPtr GetObjectClassPointer { get; init; }
	internal readonly IntPtr IsInstanceOfPointer { get; init; }
	internal readonly IntPtr GetMethodIdPointer { get; init; }
	private readonly IntPtr CallObjectMethodPointer { get; init; }
	private readonly IntPtr CallObjectMethodVPointer { get; init; }
	internal readonly IntPtr CallObjectMethodAPointer { get; init; }
	private readonly IntPtr CallBooleanMethodPointer { get; init; }
	private readonly IntPtr CallBooleanMethodVPointer { get; init; }
	internal readonly IntPtr CallBooleanMethodAPointer { get; init; }
	private readonly IntPtr CallByteMethodPointer { get; init; }
	private readonly IntPtr CallByteMethodVPointer { get; init; }
	internal readonly IntPtr CallByteMethodAPointer { get; init; }
	private readonly IntPtr CallCharMethodPointer { get; init; }
	private readonly IntPtr CallCharMethodVPointer { get; init; }
	internal readonly IntPtr CallCharMethodAPointer { get; init; }
	private readonly IntPtr CallShortMethodPointer { get; init; }
	private readonly IntPtr CallShortMethodVPointer { get; init; }
	internal readonly IntPtr CallShortMethodAPointer { get; init; }
	private readonly IntPtr CallIntMethodPointer { get; init; }
	private readonly IntPtr CallIntMethodVPointer { get; init; }
	internal readonly IntPtr CallIntMethodAPointer { get; init; }
	private readonly IntPtr CallLongMethodPointer { get; init; }
	private readonly IntPtr CallLongMethodVPointer { get; init; }
	internal readonly IntPtr CallLongMethodAPointer { get; init; }
	private readonly IntPtr CallFloatMethodPointer { get; init; }
	private readonly IntPtr CallFloatMethodVPointer { get; init; }
	internal readonly IntPtr CallFloatMethodAPointer { get; init; }
	private readonly IntPtr CallDoubleMethodPointer { get; init; }
	private readonly IntPtr CallDoubleMethodVPointer { get; init; }
	internal readonly IntPtr CallDoubleMethodAPointer { get; init; }
	private readonly IntPtr CallVoidMethodPointer { get; init; }
	private readonly IntPtr CallVoidMethodVPointer { get; init; }
	internal readonly IntPtr CallVoidMethodAPointer { get; init; }
	private readonly IntPtr CallNonVirtualObjectMethodPointer { get; init; }
	private readonly IntPtr CallNonVirtualObjectMethodVPointer { get; init; }
	internal readonly IntPtr CallNonVirtualObjectMethodAPointer { get; init; }
	private readonly IntPtr CallNonVirtualBooleanMethodPointer { get; init; }
	private readonly IntPtr CallNonVirtualBooleanMethodVPointer { get; init; }
	internal readonly IntPtr CallNonVirtualBooleanMethodAPointer { get; init; }
	private readonly IntPtr CallNonVirtualByteMethodPointer { get; init; }
	private readonly IntPtr CallNonVirtualByteMethodVPointer { get; init; }
	internal readonly IntPtr CallNonVirtualByteMethodAPointer { get; init; }
	private readonly IntPtr CallNonVirtualCharMethodPointer { get; init; }
	private readonly IntPtr CallNonVirtualCharMethodVPointer { get; init; }
	internal readonly IntPtr CallNonVirtualCharMethodAPointer { get; init; }
	private readonly IntPtr CallNonVirtualShortMethodPointer { get; init; }
	private readonly IntPtr CallNonVirtualShortMethodVPointer { get; init; }
	internal readonly IntPtr CallNonVirtualShortMethodAPointer { get; init; }
	private readonly IntPtr CallNonVirtualIntMethodPointer { get; init; }
	private readonly IntPtr CallNonVirtualIntMethodVPointer { get; init; }
	internal readonly IntPtr CallNonVirtualIntMethodAPointer { get; init; }
	private readonly IntPtr CallNonVirtualLongMethodPointer { get; init; }
	private readonly IntPtr CallNonVirtualLongMethodVPointer { get; init; }
	internal readonly IntPtr CallNonVirtualLongMethodAPointer { get; init; }
	private readonly IntPtr CallNonVirtualFloatMethodPointer { get; init; }
	private readonly IntPtr CallNonVirtualFloatMethodVPointer { get; init; }
	internal readonly IntPtr CallNonVirtualFloatMethodAPointer { get; init; }
	private readonly IntPtr CallNonVirtualDoubleMethodPointer { get; init; }
	private readonly IntPtr CallNonVirtualDoubleMethodVPointer { get; init; }
	internal readonly IntPtr CallNonVirtualDoubleMethodAPointer { get; init; }
	private readonly IntPtr CallNonVirtualVoidMethodPointer { get; init; }
	private readonly IntPtr CallNonVirtualVoidMethodVPointer { get; init; }
	internal readonly IntPtr CallNonVirtualVoidMethodAPointer { get; init; }
	internal readonly IntPtr GetFieldIdPointer { get; init; }
	internal readonly IntPtr GetObjectFieldPointer { get; init; }
	internal readonly IntPtr GetBooleanFieldPointer { get; init; }
	internal readonly IntPtr GetByteFieldPointer { get; init; }
	internal readonly IntPtr GetCharFieldPointer { get; init; }
	internal readonly IntPtr GetShortFieldPointer { get; init; }
	internal readonly IntPtr GetIntFieldPointer { get; init; }
	internal readonly IntPtr GetLongFieldPointer { get; init; }
	internal readonly IntPtr GetFloatFieldPointer { get; init; }
	internal readonly IntPtr GetDoubleFieldPointer { get; init; }
	internal readonly IntPtr SetObjectFieldPointer { get; init; }
	internal readonly IntPtr SetBooleanFieldPointer { get; init; }
	internal readonly IntPtr SetByteFieldPointer { get; init; }
	internal readonly IntPtr SetCharFieldPointer { get; init; }
	internal readonly IntPtr SetShortFieldPointer { get; init; }
	internal readonly IntPtr SetIntFieldPointer { get; init; }
	internal readonly IntPtr SetLongFieldPointer { get; init; }
	internal readonly IntPtr SetFloatFieldPointer { get; init; }
	internal readonly IntPtr SetDoubleFieldPointer { get; init; }
	internal readonly IntPtr GetStaticMethodIdPointer { get; init; }
	private readonly IntPtr CallStaticObjectMethodPointer { get; init; }
	private readonly IntPtr CallStaticObjectMethodVPointer { get; init; }
	internal readonly IntPtr CallStaticObjectMethodAPointer { get; init; }
	private readonly IntPtr CallStaticBooleanMethodPointer { get; init; }
	private readonly IntPtr CallStaticBooleanMethodVPointer { get; init; }
	internal readonly IntPtr CallStaticBooleanMethodAPointer { get; init; }
	private readonly IntPtr CallStaticByteMethodPointer { get; init; }
	private readonly IntPtr CallStaticByteMethodVPointer { get; init; }
	internal readonly IntPtr CallStaticByteMethodAPointer { get; init; }
	private readonly IntPtr CallStaticCharMethodPointer { get; init; }
	private readonly IntPtr CallStaticCharMethodVPointer { get; init; }
	internal readonly IntPtr CallStaticCharMethodAPointer { get; init; }
	private readonly IntPtr CallStaticShortMethodPointer { get; init; }
	private readonly IntPtr CallStaticShortMethodVPointer { get; init; }
	internal readonly IntPtr CallStaticShortMethodAPointer { get; init; }
	private readonly IntPtr CallStaticIntMethodPointer { get; init; }
	private readonly IntPtr CallStaticIntMethodVPointer { get; init; }
	internal readonly IntPtr CallStaticIntMethodAPointer { get; init; }
	private readonly IntPtr CallStaticLongMethodPointer { get; init; }
	private readonly IntPtr CallStaticLongMethodVPointer { get; init; }
	internal readonly IntPtr CallStaticLongMethodAPointer { get; init; }
	private readonly IntPtr CallStaticFloatMethodPointer { get; init; }
	private readonly IntPtr CallStaticFloatMethodVPointer { get; init; }
	internal readonly IntPtr CallStaticFloatMethodAPointer { get; init; }
	private readonly IntPtr CallStaticDoubleMethodPointer { get; init; }
	private readonly IntPtr CallStaticDoubleMethodVPointer { get; init; }
	internal readonly IntPtr CallStaticDoubleMethodAPointer { get; init; }
	private readonly IntPtr CallStaticVoidMethodPointer { get; init; }
	private readonly IntPtr CallStaticVoidMethodVPointer { get; init; }
	internal readonly IntPtr CallStaticVoidMethodAPointer { get; init; }
	internal readonly IntPtr GetStaticFieldIdPointer { get; init; }
	internal readonly IntPtr GetStaticObjectFieldPointer { get; init; }
	internal readonly IntPtr GetStaticBooleanFieldPointer { get; init; }
	internal readonly IntPtr GetStaticByteFieldPointer { get; init; }
	internal readonly IntPtr GetStaticCharFieldPointer { get; init; }
	internal readonly IntPtr GetStaticShortFieldPointer { get; init; }
	internal readonly IntPtr GetStaticIntFieldPointer { get; init; }
	internal readonly IntPtr GetStaticLongFieldPointer { get; init; }
	internal readonly IntPtr GetStaticFloatFieldPointer { get; init; }
	internal readonly IntPtr GetStaticDoubleFieldPointer { get; init; }
	internal readonly IntPtr SetStaticObjectFieldPointer { get; init; }
	internal readonly IntPtr SetStaticBooleanFieldPointer { get; init; }
	internal readonly IntPtr SetStaticByteFieldPointer { get; init; }
	internal readonly IntPtr SetStaticCharFieldPointer { get; init; }
	internal readonly IntPtr SetStaticShortFieldPointer { get; init; }
	internal readonly IntPtr SetStaticIntFieldPointer { get; init; }
	internal readonly IntPtr SetStaticLongFieldPointer { get; init; }
	internal readonly IntPtr SetStaticFloatFieldPointer { get; init; }
	internal readonly IntPtr SetStaticDoubleFieldPointer { get; init; }
	internal readonly IntPtr NewStringPointer { get; init; }
	internal readonly IntPtr GetStringLengthPointer { get; init; }
	internal readonly IntPtr GetStringCharsPointer { get; init; }
	internal readonly IntPtr ReleaseStringCharsPointer { get; init; }
	internal readonly IntPtr NewStringUtfPointer { get; init; }
	internal readonly IntPtr GetStringUtfLengthPointer { get; init; }
	internal readonly IntPtr GetStringUtfCharsPointer { get; init; }
	internal readonly IntPtr ReleaseStringUtfCharsPointer { get; init; }
	internal readonly IntPtr GetArrayLengthPointer { get; init; }
	internal readonly IntPtr NewObjectArrayPointer { get; init; }
	internal readonly IntPtr GetObjectArrayElementPointer { get; init; }
	internal readonly IntPtr SetObjectArrayElementPointer { get; init; }
	internal readonly IntPtr NewBooleanArrayPointer { get; init; }
	internal readonly IntPtr NewByteArrayPointer { get; init; }
	internal readonly IntPtr NewCharArrayPointer { get; init; }
	internal readonly IntPtr NewShortArrayPointer { get; init; }
	internal readonly IntPtr NewIntArrayPointer { get; init; }
	internal readonly IntPtr NewLongArrayPointer { get; init; }
	internal readonly IntPtr NewFloatArrayPointer { get; init; }
	internal readonly IntPtr NewDoubleArrayPointer { get; init; }
	internal readonly IntPtr GetBooleanArrayElementsPointer { get; init; }
	internal readonly IntPtr GetByteArrayElementsPointer { get; init; }
	internal readonly IntPtr GetCharArrayElementsPointer { get; init; }
	internal readonly IntPtr GetShortArrayElementsPointer { get; init; }
	internal readonly IntPtr GetIntArrayElementsPointer { get; init; }
	internal readonly IntPtr GetLongArrayElementsPointer { get; init; }
	internal readonly IntPtr GetFloatArrayElementsPointer { get; init; }
	internal readonly IntPtr GetDoubleArrayElementsPointer { get; init; }
	internal readonly IntPtr ReleaseBooleanArrayElementsPointer { get; init; }
	internal readonly IntPtr ReleaseByteArrayElementsPointer { get; init; }
	internal readonly IntPtr ReleaseCharArrayElementsPointer { get; init; }
	internal readonly IntPtr ReleaseShortArrayElementsPointer { get; init; }
	internal readonly IntPtr ReleaseIntArrayElementsPointer { get; init; }
	internal readonly IntPtr ReleaseLongArrayElementsPointer { get; init; }
	internal readonly IntPtr ReleaseFloatArrayElementsPointer { get; init; }
	internal readonly IntPtr ReleaseDoubleArrayElementsPointer { get; init; }
	internal readonly IntPtr GetBooleanArrayRegionPointer { get; init; }
	internal readonly IntPtr GetByteArrayRegionPointer { get; init; }
	internal readonly IntPtr GetCharArrayRegionPointer { get; init; }
	internal readonly IntPtr GetShortArrayRegionPointer { get; init; }
	internal readonly IntPtr GetIntArrayRegionPointer { get; init; }
	internal readonly IntPtr GetLongArrayRegionPointer { get; init; }
	internal readonly IntPtr GetFloatArrayRegionPointer { get; init; }
	internal readonly IntPtr GetDoubleArrayRegionPointer { get; init; }
	internal readonly IntPtr SetBooleanArrayRegionPointer { get; init; }
	internal readonly IntPtr SetByteArrayRegionPointer { get; init; }
	internal readonly IntPtr SetCharArrayRegionPointer { get; init; }
	internal readonly IntPtr SetShortArrayRegionPointer { get; init; }
	internal readonly IntPtr SetIntArrayRegionPointer { get; init; }
	internal readonly IntPtr SetLongArrayRegionPointer { get; init; }
	internal readonly IntPtr SetFloatArrayRegionPointer { get; init; }
	internal readonly IntPtr SetDoubleArrayRegionPointer { get; init; }
	internal readonly IntPtr RegisterNativesPointer { get; init; }
	internal readonly IntPtr UnregisterNativesPointer { get; init; }
	internal readonly IntPtr MonitorEnterPointer { get; init; }
	internal readonly IntPtr MonitorExitPointer { get; init; }
	internal readonly IntPtr GetJavaVMPointer { get; init; }
	internal readonly IntPtr GetStringRegionPointer { get; init; }
	internal readonly IntPtr GetStringUtfRegionPointer { get; init; }
	internal readonly IntPtr GetPrimitiveArrayCriticalPointer { get; init; }
	internal readonly IntPtr ReleasePrimitiveArrayCriticalPointer { get; init; }
	internal readonly IntPtr GetStringCriticalPointer { get; init; }
	internal readonly IntPtr ReleaseStringCriticalPointer { get; init; }
	internal readonly IntPtr NewWeakGlobalRefPointer { get; init; }
	internal readonly IntPtr DeleteWeakGlobalRefPointer { get; init; }
	internal readonly IntPtr ExceptionCheckPointer { get; init; }
	internal readonly IntPtr NewDirectByteBufferPointer { get; init; }
	internal readonly IntPtr GetDirectBufferAddressPointer { get; init; }
	internal readonly IntPtr GetDirectBufferCapacityPointer { get; init; }
	internal readonly IntPtr GetObjectRefTypePointer { get; init; }
}
