diff options
author | Chris Lattner <sabre@nondot.org> | 2009-03-21 05:40:09 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-03-21 05:40:09 +0000 |
commit | 3ee87b6f9da0f63762ffaf0c4fcbc39514a059fb (patch) | |
tree | 23a4ad5f2ccf44b2ee3e6811135ab4ba43d4adb8 /include/llvm/ADT/SparseBitVector.h | |
parent | bdfbb74d34dafba3c5638fdddd561043823ebdd2 (diff) |
add some inline methods for infix operators on sparse vectors,
tidy some df iteration stuff, patch by John Mosby!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67428 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/ADT/SparseBitVector.h')
-rw-r--r-- | include/llvm/ADT/SparseBitVector.h | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/include/llvm/ADT/SparseBitVector.h b/include/llvm/ADT/SparseBitVector.h index 027bde8e38..dabcb028e9 100644 --- a/include/llvm/ADT/SparseBitVector.h +++ b/include/llvm/ADT/SparseBitVector.h @@ -460,6 +460,11 @@ public: CurrElementIter = Elements.begin (); } + // Clear. + void clear() { + Elements.clear(); + } + // Assignment SparseBitVector& operator=(const SparseBitVector& RHS) { Elements.clear(); @@ -836,7 +841,36 @@ inline bool operator &=(SparseBitVector<ElementSize> *LHS, template <unsigned ElementSize> inline bool operator &=(SparseBitVector<ElementSize> &LHS, const SparseBitVector<ElementSize> *RHS) { - return LHS &= (*RHS); + return LHS &= *RHS; +} + +// Convenience functions for infix union, intersection, difference operators. + +template <unsigned ElementSize> +inline SparseBitVector<ElementSize> +operator|(const SparseBitVector<ElementSize> &LHS, + const SparseBitVector<ElementSize> &RHS) { + SparseBitVector<ElementSize> Result(LHS); + Result |= RHS; + return Result; +} + +template <unsigned ElementSize> +inline SparseBitVector<ElementSize> +operator&(const SparseBitVector<ElementSize> &LHS, + const SparseBitVector<ElementSize> &RHS) { + SparseBitVector<ElementSize> Result(LHS); + Result &= RHS; + return Result; +} + +template <unsigned ElementSize> +inline SparseBitVector<ElementSize> +operator-(const SparseBitVector<ElementSize> &LHS, + const SparseBitVector<ElementSize> &RHS) { + SparseBitVector<ElementSize> Result; + Result.intersectWithComplement(LHS, RHS); + return Result; } @@ -849,10 +883,8 @@ void dump(const SparseBitVector<ElementSize> &LHS, llvm::OStream &out) { for (bi = LHS.begin(); bi != LHS.end(); ++bi) { out << *bi << " "; } - out << " ]\n"; -} + out << " ]\n"; } - - +} // end namespace llvm #endif |