bool KJScript::checkSyntax(const KJS::UString &code ) { return rep->evaluate(code.data(), code.size(), 0, true); }
jvalue KJS::Bindings::convertValueToJValue (KJS::ExecState *exec, KJS::Value value, JNIType _JNIType, const char *javaClassName) { jvalue result; double d = 0; d = value.toNumber(exec); switch (_JNIType){ case object_type: { result.l = (jobject)0; // First see if we have a Java instance. if (value.type() == KJS::ObjectType){ KJS::ObjectImp *objectImp = static_cast<KJS::ObjectImp*>(value.imp()); if (strcmp(objectImp->classInfo()->className, "RuntimeObject") == 0) { KJS::RuntimeObjectImp *imp = static_cast<KJS::RuntimeObjectImp *>(value.imp()); JavaInstance *instance = static_cast<JavaInstance*>(imp->getInternalInstance()); result.l = instance->javaInstance(); } else if (strcmp(objectImp->classInfo()->className, "RuntimeArray") == 0) { KJS::RuntimeArrayImp *imp = static_cast<KJS::RuntimeArrayImp *>(value.imp()); JavaArray *array = static_cast<JavaArray*>(imp->getConcreteArray()); result.l = array->javaArray(); } } // Now convert value to a string if the target type is a java.lang.string. if (result.l == 0 && strcmp(javaClassName, "java.lang.String") == 0) { KJS::UString stringValue = value.toString(exec); JNIEnv *env = getJNIEnv(); jobject javaString = env->functions->NewString (env, (const jchar *)stringValue.data(), stringValue.size()); result.l = javaString; } } break; case boolean_type: { result.z = (jboolean)d; } break; case byte_type: { result.b = (jbyte)d; } break; case char_type: { result.c = (jchar)d; } break; case short_type: { result.s = (jshort)d; } break; case int_type: { result.i = (jint)d; } break; case long_type: { result.j = (jlong)d; } break; case float_type: { result.f = (jfloat)d; } break; case double_type: { result.d = (jdouble)d; } break; break; case invalid_type: default: case void_type: { //bzero (&result, sizeof(jvalue)); memset(&result, 0, sizeof(jvalue)); } break; } return result; }