00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013 #ifndef __SERIALIZER_H__
00014 #define __SERIALIZER_H__
00015
00016 #include "upnpexp.h"
00017 #include "upnputil.h"
00018
00019 #include <QList>
00020 #include <QMetaType>
00021 #include <QCryptographicHash>
00022
00025
00026
00027
00030
00031 class UPNP_PUBLIC Serializer
00032 {
00033 protected:
00034
00035 QCryptographicHash m_hash;
00036
00037 virtual void BeginSerialize( QString &sName ) {}
00038 virtual void EndSerialize () {}
00039
00040 virtual void BeginObject( const QString &sName, const QObject *pObject ) = 0;
00041 virtual void EndObject ( const QString &sName, const QObject *pObject ) = 0;
00042
00043 virtual void AddProperty( const QString &sName,
00044 const QVariant &vValue,
00045 const QMetaObject *pMetaParent,
00046 const QMetaProperty *pMetaProp ) = 0;
00047
00049
00050 void SerializeObject ( const QObject *pObject, const QString &sName );
00051 void SerializeObjectProperties( const QObject *pObject );
00052
00053 QString ReadPropertyMetadata ( const QObject *pObject,
00054 QString sPropName,
00055 QString sKey );
00056
00057 public:
00058
00059 virtual void Serialize( const QObject *pObject, const QString &_sName = QString() );
00060 virtual void Serialize( const QVariant &vValue, const QString &sName );
00061
00063
00065
00066 virtual QString GetContentType () = 0;
00067 virtual void AddHeaders ( QStringMap &headers );
00068
00069
00070 Serializer() : m_hash( QCryptographicHash::Sha1 )
00071 {
00072 qRegisterMetaType< QList<QObject*> >("QList<QObject*>");
00073 }
00074 };
00075
00076 Q_DECLARE_METATYPE( QList<QObject*> )
00077
00078 #endif
00079