All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Types | Public Member Functions | Protected Member Functions
QGpCoreTools::AbstractStream Class Reference

Brief description of class still missing. More...

#include <AbstractStream.h>

Inheritance diagram for QGpCoreTools::AbstractStream:
QGpCoreTools::SharedObject QGpCoreTools::FileStream QGpCoreTools::StandardStream QGpCoreTools::StringStream QGpGuiTools::LogView

List of all members.

Public Types

enum  ClassId {
  StandardId = 0, StringId, FileId, LogViewId,
  CustomId
}

Public Member Functions

 AbstractStream ()
virtual ClassId classId () const =0
void endl ()
void flush ()
void freeze (bool b)
bool isFrozen () const
AbstractStreamnext () const
AbstractStreamoperator<< (const QString &val)
AbstractStreamoperator<< (int val)
AbstractStreamoperator<< (double val)
AbstractStreamoperator<< (const char *val)
AbstractStreamoperator<< (QChar val)
AbstractStreamoperator<< (char val)
AbstractStreamprevious () const
void setNext (AbstractStream *s)
void setPrefix (const QString &prefix)
void setPrevious (AbstractStream *s)
virtual ~AbstractStream ()

Protected Member Functions

virtual void flushStream ()=0
void lock ()
virtual void sendToStream (const QString &val)=0
void unlock ()

Detailed Description

Brief description of class still missing.

Full description of class still missing


Member Enumeration Documentation

Enumerator:
StandardId 
StringId 
FileId 
LogViewId 
CustomId 

Constructor & Destructor Documentation

Description of constructor still missing

References TRACE.

  {
    TRACE;
    //printf("AbstractStream::AbstractStream()... %p\n", this);
    _frozen=false;
    _lineOpen=false;
    _prefixType=NoPrefix;
    _next=0;
    _previous=0;
  }

References QGpCoreTools::SharedObject::removeReference(), and TRACE.

  {
    TRACE;
    //printf("AbstractStream::~AbstractStream()... %p\n", this);
    //printf("%s", CoreApplication::backTrace().toAscii().data());
    if(_previous) {
      removeReference(_previous);
    }
  }

Member Function Documentation

virtual ClassId QGpCoreTools::AbstractStream::classId ( ) const [pure virtual]

References flushStream(), and sendToStream().

Referenced by QGpCoreTools::endl(), and QGpCoreTools::FileStream::FileStream().

  {
    _mutex.lock();
    if(!_frozen) {
      switch(_prefixType) {
      case NoPrefix:
        sendToStream("\n");
        break;
      case String:
        if(_lineOpen) {
          sendToStream("\n");
          _lineOpen=false;
        } else {
          sendToStream(_prefix1+"\n");
        }
        break;
      case TimeStamp:
        if(_lineOpen) {
          sendToStream("\n");
          _lineOpen=false;
        } else {
          sendToStream(timeStampedPrefix()+"\n");
        }
        break;
      }
      flushStream();
    }
    _mutex.unlock();
  }

References flushStream().

Referenced by QGpCoreTools::flush().

  {
    _mutex.lock();
    if(!_frozen) {
      flushStream();
    }
    _mutex.unlock();
  }
virtual void QGpCoreTools::AbstractStream::flushStream ( ) [protected, pure virtual]
void QGpCoreTools::AbstractStream::freeze ( bool  b) [inline]
bool QGpCoreTools::AbstractStream::isFrozen ( ) const [inline]
{return _frozen;}
void QGpCoreTools::AbstractStream::lock ( ) [inline, protected]
AbstractStream & QGpCoreTools::AbstractStream::operator<< ( const QString &  val)

References sendToStream().

  {
    _mutex.lock();
    if(!_frozen) {
      switch(_prefixType) {
      case NoPrefix:
        sendToStream(val);
        break;
      case String:
        if(!_lineOpen) {
          sendToStream(_prefix1);
          _lineOpen=true;
        }
        if(val.contains("\n")) {
          QString s=val;
          s.replace("\n", "\n"+_prefix1);
          sendToStream(s);
        } else {
          sendToStream(val);
        }
        break;
      case TimeStamp: {
          QString prefix=timeStampedPrefix();
          if(!_lineOpen) {
            sendToStream(prefix);
            _lineOpen=true;
          }
          if(val.contains("\n")) {
            QString s=val;
            s.replace("\n", "\n"+prefix);
            sendToStream(s);
          } else {
            sendToStream(val);
          }
        }
        break;
      }
    }
    _mutex.unlock();
    return *this;
  }
AbstractStream& QGpCoreTools::AbstractStream::operator<< ( int  val) [inline]

References operator<<().

Referenced by operator<<().

{return operator<<(QString::number(val));}
AbstractStream& QGpCoreTools::AbstractStream::operator<< ( double  val) [inline]

References operator<<().

Referenced by operator<<().

{return operator<<(QString::number(val));}
AbstractStream& QGpCoreTools::AbstractStream::operator<< ( const char *  val) [inline]

References operator<<().

Referenced by operator<<().

{return operator<<(QString(val));}
AbstractStream& QGpCoreTools::AbstractStream::operator<< ( QChar  val) [inline]

References operator<<().

Referenced by operator<<().

{return operator<<(QString(val));}
AbstractStream& QGpCoreTools::AbstractStream::operator<< ( char  val) [inline]

References operator<<().

Referenced by operator<<().

{return operator<<(QString(QChar::fromAscii(val)));}
virtual void QGpCoreTools::AbstractStream::sendToStream ( const QString &  val) [protected, pure virtual]
void QGpCoreTools::AbstractStream::setPrefix ( const QString &  prefix)

If prefix contains "%t", it is replaced by current time

  {
    if(prefix.isEmpty()) {
      _prefixType=NoPrefix;
    } else {
      int i=prefix.indexOf("%t");
      if(i==-1) {
        _prefixType=String;
        _prefix1=prefix;
      } else {
        _prefixType=TimeStamp;
        _prefix1=prefix.left(i);
        _prefix2=prefix.mid(i+2);
      }
      _lineOpen=false; // Disregarded when in NoPrefix mode
    }
  }
void QGpCoreTools::AbstractStream::unlock ( ) [inline, protected]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines