[klee-commits] [1494] separated virtual ExecutionTraceEvent::print(std::ostream&) const

sbkim at stanford.edu sbkim at stanford.edu
Fri Mar 13 11:50:05 PDT 2009


Revision: 1494
          http://keeda.stanford.edu/viewvc/viewvc.cgi?view=rev&revision=1494
Author:   sbkim
Date:     2009-03-13 11:50:04 -0700 (Fri, 13 Mar 2009)
Log Message:
-----------
separated virtual ExecutionTraceEvent::print(std::ostream&) const
 into non-virtual ExecutionTraceEvent::print(std::ostream&) const
      and virtual ExecutionTraceEvent::printDetails(std::ostream&) const
applying Template method, or Non-Virtual Interface pattern
	http://www.ddj.com/cpp/184403760
	http://www.gotw.ca/publications/mill18.htm

Modified Paths:
--------------
    lib/ExecutionState.cpp
    lib/ExecutionState.h

Modified: lib/ExecutionState.cpp
===================================================================
--- lib/ExecutionState.cpp	2009-03-12 00:19:03 UTC (rev 1493)
+++ lib/ExecutionState.cpp	2009-03-13 18:50:04 UTC (rev 1494)
@@ -401,6 +401,7 @@
 }
 
 void ExecutionTraceEvent::print(std::ostream &os) const {
+  printDetails(os);
   os << ' ' << file << ':' << line << ':' << funcName;
   if (consecutiveCount > 1)
     os << " (" << consecutiveCount << "x)\n";
@@ -430,10 +431,9 @@
 }
 
 
-void BranchTraceEvent::print(std::ostream &os) const {
+void BranchTraceEvent::printDetails(std::ostream &os) const {
   os << "BRANCH " << (trueTaken ? "T" : "F") << ' ' <<
         (canForkGoBothWays ? "2-way" : "1-way");
-  ExecutionTraceEvent::print(os);
 }
 
 void ExecutionTraceManager::addEvent(ExecutionTraceEvent* evt) {

Modified: lib/ExecutionState.h
===================================================================
--- lib/ExecutionState.h	2009-03-12 00:19:03 UTC (rev 1493)
+++ lib/ExecutionState.h	2009-03-13 18:50:04 UTC (rev 1494)
@@ -233,11 +233,14 @@
     funcName = state.stack.back().kf->function->getName();
   }
 
-  virtual void print(std::ostream &os) const;
+  void print(std::ostream &os) const;
 
   // return true if it shouldn't be added to ExecutionTraceManager
   //
   virtual bool ignoreMe() const;
+
+private:
+  virtual void printDetails(std::ostream &os) const = 0;
 };
 
 
@@ -249,9 +252,9 @@
                          const std::string& _calleeFuncName)
     : ExecutionTraceEvent(state, ki), calleeFuncName(_calleeFuncName) {}
 
-  void print(std::ostream &os) const {
+private:
+  virtual void printDetails(std::ostream &os) const {
     os << "CALL " << calleeFuncName;
-    ExecutionTraceEvent::print(os);
   }
 
 };
@@ -261,9 +264,9 @@
   FunctionReturnTraceEvent(ExecutionState& state, KInstruction* ki)
     : ExecutionTraceEvent(state, ki) {}
 
-  void print(std::ostream &os) const {
+private:
+  virtual void printDetails(std::ostream &os) const {
     os << "RETURN";
-    ExecutionTraceEvent::print(os);
   }
 };
 
@@ -278,7 +281,8 @@
       trueTaken(_trueTaken),
       canForkGoBothWays(_isTwoWay) {}
 
-  void print(std::ostream &os) const;
+private:
+  virtual void printDetails(std::ostream &os) const;
 };
 
 }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://keeda.Stanford.EDU/pipermail/klee-commits/attachments/20090313/42b9ba06/attachment.html 


More information about the klee-commits mailing list