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, const kDB::Repository::Connection& _connection) const = 0;
30 virtual bool accept(const knowCore::Value& _value) const = 0;
31 virtual quint32 calculateSize(const knowCore::Value& _value) const = 0;
32 virtual void write(char* _data, const knowCore::Value& _value, const kDB::Repository::Connection& _connection) const = 0;
33 QString typeName() const;
34 private:
35 struct Private;
36 Private* const d;
37 };
38 enum class Operator : quint64
39 {
40 None = 0,
41 Addition = 1, Multiplication = 1 << 2, Substraction = 1 << 3, Division = 1 << 4, Minus = 1 << 5,
42 AllArithmetic = Addition | Multiplication | Substraction | Division | Minus,
43 Inferior = 1 << 6, InferiorEqual = 1 << 7, Superior = 1 << 8, SuperiorEqual = 1 << 9, Equal = 1 << 10, NotEqual = 1 << 11,
44 AllComparison = Inferior | InferiorEqual | Superior | SuperiorEqual | Equal | NotEqual
45 };
46 enum class Feature : quint64
47 {
48 None = 0,
49 Indexable = 1
50 };
51 private:
52 RDFValueBinaryMarshal(const Connection& _connection); // Do not call directly, use create instead.
53 public:
54 static knowCore::ReturnValue<RDFValueBinaryMarshal*> create(const Connection& _connection);
55 virtual ~RDFValueBinaryMarshal();
56
57 knowCore::ReturnValue<knowCore::Value> toValue(const QByteArray& _source, const kDB::Repository::Connection& _connection) const override;
58 knowCore::ReturnValue<QByteArray> toByteArray(const knowCore::Value& _source, QString& _oidName, const kDB::Repository::Connection& _connection) const override;
59
60 static QStringList fields(const Connection& _connection);
61 static knowCore::ReturnVoid registerField(const Connection& _connection, const knowCore::Uri& _defaultUri, const FieldIO* _fieldIO, quint64 _operators, quint64 _features);
65 static knowCore::ReturnVoid registerTerm(const Connection& _connection, const knowCore::Uri& _defaultUri, const QString& _typename, const QString& _cast_typename = QString());
66 private:
67 knowCore::ReturnVoid setupIndexes(const TriplesStore& _store);
68 knowCore::ReturnVoid finishInitialisation();
69 private:
70 inline quint32 calculateSize(const knowCore::Value& _number) const;
71 struct Private;
72 Private* const d;
73 };
74}
Definition AbstractBinaryMarshal.h:13
Definition Connection.h:25
knowCore::ReturnValue< QByteArray > toByteArray(const knowCore::Value &_source, QString &_oidName, const kDB::Repository::Connection &_connection) const override
Definition RDFValueBinaryMarshal.cpp:563
static knowCore::ReturnVoid registerTerm(const Connection &_connection, const knowCore::Uri &_defaultUri, const QString &_typename, const QString &_cast_typename=QString())
Definition RDFValueBinaryMarshal.cpp:424
knowCore::ReturnValue< knowCore::Value > toValue(const QByteArray &_source, const kDB::Repository::Connection &_connection) const override
Definition RDFValueBinaryMarshal.cpp:457
Definition GraphsManager.h:10
Definition TriplesStore.h:18
Definition Uri.h:15
Definition Value.h:21