Joedb 9.6.2
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Writable.h
Go to the documentation of this file.
1#ifndef joedb_Writable_declared
2#define joedb_Writable_declared
3
4#include "joedb/Type.h"
5
6#include <string>
7
8namespace joedb
9{
10 /// @ingroup joedb
12 {
13 public:
14 virtual int64_t get_position() const {return 0;}
15 virtual void start_writing(int64_t position) {}
16 virtual void end_writing(int64_t position) {}
17
18 virtual void soft_checkpoint() {}
19 virtual void hard_checkpoint() {soft_checkpoint();}
20
21 virtual void create_table(const std::string &name) {}
22 virtual void drop_table(Table_Id table_id) {}
23 virtual void rename_table(Table_Id table_id, const std::string &name) {}
24
25 virtual void add_field
26 (
27 Table_Id table_id,
28 const std::string &name,
29 Type type
30 ) {}
31 virtual void drop_field(Table_Id table_id, Field_Id field_id) {}
32 virtual void rename_field
33 (
34 Table_Id table_id,
35 Field_Id field_id,
36 const std::string &name
37 ) {}
38
39 virtual void custom(const std::string &name) {}
40 virtual void comment(const std::string &comment) {}
41 virtual void timestamp(int64_t timestamp) {}
42 virtual void valid_data() {}
43 virtual void flush() {}
44
45 virtual void insert_into(Table_Id table_id, Record_Id record_id) {}
46 virtual void delete_from(Table_Id table_id, Record_Id record_id) {}
47
48 virtual void insert_vector
49 (
50 Table_Id table_id,
51 Record_Id record_id,
52 size_t size
53 );
54
55 virtual void delete_vector
56 (
57 Table_Id table_id,
58 Record_Id record_id,
59 size_t size
60 );
61
62 #define TYPE_MACRO(type, return_type, type_id, R, W)\
63 virtual void update_##type_id\
64 (\
65 Table_Id table_id,\
66 Record_Id record_id,\
67 Field_Id field_id,\
68 return_type value\
69 );
70 #include "joedb/TYPE_MACRO.h"
71
72 #define TYPE_MACRO(type, return_type, type_id, R, W)\
73 virtual void update_vector_##type_id\
74 (\
75 Table_Id table_id,\
76 Record_Id record_id,\
77 Field_Id field_id,\
78 size_t size,\
79 const type *value\
80 );\
81 virtual type *get_own_##type_id##_storage\
82 (\
83 Table_Id table_id,\
84 Record_Id record_id,\
85 Field_Id field_id,\
86 size_t &capacity\
87 )\
88 {\
89 capacity = 0;\
90 return nullptr;\
91 }\
92 const type *get_own_##type_id##_const_storage\
93 (\
94 Table_Id table_id,\
95 Record_Id record_id,\
96 Field_Id field_id,\
97 size_t &capacity\
98 ) const\
99 {\
100 return (const_cast<Writable *>(this))->get_own_##type_id##_storage(table_id, record_id, field_id, capacity);\
101 }
102 #include "joedb/TYPE_MACRO.h"
103
104 virtual void on_blob(Blob blob) {}
105 virtual bool wants_blob_data() const {return false;}
106 virtual Blob write_blob(const std::string &data) {return Blob();}
107
108 virtual ~Writable() = default;
109 };
110}
111
112#endif
virtual Blob write_blob(const std::string &data)
Definition Writable.h:106
virtual void insert_into(Table_Id table_id, Record_Id record_id)
Definition Writable.h:45
virtual void drop_table(Table_Id table_id)
Definition Writable.h:22
virtual void create_table(const std::string &name)
Definition Writable.h:21
virtual void hard_checkpoint()
Definition Writable.h:19
virtual void drop_field(Table_Id table_id, Field_Id field_id)
Definition Writable.h:31
virtual void rename_table(Table_Id table_id, const std::string &name)
Definition Writable.h:23
virtual void insert_vector(Table_Id table_id, Record_Id record_id, size_t size)
Definition Writable.cpp:33
virtual void soft_checkpoint()
Definition Writable.h:18
virtual bool wants_blob_data() const
Definition Writable.h:105
virtual void custom(const std::string &name)
Definition Writable.h:39
virtual void start_writing(int64_t position)
Definition Writable.h:15
virtual void delete_vector(Table_Id table_id, Record_Id record_id, size_t size)
Definition Writable.cpp:44
virtual void flush()
Definition Writable.h:43
virtual ~Writable()=default
virtual void add_field(Table_Id table_id, const std::string &name, Type type)
Definition Writable.h:26
virtual void delete_from(Table_Id table_id, Record_Id record_id)
Definition Writable.h:46
virtual void end_writing(int64_t position)
Definition Writable.h:16
virtual int64_t get_position() const
Definition Writable.h:14
virtual void comment(const std::string &comment)
Definition Writable.h:40
virtual void on_blob(Blob blob)
Definition Writable.h:104
virtual void valid_data()
Definition Writable.h:42
virtual void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name)
Definition Writable.h:33
virtual void timestamp(int64_t timestamp)
Definition Writable.h:41
Definition Blob.h:7