All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions
QGpCoreTools::XMLByteArrayStream Class Reference

Brief description of class still missing. More...

#include <XMLByteArrayStream.h>

Inheritance diagram for QGpCoreTools::XMLByteArrayStream:
QGpCoreTools::XMLStream

List of all members.

Public Member Functions

virtual void addFile (QString fileName, const QByteArray &data)
void addXmlFile ()
QByteArray data () const
virtual bool file (QString fileName, QByteArray &data)
virtual bool isMultiFile () const
bool open (QByteArray data)
 XMLByteArrayStream (QIODevice::OpenMode m)
 ~XMLByteArrayStream ()

Detailed Description

Brief description of class still missing.

Store XMLClass information in a QByteArray with format:

QString Tag "XMLClass" qint32 Version (currently 0) File1 QString File name QByteArray File content File2 QString File name QByteArray File content ... FileN QString File name QByteArray File content


Constructor & Destructor Documentation

References TRACE.

 : XMLStream(_xml=new QByteArray, m)
{
  TRACE;
  _mode=m;
  _lastPos=0;
  if(_mode==QIODevice::WriteOnly) {
    QDataStream s(&_data, QIODevice::WriteOnly);
    QString tag("XMLClass");
    s << tag;
    qint32 version=0;
    s << version;
  }
}

References QGpCoreTools::XMLStream::flush(), and TRACE.

{
  TRACE;
  flush();
  delete _xml;
}

Member Function Documentation

void QGpCoreTools::XMLByteArrayStream::addFile ( QString  fileName,
const QByteArray &  data 
) [virtual]

Reimplemented from QGpCoreTools::XMLStream.

References data(), QGpCoreTools::XMLStream::fileName(), and TRACE.

Referenced by addXmlFile().

{
  TRACE;
  QDataStream s(&_data, QIODevice::Append);
  s << fileName;
  _files.insert(fileName, data);
  s << data;
}

References addFile(), QGpCoreTools::XMLStream::flush(), and TRACE.

Referenced by QGpCoreTools::XMLHeader::xml_saveByteArray().

{
  TRACE;
  flush();
  addFile( "contents.xml", *_xml);
}
QByteArray QGpCoreTools::XMLByteArrayStream::data ( ) const [inline]
bool QGpCoreTools::XMLByteArrayStream::file ( QString  fileName,
QByteArray &  data 
) [virtual]

References data(), and TRACE.

Referenced by QGpCoreTools::XMLHeader::xml_restoreByteArray().

{
  TRACE;
  QMap<QString, QByteArray>::iterator it=_files.find(fileName);
  if(it==_files.end()) {
    QDataStream s(&_data, QIODevice::ReadOnly);
    s.device()->seek(_lastPos);
    while(_lastPos<_data.size()) {
      QString readFileName;
      s >> readFileName;
      s >> data;
      _files.insert(readFileName, data);
      _lastPos=s.device()->pos();
      if(readFileName==fileName) return true;
    }
    return false;
  } else {
    data=it.value();
    return true;
  }
}
virtual bool QGpCoreTools::XMLByteArrayStream::isMultiFile ( ) const [inline, virtual]

Implements QGpCoreTools::XMLStream.

{return true;}
bool QGpCoreTools::XMLByteArrayStream::open ( QByteArray  data)

References data(), QGpCoreTools::endl(), QGpCoreTools::App::stream(), QGpCoreTools::tr(), and TRACE.

Referenced by QGpCoreTools::XMLHeader::xml_restoreByteArray().

{
  TRACE;
  ASSERT (_mode==QIODevice::ReadOnly);
  _data=data;
  QDataStream s(_data);
  QString tag;
  s >> tag;
  if(tag!="XMLClass") {
    App::stream() << tr("Wrong tag, not a XMLClass byte array") << endl;
    return false;
  }
  qint32 version;
  s >> version;
  if(version>0) {
    App::stream() << tr("Wrong version(%1), current version is %2").arg(version).arg(0) << endl;
    return false;
  }
  _lastPos=s.device()->pos();
  return true;
}

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