From: Ted Kremenek Date: Tue, 4 Mar 2008 23:13:06 +0000 (+0000) Subject: Moved GRExprEngine::NodeSet out of GRExprEngine and made it a standalone class: Explo... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f6f5ef4aaa66b60270e84d1fe1292886369d2f38;p=clang 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 --- 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 +class ExplodedNodeSet { + + typedef llvm::SmallPtrSet ImplTy; + ImplTy Impl; + +public: + ExplodedNodeSet(NodeTy* N) { + assert (N && !static_cast(N)->isSink()); + Impl.insert(N); + } + + ExplodedNodeSet() {} + + inline void Add(NodeTy* N) { + if (N && !static_cast(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 diff --git a/include/clang/Analysis/PathSensitive/GRExprEngine.h b/include/clang/Analysis/PathSensitive/GRExprEngine.h index e310bf577f..a8827472df 100644 --- a/include/clang/Analysis/PathSensitive/GRExprEngine.h +++ b/include/clang/Analysis/PathSensitive/GRExprEngine.h @@ -31,31 +31,8 @@ public: typedef GRBranchNodeBuilder BranchNodeBuilder; typedef GRIndirectGotoNodeBuilder IndirectGotoNodeBuilder; typedef GRSwitchNodeBuilder SwitchNodeBuilder; - - class NodeSet { - typedef llvm::SmallPtrSet ImplTy; - ImplTy Impl; - - public: - - NodeSet(NodeTy* N) { assert (N && !N->isSink()); Impl.insert(N); } - NodeSet() {} - - inline void Add(NodeTy* N) { if (N && !N->isSink()) Impl.insert(N); } + typedef ExplodedNodeSet NodeSet; - typedef ImplTy::iterator iterator; - typedef 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(); } - }; - protected: /// G - the simulation graph. GraphTy& G;