summaryrefslogtreecommitdiffstats
path: root/core/jni/android_util_XmlBlock.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_XmlBlock.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_XmlBlock.cpp')
-rw-r--r--core/jni/android_util_XmlBlock.cpp426
1 files changed, 0 insertions, 426 deletions
diff --git a/core/jni/android_util_XmlBlock.cpp b/core/jni/android_util_XmlBlock.cpp
deleted file mode 100644
index 8887fdc..0000000
--- a/core/jni/android_util_XmlBlock.cpp
+++ /dev/null
@@ -1,426 +0,0 @@
-/* //device/libs/android_runtime/android_util_XmlBlock.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 "XmlBlock"
-
-#include "jni.h"
-#include <utils/misc.h>
-#include <android_runtime/AndroidRuntime.h>
-#include <utils/AssetManager.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_XmlBlock_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);
- ResXMLTree* osb = new ResXMLTree(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_XmlBlock_nativeGetStringBlock(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLTree* osb = (ResXMLTree*)token;
- if (osb == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- return (jint)&osb->getStrings();
-}
-
-static jint android_content_XmlBlock_nativeCreateParseState(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLTree* osb = (ResXMLTree*)token;
- if (osb == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- ResXMLParser* st = new ResXMLParser(*osb);
- if (st == NULL) {
- doThrow(env, "java/lang/OutOfMemoryError");
- return 0;
- }
-
- st->restart();
-
- return (jint)st;
-}
-
-static jint android_content_XmlBlock_nativeNext(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- return ResXMLParser::END_DOCUMENT;
- }
-
- do {
- jint code = (jint)st->next();
- switch (code) {
- case ResXMLParser::START_TAG:
- return 2;
- case ResXMLParser::END_TAG:
- return 3;
- case ResXMLParser::TEXT:
- return 4;
- case ResXMLParser::START_DOCUMENT:
- return 0;
- case ResXMLParser::END_DOCUMENT:
- return 1;
- case ResXMLParser::BAD_DOCUMENT:
- goto bad;
- }
- } while (true);
-
-bad:
- doThrow(env, "org/xmlpull/v1/XmlPullParserException",
- "Corrupt XML binary file");
- return ResXMLParser::BAD_DOCUMENT;
-}
-
-static jint android_content_XmlBlock_nativeGetNamespace(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- return -1;
- }
-
- return (jint)st->getElementNamespaceID();
-}
-
-static jint android_content_XmlBlock_nativeGetName(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- return -1;
- }
-
- return (jint)st->getElementNameID();
-}
-
-static jint android_content_XmlBlock_nativeGetText(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- return -1;
- }
-
- return (jint)st->getTextID();
-}
-
-static jint android_content_XmlBlock_nativeGetLineNumber(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- return (jint)st->getLineNumber();
-}
-
-static jint android_content_XmlBlock_nativeGetAttributeCount(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- return (jint)st->getAttributeCount();
-}
-
-static jint android_content_XmlBlock_nativeGetAttributeNamespace(JNIEnv* env, jobject clazz,
- jint token, jint idx)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- return (jint)st->getAttributeNamespaceID(idx);
-}
-
-static jint android_content_XmlBlock_nativeGetAttributeName(JNIEnv* env, jobject clazz,
- jint token, jint idx)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- return (jint)st->getAttributeNameID(idx);
-}
-
-static jint android_content_XmlBlock_nativeGetAttributeResource(JNIEnv* env, jobject clazz,
- jint token, jint idx)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- return (jint)st->getAttributeNameResID(idx);
-}
-
-static jint android_content_XmlBlock_nativeGetAttributeDataType(JNIEnv* env, jobject clazz,
- jint token, jint idx)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- return (jint)st->getAttributeDataType(idx);
-}
-
-static jint android_content_XmlBlock_nativeGetAttributeData(JNIEnv* env, jobject clazz,
- jint token, jint idx)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- return (jint)st->getAttributeData(idx);
-}
-
-static jint android_content_XmlBlock_nativeGetAttributeStringValue(JNIEnv* env, jobject clazz,
- jint token, jint idx)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- return (jint)st->getAttributeValueStringID(idx);
-}
-
-static jint android_content_XmlBlock_nativeGetAttributeIndex(JNIEnv* env, jobject clazz,
- jint token,
- jstring ns, jstring name)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL || name == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- const char16_t* ns16 = NULL;
- jsize nsLen = 0;
- if (ns) {
- ns16 = env->GetStringChars(ns, NULL);
- nsLen = env->GetStringLength(ns);
- }
-
- const char16_t* name16 = env->GetStringChars(name, NULL);
- jsize nameLen = env->GetStringLength(name);
-
- jint idx = (jint)st->indexOfAttribute(ns16, nsLen, name16, nameLen);
-
- if (ns) {
- env->ReleaseStringChars(ns, ns16);
- }
- env->ReleaseStringChars(name, name16);
-
- return idx;
-}
-
-static jint android_content_XmlBlock_nativeGetIdAttribute(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- ssize_t idx = st->indexOfID();
- return idx >= 0 ? (jint)st->getAttributeValueStringID(idx) : -1;
-}
-
-static jint android_content_XmlBlock_nativeGetClassAttribute(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- ssize_t idx = st->indexOfClass();
- return idx >= 0 ? (jint)st->getAttributeValueStringID(idx) : -1;
-}
-
-static jint android_content_XmlBlock_nativeGetStyleAttribute(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return 0;
- }
-
- ssize_t idx = st->indexOfStyle();
- if (idx < 0) {
- return 0;
- }
-
- Res_value value;
- if (st->getAttributeValue(idx, &value) < 0) {
- return 0;
- }
-
- return value.dataType == value.TYPE_REFERENCE
- || value.dataType == value.TYPE_ATTRIBUTE
- ? value.data : 0;
-}
-
-static void android_content_XmlBlock_nativeDestroyParseState(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLParser* st = (ResXMLParser*)token;
- if (st == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return;
- }
-
- delete st;
-}
-
-static void android_content_XmlBlock_nativeDestroy(JNIEnv* env, jobject clazz,
- jint token)
-{
- ResXMLTree* osb = (ResXMLTree*)token;
- if (osb == NULL) {
- doThrow(env, "java/lang/NullPointerException");
- return;
- }
-
- delete osb;
-}
-
-// ----------------------------------------------------------------------------
-
-/*
- * JNI registration.
- */
-static JNINativeMethod gXmlBlockMethods[] = {
- /* name, signature, funcPtr */
- { "nativeCreate", "([BII)I",
- (void*) android_content_XmlBlock_nativeCreate },
- { "nativeGetStringBlock", "(I)I",
- (void*) android_content_XmlBlock_nativeGetStringBlock },
- { "nativeCreateParseState", "(I)I",
- (void*) android_content_XmlBlock_nativeCreateParseState },
- { "nativeNext", "(I)I",
- (void*) android_content_XmlBlock_nativeNext },
- { "nativeGetNamespace", "(I)I",
- (void*) android_content_XmlBlock_nativeGetNamespace },
- { "nativeGetName", "(I)I",
- (void*) android_content_XmlBlock_nativeGetName },
- { "nativeGetText", "(I)I",
- (void*) android_content_XmlBlock_nativeGetText },
- { "nativeGetLineNumber", "(I)I",
- (void*) android_content_XmlBlock_nativeGetLineNumber },
- { "nativeGetAttributeCount", "(I)I",
- (void*) android_content_XmlBlock_nativeGetAttributeCount },
- { "nativeGetAttributeNamespace","(II)I",
- (void*) android_content_XmlBlock_nativeGetAttributeNamespace },
- { "nativeGetAttributeName", "(II)I",
- (void*) android_content_XmlBlock_nativeGetAttributeName },
- { "nativeGetAttributeResource", "(II)I",
- (void*) android_content_XmlBlock_nativeGetAttributeResource },
- { "nativeGetAttributeDataType", "(II)I",
- (void*) android_content_XmlBlock_nativeGetAttributeDataType },
- { "nativeGetAttributeData", "(II)I",
- (void*) android_content_XmlBlock_nativeGetAttributeData },
- { "nativeGetAttributeStringValue", "(II)I",
- (void*) android_content_XmlBlock_nativeGetAttributeStringValue },
- { "nativeGetAttributeIndex", "(ILjava/lang/String;Ljava/lang/String;)I",
- (void*) android_content_XmlBlock_nativeGetAttributeIndex },
- { "nativeGetIdAttribute", "(I)I",
- (void*) android_content_XmlBlock_nativeGetIdAttribute },
- { "nativeGetClassAttribute", "(I)I",
- (void*) android_content_XmlBlock_nativeGetClassAttribute },
- { "nativeGetStyleAttribute", "(I)I",
- (void*) android_content_XmlBlock_nativeGetStyleAttribute },
- { "nativeDestroyParseState", "(I)V",
- (void*) android_content_XmlBlock_nativeDestroyParseState },
- { "nativeDestroy", "(I)V",
- (void*) android_content_XmlBlock_nativeDestroy },
-};
-
-int register_android_content_XmlBlock(JNIEnv* env)
-{
- return AndroidRuntime::registerNativeMethods(env,
- "android/content/res/XmlBlock", gXmlBlockMethods, NELEM(gXmlBlockMethods));
-}
-
-}; // namespace android
-