kDB: Knowledge DataBase
Loading...
Searching...
No Matches
DataInterfaceRegistry.h
1#include <knowCore/Reference.h>
2#include <knowCore/Value.h>
3
4#include "Interfaces/ExtractIterator.h"
5#include "Interfaces/InsertIterator.h"
6#include "Interfaces/ValueIterator.h"
7
8#include "Forward.h"
9
10namespace kDBDatasets
11{
12 KNOWCORE_DEFINE_REFERENCE(InsertIterator, Interfaces::InsertIterator,
13 KNOWCORE_FORWARD_FUNCTION(next, const QByteArray&),
14 KNOWCORE_FORWARD_FUNCTIONS(finalise));
15 KNOWCORE_DEFINE_REFERENCE(ExtractIterator, Interfaces::ExtractIterator,
16 KNOWCORE_FORWARD_FUNCTIONS(next),
17 KNOWCORE_FORWARD_CONST_FUNCTIONS(hasNext));
18 KNOWCORE_DEFINE_REFERENCE(ValueIterator, Interfaces::ValueIterator,
19 KNOWCORE_FORWARD_FUNCTIONS(next),
20 KNOWCORE_FORWARD_CONST_FUNCTIONS(hasNext));
22 {
23 DataInterfaceRegistry() = delete;
24 ~DataInterfaceRegistry() = delete;
25 public:
26 static cres_qresult<InsertIterator>
27 createInsertIterator(const kDB::Repository::Connection& _connection, const Dataset& _dataset);
28 static cres_qresult<ValueIterator>
29 createValueIterator(const kDB::Repository::Connection& _connection, const Dataset& _dataset);
30 static cres_qresult<ExtractIterator>
31 createExtractIterator(const kDB::Repository::Connection& _connection,
32 const Dataset& _dataset);
33 static cres_qresult<Statistics> statistics(const kDB::Repository::Connection& _connection,
34 const Dataset& _dataset);
35 static void registerInterface(const knowCore::Uri& _datatype,
36 Interfaces::DataInterface* _interface);
40 static cres_qresult<void> exportTo(const kDB::Repository::Connection& _connection,
41 const Dataset& _dataset, QIODevice* _device);
47 static cres_qresult<void> importFrom(const kDB::Repository::Connection& _connection,
48 const Collection& _collection, QIODevice* _device);
49 private:
50 struct Private;
51 };
52} // namespace kDBDatasets
53
54#define __KDB_KDB_REGISTER_DATASET_DATA_INTERFACE(_NAME_, _URI_, _INTERFACE_, ...) \
55 namespace \
56 { \
57 class _NAME_ \
58 { \
59 _NAME_() \
60 { \
61 kDBDatasets::DataInterfaceRegistry::registerInterface(_URI_, \
62 new _INTERFACE_(__VA_ARGS__)); \
63 } \
64 static _NAME_ instance; \
65 }; \
66 _NAME_ _NAME_::instance; \
67 }
68
69#define KDB_REGISTER_DATASET_DATA_INTERFACE(_URI_, _INTERFACE_) \
70 __KDB_KDB_REGISTER_DATASET_DATA_INTERFACE(__KNOWCORE_UNIQUE_STATIC_NAME(DataInterfaceRegster), \
71 _URI_, _INTERFACE_)
Definition Collection.h:24
Definition DataInterfaceRegistry.h:22
static cres_qresult< void > exportTo(const kDB::Repository::Connection &_connection, const Dataset &_dataset, QIODevice *_device)
Definition DataInterfaceRegistry.cpp:85
static cres_qresult< void > importFrom(const kDB::Repository::Connection &_connection, const Collection &_collection, QIODevice *_device)
Definition DataInterfaceRegistry.cpp:171
Definition Dataset.h:17
Definition DataInterface.h:6
Definition Connection.h:26
Definition Uri.h:15