• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 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 #ifndef LIBVINTF_TARGET
18 #define LOG_TAG "libvintf"
19 #include <android-base/logging.h>
20 #endif
21 
22 #include "ManifestInstance.h"
23 
24 #include <utility>
25 
26 namespace android {
27 namespace vintf {
28 
29 ManifestInstance::ManifestInstance() = default;
30 
31 ManifestInstance::ManifestInstance(const ManifestInstance&) = default;
32 
33 ManifestInstance::ManifestInstance(ManifestInstance&&) noexcept = default;
34 
35 ManifestInstance& ManifestInstance::operator=(const ManifestInstance&) = default;
36 
37 ManifestInstance& ManifestInstance::operator=(ManifestInstance&&) noexcept = default;
38 
ManifestInstance(FqInstance && fqInstance,TransportArch && ta,HalFormat fmt)39 ManifestInstance::ManifestInstance(FqInstance&& fqInstance, TransportArch&& ta, HalFormat fmt)
40     : mFqInstance(std::move(fqInstance)), mTransportArch(std::move(ta)), mHalFormat(fmt) {}
ManifestInstance(const FqInstance & fqInstance,const TransportArch & ta,HalFormat fmt)41 ManifestInstance::ManifestInstance(const FqInstance& fqInstance, const TransportArch& ta,
42                                    HalFormat fmt)
43     : mFqInstance(fqInstance), mTransportArch(ta), mHalFormat(fmt) {}
44 
package() const45 const std::string& ManifestInstance::package() const {
46     return mFqInstance.getPackage();
47 }
48 
version() const49 Version ManifestInstance::version() const {
50     return mFqInstance.getVersion();
51 }
52 
interface() const53 const std::string& ManifestInstance::interface() const {
54     return mFqInstance.getInterface();
55 }
56 
instance() const57 const std::string& ManifestInstance::instance() const {
58     return mFqInstance.getInstance();
59 }
60 
transport() const61 Transport ManifestInstance::transport() const {
62     return mTransportArch.transport;
63 }
64 
arch() const65 Arch ManifestInstance::arch() const {
66     return mTransportArch.arch;
67 }
68 
format() const69 HalFormat ManifestInstance::format() const {
70     return mHalFormat;
71 }
72 
getFqInstance() const73 const FqInstance& ManifestInstance::getFqInstance() const {
74     return mFqInstance;
75 }
76 
operator ==(const ManifestInstance & other) const77 bool ManifestInstance::operator==(const ManifestInstance& other) const {
78     return mFqInstance == other.mFqInstance && mTransportArch == other.mTransportArch &&
79            mHalFormat == other.mHalFormat;
80 }
operator <(const ManifestInstance & other) const81 bool ManifestInstance::operator<(const ManifestInstance& other) const {
82     if (mFqInstance < other.mFqInstance) return true;
83     if (other.mFqInstance < mFqInstance) return false;
84     if (mTransportArch < other.mTransportArch) return true;
85     if (other.mTransportArch < mTransportArch) return false;
86     return mHalFormat < other.mHalFormat;
87 }
88 
getFqInstanceNoPackage() const89 FqInstance ManifestInstance::getFqInstanceNoPackage() const {
90     FqInstance e;
91     bool success = e.setTo(version().majorVer, version().minorVer, interface(), instance());
92 #ifndef LIBVINTF_TARGET
93     CHECK(success) << "Cannot remove package from '" << mFqInstance.string() << "'";
94 #else
95     (void)success;
96 #endif
97     return e;
98 }
99 
100 }  // namespace vintf
101 }  // namespace android
102