mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-03 09:49:19 +02:00
native code simplification (introduced JString class)
This commit is contained in:
parent
48cdfee8a2
commit
fdb21b67dc
4 changed files with 71 additions and 83 deletions
|
@ -218,10 +218,8 @@ bool AndroidUtil::init(JavaVM* jvm) {
|
|||
}
|
||||
|
||||
jobject AndroidUtil::createJavaFile(JNIEnv *env, const std::string &path) {
|
||||
jstring javaPath = createJavaString(env, path);
|
||||
jobject javaFile = StaticMethod_ZLFile_createFileByPath->call(javaPath);
|
||||
env->DeleteLocalRef(javaPath);
|
||||
return javaFile;
|
||||
JString javaPath(env, path, false);
|
||||
return StaticMethod_ZLFile_createFileByPath->call(javaPath.j());
|
||||
}
|
||||
|
||||
jobject AndroidUtil::createJavaEncryptionInfo(JNIEnv *env, shared_ptr<FileEncryptionInfo> info) {
|
||||
|
@ -229,25 +227,18 @@ jobject AndroidUtil::createJavaEncryptionInfo(JNIEnv *env, shared_ptr<FileEncryp
|
|||
return 0;
|
||||
}
|
||||
|
||||
jstring uri = createJavaString(env, info->Uri);
|
||||
jstring method = createJavaString(env, info->Method);
|
||||
jstring algorithm = createJavaString(env, info->Algorithm);
|
||||
jstring contentId = createJavaString(env, info->ContentId);
|
||||
JString uri(env, info->Uri, false);
|
||||
JString method(env, info->Method, false);
|
||||
JString algorithm(env, info->Algorithm, false);
|
||||
JString contentId(env, info->ContentId, false);
|
||||
|
||||
jobject javaInfo = Constructor_FileEncryptionInfo->call(uri, method, algorithm, contentId);
|
||||
|
||||
env->DeleteLocalRef(contentId);
|
||||
env->DeleteLocalRef(algorithm);
|
||||
env->DeleteLocalRef(method);
|
||||
env->DeleteLocalRef(uri);
|
||||
|
||||
return javaInfo;
|
||||
return Constructor_FileEncryptionInfo->call(uri.j(), method.j(), algorithm.j(), contentId.j());
|
||||
}
|
||||
|
||||
jobject AndroidUtil::createJavaImage(JNIEnv *env, const ZLFileImage &image) {
|
||||
jstring javaMimeType = createJavaString(env, image.mimeType());
|
||||
JString javaMimeType(env, image.mimeType());
|
||||
jobject javaFile = createJavaFile(env, image.file().path());
|
||||
jstring javaEncoding = createJavaString(env, image.encoding());
|
||||
JString javaEncoding(env, image.encoding());
|
||||
|
||||
std::vector<jint> offsets, sizes;
|
||||
const ZLFileImage::Blocks &blocks = image.blocks();
|
||||
|
@ -261,7 +252,7 @@ jobject AndroidUtil::createJavaImage(JNIEnv *env, const ZLFileImage &image) {
|
|||
jobject javaEncryptionInfo = createJavaEncryptionInfo(env, image.encryptionInfo());
|
||||
|
||||
jobject javaImage = Constructor_ZLFileImage->call(
|
||||
javaMimeType, javaFile, javaEncoding,
|
||||
javaMimeType.j(), javaFile, javaEncoding.j(),
|
||||
javaOffsets, javaSizes, javaEncryptionInfo
|
||||
);
|
||||
|
||||
|
@ -269,9 +260,7 @@ jobject AndroidUtil::createJavaImage(JNIEnv *env, const ZLFileImage &image) {
|
|||
env->DeleteLocalRef(javaEncryptionInfo);
|
||||
}
|
||||
|
||||
env->DeleteLocalRef(javaEncoding);
|
||||
env->DeleteLocalRef(javaFile);
|
||||
env->DeleteLocalRef(javaMimeType);
|
||||
env->DeleteLocalRef(javaOffsets);
|
||||
env->DeleteLocalRef(javaSizes);
|
||||
|
||||
|
@ -288,8 +277,14 @@ std::string AndroidUtil::fromJavaString(JNIEnv *env, jstring from) {
|
|||
return result;
|
||||
}
|
||||
|
||||
jstring AndroidUtil::createJavaString(JNIEnv* env, shared_ptr<std::string> str) {
|
||||
return str.isNull() ? 0 : createJavaString(env, *str);
|
||||
JString::JString(JNIEnv* env, const std::string &str, bool emptyIsNull) : myEnv(env) {
|
||||
myJ = (emptyIsNull && str.empty()) ? 0 : env->NewStringUTF(str.c_str());
|
||||
}
|
||||
|
||||
JString::~JString() {
|
||||
if (myJ != 0) {
|
||||
myEnv->DeleteLocalRef(myJ);
|
||||
}
|
||||
}
|
||||
|
||||
jstring AndroidUtil::createJavaString(JNIEnv* env, const std::string &str) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue