void InspectorRuntimeAgent::callFunctionOn(ErrorString& errorString, const String& objectId, const String& expression, const InspectorArray* optionalArguments, const bool* const doNotPauseOnExceptionsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr<Inspector::Protocol::Runtime::RemoteObject>& result, Inspector::Protocol::OptOutput<bool>* wasThrown) { InjectedScript injectedScript = m_injectedScriptManager.injectedScriptForObjectId(objectId); if (injectedScript.hasNoValue()) { errorString = ASCIILiteral("Could not find InjectedScript for objectId"); return; } String arguments; if (optionalArguments) arguments = optionalArguments->toJSONString(); ScriptDebugServer::PauseOnExceptionsState previousPauseOnExceptionsState = ScriptDebugServer::DontPauseOnExceptions; if (asBool(doNotPauseOnExceptionsAndMuteConsole)) previousPauseOnExceptionsState = setPauseOnExceptionsState(m_scriptDebugServer, ScriptDebugServer::DontPauseOnExceptions); if (asBool(doNotPauseOnExceptionsAndMuteConsole)) muteConsole(); injectedScript.callFunctionOn(errorString, objectId, expression, arguments, asBool(returnByValue), asBool(generatePreview), &result, wasThrown); if (asBool(doNotPauseOnExceptionsAndMuteConsole)) { unmuteConsole(); setPauseOnExceptionsState(m_scriptDebugServer, previousPauseOnExceptionsState); } }
void InspectorRuntimeAgent::callFunctionOn(ErrorString* errorString, const String& objectId, const String& expression, const RefPtr<InspectorArray>* const optionalArguments, const bool* const doNotPauseOnExceptionsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr<Inspector::TypeBuilder::Runtime::RemoteObject>& result, Inspector::TypeBuilder::OptOutput<bool>* wasThrown) { InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForObjectId(objectId); if (injectedScript.hasNoValue()) { *errorString = "Inspected frame has gone"; return; } String arguments; if (optionalArguments) arguments = (*optionalArguments)->toJSONString(); #if ENABLE(JAVASCRIPT_DEBUGGER) ScriptDebugServer::PauseOnExceptionsState previousPauseOnExceptionsState = ScriptDebugServer::DontPauseOnExceptions; if (asBool(doNotPauseOnExceptionsAndMuteConsole)) previousPauseOnExceptionsState = setPauseOnExceptionsState(m_scriptDebugServer, ScriptDebugServer::DontPauseOnExceptions); #endif if (asBool(doNotPauseOnExceptionsAndMuteConsole)) muteConsole(); injectedScript.callFunctionOn(errorString, objectId, expression, arguments, asBool(returnByValue), asBool(generatePreview), &result, wasThrown); if (asBool(doNotPauseOnExceptionsAndMuteConsole)) { unmuteConsole(); #if ENABLE(JAVASCRIPT_DEBUGGER) setPauseOnExceptionsState(m_scriptDebugServer, previousPauseOnExceptionsState); #endif } }
void InspectorHeapProfilerAgent::startTrackingHeapObjects(ErrorString*, const bool* trackAllocations) { m_state->setBoolean(HeapProfilerAgentState::heapObjectsTrackingEnabled, true); bool allocationTrackingEnabled = asBool(trackAllocations); m_state->setBoolean(HeapProfilerAgentState::allocationTrackingEnabled, allocationTrackingEnabled); startTrackingHeapObjectsInternal(allocationTrackingEnabled); }
void JsonWrapper::get(const char* name, bool dflt, bool& param) const { auto val = m_config.get(name, dflt); // Do some simple type conversions that folly used to do if (val.isBool()) { param = val.asBool(); return; } else if (val.isInt()) { auto valInt = val.asInt(); if (valInt == 0 || valInt == 1) { param = (val.asInt() != 0); return; } } else if (val.isString()) { auto str = val.asString(); std::transform(str.begin(), str.end(), str.begin(), [](auto c) { return ::tolower(c); }); if (str == "0" || str == "false" || str == "off" || str == "no") { param = false; return; } else if (str == "1" || str == "true" || str == "on" || str == "yes") { param = true; return; } } throw std::runtime_error("Cannot convert JSON value to bool: " + val.asString()); }
bool JValue::operator==(bool other) const { bool value; if (asBool(value) == CONV_OK) return value == other; return false; }
std::ostream& value(const ast::types::abstract::Value& value) { const boost::regex esc("\n"); const std::string rep("\\\\n"); type(value.type()); stream << " "; switch(value) { case ast::types::Bool: stream << asBool(value).value; break; case ast::types::Float32: stream << asFloat(value).value; break; case ast::types::Int32: stream << asInt(value).value; break; case ast::types::String: stream << "\"" << boost::regex_replace(asString(value).value, esc, rep, boost::match_default | boost::format_sed) << "\""; break; case ast::types::Void: stream << "()"; break; default: stream << " ??"; } return stream; }
void InspectorDebuggerAgent::evaluateOnCallFrame(ErrorString* errorString, const String& inCallFrameId, const String& inExpression, const String* inObjectGroup, const bool* inIncludeCommandLineAPI, const bool* inDoNotPauseOnExceptionsAndMuteConsole, const bool* inReturnByValue, const bool* inGeneratePreview, RefPtr<TypeBuilder::Runtime::RemoteObject>& outResult, TypeBuilder::OptOutput<bool>* optOutWasThrown, RefPtr<TypeBuilder::Debugger::ExceptionDetails>& optOutExceptionDetails) { Optional<MuteConsoleScope<InspectorDebuggerAgent>> muteScope; if (asBool(inDoNotPauseOnExceptionsAndMuteConsole)) muteScope.emplace(this); m_v8DebuggerAgent->evaluateOnCallFrame(errorString, inCallFrameId, inExpression, inObjectGroup, inIncludeCommandLineAPI, inDoNotPauseOnExceptionsAndMuteConsole, inReturnByValue, inGeneratePreview, outResult, optOutWasThrown, optOutExceptionDetails); }
void InspectorRuntimeAgent::evaluate(ErrorString* errorString, const String& expression, const String* const objectGroup, const bool* const includeCommandLineAPI, const bool* const doNotPauseOnExceptions, const String* const frameId, const bool* const returnByValue, RefPtr<InspectorObject>* result, bool* wasThrown) { ScriptState* scriptState = 0; if (frameId) { scriptState = scriptStateForFrameId(*frameId); if (!scriptState) { *errorString = "Frame with given id not found."; return; } } else scriptState = getDefaultInspectedState(); InjectedScript injectedScript = m_injectedScriptManager->injectedScriptFor(scriptState); if (injectedScript.hasNoValue()) { *errorString = "Inspected frame has gone"; return; } #if ENABLE(JAVASCRIPT_DEBUGGER) ASSERT(m_scriptDebugServer); bool pauseStateChanged = false; ScriptDebugServer::PauseOnExceptionsState presentState = m_scriptDebugServer->pauseOnExceptionsState(); if (asBool(doNotPauseOnExceptions) && presentState != ScriptDebugServer::DontPauseOnExceptions) { m_scriptDebugServer->setPauseOnExceptionsState(ScriptDebugServer::DontPauseOnExceptions); pauseStateChanged = true; } #endif injectedScript.evaluate(errorString, expression, objectGroup ? *objectGroup : "", asBool(includeCommandLineAPI), asBool(returnByValue), result, wasThrown); #if ENABLE(JAVASCRIPT_DEBUGGER) if (pauseStateChanged) m_scriptDebugServer->setPauseOnExceptionsState(presentState); #endif }
void InspectorDebuggerAgent::runScript(ErrorString* errorString, const String& inScriptId, int inExecutionContextId, const String* inObjectGroup, const bool* inDoNotPauseOnExceptionsAndMuteConsole, RefPtr<TypeBuilder::Runtime::RemoteObject>& outResult, RefPtr<TypeBuilder::Debugger::ExceptionDetails>& optOutExceptionDetails) { Optional<MuteConsoleScope<InspectorDebuggerAgent>> muteScope; if (asBool(inDoNotPauseOnExceptionsAndMuteConsole)) muteScope.emplace(this); m_v8DebuggerAgent->runScript(errorString, inScriptId, inExecutionContextId, inObjectGroup, inDoNotPauseOnExceptionsAndMuteConsole, outResult, optOutExceptionDetails); }
void InspectorRuntimeAgent::getDisplayableProperties(ErrorString& errorString, const String& objectId, const bool* const generatePreview, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Runtime::PropertyDescriptor>>& result, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Runtime::InternalPropertyDescriptor>>& internalProperties) { InjectedScript injectedScript = m_injectedScriptManager.injectedScriptForObjectId(objectId); if (injectedScript.hasNoValue()) { errorString = ASCIILiteral("Could not find InjectedScript for objectId"); return; } ScriptDebugServer::PauseOnExceptionsState previousPauseOnExceptionsState = setPauseOnExceptionsState(m_scriptDebugServer, ScriptDebugServer::DontPauseOnExceptions); muteConsole(); injectedScript.getDisplayableProperties(errorString, objectId, asBool(generatePreview), &result); injectedScript.getInternalProperties(errorString, objectId, asBool(generatePreview), &internalProperties); unmuteConsole(); setPauseOnExceptionsState(m_scriptDebugServer, previousPauseOnExceptionsState); }
void InspectorHeapProfilerAgent::takeHeapSnapshot(ErrorString* errorString, const bool* reportProgress) { class HeapSnapshotProgress final : public ScriptProfiler::HeapSnapshotProgress { public: explicit HeapSnapshotProgress(InspectorFrontend::HeapProfiler* frontend) : m_frontend(frontend) , m_totalWork(0) { } virtual void Start(int totalWork) override { m_totalWork = totalWork; } virtual void Worked(int workDone) override { if (m_frontend) { m_frontend->reportHeapSnapshotProgress(workDone, m_totalWork, 0); m_frontend->flush(); } } virtual void Done() override { const bool finished = true; if (m_frontend) { m_frontend->reportHeapSnapshotProgress(m_totalWork, m_totalWork, &finished); m_frontend->flush(); } } virtual bool isCanceled() override { return false; } private: InspectorFrontend::HeapProfiler* m_frontend; int m_totalWork; }; HeapSnapshotProgress progress(asBool(reportProgress) ? frontend() : 0); RefPtr<ScriptHeapSnapshot> snapshot = ScriptProfiler::takeHeapSnapshot(&progress); if (!snapshot) { *errorString = "Failed to take heap snapshot"; return; } class OutputStream : public ScriptHeapSnapshot::OutputStream { public: explicit OutputStream(InspectorFrontend::HeapProfiler* frontend) : m_frontend(frontend) { } void Write(const String& chunk) { m_frontend->addHeapSnapshotChunk(chunk); m_frontend->flush(); } void Close() { } private: InspectorFrontend::HeapProfiler* m_frontend; }; if (frontend()) { OutputStream stream(frontend()); snapshot->writeJSON(&stream); } }
void InspectorRuntimeAgent::evaluate(ErrorString* errorString, const String& expression, const String* const objectGroup, const bool* const includeCommandLineAPI, const bool* const doNotPauseOnExceptionsAndMuteConsole, const int* executionContextId, const bool* const returnByValue, const bool* generatePreview, RefPtr<TypeBuilder::Runtime::RemoteObject>& result, TypeBuilder::OptOutput<bool>* wasThrown, RefPtr<TypeBuilder::Debugger::ExceptionDetails>& exceptionDetails) { InjectedScript injectedScript = injectedScriptForEval(errorString, executionContextId); if (injectedScript.isEmpty()) return; InjectedScriptCallScope callScope(this, asBool(doNotPauseOnExceptionsAndMuteConsole)); injectedScript.evaluate(errorString, expression, objectGroup ? *objectGroup : "", asBool(includeCommandLineAPI), asBool(returnByValue), asBool(generatePreview), &result, wasThrown, &exceptionDetails); }
void InspectorRuntimeAgent::evaluate(ErrorString* errorString, const String& expression, const String* const objectGroup, const bool* const includeCommandLineAPI, const bool* const doNotPauseOnExceptionsAndMuteConsole, const int* executionContextId, const bool* const returnByValue, const bool* generatePreview, RefPtr<TypeBuilder::Runtime::RemoteObject>& result, TypeBuilder::OptOutput<bool>* wasThrown) { InjectedScript injectedScript = injectedScriptForEval(errorString, executionContextId); if (injectedScript.hasNoValue()) return; ScriptDebugServer::PauseOnExceptionsState previousPauseOnExceptionsState = ScriptDebugServer::DontPauseOnExceptions; if (asBool(doNotPauseOnExceptionsAndMuteConsole)) previousPauseOnExceptionsState = setPauseOnExceptionsState(m_scriptDebugServer, ScriptDebugServer::DontPauseOnExceptions); if (asBool(doNotPauseOnExceptionsAndMuteConsole)) muteConsole(); injectedScript.evaluate(errorString, expression, objectGroup ? *objectGroup : "", asBool(includeCommandLineAPI), asBool(returnByValue), asBool(generatePreview), &result, wasThrown); if (asBool(doNotPauseOnExceptionsAndMuteConsole)) { unmuteConsole(); setPauseOnExceptionsState(m_scriptDebugServer, previousPauseOnExceptionsState); } }
void InspectorRuntimeAgent::callFunctionOn(ErrorString* errorString, const String& objectId, const String& expression, const RefPtr<JSONArray>* const optionalArguments, const bool* const doNotPauseOnExceptionsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr<TypeBuilder::Runtime::RemoteObject>& result, TypeBuilder::OptOutput<bool>* wasThrown) { OwnPtr<RemoteObjectId> remoteId = RemoteObjectId::parse(objectId); if (!remoteId) { *errorString = "Invalid object id"; return; } InjectedScript injectedScript = m_injectedScriptManager->findInjectedScript(remoteId.get()); if (injectedScript.isEmpty()) { *errorString = "Inspected frame has gone"; return; } String arguments; if (optionalArguments) arguments = (*optionalArguments)->toJSONString(); InjectedScriptCallScope callScope(this, asBool(doNotPauseOnExceptionsAndMuteConsole)); injectedScript.callFunctionOn(errorString, objectId, expression, arguments, asBool(returnByValue), asBool(generatePreview), &result, wasThrown); }
void InspectorRuntimeAgent::getProperties(ErrorString* errorString, const String& objectId, const bool* ownProperties, const bool* accessorPropertiesOnly, RefPtr<TypeBuilder::Array<TypeBuilder::Runtime::PropertyDescriptor> >& result, RefPtr<TypeBuilder::Array<TypeBuilder::Runtime::InternalPropertyDescriptor> >& internalProperties) { InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForObjectId(objectId); if (injectedScript.isEmpty()) { *errorString = "Inspected frame has gone"; return; } ScriptDebugServer::PauseOnExceptionsState previousPauseOnExceptionsState = setPauseOnExceptionsState(m_scriptDebugServer, ScriptDebugServer::DontPauseOnExceptions); muteConsole(); injectedScript.getProperties(errorString, objectId, asBool(ownProperties), asBool(accessorPropertiesOnly), &result); if (!asBool(accessorPropertiesOnly)) injectedScript.getInternalProperties(errorString, objectId, &internalProperties); unmuteConsole(); setPauseOnExceptionsState(m_scriptDebugServer, previousPauseOnExceptionsState); }
void InspectorRuntimeAgent::getProperties(ErrorString* errorString, const String& objectId, const bool* ownProperties, const bool* accessorPropertiesOnly, const bool* generatePreview, RefPtr<TypeBuilder::Array<TypeBuilder::Runtime::PropertyDescriptor>>& result, RefPtr<TypeBuilder::Array<TypeBuilder::Runtime::InternalPropertyDescriptor>>& internalProperties, RefPtr<TypeBuilder::Debugger::ExceptionDetails>& exceptionDetails) { OwnPtr<RemoteObjectId> remoteId = RemoteObjectId::parse(objectId); if (!remoteId) { *errorString = "Invalid object id"; return; } InjectedScript injectedScript = m_injectedScriptManager->findInjectedScript(remoteId.get()); if (injectedScript.isEmpty()) { *errorString = "Inspected frame has gone"; return; } InjectedScriptCallScope callScope(this, true); injectedScript.getProperties(errorString, objectId, asBool(ownProperties), asBool(accessorPropertiesOnly), asBool(generatePreview), &result, &exceptionDetails); if (!exceptionDetails && !asBool(accessorPropertiesOnly)) injectedScript.getInternalProperties(errorString, objectId, &internalProperties, &exceptionDetails); }
bool ConfigFile::getValueAsBool(const std::string name) { first(); do { if ((*this)[0] == name) { return asBool(1); } } while (next()); // TODO: This should throw an error, otherwise there is no way to tell // when we did not find the bool return false; }
void InspectorRuntimeAgent::callFunctionOn(ErrorString* errorString, const String& objectId, const String& expression, const RefPtr<InspectorArray>* const optionalArguments, const bool* const returnByValue, RefPtr<InspectorObject>* result, bool* wasThrown) { InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForObjectId(objectId); if (injectedScript.hasNoValue()) { *errorString = "Inspected frame has gone"; return; } String arguments; if (optionalArguments) arguments = (*optionalArguments)->toJSONString(); injectedScript.callFunctionOn(errorString, objectId, expression, arguments, asBool(returnByValue), result, wasThrown); }
bool Configuration::getBool(const char* name, bool defval) const { auto val = get(name); if (val) { if (!val.isBool()) { throw std::runtime_error(watchman::to<std::string>( "Expected config value ", name, " to be a boolean")); } return val.asBool(); } return defval; }
bool cfg_get_bool(const char* name, bool defval) { auto val = cfg_get_json(name); if (val) { if (!val.isBool()) { throw std::runtime_error(watchman::to<std::string>( "Expected config value ", name, " to be a boolean")); } return val.asBool(); } return defval; }
std::size_t dynamic::hash() const { switch (type()) { case OBJECT: case ARRAY: case NULLT: throw TypeError("not null/object/array", type()); case INT64: return std::hash<int64_t>()(asInt()); case DOUBLE: return std::hash<double>()(asDouble()); case BOOL: return std::hash<bool>()(asBool()); case STRING: return std::hash<fbstring>()(asString()); default: CHECK(0); abort(); } }
void DriverConnection::handleRequestFunc( context_ptr context) { driver::Router::handler_ptr handler = router_->find( context->request.controller(), context->request.action() ); if (handler) { try { // prepare request context->request.header()[driver::Keys::remote_ip] = socket_.remote_endpoint().address().to_string(); // prepare response context->response.setSuccess(true); // assume success izenelib::util::ClockTimer processTimer; handler->invoke(context->request, context->response, poller_); if (asBool(context->request.header()[driver::Keys::check_time])) { context->response[driver::Keys::timers][driver::Keys::process_time] = processTimer.elapsed(); } asyncWriteResponse(context); } catch (const std::exception& e) { asyncWriteError(context, e.what()); } } else { asyncWriteError(context, "Handler not found"); } }
void DriverConnection::asyncWriteResponse(context_ptr context) { if (asBool(context->request.header()[driver::Keys::check_time])) { context->response[driver::Keys::timers][driver::Keys::total_server_time] = context->serverTimer.elapsed(); } writer_->write(context->response.get(), context->formPayload); context->setFormPayloadSize(context->formPayload.size()); boost::asio::async_write( socket_, context->buffer(), boost::bind( &DriverConnection::afterWriteResponse, shared_from_this(), context ) ); }
bool Value::equals(Value& value) { if (isNull() && value.isNull()) return true; switch (_type) { case type_int: return (asInteger() == value.asInteger()); case type_text: return (asString().compare(value.asString()) == 0); case type_float: return (asDouble() == value.asDouble()); case type_bool: return (asBool() == value.asBool()); case type_time: return (asTime() == value.asTime()); } return false; }
void InspectorHeapProfilerAgent::takeHeapSnapshot(ErrorString* errorString, const bool* reportProgress) { v8::HeapProfiler* profiler = m_isolate->GetHeapProfiler(); if (!profiler) { *errorString = "Cannot access v8 heap profiler"; return; } OwnPtr<HeapSnapshotProgress> progress; if (asBool(reportProgress)) progress = adoptPtr(new HeapSnapshotProgress(frontend())); v8::HandleScope handleScope(m_isolate); // Remove? GlobalObjectNameResolver resolver(m_isolate); const v8::HeapSnapshot* snapshot = profiler->TakeHeapSnapshot(progress.get(), &resolver); if (!snapshot) { *errorString = "Failed to take heap snapshot"; return; } HeapSnapshotOutputStream stream(frontend()); snapshot->Serialize(&stream); const_cast<v8::HeapSnapshot*>(snapshot)->Delete(); }
// TODO: use RBCContext instead of all the separate arguments. SharedShadowNode UITemplateProcessor::runCommand( const folly::dynamic &command, Tag rootTag, std::vector<SharedShadowNode> &nodes, std::vector<folly::dynamic> ®isters, const ComponentDescriptorRegistry &componentDescriptorRegistry, const NativeModuleRegistry &nativeModuleRegistry, const std::shared_ptr<const ReactNativeConfig> reactNativeConfig) { const std::string &opcode = command[0].asString(); const int tagOffset = 420000; // TODO: change to integer codes and a switch statement if (opcode == "createNode") { int tag = command[1].asInt(); const auto &type = command[2].asString(); const auto parentTag = command[3].asInt(); const auto &props = command[4]; nodes[tag] = componentDescriptorRegistry.createNode( tag + tagOffset, type, rootTag, props, nullptr); if (parentTag > -1) { // parentTag == -1 indicates root node auto parentShadowNode = nodes[parentTag]; const SharedComponentDescriptor &componentDescriptor = componentDescriptorRegistry[parentShadowNode]; componentDescriptor->appendChild(parentShadowNode, nodes[tag]); } } else if (opcode == "returnRoot") { LOG(INFO) << "(stop) UITemplateProcessor inject serialized 'server rendered' view tree"; return nodes[command[1].asInt()]; } else if (opcode == "loadNativeBool") { int registerNumber = command[1].asInt(); std::string param = command[4][0].asString(); registers[registerNumber] = reactNativeConfig->getBool(param); } else if (opcode == "conditional") { int registerNumber = command[1].asInt(); auto conditionDynamic = registers[registerNumber]; if (conditionDynamic.isNull()) { // TODO: provide original command or command line? auto err = std::runtime_error( "register " + command[1].asString() + " wasn't loaded before access"); throw err; } else if (conditionDynamic.type() != folly::dynamic::BOOL) { // TODO: provide original command or command line? auto err = std::runtime_error( "register " + command[1].asString() + " had type '" + conditionDynamic.typeName() + "' but needs to be 'boolean' for conditionals"); throw err; } const auto &nextCommands = conditionDynamic.asBool() ? command[2] : command[3]; for (const auto &nextCommand : nextCommands) { runCommand( nextCommand, rootTag, nodes, registers, componentDescriptorRegistry, nativeModuleRegistry, reactNativeConfig); } } else { throw std::runtime_error("Unsupported opcode: " + command[0].asString()); } return nullptr; }
SEXP bearing(SEXP x0, SEXP y0, SEXP x1, SEXP y1, SEXP nautical){ return asSEXP(bearing(asDouble(x0),asDouble(y0),asDouble(x1),asDouble(y1),asBool(nautical))); }
static jobject ValueVector2SFSArray(JNIEnv* env, const ValueVector& valueVector, jobject javaObj) { jclass cls = env->GetObjectClass(javaObj); if (!cls) return javaObj; for (auto it = valueVector.begin(); it != valueVector.end(); ++it) { if (it->getType() == Value::Type::BYTE) { jmethodID mid = env->GetMethodID(cls, "addByte", "(B)V"); if (mid) env->CallVoidMethod(javaObj, mid, it->asByte()); } else if (it->getType() == Value::Type::INTEGER) { jmethodID mid = env->GetMethodID(cls, "addInt", "(I)V"); if (mid) env->CallVoidMethod(javaObj, mid, it->asInt()); } else if (it->getType() == Value::Type::FLOAT) { jmethodID mid = env->GetMethodID(cls, "addFloat", "(F)V"); if (mid) env->CallVoidMethod(javaObj, mid, it->asFloat()); } else if (it->getType() == Value::Type::DOUBLE) { jmethodID mid = env->GetMethodID(cls, "addFloat", "(F)V"); if (mid) env->CallVoidMethod(javaObj, mid, it->asDouble()); } else if (it->getType() == Value::Type::BOOLEAN) { jmethodID mid = env->GetMethodID(cls, "addBool", "(Z)V"); if (mid) env->CallVoidMethod(javaObj, mid, it->asBool()); } else if (it->getType() == Value::Type::STRING) { jmethodID mid = env->GetMethodID(cls, "addUtfString", "(Ljava/lang/String;)V"); if (mid) { jobject javaValue = env->NewStringUTF(it->asString().c_str()); env->CallVoidMethod(javaObj, mid, javaValue); env->DeleteLocalRef(javaValue); } } else if (it->getType() == Value::Type::VECTOR) { jmethodID mid = env->GetMethodID(cls, "addSFSArray", "(Lcom/smartfoxserver/v2/entities/data/ISFSArray;)V"); if (mid) { jobject javaSFSArray = getSFSArray(env); jobject javaValue = ValueVector2SFSArray(env, it->asValueVector(), javaSFSArray); env->CallVoidMethod(javaObj, mid, javaValue); env->DeleteLocalRef(javaValue); } } else if (it->getType() == Value::Type::MAP) { jmethodID mid = env->GetMethodID(cls, "addSFSObject", "(Lcom/smartfoxserver/v2/entities/data/ISFSObject;)V"); if (mid) { jobject sub_obj = getSFSObject(env); jobject javaValue = ValueMap2SFSObject(env, it->asValueMap(), sub_obj); env->CallVoidMethod(javaObj, mid, javaValue); env->DeleteLocalRef(javaValue); } } else if (it->getType() == Value::Type::INT_KEY_MAP) { } } env->DeleteLocalRef(cls); return javaObj; }
SEXP stepLength(SEXP x0, SEXP y0, SEXP x1, SEXP y1, SEXP nautical){ return asSEXP(stepLength(asDouble(x0),asDouble(y0),asDouble(x1),asDouble(y1),asBool(nautical))); }
bool SshPacketParser::asBool(const QByteArray &data, quint32 *offset) { bool b = asBool(data, *offset); ++(*offset); return b; }