bool RunControlContext::parse(const JsonValue &val) { clear(); if (val.type() != JsonValue::Object) return false; foreach(const JsonValue &c, val.children()) { if (c.name() == "ID") { id = c.data(); } else if (c.name() == "OSID") { osid = c.data(); } else if (c.name() == "ParentID") { parentId = c.data(); } else if (c.name() == "IsContainer") { if (jsonToBool(c)) flags |= Container; } else if (c.name() == "CanTerminate") { if (jsonToBool(c)) flags |= CanTerminate; } else if (c.name() == "CanResume") { resumeFlags = c.data().toUInt(); } else if (c.name() == "HasState") { if (jsonToBool(c)) flags |= HasState; } else if (c.name() == "CanSuspend") { if (jsonToBool(c)) flags |= CanSuspend; } } return true; }
bool ModuleLoadEventInfo::parse(const JsonValue &val) { clear(); if (val.type() != JsonValue::Object) return false; foreach(const JsonValue &c, val.children()) { if (c.name() == "Name") { name = c.data(); } else if (c.name() == "File") { file = c.data(); } else if (c.name() == "CodeAddress") { codeAddress = c.data().toULongLong(); } else if (c.name() == "DataAddress") { dataAddress = c.data().toULongLong(); } else if (c.name() == "Loaded") { loaded = jsonToBool(c); } else if (c.name() == "RequireResume") { requireResume =jsonToBool(c); } } return true; }
static inline bool jsonToBool(const JsonValue& js) { return js.type() == JsonValue::Boolean && js.data() == "true"; }