added ostream for log, SAX parser improvements
[asdcplib.git] / src / KM_log.cpp
index 7ae32421a82969427638e8043d03db928e1a844e..aa0303b2bf7cf53277f52e9dc7ad6168d6c065dc 100755 (executable)
@@ -1,5 +1,5 @@
 /*
-Copyright (c) 2004-2007, John Hurst
+Copyright (c) 2004-2008, John Hurst
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -34,6 +34,8 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <sys/types.h>
 #include <string.h>
 #include <stdarg.h>
+#include <iostream>
+#include <sstream>
 
 #ifdef KM_WIN32
 #define getpid GetCurrentProcessId
@@ -144,6 +146,24 @@ Kumu::StreamLogSink::WriteEntry(const LogEntry& Entry)
 
 //------------------------------------------------------------------------------------------
 
+//
+std::basic_ostream<char, std::char_traits<char> >&
+Kumu::operator<<(std::basic_ostream<char, std::char_traits<char> >& strm, LogEntry const& Entry)
+{
+  std::basic_ostringstream<char, std::char_traits<char> > s;
+  s.copyfmt(strm);
+  s.width(0);
+  std::string buf;
+
+  s << Entry.CreateStringWithOptions(buf, LOG_OPTION_ALL);
+
+  strm << s.str();
+  return strm;
+}
+
+//------------------------------------------------------------------------------------------
+
+
 //
 bool
 Kumu::LogEntry::TestFilter(i32_t filter) const
@@ -194,7 +214,7 @@ Kumu::LogEntry::TestFilter(i32_t filter) const
 std::string&
 Kumu::LogEntry::CreateStringWithOptions(std::string& out_buf, i32_t opt) const
 {
-  out_buf.clear();
+  out_buf.erase();
 
   if ( opt != 0 )
     {