From: Christian P. <cp...@us...> - 2005-04-28 10:12:02
|
Update of /cvsroot/pclasses/pclasses2/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23571/src Modified Files: Trace.cpp Log Message: - Added tracing support Index: Trace.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/Trace.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Trace.cpp 10 Jan 2005 02:48:38 -0000 1.1 +++ Trace.cpp 28 Apr 2005 10:11:36 -0000 1.2 @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2004 by Christian Prochnow * + * Copyright (C) 2005 by Christian Prochnow, SecuLogiX GmbH * * cp...@se... * * * * This program is free software; you can redistribute it and/or modify * @@ -17,3 +17,62 @@ * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ + +#include "pclasses/Trace.h" +#include <stdio.h> +#include <sstream> + +namespace P { + +TraceStream::TraceStream(TraceLog& log, const SourceInfo& si, const char* cl) +: std::ostream(new std::stringbuf()), _log(log), _src(si), _class(cl) +{ +} + +TraceStream::TraceStream(const TraceStream& strm) +: std::ostream(new std::stringbuf()), _log(strm._log), _src(strm._src), + _class(strm._class) +{ +} + +TraceStream::~TraceStream() +{ + std::stringbuf* sb = static_cast<std::stringbuf*>(rdbuf()); + _log.output(_src, _class, sb->str()); + delete sb; +} + +std::ostream& TraceStream::operator()() +{ + return *this; +} + + +TraceLog TraceLog::_trace; + +TraceLog::TraceLog() +{ +} + +TraceLog::~TraceLog() +{ +} + +TraceStream TraceLog::stream(const SourceInfo& si, const char* cl) +{ + return TraceStream(*this, si, cl); +} + +void TraceLog::output(const SourceInfo& si, const std::string& cl, + const std::string& msg) +{ + //std::cout << si.file() << ":" << si.line() << std::endl; + std::cout << cl << ": " << msg << std::endl; +} + +TraceLog& TraceLog::instance() +{ + return _trace; +} + +} |