aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src/utils/jni_data_utils.h
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2014-06-24 06:18:11 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-06-24 06:18:11 +0000
commitc1ded3dd79f08d94789ea7191342c6fc83df021c (patch)
tree9752f80961ebc343a277246925255f6c6e988415 /native/jni/src/utils/jni_data_utils.h
parent03404d559c9b6bbdd043f1ad316b5ae343bc42d1 (diff)
parent702e153fbc28d54aeb2ded40b9f3f31c1fd154e9 (diff)
downloadlatinime-c1ded3dd79f08d94789ea7191342c6fc83df021c.tar.gz
latinime-c1ded3dd79f08d94789ea7191342c6fc83df021c.tar.xz
latinime-c1ded3dd79f08d94789ea7191342c6fc83df021c.zip
am 702e153f: Merge "Support migration/dump of Beginning-of-Sentence entries."
* commit '702e153fbc28d54aeb2ded40b9f3f31c1fd154e9': Support migration/dump of Beginning-of-Sentence entries.
Diffstat (limited to 'native/jni/src/utils/jni_data_utils.h')
-rw-r--r--native/jni/src/utils/jni_data_utils.h24
1 files changed, 17 insertions, 7 deletions
diff --git a/native/jni/src/utils/jni_data_utils.h b/native/jni/src/utils/jni_data_utils.h
index 67a66fdfe..3514aeeb0 100644
--- a/native/jni/src/utils/jni_data_utils.h
+++ b/native/jni/src/utils/jni_data_utils.h
@@ -69,18 +69,23 @@ class JniDataUtils {
static void outputCodePoints(JNIEnv *env, jintArray intArrayToOutputCodePoints, const int start,
const int maxLength, const int *const codePoints, const int codePointCount,
const bool needsNullTermination) {
- const int outputCodePointCount = std::min(maxLength, codePointCount);
- int outputCodePonts[outputCodePointCount];
- for (int i = 0; i < outputCodePointCount; ++i) {
+ const int codePointBufSize = std::min(maxLength, codePointCount);
+ int outputCodePonts[codePointBufSize];
+ int outputCodePointCount = 0;
+ for (int i = 0; i < codePointBufSize; ++i) {
const int codePoint = codePoints[i];
+ int codePointToOutput = codePoint;
if (!CharUtils::isInUnicodeSpace(codePoint)) {
- outputCodePonts[i] = CODE_POINT_REPLACEMENT_CHARACTER;
+ if (codePoint == CODE_POINT_BEGINNING_OF_SENTENCE) {
+ // Just skip Beginning-of-Sentence marker.
+ continue;
+ }
+ codePointToOutput = CODE_POINT_REPLACEMENT_CHARACTER;
} else if (codePoint >= 0x01 && codePoint <= 0x1F) {
// Control code.
- outputCodePonts[i] = CODE_POINT_REPLACEMENT_CHARACTER;
- } else {
- outputCodePonts[i] = codePoint;
+ codePointToOutput = CODE_POINT_REPLACEMENT_CHARACTER;
}
+ outputCodePonts[outputCodePointCount++] = codePointToOutput;
}
env->SetIntArrayRegion(intArrayToOutputCodePoints, start, outputCodePointCount,
outputCodePonts);
@@ -90,6 +95,11 @@ class JniDataUtils {
}
}
+ static void putBooleanToArray(JNIEnv *env, jbooleanArray array, const int index,
+ const jboolean value) {
+ env->SetBooleanArrayRegion(array, index, 1 /* len */, &value);
+ }
+
static void putIntToArray(JNIEnv *env, jintArray array, const int index, const int value) {
env->SetIntArrayRegion(array, index, 1 /* len */, &value);
}