Exemple #1
0
//static jstring NativeCollation_getRules(JNIEnv* env, jclass, jint address) {
JNIEXPORT jstring JNICALL
Java_com_ibm_icu4jni_text_NativeCollation_getRules(JNIEnv* env, jclass,
		jint address) {
	int32_t length = 0;
	const UChar* rules = ucol_getRules(toCollator(address), &length);
	return env->NewString((const jchar *) rules, length);
}
static jlong NativeCollation_safeClone(JNIEnv* env, jclass, jlong address) {
    UErrorCode status = U_ZERO_ERROR;
    jint bufferSize = U_COL_SAFECLONE_BUFFERSIZE;
    UCollator* c = ucol_safeClone(toCollator(address), NULL, &bufferSize, &status);
    maybeThrowIcuException(env, "ucol_safeClone", status);
    return static_cast<jlong>(reinterpret_cast<uintptr_t>(c));
}
Exemple #3
0
//static jbyteArray NativeCollation_getSortKey(JNIEnv* env, jclass, jint address, jstring source0) {
JNIEXPORT jbyteArray JNICALL
Java_com_ibm_icu4jni_text_NativeCollation_getSortKey(JNIEnv* env, jclass,
		jint address, jstring source0) {
	ScopedJavaUnicodeString source(env, source0);
	const UCollator* collator = toCollator(address);
	uint8_t byteArray[UCOL_MAX_BUFFER * 2];
	UniquePtr<uint8_t[]> largerByteArray;
	uint8_t* usedByteArray = byteArray;
	const UChar* chars = source.unicodeString().getBuffer();
	size_t charCount = source.unicodeString().length();
	size_t byteArraySize = ucol_getSortKey(collator, chars, charCount,
			usedByteArray, sizeof(byteArray) - 1);
	if (byteArraySize > sizeof(byteArray) - 1) {
		// didn't fit, try again with a larger buffer.
		largerByteArray.reset(new uint8_t[byteArraySize + 1]);
		usedByteArray = largerByteArray.get();
		byteArraySize = ucol_getSortKey(collator, chars, charCount,
				usedByteArray, byteArraySize);
	}
	if (byteArraySize == 0) {
		return NULL;
	}
	jbyteArray result = env->NewByteArray(byteArraySize);
	env->SetByteArrayRegion(result, 0, byteArraySize,
			reinterpret_cast<jbyte*> (usedByteArray));
	return result;
}
Exemple #4
0
static jint NativeCollation_compare(JNIEnv* env, jclass, jint address, jstring lhs0, jstring rhs0) {
    ScopedJavaUnicodeString lhs(env, lhs0);
    ScopedJavaUnicodeString rhs(env, rhs0);
    return ucol_strcoll(toCollator(address),
            lhs.unicodeString().getBuffer(), lhs.unicodeString().length(),
            rhs.unicodeString().getBuffer(), rhs.unicodeString().length());
}
Exemple #5
0
static jint NativeCollation_safeClone(JNIEnv* env, jclass, jint address) {
    UErrorCode status = U_ZERO_ERROR;
    jint bufferSize = U_COL_SAFECLONE_BUFFERSIZE;
    UCollator* c = ucol_safeClone(toCollator(address), NULL, &bufferSize, &status);
    icu4jni_error(env, status);
    return static_cast<jint>(reinterpret_cast<uintptr_t>(c));
}
Exemple #6
0
//static void NativeCollation_setAttribute(JNIEnv* env, jclass, jint address, jint type, jint value) {
JNIEXPORT void JNICALL
Java_com_ibm_icu4jni_text_NativeCollation_setAttribute(JNIEnv* env, jclass,
		jint address, jint type, jint value) {
	UErrorCode status = U_ZERO_ERROR;
	ucol_setAttribute(toCollator(address), (UColAttribute) type,
			(UColAttributeValue) value, &status);
	icu4jni_error(env, status);
}
Exemple #7
0
static jint NativeCollation_getCollationElementIterator(JNIEnv* env, jclass, jint address, jstring source0) {
    ScopedJavaUnicodeString source(env, source0);
    UErrorCode status = U_ZERO_ERROR;
    UCollationElements* result = ucol_openElements(toCollator(address),
            source.unicodeString().getBuffer(), source.unicodeString().length(), &status);
    icu4jni_error(env, status);
    return static_cast<jint>(reinterpret_cast<uintptr_t>(result));
}
Exemple #8
0
//static void NativeCollation_setNormalization(JNIEnv* env, jclass, jint address, jint mode) {
JNIEXPORT void JNICALL
Java_com_ibm_icu4jni_text_NativeCollation_setNormalization(JNIEnv* env, jclass,
		jint address, jint mode) {
	UErrorCode status = U_ZERO_ERROR;
	ucol_setAttribute(toCollator(address), UCOL_NORMALIZATION_MODE,
			UColAttributeValue(mode), &status);
	icu4jni_error(env, status);
}
Exemple #9
0
//static jint NativeCollation_getNormalization(JNIEnv* env, jclass, jint address) {
JNIEXPORT jint JNICALL
Java_com_ibm_icu4jni_text_NativeCollation_getNormalization(JNIEnv* env, jclass,
		jint address) {
	UErrorCode status = U_ZERO_ERROR;
	jint result = ucol_getAttribute(toCollator(address),
			UCOL_NORMALIZATION_MODE, &status);
	icu4jni_error(env, status);
	return result;
}
Exemple #10
0
//static jint NativeCollation_getAttribute(JNIEnv* env, jclass, jint address, jint type) {
JNIEXPORT jint JNICALL
Java_com_ibm_icu4jni_text_NativeCollation_getAttribute(JNIEnv* env, jclass,
		jint address, jint type) {
	UErrorCode status = U_ZERO_ERROR;
	jint result = ucol_getAttribute(toCollator(address), (UColAttribute) type,
			&status);
	icu4jni_error(env, status);
	return result;
}
Exemple #11
0
//static jint NativeCollation_compare(JNIEnv* env, jclass, jint address, jstring lhs0, jstring rhs0) {
JNIEXPORT jint JNICALL
Java_com_ibm_icu4jni_text_NativeCollation_compare(JNIEnv* env, jclass,
		jint address, jstring lhs0, jstring rhs0) {
	ScopedJavaUnicodeString lhs(env, lhs0);
	ScopedJavaUnicodeString rhs(env, rhs0);
	return ucol_strcoll(toCollator(address), lhs.unicodeString().getBuffer(),
			lhs.unicodeString().length(), rhs.unicodeString().getBuffer(),
			rhs.unicodeString().length());
}
static jlong NativeCollation_getCollationElementIterator(JNIEnv* env, jclass, jlong address, jstring javaSource) {
    ScopedStringChars source(env, javaSource);
    if (source.get() == NULL) {
        return -1;
    }
    UErrorCode status = U_ZERO_ERROR;
    UCollationElements* result = ucol_openElements(toCollator(address), source.get(), source.size(), &status);
    maybeThrowIcuException(env, "ucol_openElements", status);
    return static_cast<jlong>(reinterpret_cast<uintptr_t>(result));
}
static jint NativeCollation_compare(JNIEnv* env, jclass, jlong address, jstring javaLhs, jstring javaRhs) {
    ScopedStringChars lhs(env, javaLhs);
    if (lhs.get() == NULL) {
        return 0;
    }
    ScopedStringChars rhs(env, javaRhs);
    if (rhs.get() == NULL) {
        return 0;
    }
    return ucol_strcoll(toCollator(address), lhs.get(), lhs.size(), rhs.get(), rhs.size());
}
static jbyteArray NativeCollation_getSortKey(JNIEnv* env, jclass, jlong address, jstring javaSource) {
    ScopedStringChars source(env, javaSource);
    if (source.get() == NULL) {
        return NULL;
    }
    const UCollator* collator  = toCollator(address);
    uint8_t byteArray[UCOL_MAX_BUFFER * 2];
    UniquePtr<uint8_t[]> largerByteArray;
    uint8_t* usedByteArray = byteArray;
    size_t byteArraySize = ucol_getSortKey(collator, source.get(), source.size(), usedByteArray, sizeof(byteArray) - 1);
    if (byteArraySize > sizeof(byteArray) - 1) {
        // didn't fit, try again with a larger buffer.
        largerByteArray.reset(new uint8_t[byteArraySize + 1]);
        usedByteArray = largerByteArray.get();
        byteArraySize = ucol_getSortKey(collator, source.get(), source.size(), usedByteArray, byteArraySize);
    }
    if (byteArraySize == 0) {
        return NULL;
    }
    jbyteArray result = env->NewByteArray(byteArraySize);
    env->SetByteArrayRegion(result, 0, byteArraySize, reinterpret_cast<jbyte*>(usedByteArray));
    return result;
}
static jstring NativeCollation_getRules(JNIEnv* env, jclass, jlong address) {
    int32_t length = 0;
    const UChar* rules = ucol_getRules(toCollator(address), &length);
    return env->NewString(rules, length);
}
Exemple #16
0
// by jshwang
//static void NativeCollation_closeCollator(JNIEnv*, jclass, jint address) {
JNIEXPORT void JNICALL
Java_com_ibm_icu4jni_text_NativeCollation_closeCollator(JNIEnv*, jclass,
		jint address) {
	ucol_close(toCollator(address));
}
static void NativeCollation_setAttribute(JNIEnv* env, jclass, jlong address, jint type, jint value) {
    UErrorCode status = U_ZERO_ERROR;
    ucol_setAttribute(toCollator(address), (UColAttribute)type, (UColAttributeValue)value, &status);
    maybeThrowIcuException(env, "ucol_setAttribute", status);
}
static void NativeCollation_closeCollator(JNIEnv*, jclass, jlong address) {
    ucol_close(toCollator(address));
}
static jint NativeCollation_getAttribute(JNIEnv* env, jclass, jlong address, jint type) {
    UErrorCode status = U_ZERO_ERROR;
    jint result = ucol_getAttribute(toCollator(address), (UColAttribute) type, &status);
    maybeThrowIcuException(env, "ucol_getAttribute", status);
    return result;
}
Exemple #20
0
static void NativeCollation_setAttribute(JNIEnv* env, jclass, jint address, jint type, jint value) {
    UErrorCode status = U_ZERO_ERROR;
    ucol_setAttribute(toCollator(address), (UColAttribute)type, (UColAttributeValue)value, &status);
    icu4jni_error(env, status);
}