#include "llvm/Support/DataTypes.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/MathExtras.h"
-#include "llvm/ADT/ilist"
+#include "llvm/ADT/ilist.h"
namespace llvm {
/// SparseBitVector is an implementation of a bitvector that is sparse by only
ElementIndex = RHS.ElementIndex;
std::copy(&RHS.Bits[0], &RHS.Bits[BITWORDS_PER_ELEMENT], Bits);
}
+
+ // Assignment
+ SparseBitVectorElement& operator=(const SparseBitVectorElement& RHS) {
+ ElementIndex = RHS.ElementIndex;
+ std::copy(&RHS.Bits[0], &RHS.Bits[BITWORDS_PER_ELEMENT], Bits);
+
+ return *this;
+ }
// Comparison.
bool operator==(const SparseBitVectorElement &RHS) const {
assert(0 && "Unsupported!");
}
assert(0 && "Illegal empty element");
+ return 0; // Not reached
}
/// find_next - Returns the index of the next set bit starting from the
CurrElementIter = Elements.begin ();
}
+
+ // Assignment
+ SparseBitVector& operator=(const SparseBitVector& RHS) {
+ Elements.clear();
+
+ ElementListConstIter ElementIter = RHS.Elements.begin();
+ while (ElementIter != RHS.Elements.end()) {
+ Elements.push_back(SparseBitVectorElement<ElementSize>(*ElementIter));
+ ++ElementIter;
+ }
+
+ CurrElementIter = Elements.begin ();
+
+ return *this;
+ }
// Test, Reset, and Set a bit in the bitmap.
bool test(unsigned Idx) {