diff --git a/jni/NativeFormats/util/AndroidUtil.cpp b/jni/NativeFormats/util/AndroidUtil.cpp index 7d89978b7..6a5fdb6cb 100644 --- a/jni/NativeFormats/util/AndroidUtil.cpp +++ b/jni/NativeFormats/util/AndroidUtil.cpp @@ -134,7 +134,7 @@ bool AndroidUtil::init(JavaVM* jvm) { CHECK_NULL( MID_java_util_Collection_toArray = env->GetMethodID(Class_java_util_Collection->j(), "toArray", "()[Ljava/lang/Object;") ); Class_java_util_Locale = new JavaClass(env, "java/util/Locale"); - StaticMethod_java_util_Locale_getDefault = new StaticObjectMethod(*Class_java_util_Locale, "getDefault", "java/util/Locale", "()"); + StaticMethod_java_util_Locale_getDefault = new StaticObjectMethod(*Class_java_util_Locale, "getDefault", *Class_java_util_Locale, "()"); Method_java_util_Locale_getLanguage = new StringMethod(*Class_java_util_Locale, "getLanguage", "()"); Class_java_io_InputStream = new JavaClass(env, "java/io/InputStream"); @@ -143,7 +143,7 @@ bool AndroidUtil::init(JavaVM* jvm) { Method_java_io_InputStream_skip = new LongMethod(*Class_java_io_InputStream, "skip", "(J)"); Class_ZLibrary = new JavaClass(env, "org/geometerplus/zlibrary/core/library/ZLibrary"); - StaticMethod_ZLibrary_Instance = new StaticObjectMethod(*Class_ZLibrary, "Instance", "org/geometerplus/zlibrary/core/library/ZLibrary", "()"); + StaticMethod_ZLibrary_Instance = new StaticObjectMethod(*Class_ZLibrary, "Instance", *Class_ZLibrary, "()"); Method_ZLibrary_getVersionName = new StringMethod(*Class_ZLibrary, "getVersionName", "()"); Class_NativeFormatPlugin = new JavaClass(env, "org/geometerplus/fbreader/formats/NativeFormatPlugin"); @@ -151,7 +151,7 @@ bool AndroidUtil::init(JavaVM* jvm) { Method_NativeFormatPlugin_supportedFileType = new StringMethod(*Class_NativeFormatPlugin, "supportedFileType", "()"); Class_PluginCollection = new JavaClass(env, "org/geometerplus/fbreader/formats/PluginCollection"); - StaticMethod_PluginCollection_Instance = new StaticObjectMethod(*Class_PluginCollection, "Instance", "org/geometerplus/fbreader/formats/PluginCollection", "()"); + StaticMethod_PluginCollection_Instance = new StaticObjectMethod(*Class_PluginCollection, "Instance", *Class_PluginCollection, "()"); Class_Encoding = new JavaClass(env, "org/geometerplus/zlibrary/core/encodings/Encoding"); Method_Encoding_createConverter = new ObjectMethod(*Class_Encoding, "createConverter", "org/geometerplus/zlibrary/core/encodings/EncodingConverter", "()"); @@ -162,13 +162,13 @@ bool AndroidUtil::init(JavaVM* jvm) { Method_EncodingConverter_reset = new VoidMethod(*Class_EncodingConverter, "reset", "()"); Class_JavaEncodingCollection = new JavaClass(env, "org/geometerplus/zlibrary/core/encodings/JavaEncodingCollection"); - StaticMethod_JavaEncodingCollection_Instance = new StaticObjectMethod(*Class_JavaEncodingCollection, "Instance", "org/geometerplus/zlibrary/core/encodings/JavaEncodingCollection", "()"); + StaticMethod_JavaEncodingCollection_Instance = new StaticObjectMethod(*Class_JavaEncodingCollection, "Instance", *Class_JavaEncodingCollection, "()"); Method_JavaEncodingCollection_getEncoding_String = new ObjectMethod(*Class_JavaEncodingCollection, "getEncoding", "org/geometerplus/zlibrary/core/encodings/Encoding", "(Ljava/lang/String;)"); Method_JavaEncodingCollection_getEncoding_int = new ObjectMethod(*Class_JavaEncodingCollection, "getEncoding", "org/geometerplus/zlibrary/core/encodings/Encoding", "(I)"); Method_JavaEncodingCollection_providesConverterFor = new BooleanMethod(*Class_JavaEncodingCollection, "providesConverterFor", "(Ljava/lang/String;)"); Class_ZLFile = new JavaClass(env, "org/geometerplus/zlibrary/core/filesystem/ZLFile"); - StaticMethod_ZLFile_createFileByPath = new StaticObjectMethod(*Class_ZLFile, "createFileByPath", "org/geometerplus/zlibrary/core/filesystem/ZLFile", "(Ljava/lang/String;)"); + StaticMethod_ZLFile_createFileByPath = new StaticObjectMethod(*Class_ZLFile, "createFileByPath", *Class_ZLFile, "(Ljava/lang/String;)"); Method_ZLFile_children = new ObjectMethod(*Class_ZLFile, "children", "java/util/List", "()"); Method_ZLFile_exists = new BooleanMethod(*Class_ZLFile, "exists", "()"); Method_ZLFile_isDirectory = new BooleanMethod(*Class_ZLFile, "isDirectory", "()"); @@ -180,7 +180,7 @@ bool AndroidUtil::init(JavaVM* jvm) { Constructor_ZLFileImage = new Constructor(*Class_ZLFileImage, "(Ljava/lang/String;Lorg/geometerplus/zlibrary/core/filesystem/ZLFile;Ljava/lang/String;II)V"); Class_Paths = new JavaClass(env, "org/geometerplus/fbreader/Paths"); - StaticMethod_Paths_cacheDirectory = new StaticObjectMethod(*Class_Paths, "cacheDirectory", "java/lang/String", "()"); + StaticMethod_Paths_cacheDirectory = new StaticObjectMethod(*Class_Paths, "cacheDirectory", *Class_java_lang_String, "()"); Class_Book = new JavaClass(env, "org/geometerplus/fbreader/library/Book"); Field_Book_File = new ObjectField(*Class_Book, "File", *Class_ZLFile); @@ -196,7 +196,7 @@ bool AndroidUtil::init(JavaVM* jvm) { Method_Book_save = new BooleanMethod(*Class_Book, "save", "()"); Class_Tag = new JavaClass(env, "org/geometerplus/fbreader/library/Tag"); - StaticMethod_Tag_getTag = new StaticObjectMethod(*Class_Tag, "getTag", "org/geometerplus/fbreader/library/Tag", "(Lorg/geometerplus/fbreader/library/Tag;Ljava/lang/String;)"); + StaticMethod_Tag_getTag = new StaticObjectMethod(*Class_Tag, "getTag", *Class_Tag, "(Lorg/geometerplus/fbreader/library/Tag;Ljava/lang/String;)"); Class_NativeBookModel = new JavaClass(env, "org/geometerplus/fbreader/bookmodel/NativeBookModel"); Field_NativeBookModel_Book = new ObjectField(*Class_NativeBookModel, "Book", *Class_Book); diff --git a/jni/NativeFormats/util/JniEnvelope.cpp b/jni/NativeFormats/util/JniEnvelope.cpp index 5ae2f6d62..390900e33 100644 --- a/jni/NativeFormats/util/JniEnvelope.cpp +++ b/jni/NativeFormats/util/JniEnvelope.cpp @@ -50,8 +50,8 @@ Member::Member(const JavaClass &cls) : myClass(cls) { Member::~Member() { } -Constructor::Constructor(const JavaClass &cls, const std::string &signature) : Member(cls) { - myId = env().GetMethodID(jClass(), "", signature.c_str()); +Constructor::Constructor(const JavaClass &cls, const std::string ¶meters) : Member(cls) { + myId = env().GetMethodID(jClass(), "", parameters.c_str()); } jobject Constructor::call(...) { @@ -69,21 +69,22 @@ Field::Field(const JavaClass &cls, const std::string &name, const JavaType &type Field::~Field() { } -Method::Method(const JavaClass &cls, const std::string &name, const std::string &signature) : Member(cls), myName(name) { - myId = env().GetMethodID(jClass(), name.c_str(), signature.c_str()); +Method::Method(const JavaClass &cls, const std::string &name, const std::string ¶meters) : Member(cls), myName(name) { + myId = env().GetMethodID(jClass(), name.c_str(), parameters.c_str()); } Method::~Method() { } -StaticMethod::StaticMethod(const JavaClass &cls, const std::string &name, const std::string &signature) : Member(cls), myName(name) { +StaticMethod::StaticMethod(const JavaClass &cls, const std::string &name, const JavaType &returnType, const std::string ¶meters) : Member(cls), myName(name) { + const std::string signature = parameters + returnType.code(); myId = env().GetStaticMethodID(jClass(), name.c_str(), signature.c_str()); } StaticMethod::~StaticMethod() { } -ObjectField::ObjectField(const JavaClass &cls, const std::string &name, const JavaClass &type) : Field(cls, name, type) { +ObjectField::ObjectField(const JavaClass &cls, const std::string &name, const JavaType &type) : Field(cls, name, type) { } jobject ObjectField::value(jobject obj) const { @@ -93,7 +94,7 @@ jobject ObjectField::value(jobject obj) const { return val; } -VoidMethod::VoidMethod(const JavaClass &cls, const std::string &name, const std::string &signature) : Method(cls, name, signature + "V") { +VoidMethod::VoidMethod(const JavaClass &cls, const std::string &name, const std::string ¶meters) : Method(cls, name, parameters + "V") { } void VoidMethod::call(jobject base, ...) { @@ -105,7 +106,7 @@ void VoidMethod::call(jobject base, ...) { ZLLogger::Instance().println(JNI_LOGGER_CLASS, "finished VoidMethod " + myName); } -IntMethod::IntMethod(const JavaClass &cls, const std::string &name, const std::string &signature) : Method(cls, name, signature + "I") { +IntMethod::IntMethod(const JavaClass &cls, const std::string &name, const std::string ¶meters) : Method(cls, name, parameters + "I") { } jint IntMethod::call(jobject base, ...) { @@ -118,7 +119,7 @@ jint IntMethod::call(jobject base, ...) { return result; } -LongMethod::LongMethod(const JavaClass &cls, const std::string &name, const std::string &signature) : Method(cls, name, signature + "J") { +LongMethod::LongMethod(const JavaClass &cls, const std::string &name, const std::string ¶meters) : Method(cls, name, parameters + "J") { } jlong LongMethod::call(jobject base, ...) { @@ -131,7 +132,7 @@ jlong LongMethod::call(jobject base, ...) { return result; } -BooleanMethod::BooleanMethod(const JavaClass &cls, const std::string &name, const std::string &signature) : Method(cls, name, signature + "Z") { +BooleanMethod::BooleanMethod(const JavaClass &cls, const std::string &name, const std::string ¶meters) : Method(cls, name, parameters + "Z") { } jboolean BooleanMethod::call(jobject base, ...) { @@ -144,7 +145,7 @@ jboolean BooleanMethod::call(jobject base, ...) { return result; } -StringMethod::StringMethod(const JavaClass &cls, const std::string &name, const std::string &signature) : Method(cls, name, signature + "Ljava/lang/String;") { +StringMethod::StringMethod(const JavaClass &cls, const std::string &name, const std::string ¶meters) : Method(cls, name, parameters + "Ljava/lang/String;") { } jstring StringMethod::call(jobject base, ...) { @@ -157,7 +158,7 @@ jstring StringMethod::call(jobject base, ...) { return result; } -ObjectMethod::ObjectMethod(const JavaClass &cls, const std::string &name, const std::string &returnType, const std::string &signature) : Method(cls, name, signature + "L" + returnType + ";") { +ObjectMethod::ObjectMethod(const JavaClass &cls, const std::string &name, const std::string &returnType, const std::string ¶meters) : Method(cls, name, parameters + "L" + returnType + ";") { } jobject ObjectMethod::call(jobject base, ...) { @@ -170,7 +171,7 @@ jobject ObjectMethod::call(jobject base, ...) { return result; } -StaticObjectMethod::StaticObjectMethod(const JavaClass &cls, const std::string &name, const std::string &returnType, const std::string &signature) : StaticMethod(cls, name, signature + "L" + returnType + ";") { +StaticObjectMethod::StaticObjectMethod(const JavaClass &cls, const std::string &name, const JavaType &returnType, const std::string ¶meters) : StaticMethod(cls, name, returnType, parameters) { } jobject StaticObjectMethod::call(...) { diff --git a/jni/NativeFormats/util/JniEnvelope.h b/jni/NativeFormats/util/JniEnvelope.h index 9816ab238..226526e7f 100644 --- a/jni/NativeFormats/util/JniEnvelope.h +++ b/jni/NativeFormats/util/JniEnvelope.h @@ -107,7 +107,7 @@ protected: class StaticMethod : public Member { public: - StaticMethod(const JavaClass &cls, const std::string &name, const std::string &signature); + StaticMethod(const JavaClass &cls, const std::string &name, const JavaType &returnType, const std::string &signature); virtual ~StaticMethod(); protected: @@ -118,7 +118,7 @@ protected: class ObjectField : public Field { public: - ObjectField(const JavaClass &cls, const std::string &name, const JavaClass &type); + ObjectField(const JavaClass &cls, const std::string &name, const JavaType &type); jobject value(jobject obj) const; }; @@ -167,7 +167,7 @@ public: class StaticObjectMethod : public StaticMethod { public: - StaticObjectMethod(const JavaClass &cls, const std::string &name, const std::string &returnType, const std::string &signature); + StaticObjectMethod(const JavaClass &cls, const std::string &name, const JavaType &returnType, const std::string &signature); jobject call(...); };