itom 2.0.0
D:/git-itom/sources/itom/Qitom/python/qDebugStream.h
00001 /* ********************************************************************
00002     itom software
00003     URL: http://www.uni-stuttgart.de/ito
00004     Copyright (C) 2013, Institut für Technische Optik (ITO),
00005     Universität Stuttgart, Germany
00006 
00007     This file is part of itom.
00008   
00009     itom is free software; you can redistribute it and/or modify it
00010     under the terms of the GNU Library General Public Licence as published by
00011     the Free Software Foundation; either version 2 of the Licence, or (at
00012     your option) any later version.
00013 
00014     itom is distributed in the hope that it will be useful, but
00015     WITHOUT ANY WARRANTY; without even the implied warranty of
00016     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library
00017     General Public Licence for more details.
00018 
00019     You should have received a copy of the GNU Library General Public License
00020     along with itom. If not, see <http://www.gnu.org/licenses/>.
00021 *********************************************************************** */
00022 
00023 //################
00024 //# qdebugstream.h  #
00025 //################
00026 
00027 #ifndef Q_DEBUG_STREAM_H
00028 #define Q_DEBUG_STREAM_H
00029 
00030 #include "../../common/typeDefs.h"
00031 #include <iostream>
00032 #include <qobject.h>
00033 
00034 namespace ito {
00035 
00038 class QDebugStream : public QObject, public std::basic_streambuf<char>
00039 {
00040     Q_OBJECT
00041 
00042 public:
00043     QDebugStream(std::ostream &stream, tMsgType type, QString lineBreak = "\n");
00044     ~QDebugStream();
00045 
00046 
00047 signals:
00048     void flushStream( QString, tMsgType ); 
00050 protected:
00051 
00053     virtual std::basic_streambuf<char>::int_type overflow(int_type v);
00054 
00055     virtual std::streamsize xsputn(const char *p, std::streamsize n);
00056 
00057 private:
00058     std::ostream &m_stream;     
00059     std::streambuf *m_old_buf;  
00060     std::string m_string;       
00061     tMsgType msg_type;          
00062     QString line_break;         
00063 };
00064 
00065 }; // namespace ito
00066 
00067 #endif
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends