//===- llvm/ADT/BitVector.h - Bit vectors -----------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// /// \file /// This file implements the BitVector class. /// //===----------------------------------------------------------------------===// #ifndef LLVM_ADT_BITVECTOR_H #define LLVM_ADT_BITVECTOR_H #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMapInfo.h" #include "llvm/ADT/iterator_range.h" #include "llvm/Support/MathExtras.h" #include <algorithm> #include <cassert> #include <climits> #include <cstdint> #include <cstdlib> #include <cstring> #include <iterator> #include <utility> namespace llvm { /// ForwardIterator for the bits that are set. /// Iterators get invalidated when resize / reserve is called. template <typename BitVectorT> class const_set_bits_iterator_impl { … }; class BitVector { … }; inline BitVector::size_type capacity_in_bytes(const BitVector &X) { … } template <> struct DenseMapInfo<BitVector> { … }; } // end namespace llvm namespace std { /// Implement std::swap in terms of BitVector swap. inline void swap(llvm::BitVector &LHS, llvm::BitVector &RHS) { … } } // end namespace std #endif // LLVM_ADT_BITVECTOR_H