@@ -30,13 +30,21 @@ struct AvailabilityInfo {
30
30
VersionTuple Introduced;
31
31
VersionTuple Deprecated;
32
32
VersionTuple Obsoleted;
33
+ bool Unavailable = false ;
33
34
bool UnconditionallyDeprecated = false ;
34
35
bool UnconditionallyUnavailable = false ;
35
36
36
37
AvailabilityInfo () = default ;
37
38
38
39
// / Determine if this AvailabilityInfo represents the default availability.
39
40
bool isDefault () const { return *this == AvailabilityInfo (); }
41
+
42
+ // / Check if the symbol is unavailable unconditionally or
43
+ // / on the active platform and os version.
44
+ bool isUnavailable () const {
45
+ return Unavailable || isUnconditionallyUnavailable ();
46
+ }
47
+
40
48
// / Check if the symbol is unconditionally deprecated.
41
49
// /
42
50
// / i.e. \code __attribute__((deprecated)) \endcode
@@ -49,9 +57,10 @@ struct AvailabilityInfo {
49
57
}
50
58
51
59
AvailabilityInfo (StringRef Domain, VersionTuple I, VersionTuple D,
52
- VersionTuple O, bool UD, bool UU)
60
+ VersionTuple O, bool U, bool UD, bool UU)
53
61
: Domain(Domain), Introduced(I), Deprecated(D), Obsoleted(O),
54
- UnconditionallyDeprecated (UD), UnconditionallyUnavailable(UU) {}
62
+ Unavailable (U), UnconditionallyDeprecated(UD),
63
+ UnconditionallyUnavailable(UU) {}
55
64
56
65
friend bool operator ==(const AvailabilityInfo &Lhs,
57
66
const AvailabilityInfo &Rhs);
@@ -63,10 +72,10 @@ struct AvailabilityInfo {
63
72
inline bool operator ==(const AvailabilityInfo &Lhs,
64
73
const AvailabilityInfo &Rhs) {
65
74
return std::tie (Lhs.Introduced , Lhs.Deprecated , Lhs.Obsoleted ,
66
- Lhs.UnconditionallyDeprecated ,
75
+ Lhs.Unavailable , Lhs. UnconditionallyDeprecated ,
67
76
Lhs.UnconditionallyUnavailable ) ==
68
77
std::tie (Rhs.Introduced , Rhs.Deprecated , Rhs.Obsoleted ,
69
- Rhs.UnconditionallyDeprecated ,
78
+ Rhs.Unavailable , Rhs. UnconditionallyDeprecated ,
70
79
Rhs.UnconditionallyUnavailable );
71
80
}
72
81
0 commit comments