diff options
author | Chris Lattner <sabre@nondot.org> | 2007-09-30 00:47:20 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-09-30 00:47:20 +0000 |
commit | 4cf3c50df75a0a576f84d040b9bbc7f46ce7ba76 (patch) | |
tree | 26f783cc44b7a02727fcf398884887c69608aa66 /include | |
parent | 89ee87242b6552f1d06669a799613909b49444a2 (diff) | |
download | external_llvm-4cf3c50df75a0a576f84d040b9bbc7f46ce7ba76.zip external_llvm-4cf3c50df75a0a576f84d040b9bbc7f46ce7ba76.tar.gz external_llvm-4cf3c50df75a0a576f84d040b9bbc7f46ce7ba76.tar.bz2 |
Add a new DenseSet abstraction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42474 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/ADT/DenseSet.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/include/llvm/ADT/DenseSet.h b/include/llvm/ADT/DenseSet.h new file mode 100644 index 0000000..1a1de8b --- /dev/null +++ b/include/llvm/ADT/DenseSet.h @@ -0,0 +1,61 @@ +//===- llvm/ADT/DenseSet.h - Dense probed hash table ------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by Chris Lattner and is distributed under +// the University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines the DenseSet class. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ADT_DENSESET_H +#define LLVM_ADT_DENSESET_H + +#include "llvm/ADT/DenseMap.h" + +namespace llvm { + +/// DenseSet - This implements a dense probed hash-table based set. +/// +/// FIXME: This is currently implemented directly in terms of DenseMap, this +/// should be optimized later if there is a need. +template<typename ValueT, typename ValueInfoT = DenseMapInfo<ValueT> > +class DenseSet { + DenseMap<ValueT, char, ValueInfoT> TheMap; +public: + DenseSet(const DenseSet &Other) : TheMap(Other.TheMap) {} + explicit DenseSet(unsigned NumInitBuckets = 64) : TheMap(NumInitBuckets) {} + + bool empty() const { return TheMap.empty(); } + unsigned size() const { return TheMap.size(); } + + // TODO add iterators. + + void clear() { + TheMap.clear(); + } + + bool count(const ValueT &V) { + return TheMap.count(V); + } + + void insert(const ValueT &V) { + TheMap[V] = 0; + } + + void erase(const ValueT &V) { + TheMap.erase(V); + } + + DenseSet &operator=(const DenseSet &RHS) { + TheMap = RHS.TheMap; + return *this; + } +}; + +} // end namespace llvm + +#endif |