-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathjid.h
More file actions
94 lines (86 loc) · 2.62 KB
/
jid.h
File metadata and controls
94 lines (86 loc) · 2.62 KB
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#ifndef JID_H
#define JID_H
#include <QList>
#include <QHash>
#include <QString>
#include <QMetaType>
#include <QStringRef>
#include <QSharedData>
#include "utilsexport.h"
#define JID_NODE_PATTERN "[\\w_%!#\\+\\-\\.\\^\\*\\)\\(\\=\\|\\?\\\\]+"
#define JID_DOMAIN_PATTERN "[a-zA-Z0-9\\-\\.]+\\.\\w{2,4}"
class JidData :
public QSharedData
{
public:
JidData();
JidData(const JidData &AOther);
public:
QString FFull, FPrepFull;
QStringRef FBare, FPrepBare;
QStringRef FNode, FPrepNode;
QStringRef FDomain, FPrepDomain;
QStringRef FResource, FPrepResource;
bool FNodeValid, FDomainValid, FResourceValid;
};
class UTILS_EXPORT Jid
{
public:
Jid(const char *AJidStr);
Jid(const QString &AJidStr = QString::null);
Jid(const QString &ANode, const QString &ADomane, const QString &AResource);
~Jid();
bool isValid() const;
bool isEmpty() const;
QString node() const;
QString pNode() const;
QString uNode() const;
void setNode(const QString &ANode);
QString domain() const;
QString pDomain() const;
void setDomain(const QString &ADomain);
QString resource() const;
QString pResource() const;
void setResource(const QString &AResource);
QString bare() const;
QString pBare() const;
QString uBare() const;
QString full() const;
QString pFull() const;
QString uFull() const;
Jid& operator =(const QString &AJidStr);
bool operator ==(const Jid &AJid) const;
bool operator ==(const QString &AJidStr) const;
bool operator !=(const Jid &AJid) const;
bool operator !=(const QString &AJidStr) const;
bool operator &&(const Jid &AJid) const;
bool operator &&(const QString &AJidStr) const;
bool operator <(const Jid &AJid) const;
bool operator >(const Jid &AJid) const;
public:
static Jid null;
static Jid fromUserInput(const QString &AJidStr);
static QString escape(const QString &AUserNode);
static QString unescape(const QString &AEscNode);
static QString encode(const QString &AJidStr);
static QString decode(const QString &AEncJid);
static QString nodePrepare(const QString &ANode);
static QString domainPrepare(const QString &ADomain);
static QString resourcePrepare(const QString &AResource);
protected:
Jid &parseFromString(const QString &AJidStr);
private:
QSharedDataPointer<JidData> d;
};
#ifdef __cplusplus
extern "C" {
#endif
UTILS_EXPORT uint qHash(const Jid &Akey);
UTILS_EXPORT QDataStream &operator<<(QDataStream &AStream, const Jid &AJid);
UTILS_EXPORT QDataStream &operator>>(QDataStream &AStream, Jid &AJid);
#ifdef __cplusplus
}
#endif
Q_DECLARE_METATYPE(Jid);
#define JID_METATYPE_ID qMetaTypeId<Jid>()
#endif // JID_H