зеркало из https://github.com/microsoft/clang.git
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
This commit is contained in:
Родитель
243ee47dab
Коммит
f6f5ef4aaa
|
@ -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
|
||||
|
|
|
@ -31,31 +31,8 @@ public:
|
|||
typedef GRBranchNodeBuilder<GRExprEngine> BranchNodeBuilder;
|
||||
typedef GRIndirectGotoNodeBuilder<GRExprEngine> IndirectGotoNodeBuilder;
|
||||
typedef GRSwitchNodeBuilder<GRExprEngine> SwitchNodeBuilder;
|
||||
|
||||
class NodeSet {
|
||||
typedef llvm::SmallPtrSet<NodeTy*,10> ImplTy;
|
||||
ImplTy Impl;
|
||||
typedef ExplodedNodeSet<NodeTy> NodeSet;
|
||||
|
||||
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 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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче