namespace {
android::base::Result<int64_t> ReadInt64(tinyxml2::XMLElement* parent, constchar* name) {
tinyxml2::XMLElement* element = parent->FirstChildElement(name); if (element == nullptr) { return Errorf("Expected Odrefresh metric {} not found", name);
}
int64_t metric;
tinyxml2::XMLError result = element->QueryInt64Text(&metric); if (result == tinyxml2::XML_SUCCESS) { return metric;
} else { return Errorf("Odrefresh metric {} is not an int64", name);
}
}
android::base::Result<int32_t> ReadInt32(tinyxml2::XMLElement* parent, constchar* name) {
tinyxml2::XMLElement* element = parent->FirstChildElement(name); if (element == nullptr) { return Errorf("Expected Odrefresh metric {} not found", name);
}
int32_t metric;
tinyxml2::XMLError result = element->QueryIntText(&metric); if (result == tinyxml2::XML_SUCCESS) { return metric;
} else { return Errorf("Odrefresh metric {} is not an int32", name);
}
}
android::base::Result<int32_t> ReadInt32Attribute(tinyxml2::XMLElement* element, constchar* element_name, constchar* attribute_name, int min_value, int max_value) {
int32_t value;
tinyxml2::XMLError result = element->QueryAttribute(attribute_name, &value); if (result != tinyxml2::XML_SUCCESS) { return Errorf("Expected Odrefresh metric {}.{} is not an int32", element_name, attribute_name);
}
if (value < min_value || value > max_value) { return Errorf( "Odrefresh metric {}.{} has a value ({}) outside of the expected range ([{}, {}])",
element_name,
attribute_name,
value,
min_value,
max_value);
}
return value;
}
android::base::Result<OdrMetricsRecord::Dex2OatExecResult> ReadExecResult(
tinyxml2::XMLElement* parent, constchar* nodeName) {
tinyxml2::XMLElement* element = parent->FirstChildElement(nodeName); if (element == nullptr) { return Errorf("Expected Odrefresh metric {} not found", nodeName);
}
tinyxml2::XMLElement* metrics = xml_document.FirstChildElement("odrefresh_metrics"); if (metrics == nullptr) { return Errorf("odrefresh_metrics element not found in {}", filename);
}
odrefresh_metrics_version = OR_RETURN(ReadInt32(metrics, "odrefresh_metrics_version")); if (odrefresh_metrics_version != kOdrefreshMetricsVersion) { return Errorf("odrefresh_metrics_version {} is different than expected ({})",
odrefresh_metrics_version,
kOdrefreshMetricsVersion);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.