![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2003 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: archivableObject.h,v $ $Revision: 1.8 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DTARCHIVABLEOBJECT_H_ 00013 #define DTARCHIVABLEOBJECT_H_ 00014 00015 #include "archiver/archiverDefines.h" 00016 00017 #include <QtCore/QObject> 00018 #include <QtCore/QString> 00019 00020 class DtArchiver; 00021 class QTextStream; 00022 class DtArchivableObject; 00023 00024 typedef DtArchivableObject* (*DtArchivableObjectCreator)(); 00025 00026 #define IMPLEMENT_ARCHIVABLE_CREATOR(name, fcn) static DtArchivableObject impl(#name, fcn); \ 00027 const char* name::creatorName() { return #name; } 00028 00029 #define DECLARE_ARCHIVABLE_CREATOR() virtual const char* creatorName(); 00030 00031 class DT_DLL_archiver DtArchivableObject : public QObject 00032 { 00033 public: 00036 DtArchivableObject(QString name, DtArchivableObjectCreator fcn); 00037 DtArchivableObject(QString name); 00038 DtArchivableObject(); 00039 00040 virtual ~DtArchivableObject(); 00041 00042 virtual QString name() const; 00043 00045 DtArchiver* archiver(); 00046 00047 public: 00049 virtual void read(QTextStream& s); 00050 virtual void write(QTextStream& s); 00051 00052 virtual void setLevel(int i); 00053 virtual int level() const; 00054 00056 virtual DtArchivableObject* clone(); 00057 00058 DECLARE_ARCHIVABLE_CREATOR() 00059 00060 protected: 00061 DtArchiver* myArchiver; 00062 }; 00063 00064 inline DtArchiver* DtArchivableObject::archiver() 00065 { 00066 return myArchiver; 00067 } 00068 00069 DT_DLL_archiver QTextStream& operator<<(QTextStream& s, DtArchivableObject& obj); 00070 DT_DLL_archiver QTextStream& operator>>(QTextStream& s, DtArchivableObject& obj); 00071 00072 #endif