MythTV master
upnputil.h
Go to the documentation of this file.
1
2// Program Name: upnputil.h
3// Created : Jan. 15, 2007
4//
5// Purpose : Global Helper Methods...
6//
7// Copyright (c) 2007 David Blain <dblain@mythtv.org>
8//
9// Licensed under the GPL v2 or later, see LICENSE for details
10//
12
13#ifndef UPNPUTIL_H
14#define UPNPUTIL_H
15
16#include <utility>
17
18// Qt headers
19#include <QMap>
20#include <QStringList>
21
22#include "upnpexp.h"
23
25// Typedefs
27
28using QStringMap = QMap< QString, QString >;
29using QStringMultiMap = QMultiMap< QString, QString >;
30
31
33
34class NameValue;
35class NameValues;
37{
38 public:
39 QString m_sName;
40 QString m_sValue;
41 bool m_bRequired {false};
42
44
45 public:
46 NameValue() = default;
47 NameValue(QString name, QString value, bool required = false) :
48 m_sName(std::move(name)), m_sValue(std::move(value)), m_bRequired(required) { }
49 NameValue(QString name, const char *value, bool required = false) :
50 m_sName(std::move(name)), m_sValue(value), m_bRequired(required) { }
51 NameValue(QString name, int value, bool required = false) :
52 m_sName(std::move(name)), m_sValue(QString::number(value)), m_bRequired(required) { }
53 NameValue(QString name, long value, bool required = false) :
54 m_sName(std::move(name)), m_sValue(QString::number(value)), m_bRequired(required) { }
55 NameValue(QString name, qlonglong value, bool required = false) :
56 m_sName(std::move(name)), m_sValue(QString::number(value)), m_bRequired(required) { }
57 NameValue(QString name, uint value, bool required = false) :
58 m_sName(std::move(name)), m_sValue(QString::number(value)), m_bRequired(required) { }
59 NameValue(QString name, ulong value, bool required = false) :
60 m_sName(std::move(name)), m_sValue(QString::number(value)), m_bRequired(required) { }
61 NameValue(QString name, qulonglong value, bool required = false) :
62 m_sName(std::move(name)), m_sValue(QString::number(value)), m_bRequired(required) { }
63 NameValue(QString name, bool value, bool required = false) :
64 m_sName(std::move(name)), m_sValue((value) ? "1" : "0"), m_bRequired(required) { }
65 inline NameValue(const NameValue &nv);
66 inline NameValue& operator=(const NameValue &nv);
67
68 inline ~NameValue();
69
70 inline void AddAttribute(const QString &name, const QString &value, bool required);
71 inline QString toXML() const;
72};
73class NameValues : public QList<NameValue> {};
74
76 m_sName(nv.m_sName), m_sValue(nv.m_sValue), m_bRequired(nv.m_bRequired)
77{
78 if (nv.m_pAttributes)
79 {
82 }
83}
84
86{
87 if (this == &nv)
88 return *this;
89
90 m_sName = nv.m_sName;
91 m_sValue = nv.m_sValue;
93
94 if (nv.m_pAttributes)
95 {
98 }
99 else
100 {
101 m_pAttributes = nullptr;
102 }
103
104 return *this;
105}
106
108{
109 delete m_pAttributes;
110 m_pAttributes = nullptr;
111}
112
113inline void NameValue::AddAttribute(const QString &name, const QString &value,
114 bool required)
115{
116 if (!m_pAttributes)
118
119 m_pAttributes->push_back(NameValue(name, value, required));
120}
121
122
123inline QString NameValue::toXML() const
124{
125 QString sAttributes;
126 QString attributeTemplate = " %1=\"%2\"";
127 QString xml = "<%1%2>%3</%1>";
128
129 NameValues::const_iterator it;
130 for (it = m_pAttributes->constBegin(); it != m_pAttributes->constEnd(); ++it)
131 {
132 sAttributes += attributeTemplate.arg((*it).m_sName, (*it).m_sValue);
133 }
134
135 return xml.arg(m_sName, sAttributes, m_sValue);
136}
137
139// Global Function Prototypes
141
142QString LookupUDN ( const QString &sDeviceType );
143
145UPNP_PUBLIC QStringList GetSinkProtocolInfos ();
146
147#endif // UPNPUTIL_H
NameValue(QString name, QString value, bool required=false)
Definition: upnputil.h:47
NameValue(QString name, qlonglong value, bool required=false)
Definition: upnputil.h:55
NameValues * m_pAttributes
Definition: upnputil.h:43
NameValue(QString name, int value, bool required=false)
Definition: upnputil.h:51
QString toXML() const
Definition: upnputil.h:123
NameValue(QString name, qulonglong value, bool required=false)
Definition: upnputil.h:61
QString m_sValue
Definition: upnputil.h:40
NameValue(QString name, ulong value, bool required=false)
Definition: upnputil.h:59
~NameValue()
Definition: upnputil.h:107
QString m_sName
Definition: upnputil.h:39
NameValue(QString name, uint value, bool required=false)
Definition: upnputil.h:57
NameValue(QString name, long value, bool required=false)
Definition: upnputil.h:53
bool m_bRequired
Definition: upnputil.h:41
NameValue()=default
NameValue(QString name, const char *value, bool required=false)
Definition: upnputil.h:49
void AddAttribute(const QString &name, const QString &value, bool required)
Definition: upnputil.h:113
NameValue(QString name, bool value, bool required=false)
Definition: upnputil.h:63
NameValue & operator=(const NameValue &nv)
Definition: upnputil.h:85
unsigned int uint
Definition: freesurround.h:24
STL namespace.
#define UPNP_PUBLIC
Definition: upnpexp.h:9
QMultiMap< QString, QString > QStringMultiMap
Definition: upnputil.h:29
QMap< QString, QString > QStringMap
Definition: upnputil.h:28
QString LookupUDN(const QString &sDeviceType)
Definition: upnputil.cpp:29
UPNP_PUBLIC QStringList GetSinkProtocolInfos()
Return a QStringList containing the supported Sink Protocols.
Definition: upnputil.cpp:123
UPNP_PUBLIC QStringList GetSourceProtocolInfos()
Return a QStringList containing the supported Source Protocols.
Definition: upnputil.cpp:69