From e2887863563fe5d2fdd8e1219b76fdc1ee9ec37d Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Mon, 4 Feb 2008 21:11:17 +0000 Subject: Added "bucket_iterators" to FoldingSet. Bucket iterators allow iteration over all the nodes in a particular bucket. llvm-svn: 46716 --- llvm/lib/Support/FoldingSet.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'llvm/lib/Support/FoldingSet.cpp') diff --git a/llvm/lib/Support/FoldingSet.cpp b/llvm/lib/Support/FoldingSet.cpp index 1e8c732a148..774fbabc28e 100644 --- a/llvm/lib/Support/FoldingSet.cpp +++ b/llvm/lib/Support/FoldingSet.cpp @@ -148,7 +148,7 @@ static FoldingSetImpl::Node *GetNextPtr(void *NextInBucketPtr) { return static_cast(NextInBucketPtr); } -/// GetBucketPtr - Provides a casting of a bucket pointer for isNode + /// testing. static void **GetBucketPtr(void *NextInBucketPtr) { intptr_t Ptr = reinterpret_cast(NextInBucketPtr); @@ -358,3 +358,9 @@ void FoldingSetIteratorImpl::advance() { } } +//===----------------------------------------------------------------------===// +// FoldingSetBucketIteratorImpl Implementation + +FoldingSetBucketIteratorImpl::FoldingSetBucketIteratorImpl(void **Bucket) { + Ptr = (*Bucket == 0 || GetNextPtr(*Bucket) == 0) ? (void*) Bucket : *Bucket; +} -- cgit v1.2.3