-
Notifications
You must be signed in to change notification settings - Fork 345
/
serializer.h
79 lines (58 loc) · 2.71 KB
/
serializer.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//////////////////////////////////////////////////////////////////////////////
// Program Name: serializer.h
// Created : Nov. 28, 2009
//
// Purpose : Serialization Abstract Class
//
// Copyright (c) 2005 David Blain <dblain@mythtv.org>
//
// Licensed under the GPL v2 or later, see COPYING for details
//
//////////////////////////////////////////////////////////////////////////////
#ifndef __SERIALIZER_H__
#define __SERIALIZER_H__
#include "upnpexp.h"
#include "upnputil.h"
#include <QList>
#include <QMetaType>
#include <QCryptographicHash>
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
//
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
class UPNP_PUBLIC Serializer
{
protected:
QCryptographicHash m_hash;
virtual void BeginSerialize( QString &sName ) {}
virtual void EndSerialize () {}
virtual void BeginObject( const QString &sName, const QObject *pObject ) = 0;
virtual void EndObject ( const QString &sName, const QObject *pObject ) = 0;
virtual void AddProperty( const QString &sName,
const QVariant &vValue,
const QMetaObject *pMetaParent,
const QMetaProperty *pMetaProp ) = 0;
//////////////////////////////////////////////////////////////////////
void SerializeObject ( const QObject *pObject, const QString &sName );
void SerializeObjectProperties( const QObject *pObject );
QString ReadPropertyMetadata ( const QObject *pObject,
QString sPropName,
QString sKey );
public:
virtual void Serialize( const QObject *pObject, const QString &_sName = QString() );
virtual void Serialize( const QVariant &vValue, const QString &sName );
//////////////////////////////////////////////////////////////////////
// Helper Methods
//////////////////////////////////////////////////////////////////////
virtual QString GetContentType () = 0;
virtual void AddHeaders ( QStringMap &headers );
Serializer() : m_hash( QCryptographicHash::Sha1 )
{
qRegisterMetaType< QList<QObject*> >("QList<QObject*>");
}
};
Q_DECLARE_METATYPE( QList<QObject*> )
#endif