add TraceContext::PrintAvailable
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 27 Aug 2007 16:02:55 +0200
changeset 1367 45e351c58b30
parent 1366 5058cea6d1c2
child 1368 e75dc1a2a5fb
add TraceContext::PrintAvailable
src/core/trace-context.cc
src/core/trace-context.h
--- a/src/core/trace-context.cc	Mon Aug 27 15:34:57 2007 +0200
+++ b/src/core/trace-context.cc	Mon Aug 27 16:02:55 2007 +0200
@@ -231,6 +231,31 @@
   } while (true);
 }
 
+void 
+TraceContext::PrintAvailable (std::ostream &os, std::string separator) const
+{
+  if (m_data == 0)
+    {
+      return;
+    }
+  uint8_t currentUid;
+  uint16_t i = 0;
+  do {
+    currentUid = m_data->data[i];
+    uint8_t size = ElementRegistry::GetSize (currentUid);
+    os << ElementRegistry::GetName (currentUid);
+    i += 1 + size;
+    if (i < m_data->size && currentUid != 0)
+      {
+        os << separator;
+      }
+    else
+      {
+        break;
+      }
+  } while (true);
+}
+
 std::ostream& operator<< (std::ostream& os, const TraceContext &context)
 {
   context.Print (os);
--- a/src/core/trace-context.h	Mon Aug 27 15:34:57 2007 +0200
+++ b/src/core/trace-context.h	Mon Aug 27 16:02:55 2007 +0200
@@ -80,6 +80,7 @@
   void Get (T &context) const;
 
   void Print (std::ostream &os) const;
+  void PrintAvailable (std::ostream &os, std::string separator) const;
 private:
   friend class TraceContextTest;
   // used exclusively for testing code.