mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-03 09:49:19 +02:00
ZLUnicodeUtil is now based on java String methods
This commit is contained in:
parent
15f3e8e3c1
commit
9d2cea64ec
7 changed files with 69 additions and 11143 deletions
|
@ -22,6 +22,7 @@
|
|||
JavaVM *AndroidUtil::ourJavaVM = 0;
|
||||
|
||||
const char * const AndroidUtil::Class_java_lang_System = "java/lang/System";
|
||||
const char * const AndroidUtil::Class_java_lang_String = "java/lang/String";
|
||||
const char * const AndroidUtil::Class_java_util_Collection = "java/util/Collection";
|
||||
const char * const AndroidUtil::Class_java_util_Locale = "java/util/Locale";
|
||||
const char * const AndroidUtil::Class_java_io_InputStream = "java/io/InputStream";
|
||||
|
@ -37,6 +38,9 @@ const char * const AndroidUtil::Class_NativeBookModel = "org/geometerplus/fbread
|
|||
|
||||
jobject AndroidUtil::OBJECT_java_lang_System_err;
|
||||
|
||||
jmethodID AndroidUtil::MID_java_lang_String_toLowerCase;
|
||||
jmethodID AndroidUtil::MID_java_lang_String_toUpperCase;
|
||||
|
||||
jmethodID AndroidUtil::MID_java_util_Collection_toArray;
|
||||
|
||||
jmethodID AndroidUtil::SMID_java_util_Locale_getDefault;
|
||||
|
@ -107,6 +111,11 @@ bool AndroidUtil::init(JavaVM* jvm) {
|
|||
CHECK_NULL( OBJECT_java_lang_System_err = env->GetStaticObjectField(cls, field) );
|
||||
env->DeleteLocalRef(cls);
|
||||
|
||||
CHECK_NULL( cls = env->FindClass(Class_java_lang_String) );
|
||||
CHECK_NULL( MID_java_lang_String_toLowerCase = env->GetMethodID(cls, "toLowerCase", "()Ljava/lang/String;") );
|
||||
CHECK_NULL( MID_java_lang_String_toUpperCase = env->GetMethodID(cls, "toUpperCase", "()Ljava/lang/String;") );
|
||||
env->DeleteLocalRef(cls);
|
||||
|
||||
CHECK_NULL( cls = env->FindClass(Class_java_util_Collection) );
|
||||
CHECK_NULL( MID_java_util_Collection_toArray = env->GetMethodID(cls, "toArray", "()[Ljava/lang/Object;") );
|
||||
//CHECK_NULL( MID_java_util_Collection_add = env->GetMethodID(cls, "add", "(Ljava/lang/Object;)Z") );
|
||||
|
@ -195,14 +204,11 @@ jobject AndroidUtil::createZLFile(JNIEnv *env, const std::string &path) {
|
|||
return javaFile;
|
||||
}
|
||||
|
||||
bool AndroidUtil::extractJavaString(JNIEnv *env, jstring from, std::string &to) {
|
||||
if (from == 0) {
|
||||
return false;
|
||||
}
|
||||
std::string AndroidUtil::fromJavaString(JNIEnv *env, jstring from) {
|
||||
const char *data = env->GetStringUTFChars(from, 0);
|
||||
to.assign(data);
|
||||
const std::string result(data);
|
||||
env->ReleaseStringUTFChars(from, data);
|
||||
return true;
|
||||
return result;
|
||||
}
|
||||
|
||||
jstring AndroidUtil::createJavaString(JNIEnv* env, const std::string &str) {
|
||||
|
@ -220,13 +226,12 @@ std::string AndroidUtil::convertNonUtfString(const std::string &str) {
|
|||
|
||||
JNIEnv *env = getEnv();
|
||||
|
||||
std::string result;
|
||||
jchar *chars = new jchar[len];
|
||||
for (int i = 0; i < len; ++i) {
|
||||
chars[i] = str[i];
|
||||
}
|
||||
jstring javaString = env->NewString(chars, len);
|
||||
extractJavaString(env, javaString, result);
|
||||
const std::string result = fromJavaString(env, javaString);
|
||||
env->DeleteLocalRef(javaString);
|
||||
delete[] chars;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue