aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/GRState.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-08-17 02:59:30 +0000
committerTed Kremenek <kremenek@apple.com>2008-08-17 02:59:30 +0000
commite7aa9a13642f50101ac1718098b41f8788b115bc (patch)
tree319675c638e5fd3b0b13992d7beb975afadaa7cd /lib/Analysis/GRState.cpp
parentdceb6a7244b2e730d0b883512aa7fc7a331a5429 (diff)
Added GRStateTrait.h, which includes boilerplate code for creating specializations of GRStateTrait<>.
Modified GRStateTrait<ConstNotEq> in GRState to use the boilerplate in GRStateTrait<> for ImmutableMaps. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54859 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/GRState.cpp')
-rw-r--r--lib/Analysis/GRState.cpp42
1 files changed, 4 insertions, 38 deletions
diff --git a/lib/Analysis/GRState.cpp b/lib/Analysis/GRState.cpp
index 5522600d84..e5dd6788dc 100644
--- a/lib/Analysis/GRState.cpp
+++ b/lib/Analysis/GRState.cpp
@@ -11,6 +11,7 @@
//
//===----------------------------------------------------------------------===//
+#include "clang/Analysis/PathSensitive/GRStateTrait.h"
#include "clang/Analysis/PathSensitive/GRState.h"
#include "llvm/ADT/SmallSet.h"
#include "clang/Analysis/PathSensitive/GRTransferFuncs.h"
@@ -37,44 +38,9 @@ typedef llvm::ImmutableMap<SymbolID,GRState::IntSetTy> ConstNotEqTy;
static int ConstNotEqTyIndex = 0;
namespace clang {
- template<> struct GRStateTrait<ConstNotEqTy> {
- typedef ConstNotEqTy data_type;
- typedef ConstNotEqTy::Factory& context_type;
- typedef SymbolID key_type;
- typedef GRState::IntSetTy value_type;
- typedef const GRState::IntSetTy* lookup_type;
-
- static data_type MakeData(void* const* p) {
- return p ? ConstNotEqTy((ConstNotEqTy::TreeTy*) *p) : ConstNotEqTy(0);
- }
- static void* MakeVoidPtr(ConstNotEqTy B) {
- return B.getRoot();
- }
- static void* GDMIndex() {
- return &ConstNotEqTyIndex;
- }
- static lookup_type Lookup(ConstNotEqTy B, SymbolID K) {
- return B.lookup(K);
- }
- static data_type Set(data_type B, key_type K, value_type E,context_type F){
- return F.Add(B, K, E);
- }
-
- static data_type Remove(ConstNotEqTy B, SymbolID K, context_type F) {
- return F.Remove(B, K);
- }
-
- static context_type MakeContext(void* p) {
- return *((ConstNotEqTy::Factory*) p);
- }
-
- static void* CreateContext(llvm::BumpPtrAllocator& Alloc) {
- return new ConstNotEqTy::Factory(Alloc);
- }
-
- static void DeleteContext(void* Ctx) {
- delete (ConstNotEqTy::Factory*) Ctx;
- }
+ template<>
+ struct GRStateTrait<ConstNotEqTy> : public GRStatePartialTrait<ConstNotEqTy> {
+ static inline void* GDMIndex() { return &ConstNotEqTyIndex; }
};
}