From dfb9c76738bb68e235114c5ad43dbd26a59b98ab Mon Sep 17 00:00:00 2001 From: kergoth Date: Thu, 06 Jun 2002 23:31:00 +0000 Subject: Initial revision --- (limited to 'library/qcopmessage_qws.h') diff --git a/library/qcopmessage_qws.h b/library/qcopmessage_qws.h new file mode 100644 index 0000000..c19f57d --- a/dev/null +++ b/library/qcopmessage_qws.h @@ -0,0 +1,99 @@ +/********************************************************************** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the Qtopia Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCOP_MESSAGE_H +#define QCOP_MESSAGE_H + +#include +#include + +class QCopMessage : public QDataStream { + public: + QCopMessage(); + QCopMessage(const QCString& channel, const QCString& message); + QCopMessage(const QCopMessage& orig); + ~QCopMessage(); + + void setChannel(QCString& channel) { m_Channel = channel; } + QCString channel() const { return m_Channel; } + void setMessage(QCString& message) { m_Message = message; } + QCString message() const { return m_Message; } + const QByteArray data() const; + + QCopMessage& operator=(const QCopMessage& orig); + + private: + QCString m_Channel; + QCString m_Message; +}; + +// ### No need to inline, just maintaining binary compatability +inline QCopMessage::QCopMessage() : QDataStream(new QBuffer()) { + device()->open(IO_WriteOnly); +} + +inline QCopMessage::QCopMessage(const QCString& channel, const QCString& message) + : QDataStream(new QBuffer()), m_Channel(channel), m_Message(message) { + device()->open(IO_WriteOnly); +} + +inline QCopMessage::QCopMessage(const QCopMessage& orig) : QDataStream() { + // The QBuffer is going to share the byte array, so it will keep the + // data pointer even when this one goes out of scope. + QByteArray array(((QBuffer*)orig.device())->buffer()); + array.detach(); + setDevice(new QBuffer(array)); + device()->open(IO_Append); + + m_Channel = orig.channel(); + m_Message = orig.message(); +} + +inline QCopMessage& QCopMessage::operator=(const QCopMessage& orig) { + if (device()) { + delete device(); + unsetDevice(); + } + + // The QBuffer is going to share the byte array, so it will keep the + // data pointer even when this one goes out of scope. + QByteArray array(((QBuffer*)orig.device())->buffer()); + array.detach(); + setDevice(new QBuffer(array)); + device()->open(IO_Append); + + m_Channel = orig.channel(); + m_Message = orig.message(); + + return *this; +} + +inline const QByteArray QCopMessage::data() const { + return ((QBuffer*)device())->buffer(); +} + +inline QCopMessage::~QCopMessage() { + // If we still have our QBuffer, clean it up... + if (device()) + delete device(); + unsetDevice(); +} + +#endif -- cgit v0.9.0.2