Clean up HalGroup::forEachInstance usage
Add a few functions to MatrixInstance to print
out human-readable strings so that analyze_matrix / vintf
can use them.
Bug: 140832836
Test: libvintf_test
Test: analyze_matrix --interfaces \
--input hardware/interfaces/compatibility_matrices/compatibility_matrix.current.xml
Test: adb shell vintf
Change-Id: Ice13f299ba24808119f5536ecacc2777cfa870a2
diff --git a/main.cpp b/main.cpp
index baac511..95bc042 100644
--- a/main.cpp
+++ b/main.cpp
@@ -189,8 +189,7 @@
void insert(const HalManifest* manifest, Table* table, const RowMutator& mutate) {
if (manifest == nullptr) return;
manifest->forEachInstance([&](const auto& manifestInstance) {
- std::string key = toFQNameString(manifestInstance.package(), manifestInstance.version(),
- manifestInstance.interface(), manifestInstance.instance());
+ std::string key = manifestInstance.description();
mutate(&(*table)[key]);
return true;
});
@@ -200,12 +199,11 @@
if (matrix == nullptr) return;
matrix->forEachInstance([&](const auto& matrixInstance) {
for (auto minorVer = matrixInstance.versionRange().minMinor;
- minorVer <= matrixInstance.versionRange().maxMinor; ++minorVer) {
- std::string key = toFQNameString(
- matrixInstance.package(), Version{matrixInstance.versionRange().majorVer, minorVer},
- matrixInstance.interface(),
- matrixInstance.isRegex() ? matrixInstance.regexPattern()
- : matrixInstance.exactInstance());
+ minorVer >= matrixInstance.versionRange().minMinor &&
+ minorVer <= matrixInstance.versionRange().maxMinor;
+ ++minorVer) {
+ Version version{matrixInstance.versionRange().majorVer, minorVer};
+ std::string key = matrixInstance.description(version);
auto it = table->find(key);
if (it == table->end()) {
mutate(&(*table)[key]);