summaryrefslogtreecommitdiffstats
path: root/core/jni/android_util_StringBlock.cpp
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
commitd83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/jni/android_util_StringBlock.cpp
parent076357b8567458d4b6dfdcf839ef751634cd2bfb (diff)
downloadframeworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.zip
frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.gz
frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'core/jni/android_util_StringBlock.cpp')
-rw-r--r--core/jni/android_util_StringBlock.cpp204
1 files changed, 0 insertions, 204 deletions
diff --git a/core/jni/android_util_StringBlock.cpp b/core/jni/android_util_StringBlock.cpp
deleted file mode 100644
index ffb271c..0000000
--- a/core/jni/android_util_StringBlock.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-/* //device/libs/android_runtime/android_util_StringBlock.cpp
-**
-** Copyright 2006, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
-
-#define LOG_TAG "StringBlock"
-
-#include "jni.h"
-#include <utils/misc.h>
-#include <android_runtime/AndroidRuntime.h>
-#include <utils/Log.h>
-
-#include <utils/ResourceTypes.h>
-
-#include <stdio.h>
-
-namespace android {
-
-// ----------------------------------------------------------------------------
-
-static void doThrow(JNIEnv* env, const char* exc, const char* msg = NULL)
-{
- jclass npeClazz;
-
- npeClazz = env->FindClass(exc);
- LOG_FATAL_IF(npeClazz == NULL, "Unable to find class %s", exc);
-
- env->ThrowNew(npeClazz, msg);
-}
-
-static jint android_content_StringBlock_nativeCreate(JNIEnv* env, jobject clazz,
- jbyteArray bArray,
- jint off, jint len)
-{
- if (bArray == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- jsize bLen = env->GetArrayLength(bArray);
- if (off < 0 || off >= bLen || len < 0 || len > bLen || (off+len) > bLen) {
- doThrow(env, "java/lang/IndexOutOfBoundsException");
- return 0;
- }
-
- jbyte* b = env->GetByteArrayElements(bArray, NULL);
- ResStringPool* osb = new ResStringPool(b+off, len, true);
- env->ReleaseByteArrayElements(bArray, b, 0);
-
- if (osb == NULL || osb->getError() != NO_ERROR) {
- doThrow(env, "java/lang/IllegalArgumentException");
- return 0;
- }
-
- return (jint)osb;
-}
-
-static jint android_content_StringBlock_nativeGetSize(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResStringPool* osb = (ResStringPool*)token;
- if (osb == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- return osb->size();
-}
-
-static jstring android_content_StringBlock_nativeGetString(JNIEnv* env, jobject clazz,
- jint token, jint idx)
-{
- ResStringPool* osb = (ResStringPool*)token;
- if (osb == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- size_t len;
- const char16_t* str = osb->stringAt(idx, &len);
- if (str == NULL) {
- doThrow(env, "java/lang/IndexOutOfBoundsException");
- return 0;
- }
-
- return env->NewString((const jchar*)str, len);
-}
-
-static jintArray android_content_StringBlock_nativeGetStyle(JNIEnv* env, jobject clazz,
- jint token, jint idx)
-{
- ResStringPool* osb = (ResStringPool*)token;
- if (osb == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return NULL;
- }
-
- const ResStringPool_span* spans = osb->styleAt(idx);
- if (spans == NULL) {
- return NULL;
- }
-
- const ResStringPool_span* pos = spans;
- int num = 0;
- while (pos->name.index != ResStringPool_span::END) {
- num++;
- pos++;
- }
-
- if (num == 0) {
- return NULL;
- }
-
- jintArray array = env->NewIntArray((num*sizeof(ResStringPool_span))/sizeof(jint));
- if (array == NULL) {
- doThrow(env, "java/lang/OutOfMemoryError");
- return NULL;
- }
-
- num = 0;
- static const int numInts = sizeof(ResStringPool_span)/sizeof(jint);
- while (spans->name.index != ResStringPool_span::END) {
- env->SetIntArrayRegion(array,
- num*numInts, numInts,
- (jint*)spans);
- spans++;
- num++;
- }
-
- return array;
-}
-
-static jint android_content_StringBlock_nativeIndexOfString(JNIEnv* env, jobject clazz,
- jint token, jstring str)
-{
- ResStringPool* osb = (ResStringPool*)token;
- if (osb == NULL || str == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- const char16_t* str16 = env->GetStringChars(str, NULL);
- jsize strLen = env->GetStringLength(str);
-
- ssize_t idx = osb->indexOfString(str16, strLen);
-
- env->ReleaseStringChars(str, str16);
-
- return idx;
-}
-
-static void android_content_StringBlock_nativeDestroy(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResStringPool* osb = (ResStringPool*)token;
- if (osb == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return;
- }
-
- delete osb;
-}
-
-// ----------------------------------------------------------------------------
-
-/*
- * JNI registration.
- */
-static JNINativeMethod gStringBlockMethods[] = {
- /* name, signature, funcPtr */
- { "nativeCreate", "([BII)I",
- (void*) android_content_StringBlock_nativeCreate },
- { "nativeGetSize", "(I)I",
- (void*) android_content_StringBlock_nativeGetSize },
- { "nativeGetString", "(II)Ljava/lang/String;",
- (void*) android_content_StringBlock_nativeGetString },
- { "nativeGetStyle", "(II)[I",
- (void*) android_content_StringBlock_nativeGetStyle },
- { "nativeIndexOfString","(ILjava/lang/String;)I",
- (void*) android_content_StringBlock_nativeIndexOfString },
- { "nativeDestroy", "(I)V",
- (void*) android_content_StringBlock_nativeDestroy },
-};
-
-int register_android_content_StringBlock(JNIEnv* env)
-{
- return AndroidRuntime::registerNativeMethods(env,
- "android/content/res/StringBlock", gStringBlockMethods, NELEM(gStringBlockMethods));
-}
-
-}; // namespace android
-