/*static*/ int JSonDB::readMapKey(const unsigned char * stringVal, size_t stringLen, int cte_pool) { if (m_record == 1) { if (m_recordEntry < MAX_FIELD_PER_RECORD) { // Store name and index. m_entryIdx = addField(stringVal, stringLen); m_recordEntry++; } else { klb_assertAlways("Limit is 64 field / record"); return 0; } } else { if (cte_pool > -1) { int id = bjson_getCPCacheID((yajl_handle)this->parserCtx, cte_pool); if (id != -1) { m_entryIdx = id; return 1; } } // remap key to index. m_entryIdx = getFieldID(stringVal, stringLen); if (m_entryIdx == -1) { klb_assertAlways("Record structure changed between records."); } if (cte_pool > -1) { bjson_setCPCacheID((yajl_handle)this->parserCtx, cte_pool, m_entryIdx); } } return 1; }
jobject MFVec3f::toJavaObject(int bConstField) { JNIEnv *jniEnv = getJniEnv(); jclass classid = bConstField ? getConstFieldID() : getFieldID(); jmethodID initMethod = bConstField ? getConstInitMethodID() : getInitMethodID(); jobject fieldObject = jniEnv->NewObject(classid, initMethod); jmethodID setNameMethod = bConstField ? getConstSetNameMethodID() : getSetNameMethodID(); jmethodID addValueMethod = bConstField ? getConstAddValueMethodID() : getAddValueMethodID(); char *fieldName = getName(); jstring jfieldName = NULL; if (fieldName && strlen(fieldName)) jfieldName = jniEnv->NewStringUTF(getName()); jniEnv->CallVoidMethod(fieldObject, setNameMethod, jfieldName); if (jfieldName) jniEnv->DeleteLocalRef(jfieldName); int size = getSize(); for (int n=0; n<size; n++) { float value[3]; get1Value(n, value); jfloat x = value[0]; jfloat y = value[1]; jfloat z = value[2]; jniEnv->CallVoidMethod(fieldObject, addValueMethod, x, y, z); } return fieldObject; }
void SFBool::setJavaIDs() { if (!mInit) { JNIEnv *jniEnv = getJniEnv(); if (jniEnv == NULL) return; // Class IDs mFieldClassID = jniEnv->FindClass("vrml/field/SFBool"); mConstFieldClassID = jniEnv->FindClass("vrml/field/ConstSFBool"); assert(mFieldClassID && mConstFieldClassID); // MethodIDs jclass classid = getFieldID(); mInitMethodID = jniEnv->GetMethodID(classid, "<init>", "(Z)V"); mGetValueMethodID = jniEnv->GetMethodID(classid, "getValue", "()Z"); mSetValueMethodID = jniEnv->GetMethodID(classid, "setValue", "(Z)V"); mSetNameMethodID = jniEnv->GetMethodID(classid, "setName", "(Ljava/lang/String;)V"); assert(mInitMethodID && mGetValueMethodID && mSetValueMethodID && mSetNameMethodID); // MethodIDs classid = getConstFieldID(); mConstInitMethodID = jniEnv->GetMethodID(classid, "<init>", "(Z)V"); mConstGetValueMethodID = jniEnv->GetMethodID(classid, "getValue", "()Z"); mConstSetValueMethodID = jniEnv->GetMethodID(classid, "setValue", "(Z)V"); mConstSetNameMethodID = jniEnv->GetMethodID(classid, "setName", "(Ljava/lang/String;)V"); assert(mConstInitMethodID && mConstGetValueMethodID && mConstSetValueMethodID && mConstSetNameMethodID); mInit = 1; } }
void SFBool::getValue(jobject field, int bConstField) { assert(field); JNIEnv *jniEnv = getJniEnv(); jclass classid = bConstField ? getConstFieldID() : getFieldID(); jmethodID setValueMethod = bConstField ? getConstSetValueMethodID() : getSetValueMethodID(); assert(classid && setValueMethod); jboolean value = getValue(); jniEnv->CallVoidMethod(field, setValueMethod, value); }
void SFBool::setValue(jobject field, int bConstField) { assert(field); JNIEnv *jniEnv = getJniEnv(); jclass classid = bConstField ? getConstFieldID() : getFieldID(); jmethodID getValueMethod = bConstField ? getConstGetValueMethodID() : getGetValueMethodID(); assert(classid && getValueMethod); jboolean value = jniEnv->CallBooleanMethod(field, getValueMethod); setValue(value ? true : false); }
void SFVec3f::getValue(jobject field, int bConstField) { assert(field); JNIEnv *jniEnv = getJniEnv(); jclass classid = bConstField ? getConstFieldID() : getFieldID(); jmethodID setValueMethod = bConstField ? getConstSetValueMethodID() : getSetValueMethodID(); assert(classid && setValueMethod); jfloat x = getX(); jfloat y = getY(); jfloat z = getZ(); jniEnv->CallVoidMethod(field, setValueMethod, x, y, z); }
void SFVec3f::setValue(jobject field, int bConstField) { assert(field); JNIEnv *jniEnv = getJniEnv(); jclass classid = bConstField ? getConstFieldID() : getFieldID(); jmethodID getXMethod = bConstField ? getConstGetXMethodID() : getGetXMethodID(); jmethodID getYMethod = bConstField ? getConstGetYMethodID() : getGetYMethodID(); jmethodID getZMethod = bConstField ? getConstGetZMethodID() : getGetZMethodID(); assert(classid && getXMethod && getYMethod && getZMethod); jfloat x = jniEnv->CallFloatMethod(field, getXMethod); jfloat y = jniEnv->CallFloatMethod(field, getYMethod); jfloat z = jniEnv->CallFloatMethod(field, getZMethod); setValue(x, y, z); }
jobject SFBool::toJavaObject(int bConstField) { JNIEnv *jniEnv = getJniEnv(); jclass classid = bConstField ? getConstFieldID() : getFieldID(); jmethodID initMethod = bConstField ? getConstInitMethodID() : getInitMethodID(); jboolean value = getValue(); jobject eventField = jniEnv->NewObject(classid, initMethod, value); jmethodID setNameMethod = bConstField ? getConstSetNameMethodID() : getSetNameMethodID(); char *fieldName = getName(); jstring jfieldName = NULL; if (fieldName && strlen(fieldName)) jfieldName = jniEnv->NewStringUTF(getName()); jniEnv->CallVoidMethod(eventField, setNameMethod, jfieldName); if (jfieldName) jniEnv->DeleteLocalRef(jfieldName); return eventField; }
void MFInt32::setValue(jobject field, int bConstField) { assert(field); JNIEnv *jniEnv = getJniEnv(); jclass classid = bConstField ? getConstFieldID() : getFieldID(); jmethodID getSizeMethod = bConstField ? getConstGetSizeMethodID() : getGetSizeMethodID(); jmethodID getValueMethod = bConstField ? getConstGet1ValueMethodID() : getGet1ValueMethodID(); assert(classid && getValueMethod); jint jsize = jniEnv->CallIntMethod(field, getSizeMethod); int size = getSize(); for (int n=0; n<jsize; n++) { jint value = jniEnv->CallIntMethod(field, getValueMethod, n); if (n < size) set1Value(0, value); else addValue(value); } }
jobject SFVec3f::toJavaObject(int bConstField) { JNIEnv *jniEnv = getJniEnv(); jclass classid = bConstField ? getConstFieldID() : getFieldID(); jmethodID initMethod = bConstField ? getConstInitMethodID() : getInitMethodID(); jfloat x = getX(); jfloat y = getY(); jfloat z = getZ(); jobject eventField = jniEnv->NewObject(classid, initMethod, x, y, z); jmethodID setNameMethod = bConstField ? getConstSetNameMethodID() : getSetNameMethodID(); char *fieldName = getName(); jstring jfieldName = NULL; if (fieldName && strlen(fieldName)) jfieldName = jniEnv->NewStringUTF(getName()); jniEnv->CallVoidMethod(eventField, setNameMethod, jfieldName); if (jfieldName) jniEnv->DeleteLocalRef(jfieldName); return eventField; }
void MFInt32::setJavaIDs() { if (!mInit) { JNIEnv *jniEnv = getJniEnv(); if (jniEnv == NULL) return; // Class IDs mFieldClassID = jniEnv->FindClass("vrml/field/MFInt32"); mConstFieldClassID = jniEnv->FindClass("vrml/field/ConstMFInt32"); assert(mFieldClassID && mConstFieldClassID); // MethodIDs jclass classid = getFieldID(); mInitMethodID = jniEnv->GetMethodID(classid, "<init>", "()V"); mGetSizeMethodID = jniEnv->GetMethodID(classid, "getSize", "()I"); mClearMethodID = jniEnv->GetMethodID(classid, "clear", "()V"); mDeleteMethodID = jniEnv->GetMethodID(classid, "delete", "(I)V"); mAddValueMethodID = jniEnv->GetMethodID(classid, "addValue", "(I)V"); mInsertValueMethodID = jniEnv->GetMethodID(classid, "insertValue", "(II)V"); mSet1ValueMethodID = jniEnv->GetMethodID(classid, "set1Value", "(II)V"); mGet1ValueMethodID = jniEnv->GetMethodID(classid, "get1Value", "(I)I"); mSetNameMethodID = jniEnv->GetMethodID(classid, "setName", "(Ljava/lang/String;)V"); assert(mInitMethodID); assert(mGetSizeMethodID); assert(mClearMethodID); assert(mDeleteMethodID); assert(mAddValueMethodID); assert(mInsertValueMethodID); assert(mSet1ValueMethodID); assert(mGet1ValueMethodID); assert(mSetNameMethodID); // Const MethodIDs classid = getConstFieldID(); mConstInitMethodID = jniEnv->GetMethodID(classid, "<init>", "()V"); mConstGetSizeMethodID = jniEnv->GetMethodID(classid, "getSize", "()I"); mConstClearMethodID = jniEnv->GetMethodID(classid, "clear", "()V"); mConstDeleteMethodID = jniEnv->GetMethodID(classid, "delete", "(I)V"); mConstAddValueMethodID = jniEnv->GetMethodID(classid, "addValue", "(I)V"); mConstInsertValueMethodID = jniEnv->GetMethodID(classid, "insertValue", "(II)V"); mConstSet1ValueMethodID = jniEnv->GetMethodID(classid, "set1Value", "(II)V"); mConstGet1ValueMethodID = jniEnv->GetMethodID(classid, "get1Value", "(I)I"); mConstSetNameMethodID = jniEnv->GetMethodID(classid, "setName", "(Ljava/lang/String;)V"); assert(mConstInitMethodID); assert(mConstGetSizeMethodID); assert(mConstClearMethodID); assert(mConstDeleteMethodID); assert(mConstAddValueMethodID); assert(mConstInsertValueMethodID); assert(mConstSet1ValueMethodID); assert(mConstGet1ValueMethodID); assert(mConstSetNameMethodID); assert(mConstInitMethodID && mConstSetNameMethodID); mInit = 1; } }
void JNIUtil::initCache() { LOG_TIMER(TAG, "initializing JNI cache"); JNIEnv *env = JNIScope::getEnv(); classClass = findClass("java/lang/Class"); objectClass = findClass("java/lang/Object"); numberClass = findClass("java/lang/Number"); stringClass = findClass("java/lang/String"); shortClass = findClass("java/lang/Short"); integerClass = findClass("java/lang/Integer"); longClass = findClass("java/lang/Long"); floatClass = findClass("java/lang/Float"); doubleClass = findClass("java/lang/Double"); booleanClass = findClass("java/lang/Boolean"); shortArrayClass = findClass("[S"); intArrayClass = findClass("[I"); longArrayClass = findClass("[J"); floatArrayClass = findClass("[F"); doubleArrayClass = findClass("[D"); booleanArrayClass = findClass("[Z"); objectArrayClass = findClass("[Ljava/lang/Object;"); arrayListClass = findClass("java/util/ArrayList"); hashMapClass = findClass("java/util/HashMap"); dateClass = findClass("java/util/Date"); setClass = findClass("java/util/Set"); outOfMemoryError = findClass("java/lang/OutOfMemoryError"); nullPointerException = findClass("java/lang/NullPointerException"); throwableClass = findClass("java/lang/Throwable"); v8ObjectClass = findClass("org/appcelerator/kroll/runtime/v8/V8Object"); v8FunctionClass = findClass("org/appcelerator/kroll/runtime/v8/V8Function"); krollRuntimeClass = findClass("org/appcelerator/kroll/KrollRuntime"); krollInvocationClass = findClass("org/appcelerator/kroll/KrollInvocation"); krollObjectClass = findClass("org/appcelerator/kroll/KrollObject"); krollProxyClass = findClass("org/appcelerator/kroll/KrollProxy"); krollAssetHelperClass = findClass("org/appcelerator/kroll/util/KrollAssetHelper"); krollLoggingClass = findClass("org/appcelerator/kroll/KrollLogging"); tiJsErrorDialogClass = findClass("org/appcelerator/kroll/common/TiJSErrorDialog"); referenceTableClass = findClass("org/appcelerator/kroll/runtime/v8/ReferenceTable"); classGetNameMethod = getMethodID(classClass, "getName", "()Ljava/lang/String;", false); arrayListInitMethod = getMethodID(arrayListClass, "<init>", "()V", false); arrayListAddMethod = getMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z", false); arrayListGetMethod = getMethodID(arrayListClass, "get", "(I)Ljava/lang/Object;", false); arrayListRemoveMethod = getMethodID(arrayListClass, "remove", "(I)Ljava/lang/Object;", false); hashMapInitMethod = getMethodID(hashMapClass, "<init>", "(I)V", false); hashMapGetMethod = getMethodID(hashMapClass, "get", "(Ljava/lang/Object;)Ljava/lang/Object;", false); hashMapPutMethod = getMethodID(hashMapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", false); hashMapKeySetMethod = getMethodID(hashMapClass, "keySet", "()Ljava/util/Set;", false); hashMapRemoveMethod = getMethodID(hashMapClass, "remove", "(Ljava/lang/Object;)Ljava/lang/Object;", false); setToArrayMethod = getMethodID(setClass, "toArray", "()[Ljava/lang/Object;", false); dateInitMethod = getMethodID(dateClass, "<init>", "(J)V", false); dateGetTimeMethod = getMethodID(dateClass, "getTime", "()J", false); integerInitMethod = getMethodID(integerClass, "<init>", "(I)V", false); doubleInitMethod = getMethodID(doubleClass, "<init>", "(D)V", false); booleanInitMethod = getMethodID(booleanClass, "<init>", "(Z)V", false); booleanBooleanValueMethod = getMethodID(booleanClass, "booleanValue", "()Z", false); longInitMethod = getMethodID(longClass, "<init>", "(J)V", false); numberDoubleValueMethod = getMethodID(numberClass, "doubleValue", "()D", false); throwableGetMessageMethod = getMethodID(throwableClass, "getMessage", "()Ljava/lang/String;", false); v8ObjectPtrField = getFieldID(v8ObjectClass, "ptr", "J"); v8ObjectInitMethod = getMethodID(v8ObjectClass, "<init>", "(J)V", false); v8FunctionInitMethod = getMethodID(v8FunctionClass, "<init>", "(J)V", false); referenceTableCreateReferenceMethod = getMethodID(referenceTableClass, "createReference", "(Ljava/lang/Object;)I", true); referenceTableDestroyReferenceMethod = getMethodID(referenceTableClass, "destroyReference", "(I)V", true); referenceTableMakeWeakReferenceMethod = getMethodID(referenceTableClass, "makeWeakReference", "(I)V", true); referenceTableClearWeakReferenceMethod = getMethodID(referenceTableClass, "clearWeakReference", "(I)Ljava/lang/Object;", true); referenceTableGetReferenceMethod = getMethodID(referenceTableClass, "getReference", "(I)Ljava/lang/Object;", true); jfieldID dontInterceptField = env->GetStaticFieldID(krollRuntimeClass, "DONT_INTERCEPT", "I"); krollRuntimeDontIntercept = env->GetStaticIntField(krollRuntimeClass, dontInterceptField); krollInvocationInitMethod = getMethodID(krollInvocationClass, "<init>", "(Ljava/lang/String;)V", false); krollObjectSetHasListenersForEventTypeMethod = getMethodID(krollObjectClass, "setHasListenersForEventType", "(Ljava/lang/String;Z)V"); krollObjectOnEventFiredMethod = getMethodID(krollObjectClass, "onEventFired", "(Ljava/lang/String;Ljava/lang/Object;)V"); const char *createProxySignature = "(Ljava/lang/Class;Lorg/appcelerator/kroll/KrollObject;[Ljava/lang/Object;Ljava/lang/String;)Lorg/appcelerator/kroll/KrollProxy;"; krollProxyCreateProxyMethod = getMethodID(krollProxyClass, "createProxy", createProxySignature, true); krollProxyCreateDeprecatedProxyMethod = getMethodID(krollProxyClass, "createDeprecatedProxy", createProxySignature, true); krollProxyKrollObjectField = getFieldID(krollProxyClass, "krollObject", "Lorg/appcelerator/kroll/KrollObject;"); krollProxyModelListenerField = getFieldID(krollProxyClass, "modelListener", "Lorg/appcelerator/kroll/KrollProxyListener;"); krollProxySetIndexedPropertyMethod = getMethodID(krollProxyClass, "setIndexedProperty", "(ILjava/lang/Object;)V"); krollProxyGetIndexedPropertyMethod = getMethodID(krollProxyClass, "getIndexedProperty", "(I)Ljava/lang/Object;"); krollProxyOnPropertyChangedMethod = getMethodID(krollProxyClass, "onPropertyChanged", "(Ljava/lang/String;Ljava/lang/Object;)V"); krollProxyOnPropertiesChangedMethod = getMethodID(krollProxyClass, "onPropertiesChanged", "([[Ljava/lang/Object;)V", false); openErrorDialogMethod = getMethodID(tiJsErrorDialogClass, "openErrorDialog", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)V",true); krollAssetHelperReadAssetMethod = getMethodID(krollAssetHelperClass, "readAsset", "(Ljava/lang/String;)Ljava/lang/String;", true); krollAssetHelperFileExistsMethod = getMethodID(krollAssetHelperClass, "fileExists", "(Ljava/lang/String;)Z", true); krollLoggingLogWithDefaultLoggerMethod = getMethodID(krollLoggingClass, "logWithDefaultLogger", "(ILjava/lang/String;)V", true); jfieldID undefinedObjectField = env->GetStaticFieldID(krollRuntimeClass, "UNDEFINED", "Ljava/lang/Object;"); undefinedObject = env->NewGlobalRef(env->GetStaticObjectField(krollRuntimeClass, undefinedObjectField)); }