...

Package jni

import "git.wow.st/gmp/jni"
Overview
Index

Overview ▾

Package jni implements various helper functions for communicating with the Android JVM though JNI.

Index ▾

Constants
func CallIntMethod(e Env, obj Object, method MethodID, args ...Value) (int32, error)
func CallStaticIntMethod(e Env, cls Class, method MethodID, args ...Value) (int, error)
func CallStaticVoidMethod(e Env, cls Class, method MethodID, args ...Value) error
func CallVoidMethod(e Env, obj Object, method MethodID, args ...Value) error
func DeleteGlobalRef(e Env, obj Object)
func DeleteLocalRef(e Env, obj Object)
func Do(vm JVM, f func(env Env) error) error
func GetBooleanField(env Env, obj Object, fieldID FieldID) bool
func GetByteArrayElements(e Env, jarr ByteArray) []byte
func GetByteField(env Env, obj Object, fieldID FieldID) byte
func GetCharField(env Env, obj Object, fieldID FieldID) byte
func GetDoubleField(env Env, obj Object, fieldID FieldID) float64
func GetFloatField(env Env, obj Object, fieldID FieldID) float32
func GetIntField(env Env, obj Object, fieldID FieldID) int32
func GetLongField(env Env, obj Object, fieldID FieldID) int64
func GetShortField(env Env, obj Object, fieldID FieldID) int16
func GetStaticBooleanField(env Env, clazz Class, fieldID FieldID) bool
func GetStaticByteField(env Env, clazz Class, fieldID FieldID) byte
func GetStaticCharField(env Env, clazz Class, fieldID FieldID) byte
func GetStaticDoubleField(env Env, clazz Class, fieldID FieldID) float64
func GetStaticFloatField(env Env, clazz Class, fieldID FieldID) float32
func GetStaticIntField(env Env, clazz Class, fieldID FieldID) int32
func GetStaticLongField(env Env, clazz Class, fieldID FieldID) int64
func GetStaticShortField(env Env, clazz Class, fieldID FieldID) int16
func GoString(e Env, str String) string
func IsInstanceOf(e Env, obj Object, cls Class) bool
func IsSameObject(e Env, ref1, ref2 Object) bool
type ByteArray
    func NewByteArray(e Env, content []byte) ByteArray
type Class
    func FindClass(e Env, name string) Class
    func GetObjectClass(e Env, obj Object) Class
    func LoadClass(e Env, loader Object, class string) (Class, error)
type Env
    func EnvFor(envPtr uintptr) Env
type FieldID
    func GetFieldID(e Env, cls Class, name, signature string) FieldID
    func GetStaticFieldID(e Env, cls Class, name, signature string) FieldID
type JVM
    func CreateJavaVM(opts ...string) JVM
    func JVMFor(jvmPtr uintptr) JVM
type MethodID
    func GetMethodID(e Env, cls Class, name, signature string) MethodID
    func GetStaticMethodID(e Env, cls Class, name, signature string) MethodID
type Object
    func CallObjectMethod(e Env, obj Object, method MethodID, args ...Value) (Object, error)
    func CallStaticObjectMethod(e Env, cls Class, method MethodID, args ...Value) (Object, error)
    func ClassLoaderFor(e Env, obj Object) Object
    func GetObjectField(env Env, obj Object, fieldID FieldID) Object
    func GetStaticObjectField(env Env, clazz Class, fieldID FieldID) Object
    func NewGlobalRef(e Env, obj Object) Object
    func NewLocalRef(e Env, obj Object) Object
    func NewObject(e Env, cls Class, method MethodID, args ...Value) (Object, error)
type String
    func JavaString(e Env, str string) String
type Value

Package files

jni.go jni_darwin.go jni_notandroid.go

Constants

const (
    TRUE  = C.JNI_TRUE
    FALSE = C.JNI_FALSE
)

func CallIntMethod

func CallIntMethod(e Env, obj Object, method MethodID, args ...Value) (int32, error)

CallIntMethod calls a method on an object, returning an int32.

func CallStaticIntMethod

func CallStaticIntMethod(e Env, cls Class, method MethodID, args ...Value) (int, error)

CallStaticIntMethod calls a static method on a Java class, returning an int.

func CallStaticVoidMethod

func CallStaticVoidMethod(e Env, cls Class, method MethodID, args ...Value) error

CallStaticVoidMethod calls a static method on a Java class, returning nothing.

func CallVoidMethod

func CallVoidMethod(e Env, obj Object, method MethodID, args ...Value) error

CallVoidMethod calls a method on an object, returning nothing.

func DeleteGlobalRef

func DeleteGlobalRef(e Env, obj Object)

DeleteGlobalRef delets a global reference.

func DeleteLocalRef

func DeleteLocalRef(e Env, obj Object)

DeleteLocalRef delets a local reference.

func Do

func Do(vm JVM, f func(env Env) error) error

Do invokes a function with a temporary JVM environment. The environment is not valid after the function returns.

func GetBooleanField

func GetBooleanField(env Env, obj Object, fieldID FieldID) bool

GetBooleanField looks up the value of a static field of type boolean. It panics if it is unable to find the field.

func GetByteArrayElements

func GetByteArrayElements(e Env, jarr ByteArray) []byte

GetByteArrayElements returns the contents of the array.

func GetByteField

func GetByteField(env Env, obj Object, fieldID FieldID) byte

GetByteField looks up the value of a static field of type byte. It panics if it is unable to find the field.

func GetCharField

func GetCharField(env Env, obj Object, fieldID FieldID) byte

GetCharField looks up the value of a static field of type char. It panics if it is unable to find the field.

func GetDoubleField

func GetDoubleField(env Env, obj Object, fieldID FieldID) float64

GetDoubleField looks up the value of a static field of type double. It panics if it is unable to find the field.

func GetFloatField

func GetFloatField(env Env, obj Object, fieldID FieldID) float32

GetFloatField looks up the value of a static field of type float. It panics if it is unable to find the field.

func GetIntField

func GetIntField(env Env, obj Object, fieldID FieldID) int32

GetIntField looks up the value of a static field of type int. It panics if it is unable to find the field.

func GetLongField

func GetLongField(env Env, obj Object, fieldID FieldID) int64

GetLongField looks up the value of a static field of type long. It panics if it is unable to find the field.

func GetShortField

func GetShortField(env Env, obj Object, fieldID FieldID) int16

GetShortField looks up the value of a static field of type short. It panics if it is unable to find the field.

func GetStaticBooleanField

func GetStaticBooleanField(env Env, clazz Class, fieldID FieldID) bool

GetStaticBooleanField looks up the value of a static field of type boolean. It panics if it is unable to find the field.

func GetStaticByteField

func GetStaticByteField(env Env, clazz Class, fieldID FieldID) byte

GetStaticByteField looks up the value of a static field of type byte. It panics if it is unable to find the field.

func GetStaticCharField

func GetStaticCharField(env Env, clazz Class, fieldID FieldID) byte

GetStaticCharField looks up the value of a static field of type char. It panics if it is unable to find the field.

func GetStaticDoubleField

func GetStaticDoubleField(env Env, clazz Class, fieldID FieldID) float64

GetStaticDoubleField looks up the value of a static field of type double. It panics if it is unable to find the field.

func GetStaticFloatField

func GetStaticFloatField(env Env, clazz Class, fieldID FieldID) float32

GetStaticFloatField looks up the value of a static field of type float. It panics if it is unable to find the field.

func GetStaticIntField

func GetStaticIntField(env Env, clazz Class, fieldID FieldID) int32

GetStaticIntField looks up the value of a static field of type int. It panics if it is unable to find the field.

func GetStaticLongField

func GetStaticLongField(env Env, clazz Class, fieldID FieldID) int64

GetStaticLongField looks up the value of a static field of type long. It panics if it is unable to find the field.

func GetStaticShortField

func GetStaticShortField(env Env, clazz Class, fieldID FieldID) int16

GetStaticShortField looks up the value of a static field of type short. It panics if it is unable to find the field.

func GoString

func GoString(e Env, str String) string

GoString converts the JVM jstring to a Go string.

func IsInstanceOf

func IsInstanceOf(e Env, obj Object, cls Class) bool

IsInstanceOf returns true if the given object is an instance of the given class.

func IsSameObject

func IsSameObject(e Env, ref1, ref2 Object) bool

IsSameObject returns true if the two given objects refer to the same Java object.

type ByteArray

type ByteArray C.jbyteArray

func NewByteArray

func NewByteArray(e Env, content []byte) ByteArray

NewByteArray allocates a Java byte array with the content. It panics if the allocation fails.

type Class

type Class C.jclass

func FindClass

func FindClass(e Env, name string) Class

FindClass returns a reference to a Java class with a given name, using the JVM's default class loader. Any exceptions caused by the underlying JNI call (for example if the class is not found) will result in a panic.

func GetObjectClass

func GetObjectClass(e Env, obj Object) Class

GetObjectClass returns the Java Class for an Object.

func LoadClass

func LoadClass(e Env, loader Object, class string) (Class, error)

LoadClass invokes the underlying ClassLoader's loadClass method and returns the class.

type Env

type Env struct {
    // contains filtered or unexported fields
}

func EnvFor

func EnvFor(envPtr uintptr) Env

EnvFor creates an Env object, interpreting the given uintptr as a pointer to a C.JNIEnv object.

type FieldID

type FieldID C.jfieldID

func GetFieldID

func GetFieldID(e Env, cls Class, name, signature string) FieldID

GetFieldID returns the id for a field. It panics if the field wasn't found.

func GetStaticFieldID

func GetStaticFieldID(e Env, cls Class, name, signature string) FieldID

GetStaticFieldID returns the id for a static field. It panics if the field wasn't found.

type JVM

type JVM struct {
    // contains filtered or unexported fields
}

func CreateJavaVM

func CreateJavaVM(opts ...string) JVM

CreateJavaVM creates a new Java VM with the options specified (if any). This should not be called more than once as it can result in an error if a JVM already exists for a given process.

This is not implemented on Android and is therefore excluded on that platform by build flags and C.

func JVMFor

func JVMFor(jvmPtr uintptr) JVM

JVMFor creates a JVM object, interpreting the given uintptr as a pointer to a C.JavaVM object.

type MethodID

type MethodID C.jmethodID

func GetMethodID

func GetMethodID(e Env, cls Class, name, signature string) MethodID

GetMethodID returns the id for a method. It panics if the method wasn't found.

func GetStaticMethodID

func GetStaticMethodID(e Env, cls Class, name, signature string) MethodID

GetStaticMethodID returns the id for a static method. It panics if the method wasn't found.

type Object

type Object C.jobject

func CallObjectMethod

func CallObjectMethod(e Env, obj Object, method MethodID, args ...Value) (Object, error)

CallObjectMethod calls a method on an object, returning a Java object.

func CallStaticObjectMethod

func CallStaticObjectMethod(e Env, cls Class, method MethodID, args ...Value) (Object, error)

CallStaticObjectMethod calls a static method on a class, returning a Java object

func ClassLoaderFor

func ClassLoaderFor(e Env, obj Object) Object

ClassLoader returns a reference to the Java ClassLoader associated with obj.

func GetObjectField

func GetObjectField(env Env, obj Object, fieldID FieldID) Object

GetObjectField looks up the value of a static field of type Object. It panics if it is unable to find the field.

func GetStaticObjectField

func GetStaticObjectField(env Env, clazz Class, fieldID FieldID) Object

GetStaticObjectField looks up the value of a static field of type Object. It panics if it is unable to find the field.

func NewGlobalRef

func NewGlobalRef(e Env, obj Object) Object

NewGlobalRef creates a new global reference.

func NewLocalRef

func NewLocalRef(e Env, obj Object) Object

NewLocalRef creates a new local reference to the given object.

func NewObject

func NewObject(e Env, cls Class, method MethodID, args ...Value) (Object, error)

NewObject creates a new object given a class, initializer method, and initializer arguments (if any).

type String

type String C.jstring

func JavaString

func JavaString(e Env, str string) String

JavaString converts the string to a JVM jstring.

type Value

type Value uint64 // All JNI types fit into 64-bits.