blob: cec33af23c35acaabe449dec7bf52a3f2bb08b73 [file] [log] [blame]
Yifan Hong43e2aae2017-05-17 18:36:08 -07001/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include <set>
18#include <string>
19
20#include "HalInterface.h"
21
22namespace android {
23namespace vintf {
24
25bool operator==(const HalInterface& lft, const HalInterface& rgt) {
Yifan Hong6e82b112018-03-20 13:06:00 -070026 if (lft.mName != rgt.mName) return false;
27 if (lft.mInstances != rgt.mInstances) return false;
Yifan Hong43e2aae2017-05-17 18:36:08 -070028 return true;
29}
30
Yifan Hong6e82b112018-03-20 13:06:00 -070031bool HalInterface::forEachInstance(
32 const std::function<bool(const std::string&, const std::string&, bool isRegex)>& func) const {
33 for (const auto& instance : mInstances) {
34 if (!func(mName, instance, false /* isRegex */)) {
35 return false;
36 }
37 }
38 return true;
39}
40
41bool HalInterface::hasAnyInstance() const {
42 bool found = false;
43 forEachInstance([&found](const auto&, const auto&, bool) {
44 found = true;
45 return false; // break;
46 });
47 return found;
48}
49
50bool HalInterface::insertInstance(const std::string& instanceOrPattern, bool /*isRegex*/) {
51 return mInstances.insert(instanceOrPattern).second;
52}
53
54bool HalInterface::removeInstance(const std::string& instanceOrPattern, bool /*isRegex*/) {
55 return mInstances.erase(instanceOrPattern) > 0;
56}
57
Yifan Hong43e2aae2017-05-17 18:36:08 -070058} // namespace vintf
59} // namespace android