[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