summaryrefslogtreecommitdiff
path: root/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx')
-rw-r--r--writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx55
1 files changed, 55 insertions, 0 deletions
diff --git a/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx b/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx
new file mode 100644
index 000000000000..690a15616cec
--- /dev/null
+++ b/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx
@@ -0,0 +1,55 @@
+/* Copyright 2005 Sun Microsystems, Inc. */
+
+#include "FileLoggerImpl.hxx"
+#include <iostream>
+
+using namespace std;
+
+namespace util
+{
+
+ FileLoggerImpl::FileLoggerImpl(const string& fileName) :
+ file_(fileName.c_str())
+ {
+ if (!file_)
+ throw "Cannot open file";
+ }
+
+ void FileLoggerImpl::beginTree()
+ {
+ file_ << "digraph {" << endl;
+ }
+
+ void FileLoggerImpl::endTree()
+ {
+ file_ << "}" << endl;
+ }
+
+ void FileLoggerImpl::beginNode(const std::string& nodeId, const std::string& value, const std::string& refersToNodeId, bool inUse)
+ {
+ if (!nodeStack_.empty())
+ {
+ if (inUse)
+ file_ << nodeId << " [ label=\"(" << value << ")\", shape=box, color=grey, style=filled ];"<< endl;
+ else
+ file_ << nodeId << " [ label=\"(" << value << ")\" ];"<< endl;
+
+ file_ << nodeStack_.top() << " -> " << nodeId << ";" << endl;
+
+ if (!refersToNodeId.empty())
+ file_ << nodeId << " -> " << refersToNodeId << " [ color=grey, weight=0 ];" << endl;
+ }
+ else
+ {
+ file_ << nodeId << " [ label=\"(" << value << ")\", shape=diamond ];"<< endl;
+ }
+ nodeStack_.push(nodeId);
+ }
+
+ void FileLoggerImpl::endNode(const std::string& nodeId)
+ {
+ nodeStack_.pop();
+ }
+
+} // namespace util
+