projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Delete an unused declaration.
[oota-llvm.git]
/
include
/
llvm
/
ADT
/
BitVector.h
diff --git
a/include/llvm/ADT/BitVector.h
b/include/llvm/ADT/BitVector.h
index 23fde26e142ddfc1f88bcb0d26df2dc09a689435..9dcb9e106f26b2a64630151a8f3c4f1798cfe6de 100644
(file)
--- a/
include/llvm/ADT/BitVector.h
+++ b/
include/llvm/ADT/BitVector.h
@@
-17,6
+17,7
@@
#include "llvm/Support/MathExtras.h"
#include <algorithm>
#include <cassert>
#include "llvm/Support/MathExtras.h"
#include <algorithm>
#include <cassert>
+#include <climits>
#include <cstring>
namespace llvm {
#include <cstring>
namespace llvm {
@@
-24,7
+25,7
@@
namespace llvm {
class BitVector {
typedef unsigned long BitWord;
class BitVector {
typedef unsigned long BitWord;
- enum { BITWORD_SIZE = (unsigned)sizeof(BitWord) *
8
};
+ enum { BITWORD_SIZE = (unsigned)sizeof(BitWord) *
CHAR_BIT
};
BitWord *Bits; // Actual bits.
unsigned Size; // Size of bitvector in bits.
BitWord *Bits; // Actual bits.
unsigned Size; // Size of bitvector in bits.
@@
-48,6
+49,11
@@
public:
~reference() {}
~reference() {}
+ reference &operator=(reference t) {
+ *this = bool(t);
+ return *this;
+ }
+
reference& operator=(bool t) {
if (t)
*WordRef |= 1L << BitPos;
reference& operator=(bool t) {
if (t)
*WordRef |= 1L << BitPos;
@@
-94,6
+100,9
@@
public:
delete[] Bits;
}
delete[] Bits;
}
+ /// empty - Tests whether there are no bits in this bitvector.
+ bool empty() const { return Size == 0; }
+
/// size - Returns the number of bits in this bitvector.
unsigned size() const { return Size; }
/// size - Returns the number of bits in this bitvector.
unsigned size() const { return Size; }
@@
-303,15
+312,17
@@
public:
}
BitVector &operator|=(const BitVector &RHS) {
}
BitVector &operator|=(const BitVector &RHS) {
- assert(Size == RHS.Size && "Illegal operation!");
- for (unsigned i = 0; i < NumBitWords(size()); ++i)
+ if (size() < RHS.size())
+ resize(RHS.size());
+ for (size_t i = 0, e = NumBitWords(RHS.size()); i != e; ++i)
Bits[i] |= RHS.Bits[i];
return *this;
}
BitVector &operator^=(const BitVector &RHS) {
Bits[i] |= RHS.Bits[i];
return *this;
}
BitVector &operator^=(const BitVector &RHS) {
- assert(Size == RHS.Size && "Illegal operation!");
- for (unsigned i = 0; i < NumBitWords(size()); ++i)
+ if (size() < RHS.size())
+ resize(RHS.size());
+ for (size_t i = 0, e = NumBitWords(RHS.size()); i != e; ++i)
Bits[i] ^= RHS.Bits[i];
return *this;
}
Bits[i] ^= RHS.Bits[i];
return *this;
}
@@
-323,7
+334,8
@@
public:
Size = RHS.size();
unsigned RHSWords = NumBitWords(Size);
if (Size <= Capacity * BITWORD_SIZE) {
Size = RHS.size();
unsigned RHSWords = NumBitWords(Size);
if (Size <= Capacity * BITWORD_SIZE) {
- std::copy(RHS.Bits, &RHS.Bits[RHSWords], Bits);
+ if (Size)
+ std::copy(RHS.Bits, &RHS.Bits[RHSWords], Bits);
clear_unused_bits();
return *this;
}
clear_unused_bits();
return *this;
}
@@
-340,6
+352,12
@@
public:
return *this;
}
return *this;
}
+ void swap(BitVector &RHS) {
+ std::swap(Bits, RHS.Bits);
+ std::swap(Size, RHS.Size);
+ std::swap(Capacity, RHS.Capacity);
+ }
+
private:
unsigned NumBitWords(unsigned S) const {
return (S + BITWORD_SIZE-1) / BITWORD_SIZE;
private:
unsigned NumBitWords(unsigned S) const {
return (S + BITWORD_SIZE-1) / BITWORD_SIZE;
@@
-405,4
+423,13
@@
inline BitVector operator^(const BitVector &LHS, const BitVector &RHS) {
}
} // End llvm namespace
}
} // End llvm namespace
+
+namespace std {
+ /// Implement std::swap in terms of BitVector swap.
+ inline void
+ swap(llvm::BitVector &LHS, llvm::BitVector &RHS) {
+ LHS.swap(RHS);
+ }
+}
+
#endif
#endif