diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-08-17 02:59:30 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-08-17 02:59:30 +0000 |
commit | e7aa9a13642f50101ac1718098b41f8788b115bc (patch) | |
tree | 319675c638e5fd3b0b13992d7beb975afadaa7cd /lib/Analysis/GRState.cpp | |
parent | dceb6a7244b2e730d0b883512aa7fc7a331a5429 (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.cpp | 42 |
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; } }; } |