diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-03-04 23:13:06 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-03-04 23:13:06 +0000 |
commit | f6f5ef4aaa66b60270e84d1fe1292886369d2f38 (patch) | |
tree | 2a15fc7fd862a52d25f7211e99cffe332b7168c2 /include/clang/Analysis/PathSensitive/ExplodedGraph.h | |
parent | 243ee47dab19fbc03cb0c88634b48479ac5a0696 (diff) |
Moved GRExprEngine::NodeSet out of GRExprEngine and made it a standalone class: ExplodedNodeSet.
Made GRExprEngine::NodeSet a typedef of ExplodedNodeSet.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47914 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Analysis/PathSensitive/ExplodedGraph.h')
-rw-r--r-- | include/clang/Analysis/PathSensitive/ExplodedGraph.h | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/include/clang/Analysis/PathSensitive/ExplodedGraph.h b/include/clang/Analysis/PathSensitive/ExplodedGraph.h index db5f692699..a3d1bfe82e 100644 --- a/include/clang/Analysis/PathSensitive/ExplodedGraph.h +++ b/include/clang/Analysis/PathSensitive/ExplodedGraph.h @@ -18,7 +18,7 @@ #include "clang/Analysis/ProgramPoint.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/FoldingSet.h" -#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/SmallPtrSet.h" #include "llvm/Support/Allocator.h" #include "llvm/ADT/OwningPtr.h" #include "llvm/ADT/GraphTraits.h" @@ -376,6 +376,38 @@ public: } }; + +template <typename NodeTy> +class ExplodedNodeSet { + + typedef llvm::SmallPtrSet<NodeTy*,5> ImplTy; + ImplTy Impl; + +public: + ExplodedNodeSet(NodeTy* N) { + assert (N && !static_cast<ExplodedNodeImpl*>(N)->isSink()); + Impl.insert(N); + } + + ExplodedNodeSet() {} + + inline void Add(NodeTy* N) { + if (N && !static_cast<ExplodedNodeImpl*>(N)->isSink()) Impl.insert(N); + } + + typedef typename ImplTy::iterator iterator; + typedef typename ImplTy::const_iterator const_iterator; + + inline unsigned size() const { return Impl.size(); } + inline bool empty() const { return Impl.empty(); } + + inline iterator begin() { return Impl.begin(); } + inline iterator end() { return Impl.end(); } + + inline const_iterator begin() const { return Impl.begin(); } + inline const_iterator end() const { return Impl.end(); } +}; + } // end clang namespace // GraphTraits |