kDB: Knowledge DataBase
Loading...
Searching...
No Matches
RDFValueBinaryMarshal.h
1#include <kDB/Repository/AbstractBinaryMarshal.h>
2
3#include <QSharedPointer>
4
5namespace kDB::Repository::DatabaseInterface::PostgreSQL
6{
16 {
17 friend class Repository::Connection;
18 friend class Repository::GraphsManager;
19 public:
23 class FieldIO
24 {
25 public:
26 FieldIO(const QString& _typename);
27 virtual ~FieldIO();
28 public:
29 virtual knowCore::Value read(const char* _data, int _field_size,
30 const kDB::Repository::Connection& _connection) const
31 = 0;
32 virtual bool accept(const knowCore::Value& _value) const = 0;
33 virtual quint32 calculateSize(const knowCore::Value& _value) const = 0;
34 virtual void write(char* _data, const knowCore::Value& _value,
35 const kDB::Repository::Connection& _connection) const
36 = 0;
37 QString typeName() const;
38 private:
39 struct Private;
40 Private* const d;
41 };
42 enum class Operator : quint64
43 {
44 None = 0,
45 Addition = 1,
46 Multiplication = 1 << 2,
47 Substraction = 1 << 3,
48 Division = 1 << 4,
49 Minus = 1 << 5,
50 AllArithmetic = Addition | Multiplication | Substraction | Division | Minus,
51 Inferior = 1 << 6,
52 InferiorEqual = 1 << 7,
53 Superior = 1 << 8,
54 SuperiorEqual = 1 << 9,
55 Equal = 1 << 10,
56 NotEqual = 1 << 11,
57 AllComparison = Inferior | InferiorEqual | Superior | SuperiorEqual | Equal | NotEqual
58 };
59 enum class Feature : quint64
60 {
61 None = 0,
62 BtreeIndexable = 1,
63 GistIndexable = 1 << 2
64 };
65 private:
66 RDFValueBinaryMarshal(
67 const Connection& _connection); // Do not call directly, use create instead.
68 public:
69 static cres_qresult<RDFValueBinaryMarshal*> create(const Connection& _connection);
70 virtual ~RDFValueBinaryMarshal();
71
72 cres_qresult<knowCore::Value>
73 toValue(const QByteArray& _source,
74 const kDB::Repository::Connection& _connection) const override;
75 cres_qresult<QByteArray>
76 toByteArray(const knowCore::Value& _source, QString& _oidName,
77 const kDB::Repository::Connection& _connection) const override;
78
79 static QStringList fields(const Connection& _connection);
80 static cres_qresult<void> registerField(const Connection& _connection,
81 const knowCore::Uri& _defaultUri,
82 const FieldIO* _fieldIO, quint64 _operators,
83 quint64 _features);
88 static cres_qresult<void> registerTerm(const Connection& _connection,
89 const knowCore::Uri& _defaultUri,
90 const QString& _typename,
91 const QString& _cast_typename = QString());
92 private:
93 cres_qresult<void> setupIndexes(const TripleStore& _store, const Transaction& _transaction);
94 cres_qresult<void> finishInitialisation();
95 private:
96 inline quint32 calculateSize(const knowCore::Value& _number) const;
97 struct Private;
98 Private* const d;
99 };
100} // namespace kDB::Repository::DatabaseInterface::PostgreSQL
Definition AbstractBinaryMarshal.h:16
Definition Connection.h:26
cres_qresult< QByteArray > toByteArray(const knowCore::Value &_source, QString &_oidName, const kDB::Repository::Connection &_connection) const override
Definition RDFValueBinaryMarshal.cpp:676
static cres_qresult< void > registerTerm(const Connection &_connection, const knowCore::Uri &_defaultUri, const QString &_typename, const QString &_cast_typename=QString())
Definition RDFValueBinaryMarshal.cpp:515
cres_qresult< knowCore::Value > toValue(const QByteArray &_source, const kDB::Repository::Connection &_connection) const override
Definition RDFValueBinaryMarshal.cpp:552
Definition GraphsManager.h:10
Definition Transaction.h:19
Definition TripleStore.h:19
Definition Uri.h:15
Definition Value.h:21