13 #ifndef LLVM_TEXTAPI_MACHO_ARCHITECTURE_SET_H 14 #define LLVM_TEXTAPI_MACHO_ARCHITECTURE_SET_H 43 ArchSet |= 1U << static_cast<int>(Arch);
49 return ArchSet & (1U << static_cast<int>(Arch));
53 return (ArchSet & Archs.ArchSet) == Archs.ArchSet;
58 bool empty()
const {
return ArchSet == 0; }
63 return has(AK_i386) ||
has(AK_x86_64) ||
has(AK_x86_64h);
66 template <
typename Ty>
68 :
public std::iterator<std::forward_iterator_tag, Architecture, size_t> {
73 void findNextSetBit() {
74 if (Index == EndIndexVal)
76 while (++Index <
sizeof(Ty) * 8) {
77 if (*ArchSet & (1UL << Index))
86 : Index(Index), ArchSet(ArchSet) {
87 if (Index != EndIndexVal && !(*ArchSet & (1UL << Index)))
105 return std::tie(Index, ArchSet) == std::tie(o.Index, o.ArchSet);
112 return {ArchSet & o.ArchSet};
116 return {ArchSet | o.ArchSet};
120 ArchSet |= o.ArchSet;
130 return ArchSet == o.ArchSet;
134 return ArchSet != o.ArchSet;
148 operator std::string()
const;
149 operator std::vector<Architecture>()
const;
163 #endif // LLVM_TEXTAPI_MACHO_ARCHITECTURE_SET_H arch_iterator & operator++()
bool operator<(const ArchitectureSet &o) const
bool has(Architecture Arch) const
This class represents lattice values for constants.
ArchSetType rawValue() const
const_iterator end() const
constexpr ArchitectureSet(ArchSetType Raw)
Architecture operator*() const
bool operator!=(const arch_iterator &o) const
constexpr ArchitectureSet()=default
arch_iterator(Ty *ArchSet, ArchSetType Index=0)
const_iterator begin() const
ArchitectureSet operator &(const ArchitectureSet &o)
ArchitectureSet operator|(const ArchitectureSet &o)
ArchitectureSet(Architecture Arch)
bool operator==(const arch_iterator &o) const
bool operator==(const ArchitectureSet &o) const
ArchitectureSet & operator|=(const ArchitectureSet &o)
raw_ostream & operator<<(raw_ostream &OS, Architecture Arch)
void print(raw_ostream &OS) const
Architecture
Defines the architecture slices that are supported by Text-based Stub files.
Align max(MaybeAlign Lhs, Align Rhs)
bool operator!=(const ArchitectureSet &o) const
ArchitectureSet & operator|=(const Architecture &Arch)
bool contains(ArchitectureSet Archs) const
void clear(Architecture Arch)
This class implements an extremely fast bulk output stream that can only output to a stream...
arch_iterator operator++(int)