regex-instance: HalInterface stores regex instances.
Parse <regex-instance> regular expression patterns using
Extended Regular Expression syntax, and store it in
HalInterface object.
Bug: 73738616
Test: libvintf_test
Test: vintf_object_test
Test: vts_treble_vintf_test
Change-Id: If0b8e3bc053a6c2ecd9048092071f52f7896bba0
Merged-In: If0b8e3bc053a6c2ecd9048092071f52f7896bba0
diff --git a/HalInterface.cpp b/HalInterface.cpp
index cec33af..b5cbd6b 100644
--- a/HalInterface.cpp
+++ b/HalInterface.cpp
@@ -35,6 +35,11 @@
return false;
}
}
+ for (const auto& instance : mRegexes) {
+ if (!func(mName, instance, true /* isRegex */)) {
+ return false;
+ }
+ }
return true;
}
@@ -47,12 +52,20 @@
return found;
}
-bool HalInterface::insertInstance(const std::string& instanceOrPattern, bool /*isRegex*/) {
- return mInstances.insert(instanceOrPattern).second;
+bool HalInterface::insertInstance(const std::string& instanceOrPattern, bool isRegex) {
+ if (isRegex) {
+ return mRegexes.insert(instanceOrPattern).second;
+ } else {
+ return mInstances.insert(instanceOrPattern).second;
+ }
}
-bool HalInterface::removeInstance(const std::string& instanceOrPattern, bool /*isRegex*/) {
- return mInstances.erase(instanceOrPattern) > 0;
+bool HalInterface::removeInstance(const std::string& instanceOrPattern, bool isRegex) {
+ if (isRegex) {
+ return mRegexes.erase(instanceOrPattern) > 0;
+ } else {
+ return mInstances.erase(instanceOrPattern) > 0;
+ }
}
} // namespace vintf