kDB: Knowledge DataBase
Loading...
Searching...
No Matches
BlankNode.h
1#ifndef _KNOWCORE_RDF_BLANKNODE_H_
2#define _KNOWCORE_RDF_BLANKNODE_H_
3
4#include <QHash>
5#include <QSharedDataPointer>
6
7#include <knowCore/Formatter.h>
8#include <knowCore/Forward.h>
9
10class QUuid;
11
12namespace knowRDF
13{
25 {
26 friend uint qHash(const BlankNode& key, std::size_t seed);
27 friend struct std::formatter<BlankNode>;
29 public:
33 BlankNode();
38 BlankNode(const QString& _label);
42 BlankNode(const QUuid& _uuid, const QString& _label = QString());
43 BlankNode(const BlankNode& _rhs);
44 BlankNode& operator=(const BlankNode& _rhs);
45 ~BlankNode();
49 QString label() const;
50 bool operator==(const BlankNode& _rhs) const;
51 bool operator!=(const BlankNode& _rhs) const { return not(*this == _rhs); }
52 bool operator<(const BlankNode& _rhs) const;
53 QUuid uuid() const;
54 private:
55 const void* displayId() const;
56 struct Private;
57 QSharedDataPointer<Private> d;
58 };
59 inline uint qHash(const BlankNode& key, std::size_t seed = 0)
60 {
61 return ::qHash(key.d.constData(), seed);
62 }
63
64 uint qHash(const BlankNode& key, std::size_t seed);
65} // namespace knowRDF
66
67clog_format_declare_formatter(knowRDF::BlankNode)
68{
69 QString ret;
70 if(p.label().isEmpty())
71 {
72 ret = "EmptyBlankNode";
73 }
74 else
75 {
76 ret = "?" + p.label();
77 }
78 return format_to(ctx.out(), "{}({},{})", ret, p.displayId(), p.uuid());
79}
80
81#include <knowCore/MetaType.h>
82
83KNOWCORE_DECLARE_FULL_METATYPE(knowRDF, BlankNode);
84
85#endif
Definition MetaType.h:361
Definition BlankNode.h:25
QString label() const
Definition BlankNode.cpp:38
BlankNode()
Definition BlankNode.cpp:14