func (self *Environment) RegisterNative(className string, method string, sig types.MethodSignature, fptr interface{}) error { class, err := self.GetClass(types.NewName(className)) if err != nil { return err } cname := C.CString(method) defer C.free(unsafe.Pointer(cname)) csig := C.CString(sig.String()) defer C.free(unsafe.Pointer(csig)) C.envRegisterNative(self.env, class.class, cname, csig, fptr.(unsafe.Pointer)) return nil }
func (self *Environment) RegisterNative(c *Class, name string, fptr interface{}) (err error) { // env.RegisterNative(klass, "NativePing", func(E *environment.Environment, O *environment.Object)(Error){ // nativePings += 1 // }) cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) id, sig, err := self.jvm.addNative(self, fptr) csig := C.CString(sig.String()) defer C.free(unsafe.Pointer(csig)) if err != nil { return } if 0 != C.envRegisterNative(self.env, c.class, cname, csig, C.int(id)) { err = self.ExceptionOccurred() } return }