1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-05 19:42:17 +02:00

JavaClass class + first usage

This commit is contained in:
Nikolay Pultsin 2012-03-30 20:20:29 +01:00
parent 86a07a0d1b
commit ab83e1a79a
4 changed files with 58 additions and 9 deletions

View file

@ -23,12 +23,28 @@
static const std::string JNI_LOGGER_CLASS = "JniLog";
JavaClass::JavaClass(JNIEnv *env, const std::string &name) : myName(name), myEnv(env) {
jclass ref = env->FindClass(name.c_str());
myClass = (jclass)env->NewGlobalRef(ref);
env->DeleteLocalRef(ref);
}
JavaClass::~JavaClass() {
myEnv->DeleteGlobalRef(myClass);
}
Method::Method(JNIEnv *env, jclass cls, const std::string &name, const std::string &signature) : myName(name) {
//ZLLogger::Instance().registerClass(JNI_LOGGER_CLASS);
myEnv = env;
myId = env->GetMethodID(cls, name.c_str(), signature.c_str());
}
Method::Method(const JavaClass &cls, const std::string &name, const std::string &signature) : myName(name) {
//ZLLogger::Instance().registerClass(JNI_LOGGER_CLASS);
myEnv = cls.myEnv;
myId = myEnv->GetMethodID(cls.myClass, name.c_str(), signature.c_str());
}
Method::~Method() {
}
@ -95,6 +111,9 @@ jboolean BooleanMethod::call(jobject base, ...) {
StringMethod::StringMethod(JNIEnv *env, jclass cls, const std::string &name, const std::string &signature) : Method(env, cls, name, signature + "Ljava/lang/String;") {
}
StringMethod::StringMethod(const JavaClass &cls, const std::string &name, const std::string &signature) : Method(cls, name, signature + "Ljava/lang/String;") {
}
jstring StringMethod::call(jobject base, ...) {
ZLLogger::Instance().println(JNI_LOGGER_CLASS, "calling StringMethod " + myName);
va_list lst;