Joedb 9.5.0
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 soft_checkpoint_at(int64_t position) {}
17 virtual void hard_checkpoint_at(int64_t position)
18 {
19 soft_checkpoint_at(position);
20 }
23
24 virtual void create_table(const std::string &name) {}
25 virtual void drop_table(Table_Id table_id) {}
26 virtual void rename_table(Table_Id table_id, const std::string &name) {}
27
28 virtual void add_field
29 (
30 Table_Id table_id,
31 const std::string &name,
32 Type type
33 ) {}
34 virtual void drop_field(Table_Id table_id, Field_Id field_id) {}
35 virtual void rename_field
36 (
37 Table_Id table_id,
38 Field_Id field_id,
39 const std::string &name
40 ) {}
41
42 virtual void custom(const std::string &name) {}
43 virtual void comment(const std::string &comment) {}
44 virtual void timestamp(int64_t timestamp) {}
45 virtual void valid_data() {}
46 virtual void flush() {}
47
48 virtual void insert_into(Table_Id table_id, Record_Id record_id) {}
49 virtual void delete_from(Table_Id table_id, Record_Id record_id) {}
50
51 virtual void insert_vector
52 (
53 Table_Id table_id,
54 Record_Id record_id,
55 size_t size
56 );
57
58 virtual void delete_vector
59 (
60 Table_Id table_id,
61 Record_Id record_id,
62 size_t size
63 );
64
65 #define TYPE_MACRO(type, return_type, type_id, R, W)\
66 virtual void update_##type_id\
67 (\
68 Table_Id table_id,\
69 Record_Id record_id,\
70 Field_Id field_id,\
71 return_type value\
72 );
73 #include "joedb/TYPE_MACRO.h"
74
75 #define TYPE_MACRO(type, return_type, type_id, R, W)\
76 virtual void update_vector_##type_id\
77 (\
78 Table_Id table_id,\
79 Record_Id record_id,\
80 Field_Id field_id,\
81 size_t size,\
82 const type *value\
83 );\
84 virtual type *get_own_##type_id##_storage\
85 (\
86 Table_Id table_id,\
87 Record_Id record_id,\
88 Field_Id field_id,\
89 size_t &capacity\
90 )\
91 {\
92 capacity = 0;\
93 return nullptr;\
94 }\
95 const type *get_own_##type_id##_const_storage\
96 (\
97 Table_Id table_id,\
98 Record_Id record_id,\
99 Field_Id field_id,\
100 size_t &capacity\
101 ) const\
102 {\
103 return (const_cast<Writable *>(this))->get_own_##type_id##_storage(table_id, record_id, field_id, capacity);\
104 }
105 #include "joedb/TYPE_MACRO.h"
106
107 virtual void on_blob(Blob blob) {}
108 virtual bool wants_blob_data() const {return false;}
109 virtual Blob write_blob(const std::string &data) {return Blob();}
110
111 virtual ~Writable() = default;
112 };
113}
114
115#endif
virtual Blob write_blob(const std::string &data)
Definition Writable.h:109
virtual void insert_into(Table_Id table_id, Record_Id record_id)
Definition Writable.h:48
virtual void drop_table(Table_Id table_id)
Definition Writable.h:25
virtual void create_table(const std::string &name)
Definition Writable.h:24
virtual void hard_checkpoint_at(int64_t position)
Definition Writable.h:17
virtual void drop_field(Table_Id table_id, Field_Id field_id)
Definition Writable.h:34
virtual void rename_table(Table_Id table_id, const std::string &name)
Definition Writable.h:26
virtual void insert_vector(Table_Id table_id, Record_Id record_id, size_t size)
Definition Writable.cpp:33
virtual bool wants_blob_data() const
Definition Writable.h:108
virtual void custom(const std::string &name)
Definition Writable.h:42
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:46
virtual ~Writable()=default
virtual void add_field(Table_Id table_id, const std::string &name, Type type)
Definition Writable.h:29
void hard_checkpoint()
Definition Writable.h:22
virtual void delete_from(Table_Id table_id, Record_Id record_id)
Definition Writable.h:49
virtual void soft_checkpoint_at(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:43
virtual void on_blob(Blob blob)
Definition Writable.h:107
virtual void valid_data()
Definition Writable.h:45
virtual void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name)
Definition Writable.h:36
virtual void timestamp(int64_t timestamp)
Definition Writable.h:44
void soft_checkpoint()
Definition Writable.h:21
Definition Blob.h:7