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

code uniformization

This commit is contained in:
Nikolay Pultsin 2012-04-07 13:39:18 +01:00
parent ac33d013fc
commit bfcdbe9808
7 changed files with 20 additions and 49 deletions

View file

@ -28,13 +28,11 @@
#include "fbreader/src/library/Book.h" #include "fbreader/src/library/Book.h"
#include "fbreader/src/library/Tag.h" #include "fbreader/src/library/Tag.h"
static shared_ptr<FormatPlugin> findCppPlugin(JNIEnv *env, jobject base) { static shared_ptr<FormatPlugin> findCppPlugin(jobject base) {
jstring fileTypeJava = AndroidUtil::Method_NativeFormatPlugin_supportedFileType->call(base); const std::string fileType = AndroidUtil::Method_NativeFormatPlugin_supportedFileType->callForCppString(base);
const std::string fileTypeCpp = AndroidUtil::fromJavaString(env, fileTypeJava); shared_ptr<FormatPlugin> plugin = PluginCollection::Instance().pluginByType(fileType);
env->DeleteLocalRef(fileTypeJava);
shared_ptr<FormatPlugin> plugin = PluginCollection::Instance().pluginByType(fileTypeCpp);
if (plugin.isNull()) { if (plugin.isNull()) {
AndroidUtil::throwRuntimeException("Native FormatPlugin instance is NULL for type " + fileTypeCpp); AndroidUtil::throwRuntimeException("Native FormatPlugin instance is NULL for type " + fileType);
} }
return plugin; return plugin;
} }
@ -101,7 +99,7 @@ void fillLanguageAndEncoding(JNIEnv* env, jobject javaBook, Book &book) {
extern "C" extern "C"
JNIEXPORT jboolean JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_readMetaInfoNative(JNIEnv* env, jobject thiz, jobject javaBook) { JNIEXPORT jboolean JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_readMetaInfoNative(JNIEnv* env, jobject thiz, jobject javaBook) {
shared_ptr<FormatPlugin> plugin = findCppPlugin(env, thiz); shared_ptr<FormatPlugin> plugin = findCppPlugin(thiz);
if (plugin.isNull()) { if (plugin.isNull()) {
return JNI_FALSE; return JNI_FALSE;
} }
@ -118,7 +116,7 @@ JNIEXPORT jboolean JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPl
extern "C" extern "C"
JNIEXPORT void JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_detectLanguageAndEncoding(JNIEnv* env, jobject thiz, jobject javaBook) { JNIEXPORT void JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_detectLanguageAndEncoding(JNIEnv* env, jobject thiz, jobject javaBook) {
shared_ptr<FormatPlugin> plugin = findCppPlugin(env, thiz); shared_ptr<FormatPlugin> plugin = findCppPlugin(thiz);
if (plugin.isNull()) { if (plugin.isNull()) {
return; return;
} }
@ -240,7 +238,7 @@ static bool initTOC(JNIEnv *env, jobject javaModel, BookModel &model) {
extern "C" extern "C"
JNIEXPORT jboolean JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_readModelNative(JNIEnv* env, jobject thiz, jobject javaModel) { JNIEXPORT jboolean JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_readModelNative(JNIEnv* env, jobject thiz, jobject javaModel) {
shared_ptr<FormatPlugin> plugin = findCppPlugin(env, thiz); shared_ptr<FormatPlugin> plugin = findCppPlugin(thiz);
if (plugin.isNull()) { if (plugin.isNull()) {
return JNI_FALSE; return JNI_FALSE;
} }
@ -287,14 +285,12 @@ JNIEXPORT jboolean JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPl
extern "C" extern "C"
JNIEXPORT void JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_readCoverInternal(JNIEnv* env, jobject thiz, jobject file, jobjectArray box) { JNIEXPORT void JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin_readCoverInternal(JNIEnv* env, jobject thiz, jobject file, jobjectArray box) {
shared_ptr<FormatPlugin> plugin = findCppPlugin(env, thiz); shared_ptr<FormatPlugin> plugin = findCppPlugin(thiz);
if (plugin.isNull()) { if (plugin.isNull()) {
return; return;
} }
jstring javaPath = AndroidUtil::Method_ZLFile_getPath->call(file); const std::string path = AndroidUtil::Method_ZLFile_getPath->callForCppString(file);
const std::string path = AndroidUtil::fromJavaString(env, javaPath);
env->DeleteLocalRef(javaPath);
shared_ptr<ZLImage> image = plugin->coverImage(ZLFile(path)); shared_ptr<ZLImage> image = plugin->coverImage(ZLFile(path));
if (!image.isNull()) { if (!image.isNull()) {

View file

@ -85,25 +85,13 @@ shared_ptr<Book> Book::loadFromFile(const ZLFile &file) {
*/ */
shared_ptr<Book> Book::loadFromJavaBook(JNIEnv *env, jobject javaBook) { shared_ptr<Book> Book::loadFromJavaBook(JNIEnv *env, jobject javaBook) {
jstring javaString;
jobject javaFile = AndroidUtil::Field_Book_File->value(javaBook); jobject javaFile = AndroidUtil::Field_Book_File->value(javaBook);
javaString = AndroidUtil::Method_ZLFile_getPath->call(javaFile); const std::string path = AndroidUtil::Method_ZLFile_getPath->callForCppString(javaFile);
const std::string path = AndroidUtil::fromJavaString(env, javaString);
env->DeleteLocalRef(javaString);
env->DeleteLocalRef(javaFile); env->DeleteLocalRef(javaFile);
javaString = AndroidUtil::Method_Book_getTitle->call(javaBook); const std::string title = AndroidUtil::Method_Book_getTitle->callForCppString(javaBook);
const std::string title = AndroidUtil::fromJavaString(env, javaString); const std::string language = AndroidUtil::Method_Book_getLanguage->callForCppString(javaBook);
env->DeleteLocalRef(javaString); const std::string encoding = AndroidUtil::Method_Book_getEncodingNoDetection->callForCppString(javaBook);
javaString = AndroidUtil::Method_Book_getLanguage->call(javaBook);
const std::string language = AndroidUtil::fromJavaString(env, javaString);
env->DeleteLocalRef(javaString);
javaString = AndroidUtil::Method_Book_getEncodingNoDetection->call(javaBook);
const std::string encoding = AndroidUtil::fromJavaString(env, javaString);
env->DeleteLocalRef(javaString);
return createBook(ZLFile(path), 0, encoding, language, title); return createBook(ZLFile(path), 0, encoding, language, title);
} }

View file

@ -174,7 +174,7 @@ static JavaPrimitiveType FakeString("Ljava/lang/String;");
StringMethod::StringMethod(const JavaClass &cls, const std::string &name, const std::string &parameters) : Method(cls, name, FakeString, parameters) { StringMethod::StringMethod(const JavaClass &cls, const std::string &name, const std::string &parameters) : Method(cls, name, FakeString, parameters) {
} }
jstring StringMethod::call(jobject base, ...) { jstring StringMethod::callForJavaString(jobject base, ...) {
ZLLogger::Instance().println(JNI_LOGGER_CLASS, "calling StringMethod " + myName); ZLLogger::Instance().println(JNI_LOGGER_CLASS, "calling StringMethod " + myName);
va_list lst; va_list lst;
va_start(lst, base); va_start(lst, base);

View file

@ -181,7 +181,7 @@ class StringMethod : public Method {
public: public:
StringMethod(const JavaClass &cls, const std::string &name, const std::string &parameters); StringMethod(const JavaClass &cls, const std::string &name, const std::string &parameters);
jstring call(jobject base, ...); jstring callForJavaString(jobject base, ...);
std::string callForCppString(jobject base, ...); std::string callForCppString(jobject base, ...);
}; };

View file

@ -474,7 +474,7 @@ std::string ZLUnicodeUtil::toLower(const std::string &utf8String) {
JNIEnv *env = AndroidUtil::getEnv(); JNIEnv *env = AndroidUtil::getEnv();
jstring javaString = AndroidUtil::createJavaString(env, utf8String); jstring javaString = AndroidUtil::createJavaString(env, utf8String);
jstring lowerCased = AndroidUtil::Method_java_lang_String_toLowerCase->call(javaString); jstring lowerCased = AndroidUtil::Method_java_lang_String_toLowerCase->callForJavaString(javaString);
if (javaString == lowerCased) { if (javaString == lowerCased) {
env->DeleteLocalRef(lowerCased); env->DeleteLocalRef(lowerCased);
env->DeleteLocalRef(javaString); env->DeleteLocalRef(javaString);
@ -518,7 +518,7 @@ std::string ZLUnicodeUtil::toUpper(const std::string &utf8String) {
JNIEnv *env = AndroidUtil::getEnv(); JNIEnv *env = AndroidUtil::getEnv();
jstring javaString = AndroidUtil::createJavaString(env, utf8String); jstring javaString = AndroidUtil::createJavaString(env, utf8String);
jstring upperCased = AndroidUtil::Method_java_lang_String_toUpperCase->call(javaString); jstring upperCased = AndroidUtil::Method_java_lang_String_toUpperCase->callForJavaString(javaString);
if (javaString == upperCased) { if (javaString == upperCased) {
env->DeleteLocalRef(upperCased); env->DeleteLocalRef(upperCased);
env->DeleteLocalRef(javaString); env->DeleteLocalRef(javaString);

View file

@ -67,14 +67,9 @@ void JavaFSDir::collectFiles(std::vector<std::string> &names, bool includeSymlin
const jsize size = env->GetArrayLength(array); const jsize size = env->GetArrayLength(array);
for (jsize i = 0; i < size; ++i) { for (jsize i = 0; i < size; ++i) {
jobject file = env->GetObjectArrayElement(array, i); jobject file = env->GetObjectArrayElement(array, i);
jstring javaPath = AndroidUtil::Method_ZLFile_getPath->call(file); std::string path = AndroidUtil::Method_ZLFile_getPath->callForCppString(file);
env->DeleteLocalRef(file); env->DeleteLocalRef(file);
const char *chars = env->GetStringUTFChars(javaPath, 0);
std::string path(chars);
env->ReleaseStringUTFChars(javaPath, chars);
env->DeleteLocalRef(javaPath);
size_t index = path.rfind('/'); size_t index = path.rfind('/');
if (index != std::string::npos) { if (index != std::string::npos) {
path = path.substr(index + 1); path = path.substr(index + 1);

View file

@ -45,11 +45,7 @@ void ZLAndroidLibraryImplementation::init(int &argc, char **&argv) {
std::string ZLibrary::Language() { std::string ZLibrary::Language() {
JNIEnv *env = AndroidUtil::getEnv(); JNIEnv *env = AndroidUtil::getEnv();
jobject locale = AndroidUtil::StaticMethod_java_util_Locale_getDefault->call(); jobject locale = AndroidUtil::StaticMethod_java_util_Locale_getDefault->call();
jstring javaLang = AndroidUtil::Method_java_util_Locale_getLanguage->call(locale); std::string lang = AndroidUtil::Method_java_util_Locale_getLanguage->callForCppString(locale);
const char *langData = env->GetStringUTFChars(javaLang, 0);
std::string lang(langData);
env->ReleaseStringUTFChars(javaLang, langData);
env->DeleteLocalRef(javaLang);
env->DeleteLocalRef(locale); env->DeleteLocalRef(locale);
return lang; return lang;
} }
@ -57,11 +53,7 @@ std::string ZLibrary::Language() {
std::string ZLibrary::Version() { std::string ZLibrary::Version() {
JNIEnv *env = AndroidUtil::getEnv(); JNIEnv *env = AndroidUtil::getEnv();
jobject zlibrary = AndroidUtil::StaticMethod_ZLibrary_Instance->call(); jobject zlibrary = AndroidUtil::StaticMethod_ZLibrary_Instance->call();
jstring javaVersion = (jstring)AndroidUtil::Method_ZLibrary_getVersionName->call(zlibrary); std::string version = AndroidUtil::Method_ZLibrary_getVersionName->callForCppString(zlibrary);
const char *versionData = env->GetStringUTFChars(javaVersion, 0);
std::string version(versionData);
env->ReleaseStringUTFChars(javaVersion, versionData);
env->DeleteLocalRef(javaVersion);
env->DeleteLocalRef(zlibrary); env->DeleteLocalRef(zlibrary);
return version; return version;
} }