You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdegames/libksirtet/lib/types.h

198 lines
4.6 KiB

#ifndef MTYPES_H
#define MTYPES_H
#include <tqstring.h>
#include <tqbuffer.h>
#include <tqvaluelist.h>
#include "miscui.h"
/** Internal class : used for client identification. */
class cId
{
public:
cId() {}
cId(const TQString &gameName, const TQString &gameId);
enum State { Accepted, LibIdClash, GameNameClash, GameIdClash };
void check(const cId &id);
bool accepted() const { return state==Accepted; }
TQString errorMessage(const cId &id) const;
friend TQDataStream &operator << (TQDataStream &s, const cId &id);
friend TQDataStream &operator >> (TQDataStream &s, cId &id);
private:
TQString libId, gameName, gameId;
State state;
};
TQDataStream &operator << (TQDataStream &s, const cId &id);
TQDataStream &operator >> (TQDataStream &s, cId &id);
/** Flags used for the netmeeting. */
enum MeetingMsgFlag
{ IdFlag = 0, EndFlag, NewFlag, DelFlag, Mod_TextFlag, Mod_TypeFlag, Mod_OptFlag, PlayFlag };
TQDataStream &operator << (TQDataStream &s, const MeetingMsgFlag &f);
TQDataStream &operator >> (TQDataStream &s, MeetingMsgFlag &f);
/** Internal class : used in netmeeting to transport text line. */
class TextInfo
{
public:
TextInfo() {}
uint i;
TQString text;
};
TQDataStream &operator << (TQDataStream &s, const TextInfo &ti);
TQDataStream &operator >> (TQDataStream &s, TextInfo &ti);
/** Internal class : used in netmeeting to transport readiness status. */
typedef struct {
uint i;
MeetingCheckBox::Type type;
} TypeInfo;
TQDataStream &operator << (TQDataStream &s, const MeetingCheckBox::Type &t);
TQDataStream &operator >> (TQDataStream &s, MeetingCheckBox::Type &t);
TQDataStream &operator << (TQDataStream &s, const TypeInfo &ti);
TQDataStream &operator >> (TQDataStream &s, TypeInfo &ti);
/* Internal class : store game data. */
class BoardData
{
public:
BoardData() {}
TQString name;
PlayerComboBox::Type type;
};
TQDataStream &operator <<(TQDataStream &, const BoardData &);
TQDataStream &operator >>(TQDataStream &, BoardData &);
/* Internal class : store extended game data (used in netmeeting). */
class ExtData
{
public:
ExtData() {}
ExtData(const TQValueList<BoardData> &_bds, const TQString &_text,
MeetingCheckBox::Type _type)
: bds(_bds), text(_text), type(_type) {}
TQValueList<BoardData> bds;
TQString text;
MeetingCheckBox::Type type;
};
TQDataStream &operator << (TQDataStream &s, const ExtData &ed);
TQDataStream &operator >> (TQDataStream &s, ExtData &ed);
/* Internal class : store meeting line data (in netmeeting). */
class MeetingLineData
{
public:
MeetingLineData() {}
ExtData ed;
bool own;
};
TQDataStream &operator << (TQDataStream &s, const MeetingLineData &pld);
TQDataStream &operator >> (TQDataStream &s, MeetingLineData &pld);
/* Internal class : store remote host data. */
class Socket;
class RemoteHostData
{
public:
RemoteHostData() : socket(0) {}
Socket *socket;
TQValueList<BoardData> bds;
};
/* Internal class : store connection data (used by config. wizard). */
class ConnectionData
{
public:
ConnectionData() {}
bool network, server;
RemoteHostData rhd;
};
/** Flags used for network communication. */
enum MetaFlag { MF_Ask = 0, MF_Data };
TQDataStream &operator << (TQDataStream &s, const MetaFlag &f);
TQDataStream &operator >> (TQDataStream &s, MetaFlag &f);
/** Internal class : encapsulate read/write TQBuffer. */
class Stream : public TQDataStream
{
public:
Stream(int mode);
void clear();
void setArray(TQByteArray a);
TQByteArray buffer() /*const*/ { return buf.buffer(); }
uint size() /*const*/ { return buf.buffer().size(); }
protected:
TQBuffer buf;
private:
int mode;
};
/** Internal class : encapsulate write TQBuffer. */
class WritingStream : public Stream
{
public:
WritingStream() : Stream(IO_WriteOnly) {}
};
/** Internal class : encapsulate read TQBuffer. */
class ReadingStream : public Stream
{
public:
ReadingStream() : Stream(IO_ReadOnly) {}
bool readOk();
void clearRead();
};
/** Internal class : include a @ref ReadingStream and a @ref WritingStream. */
class IOBuffer
{
public:
IOBuffer() {}
void writingToReading();
ReadingStream reading;
WritingStream writing;
};
/** Internal class : array of @ref IOBuffer. */
class BufferArray
{
public:
BufferArray() {}
BufferArray(uint nb) { resize(nb); }
~BufferArray();
void resize(uint nb);
uint size() const { return a.size(); }
IOBuffer *operator [](uint i) const { return a[i]; }
private:
TQMemArray<IOBuffer *> a;
void clear(uint nb);
};
TQDataStream &operator <<(TQDataStream &s, const BufferArray &b);
TQDataStream &operator >>(TQDataStream &s, BufferArray &b);
#endif // MTYPES_H