Joedb 9.1.4
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Interpreter_Dump_Writable.cpp
Go to the documentation of this file.
2#include "joedb/ui/type_io.h"
4
5#include <iostream>
6
7namespace joedb
8{
9 ////////////////////////////////////////////////////////////////////////////
10 void Interpreter_Writable::write_type(Type type)
11 ////////////////////////////////////////////////////////////////////////////
12 {
13 switch(type.get_type_id())
14 {
16 out << "null";
17 break;
18
19 #define TYPE_MACRO(type, return_type, type_id, read, write)\
20 case Type::Type_Id::type_id:\
21 out << #type_id;\
22 break;
23 #define TYPE_MACRO_NO_REFERENCE
24 #include "joedb/TYPE_MACRO.h"
25
26 case Type::Type_Id::reference:
27 out << "references " << schema.get_table_name(type.get_table_id());
28 break;
29 }
30 }
31
32 ////////////////////////////////////////////////////////////////////////////
33 void Interpreter_Writable::create_table(const std::string &name)
34 ////////////////////////////////////////////////////////////////////////////
35 {
36 out << "create_table " << name << '\n';
37 }
38
39 ////////////////////////////////////////////////////////////////////////////
41 ////////////////////////////////////////////////////////////////////////////
42 {
43 out << "drop_table " << schema.get_table_name(table_id) << '\n';
44 }
45
46 ////////////////////////////////////////////////////////////////////////////
48 ////////////////////////////////////////////////////////////////////////////
49 (
50 Table_Id table_id,
51 const std::string &name
52 )
53 {
54 out << "rename_table " << schema.get_table_name(table_id);
55 out << ' ' << name << '\n';
56 }
57
58 ////////////////////////////////////////////////////////////////////////////
60 ////////////////////////////////////////////////////////////////////////////
61 (
62 Table_Id table_id,
63 const std::string &name,
64 Type type
65 )
66 {
67 out << "add_field " << schema.get_table_name(table_id);
68 out << ' ' << name << ' ';
69 write_type(type);
70 out << '\n';
71 }
72
73 ////////////////////////////////////////////////////////////////////////////
75 ////////////////////////////////////////////////////////////////////////////
76 (
77 Table_Id table_id,
78 Field_Id field_id
79 )
80 {
81 out << "drop_field " << schema.get_table_name(table_id) << ' ';
82 out << schema.get_field_name(table_id, field_id) << '\n';
83 }
84
85 ////////////////////////////////////////////////////////////////////////////
87 ////////////////////////////////////////////////////////////////////////////
88 (
89 Table_Id table_id,
90 Field_Id field_id,
91 const std::string &name
92 )
93 {
94 out << "rename_field " << schema.get_table_name(table_id) << ' ';
95 out << schema.get_field_name(table_id, field_id) << ' ' << name << '\n';
96 }
97
98 ////////////////////////////////////////////////////////////////////////////
99 void Interpreter_Writable::custom(const std::string &name)
100 ////////////////////////////////////////////////////////////////////////////
101 {
102 out << "custom " << name << '\n';
103 }
104
105 ////////////////////////////////////////////////////////////////////////////
106 void Interpreter_Writable::comment(const std::string &comment)
107 ////////////////////////////////////////////////////////////////////////////
108 {
109 out << "comment ";
110 write_string(out, comment);
111 out << '\n';
112 }
113
114 ////////////////////////////////////////////////////////////////////////////
115 void Interpreter_Writable::timestamp(int64_t timestamp)
116 ////////////////////////////////////////////////////////////////////////////
117 {
118 out << "timestamp " << timestamp << ' ';
119 out << get_time_string(timestamp) << '\n';
120 }
121
122 ////////////////////////////////////////////////////////////////////////////
124 ////////////////////////////////////////////////////////////////////////////
125 {
126 out << "valid_data\n";
127 }
128
129 ////////////////////////////////////////////////////////////////////////////
131 ////////////////////////////////////////////////////////////////////////////
132 (
133 Table_Id table_id,
134 Record_Id record_id
135 )
136 {
137 out << "insert_into " << schema.get_table_name(table_id) << ' ';
138 out << record_id << '\n';
139 }
140
141 ////////////////////////////////////////////////////////////////////////////
143 ////////////////////////////////////////////////////////////////////////////
144 (
145 Table_Id table_id,
146 Record_Id record_id,
147 size_t size
148 )
149 {
150 out << "insert_vector " << schema.get_table_name(table_id) << ' ';
151 out << record_id << ' ' << size << '\n';
152 }
153
154 ////////////////////////////////////////////////////////////////////////////
156 ////////////////////////////////////////////////////////////////////////////
157 (
158 Table_Id table_id,
159 Record_Id record_id
160 )
161 {
162 out << "delete_from " << schema.get_table_name(table_id) << ' ';
163 out << record_id << '\n';
164 }
165
166 ////////////////////////////////////////////////////////////////////////////
168 ////////////////////////////////////////////////////////////////////////////
169 (
170 const char *command,
171 Table_Id table_id,
172 Record_Id record_id,
173 Field_Id field_id
174 )
175 {
176 out << command << schema.get_table_name(table_id) << ' ';
177 out << record_id << ' ';
178 out << schema.get_field_name(table_id, field_id) << ' ';
179 }
180
181 #define TYPE_MACRO(type, return_type, type_id, R, W)\
182 void Interpreter_Writable::update_##type_id\
183 (\
184 Table_Id table_id,\
185 Record_Id record_id,\
186 Field_Id field_id,\
187 return_type value\
188 )\
189 {\
190 write_update("update ", table_id, record_id, field_id);\
191 write_##type_id(out, value);\
192 out << '\n';\
193 }\
194 void Interpreter_Writable::update_vector_##type_id\
195 (\
196 Table_Id table_id,\
197 Record_Id record_id,\
198 Field_Id field_id,\
199 size_t size,\
200 const type *value\
201 )\
202 {\
203 write_update("update_vector ", table_id, record_id, field_id);\
204 out << size;\
205 for (size_t i = 0; i < size; i++)\
206 {\
207 out << ' ';\
208 write_##type_id(out, value[i]);\
209 }\
210 out << '\n';\
211 }
212 #include "joedb/TYPE_MACRO.h"
213
214 ////////////////////////////////////////////////////////////////////////////
216 ////////////////////////////////////////////////////////////////////////////
217 {
218 out << "# Blob: ";
219 write_blob(out, blob);
220 out << '\n';
221 }
222
223 ////////////////////////////////////////////////////////////////////////////
225 ////////////////////////////////////////////////////////////////////////////
226 {
227 out << "write_blob ";
228 write_string(out, data);
229 out << '\n';
230
231 return Blob();
232 }
233
234 ////////////////////////////////////////////////////////////////////////////
236 ////////////////////////////////////////////////////////////////////////////
237}
void timestamp(int64_t timestamp) final
void drop_field(Table_Id table_id, Field_Id field_id) final
void create_table(const std::string &name) final
void add_field(Table_Id table_id, const std::string &name, Type type) final
void delete_from(Table_Id table_id, Record_Id record_id) final
void rename_table(Table_Id table_id, const std::string &name) final
void drop_table(Table_Id table_id) final
void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) final
void insert_into(Table_Id table_id, Record_Id record_id) final
void custom(const std::string &name) final
Blob write_blob_data(const std::string &data) final
void insert_vector(Table_Id table_id, Record_Id record_id, size_t size) final
void comment(const std::string &comment) final
void write_update(const char *command, Table_Id table_id, Record_Id record_id, Field_Id field_id)
const std::string & get_table_name(Table_Id table_id) const
Definition Readable.cpp:38
std::string get_time_string(int64_t timestamp)
void write_string(std::ostream &out, const std::string &s, bool json)
void write_blob(std::ostream &out, Blob blob)
Definition type_io.cpp:243
Definition Blob.h:7