#ifndef QDATASTREAM_H
#define QDATASTREAM_H 
#include <QtCore/qiodevice.h>
#include <QtCore/qglobal.h>
typedef enum QtValidLicenseForCoreModule QtCoreModule;
template < typename T > struct QLinkedList;
template < typename Key, typename T > struct QHash;
template < typename Key, typename T > struct QMap;
struct QDataStreamPrivate;
#ifndef QT_NO_DATASTREAM
class QDataStream{
   public: enum Version{
      Qt_1_0 = 1,
      Qt_2_0 = 2,
      Qt_2_1 = 3,
      Qt_3_0 = 4,
      Qt_3_1 = 5,
      Qt_3_3 = 6,
      Qt_4_0 = 7,
      Qt_4_1 = 7,
      Qt_4_2 = 8,
   };
   public: enum ByteOrder{
      BigEndian = 0,
      LittleEndian = 1,
   };
   public: enum Status{
      Ok = 0,
      ReadPastEnd = 1,
      ReadCorruptData = 2,
   };
   public: QDataStream();
   public: explicit QDataStream(class QIODevice*);
   public: QDataStream(class QByteArray*, class QFlags < enum QIODevice::OpenModeFlag > flags);
   public: QDataStream(class QByteArray const &);
   public: virtual ~QDataStream();
   public: void setDevice(class QIODevice*);
   public: void unsetDevice();
   public: bool atEnd() const
   public: enum QDataStream::Status status() const
   public: void setStatus(enum QDataStream::Status status);
   public: void resetStatus();
   public: void setByteOrder(enum QDataStream::ByteOrder);
   public: class QDataStream& operator >>(qint8& i);
   public: class QDataStream& operator >>(qint16& i);
   public: class QDataStream& operator >>(qint32& i);
   public: class QDataStream& operator >>(qint64& i);
   public: class QDataStream& operator >>(bool& i);
   public: class QDataStream& operator >>(float& f);
   public: class QDataStream& operator >>(double& f);
   public: class QDataStream& operator >>(char* & str);
   public: class QDataStream& operator <<(qint8 i);
   public: class QDataStream& operator <<(qint16 i);
   public: class QDataStream& operator <<(qint32 i);
   public: class QDataStream& operator <<(qint64 i);
   public: class QDataStream& operator <<(bool i);
   public: class QDataStream& operator <<(float f);
   public: class QDataStream& operator <<(double f);
   public: class QDataStream& operator <<(char const * str);
   public: class QDataStream& readBytes(char* &, uint& len);
   public: int readRawData(char*, int len);
   public: class QDataStream& writeBytes(char const *, uint len);
   public: int writeRawData(char const *, int len);
   public: int skipRawData(int len);
   private: QDataStream(class QDataStream const &);
   private: class QDataStream& operator =(class QDataStream const &);
   private: struct QDataStreamPrivate* d;
   private: class QIODevice* dev;
   private: bool owndev;
   private: bool noswap;
   private: enum QDataStream::ByteOrder byteorder;
   private: int ver;
   private: enum QDataStream::Status q_status;
   public: inline class QIODevice* device() const
   public: inline enum QDataStream::ByteOrder byteOrder() const
   public: inline int version() const
   public: inline void setVersion(int v);
   public: inline class QDataStream& operator >>(quint8& i);
   public: inline class QDataStream& operator >>(quint16& i);
   public: inline class QDataStream& operator >>(quint32& i);
   public: inline class QDataStream& operator >>(quint64& i);
   public: inline class QDataStream& operator <<(quint8 i);
   public: inline class QDataStream& operator <<(quint16 i);
   public: inline class QDataStream& operator <<(quint32 i);
   public: inline class QDataStream& operator <<(quint64 i);
};
template < typename T > class QDataStream& operator >>(class QDataStream& s, class QList < T >& l);
template < typename T > class QDataStream& operator <<(class QDataStream& s, class QList < T > const & l);
template < typename T > class QDataStream& operator >>(class QDataStream& s, class QLinkedList < T >& l);
template < typename T > class QDataStream& operator <<(class QDataStream& s, class QLinkedList < T > const & l);
template < typename T > class QDataStream& operator >>(class QDataStream& s, class QVector < T >& v);
template < typename T > class QDataStream& operator <<(class QDataStream& s, class QVector < T > const & v);
template < typename T > class QDataStream& operator >>(class QDataStream& in, class QSet < T >& set);
template < typename T > class QDataStream& operator <<(class QDataStream& out, class QSet < T > const & set);
template < typename Key, typename T > class QDataStream& operator >>(class QDataStream& in, class QHash < Key, T >& hash);
template < typename Key, typename T > class QDataStream& operator <<(class QDataStream& out, class QHash < Key, T > const & hash);
#ifdef qdoc
#else
template < typename aKey, typename aT > class QDataStream& operator >>(class QDataStream& in, class QMap < aKey, aT >& map);
#endif
template < typename Key, typename T > class QDataStream& operator <<(class QDataStream& out, class QMap < aKey, aT > const & map);
#endif // QT_NO_DATASTREAM
#endif // QDATASTREAM_H