Joedb 9.1.4
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Multiplexer.h
Go to the documentation of this file.
1#ifndef joedb_Multiplexer_declared
2#define joedb_Multiplexer_declared
3
4#include <vector>
5#include <initializer_list>
6#include <functional>
7
8#include "joedb/Writable.h"
9
10namespace joedb
11{
12 ////////////////////////////////////////////////////////////////////////////
13 class Multiplexer: public virtual Writable
14 ////////////////////////////////////////////////////////////////////////////
15 {
16 private:
17 const std::vector<std::reference_wrapper<Writable>> writables;
18 size_t start_index;
19
20 public:
22 (
23 std::initializer_list<std::reference_wrapper<Writable>> initializer_list
24 );
25
26 void set_start_index(size_t index) {start_index = index;}
27
28 void create_table(const std::string &name) final;
29 void drop_table(Table_Id table_id) final;
30 void rename_table(Table_Id table_id, const std::string &name) final;
31 void add_field
32 (
33 Table_Id table_id,
34 const std::string &name,
35 Type type
36 ) final;
37 void drop_field(Table_Id table_id, Field_Id field_id) final;
38 void rename_field
39 (
40 Table_Id table_id,
41 Field_Id field_id,
42 const std::string &name
43 ) final;
44 void custom(const std::string &name) final;
45 void comment(const std::string &comment) final;
46 void timestamp(int64_t timestamp) final;
47 void valid_data() final;
48 void flush() final;
49 void checkpoint(Commit_Level commit_level) final;
50 void insert_into(Table_Id table_id, Record_Id record_id) final;
51 void insert_vector
52 (
53 Table_Id table_id,
54 Record_Id record_id,
55 size_t size
56 ) final;
57 void delete_from(Table_Id table_id, Record_Id record_id) final;
58
59 #define TYPE_MACRO(type, return_type, type_id, R, W)\
60 void update_##type_id\
61 (\
62 Table_Id table_id,\
63 Record_Id record_id,\
64 Field_Id field_id,\
65 return_type value\
66 ) final;\
67 void update_vector_##type_id\
68 (\
69 Table_Id table_id,\
70 Record_Id record_id,\
71 Field_Id field_id,\
72 size_t size,\
73 const type *value\
74 ) final;\
75 type *get_own_##type_id##_storage\
76 (\
77 Table_Id table_id,\
78 Record_Id record_id,\
79 Field_Id field_id,\
80 size_t &capacity\
81 ) final;
82 #include "joedb/TYPE_MACRO.h"
83
84 void on_blob(Blob blob) final;
85 bool wants_blob_data() const final;
86 Blob write_blob_data(const std::string &data) final;
87
88 ~Multiplexer() override;
89 };
90}
91
92#endif
void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) final
void checkpoint(Commit_Level commit_level) final
void custom(const std::string &name) final
void delete_from(Table_Id table_id, Record_Id record_id) final
void add_field(Table_Id table_id, const std::string &name, Type type) final
void insert_vector(Table_Id table_id, Record_Id record_id, size_t size) final
void comment(const std::string &comment) final
void set_start_index(size_t index)
Definition Multiplexer.h:26
void create_table(const std::string &name) final
void insert_into(Table_Id table_id, Record_Id record_id) final
void on_blob(Blob blob) final
bool wants_blob_data() const final
void drop_table(Table_Id table_id) final
void drop_field(Table_Id table_id, Field_Id field_id) final
void valid_data() final
void rename_table(Table_Id table_id, const std::string &name) final
Blob write_blob_data(const std::string &data) final
void timestamp(int64_t timestamp) final
Definition Blob.h:7
Commit_Level
Definition Writable.h:13