Move store pretty-printing logic inside of StoreManager (previously in GRState).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55013 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/BasicStore.cpp b/lib/Analysis/BasicStore.cpp
index 1528456..24ec7f0 100644
--- a/lib/Analysis/BasicStore.cpp
+++ b/lib/Analysis/BasicStore.cpp
@@ -16,6 +16,7 @@
 #include "clang/Analysis/PathSensitive/GRState.h"
 #include "llvm/ADT/ImmutableMap.h"
 #include "llvm/Support/Compiler.h"
+#include "llvm/Support/Streams.h"
 
 using namespace clang;
 
@@ -42,7 +43,10 @@
   
   static inline VarBindingsTy GetVarBindings(Store store) {
     return VarBindingsTy(static_cast<const VarBindingsTy::TreeTy*>(store));
-  }  
+  }
+
+  virtual void print(Store store, std::ostream& Out,
+                     const char* nl, const char *sep);
 };  
   
 } // end anonymous namespace
@@ -234,3 +238,20 @@
   }
   return St;
 }
+
+void BasicStoreManager::print(Store store, std::ostream& Out,
+                              const char* nl, const char *sep) {
+      
+  VarBindingsTy B = GetVarBindings(store);
+  Out << "Variables:" << nl;
+  
+  bool isFirst = true;
+  
+  for (VarBindingsTy::iterator I=B.begin(), E=B.end(); I != E; ++I) {
+    if (isFirst) isFirst = false;
+    else Out << nl;
+    
+    Out << ' ' << I.getKey()->getName() << " : ";
+    I.getData().print(Out);
+  }
+}