lin
2025-07-30 fcd736bf35fd93b563e9bbf594f2aa7b62028cc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
 
#ifndef ANDROID_VINTF_VNDK_H
#define ANDROID_VINTF_VNDK_H
 
#include <set>
#include <string>
 
namespace android {
namespace vintf {
 
// deprecated. Kept here for libvintf backwards compatibility.
struct [[deprecated]] VndkVersionRange {
 
    VndkVersionRange() : VndkVersionRange(0u, 0u, 0u) {}
    VndkVersionRange(size_t s, size_t v, size_t p)
        : VndkVersionRange(s, v, p, p) {}
    VndkVersionRange(size_t s, size_t v, size_t pi, size_t pa)
        : sdk(s), vndk(v), patchMin(pi), patchMax(pa) {}
 
    inline bool isSingleVersion() const { return patchMin == patchMax; }
 
    size_t sdk;
    size_t vndk;
    size_t patchMin;
    size_t patchMax;
};
 
// deprecated. Kept here for libvintf backwards compatibility.
struct [[deprecated]] Vndk {
 
    const VndkVersionRange &versionRange() const { return mVersionRange; }
    const std::set<std::string> &libraries() const { return mLibraries; }
 
private:
    friend struct VndkConverter;
    friend struct HalManifestConverter;
    friend struct LibVintfTest;
    friend struct HalManifest;
    friend struct CompatibilityMatrix;
    friend bool operator==(const Vndk &, const Vndk &);
    VndkVersionRange mVersionRange;
    std::set<std::string> mLibraries;
};
 
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
inline bool operator==(const VndkVersionRange &lft, const VndkVersionRange &rgt) {
    return lft.sdk == rgt.sdk && lft.vndk == rgt.vndk &&
           lft.patchMin == rgt.patchMin && lft.patchMax == rgt.patchMax;
}
 
inline bool operator==(const Vndk &lft, const Vndk &rgt) {
    return lft.mVersionRange == rgt.mVersionRange &&
           lft.mLibraries == rgt.mLibraries;
}
#pragma clang diagnostic pop
 
} // namespace vintf
} // namespace android
 
#endif // ANDROID_VINTF_VNDK_H