blob: 1c4e4c273f9d9a24da31ad8eb22e778ae7eda00c [file] [log] [blame]
// Copyright 2016 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build java android
// +build cgo
package main
// #include <stdlib.h>
// #include "jni_wrapper.h"
// #include "lib.h"
import "C"
type jArrayListClass struct {
class C.jclass
init C.jmethodID
}
func (c *jArrayListClass) Init(env *C.JNIEnv) error {
var err error
c.class, c.init, err = initClass(env, "java/util/ArrayList")
if err != nil {
return err
}
return nil
}
type jIdClass struct {
class C.jclass
init C.jmethodID
}
func (c *jIdClass) Init(env *C.JNIEnv) error {
var err error
c.class, c.init, err = initClass(env, "io/v/syncbase/internal/Id")
if err != nil {
return err
}
return nil
}
type jVErrorClass struct {
class C.jclass
init C.jmethodID
id C.jfieldID
actionCode C.jfieldID
message C.jfieldID
stack C.jfieldID
}
func (c *jVErrorClass) Init(env *C.JNIEnv) error {
var err error
c.class, c.init, err = initClass(env, "io/v/syncbase/internal/VError")
if err != nil {
return err
}
c.id, err = JGetFieldID(env, c.class, "id", "Ljava/lang/String;")
if err != nil {
return err
}
c.actionCode, err = JGetFieldID(env, c.class, "actionCode", "J")
if err != nil {
return err
}
c.message, err = JGetFieldID(env, c.class, "message", "Ljava/lang/String;")
if err != nil {
return err
}
c.stack, err = JGetFieldID(env, c.class, "stack", "Ljava/lang/String;")
if err != nil {
return err
}
return nil
}
// initClass returns the jclass and the jmethodID of the default constructor for
// a class.
func initClass(env *C.JNIEnv, name string) (C.jclass, C.jmethodID, error) {
cls, err := JFindClass(env, name)
if err != nil {
return nil, nil, err
}
init, err := JGetMethodID(env, cls, "<init>", "()V")
if err != nil {
return nil, nil, err
}
return cls, init, nil
}