VR-Forces 4.1.1 Class Documentation
archiver.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2007 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: archiver.h,v $ $Revision: 1.11 $ $State: Exp $
7 *******************************************************************************/
8 
11 
12 #ifndef DTARCHIVER_H_
13 #define DTARCHIVER_H_
14 
17 
18 #include "ngutil/dtqlist.h"
21 
22 #include <QtCore/QObject>
23 #include <QtCore/QRect>
24 #include <QtGui/QColor>
25 #include <QtCore/QString>
26 #include <QtCore/QTextStream>
27 #include <QtCore/QLinkedList>
28 #include <QtCore/QList>
29 #include <QtCore/QHash>
30 
31 class DtArchiveObject;
32 class DtArchivableObject;
33 
34 class QPen;
35 class QString;
36 class QPoint;
37 class QStringList;
38 class QColor;
39 class QPointF;
40 class QTextStream;
41 
46 
48 
49 typedef void (*DtArchiverFunction)(QTextStream& ts, DtArchiveObject* obj);
50 
52 {
53 public:
54  DtArchiver(QString name);
55  virtual ~DtArchiver();
56 
58 public:
59  virtual void add(QString value, int* toWrite);
60  virtual void add(QString value, short* toWrite);
61  virtual void add(QString value, DtArchivableObject* toWrite);
62  virtual void add(QString value, QPen* toWrite);
63  virtual void add(QString value, QColor* toWrite);
64  virtual void add(QString value, double* toWrite);
65  virtual void add(QString value, bool* toWrite);
66  virtual void add(QString value, float* toWrite);
67  virtual void add(QString value, QString* toWrite);
68  virtual void add(QString value, char* toWrite);
69  virtual void add(QString value, QPoint* toWrite);
70  virtual void add(QString value, QPointF* toWrite);
71 
72  virtual void add(QString value, QRect* toWrite);
73 
74  virtual void add(QString value, QStringList* toWrite);
75 
76  virtual void add(QString value, void* toWrite,
77  DtArchiverFunction write, DtArchiverFunction read, bool writeLevel = false);
78 
80  template <typename Key, typename Value> void add(QString value,
81  QHash<Key, Value>* toWrite);
82 
83  template <typename T> void add(QString value, QList<T>* toWrite);
84  template <typename T> void add(QString value, QLinkedList<T>* toWrite);
85  template <typename T> void add(QString value, QVector<T>* toWrite);
86 
88  virtual void remove(void* toWrite);
89 
90  virtual void setLevel(int iLevel);
91  virtual int level() const;
92 
93  virtual void setName(QString name);
94  virtual QString name() const;
95 
96  static void addCreator(const QString& name, DtArchivableObjectCreator fnc);
97  static bool hasCreatorFor(DtArchivableObject* obj);
98  static DtArchivableCreatorInfo* creatorFor(const QString& name);
99  static DtArchivableObject* createObject(const QString& name);
100 
103  static void cleanupCreators();
104 
105 public:
107  virtual void read(QTextStream& ts);
108  virtual void write(QTextStream& ts);
109  virtual void writeObject(QTextStream& ts, int level, DtArchiveObject* obj);
110  virtual void readObject(DtArchiveObject* obj);
111 
112 protected:
113  virtual void writeLevel(QTextStream& ts, int iLevel);
114 
120  virtual void parseBlock(QTextStream& ts);
121 
123  virtual QString readBlock(QTextStream& ts);
124 
126  virtual QString readNamedBlock(QString& name, QTextStream& ts);
127 
130  virtual void buildArchiveDictionary(QTextStream& block);
131 
132 protected:
134  QHash<QString, QString> myArchiveBlocks;
135  static QHash<QString, DtArchivableCreatorInfo>* myObjectCreators;
136 
137  int myLevel;
138  QString myName;
139 };
140 
142 {
143 public:
145  DtArchivableCreatorInfo(const DtArchivableCreatorInfo& orig) : myCreator(orig.myCreator) {};
146 
147  virtual DtArchivableObjectCreator creator();
148  virtual void setCreator(DtArchivableObjectCreator fcn);
149 
150 protected:
152 };
153 
154 DT_DLL_archiver QTextStream& operator<<(QTextStream& ts, DtArchiver& archive);
155 DT_DLL_archiver QTextStream& operator>>(QTextStream& ts, DtArchiver& archive);
156 
157 
158 
159 
160 
161 
162 
165 
167 {
168 public:
169  DtArchiveObject(QString name, void* toArchive,
170  DtArchiverFunction archiveWriter, DtArchiverFunction archiveReader);
171 
172  DtArchiveObject(const DtArchiveObject& orig);
173 
174  virtual ~DtArchiveObject();
175 
176 public:
178  virtual void write(QTextStream& ts);
179  virtual void read(QTextStream& ts);
180 
181  virtual QString name() const;
182  virtual void* toWrite();
183 
184  virtual void setLevel(int i);
185  virtual int level() const;
186 
187  virtual void setWriteLevel(bool b);
188  virtual bool writeLevel() const;
189 
190 public:
192 
193  static void writeInt(QTextStream& ts, DtArchiveObject* obj);
194  static void readInt(QTextStream& ts, DtArchiveObject* obj);
195 
196  static void writeShort(QTextStream& ts, DtArchiveObject* obj);
197  static void readShort(QTextStream& ts, DtArchiveObject* obj);
198 
199  static void writeRect(QTextStream& ts, DtArchiveObject* obj);
200  static void readRect(QTextStream& ts, DtArchiveObject* obj);
201 
202  static void writeArchivableObject(QTextStream& ts, DtArchiveObject* obj);
203  static void readArchivableObject(QTextStream& ts, DtArchiveObject* obj);
204 
205  static void writePen(QTextStream& ts, DtArchiveObject* obj);
206  static void readPen(QTextStream& ts, DtArchiveObject* obj);
207 
208  static void writeColor(QTextStream& ts, DtArchiveObject* obj);
209  static void readColor(QTextStream& ts, DtArchiveObject* obj);
210 
211  static void writeDouble(QTextStream& ts, DtArchiveObject* obj);
212  static void readDouble(QTextStream& ts, DtArchiveObject* obj);
213 
214  static void writeBool(QTextStream& ts, DtArchiveObject* obj);
215  static void readBool(QTextStream& ts, DtArchiveObject* obj);
216 
217  static void writeFloat(QTextStream& ts, DtArchiveObject* obj);
218  static void readFloat(QTextStream& ts, DtArchiveObject* obj);
219 
220  static void writeString(QTextStream& ts, DtArchiveObject* obj);
221  static void readString(QTextStream& ts, DtArchiveObject* obj);
222 
223  static void writeCharStar(QTextStream& ts, DtArchiveObject* obj);
224  static void readCharStar(QTextStream& ts, DtArchiveObject* obj);
225 
226  static void writePoint(QTextStream& ts, DtArchiveObject* obj);
227  static void readPoint(QTextStream& ts, DtArchiveObject* obj);
228 
229  static void writePointF(QTextStream& ts, DtArchiveObject* obj);
230  static void readPointF(QTextStream& ts, DtArchiveObject* obj);
231 
232  template <typename T> static void writeCollection(
233  QTextStream& ts, DtArchiveObject* obj);
234 
235  template <typename T> static void readCollection(
236  QTextStream& ts, DtArchiveObject* obj);
237 
244  template <typename T> static void writeList(
245  QTextStream& ts, DtArchiveObject* obj);
246 
247  template <typename T> static void readList(QTextStream& ts,
248  DtArchiveObject* obj);
249 
250  template <typename T> static void writeVectorList(
251  QTextStream& ts, DtArchiveObject* obj);
252 
253  template <typename T> static void readVectorList(QTextStream& ts,
254  DtArchiveObject* obj);
255 
256  template <typename Key, typename Value> static void writeDictionary(
257  QTextStream& ts, DtArchiveObject* obj);
258 
259  template <typename Key, typename Value> static void readDictionary(
260  QTextStream& ts, DtArchiveObject* obj);
261 
262  static void writeStringList(QTextStream& ts, DtArchiveObject* obj);
263  static void readStringList(QTextStream& ts, DtArchiveObject* obj);
264 
265 protected:
266  virtual void writeLevel(QTextStream& ts, int iLevel);
267 
268 protected:
271  void* myValue;
272  QString myName;
273  int myLevel;
275 };
276 
277 QTextStream& operator<<(QTextStream& ts, DtArchiveObject& obj);
278 QTextStream& operator>>(QTextStream& ts, DtArchiveObject& obj);
279 
280 #include "archiver/archiver.inl"
281 
282 #endif
283 

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)