9 std::initializer_list<std::reference_wrapper<Writable>> initializer_list
11 writables(initializer_list),
16 #define MULTIPLEX(x) do {for (size_t i = start_index; i < writables.size(); i++) writables[i].get().x;} while(0)
37 const std::string &name
48 const std::string &name,
52 MULTIPLEX(add_field(table_id, name, type));
63 MULTIPLEX(drop_field(table_id, field_id));
72 const std::string &name
75 MULTIPLEX(rename_field(table_id, field_id, name));
119 for (
auto w: writables)
121 result = w.get().get_position();
158 MULTIPLEX(insert_into(table_id, record_id));
169 MULTIPLEX(delete_from(table_id, record_id));
181 MULTIPLEX(insert_vector(table_id, record_id, size));
193 MULTIPLEX(delete_vector(table_id, record_id, size));
196 #define TYPE_MACRO(type, return_type, type_id, R, W)\
197 void Multiplexer::update_##type_id\
200 Record_Id record_id,\
205 MULTIPLEX(update_##type_id(table_id, record_id, field_id, value));\
207 void Multiplexer::update_vector_##type_id\
210 Record_Id record_id,\
218 update_vector_##type_id(table_id, record_id, field_id, size, value)\
221 type *Multiplexer::get_own_##type_id##_storage\
224 Record_Id record_id,\
230 type *result = nullptr;\
231 for (auto w: writables)\
233 result = w.get().get_own_##type_id##_storage(table_id, record_id, field_id, capacity);\
254 for (
auto w: writables)
256 if (w.get().wants_blob_data())
269 for (
auto w: writables)
271 if (w.get().wants_blob_data())
272 result = w.get().write_blob(data);
void rename_field(Table_Id table_id, Field_Id field_id, const std::string &name) final
int64_t get_position() const final
void custom(const std::string &name) final
void delete_from(Table_Id table_id, Record_Id record_id) final
void start_writing(int64_t position) final
void add_field(Table_Id table_id, const std::string &name, Type type) final
void delete_vector(Table_Id table_id, Record_Id record_id, size_t size) final
void insert_vector(Table_Id table_id, Record_Id record_id, size_t size) final
void comment(const std::string &comment) final
void create_table(const std::string &name) final
void insert_into(Table_Id table_id, Record_Id record_id) final
void hard_checkpoint_at(int64_t position) final
void on_blob(Blob blob) final
Blob write_blob(const std::string &data) 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 soft_checkpoint_at(int64_t position) final
Multiplexer(std::initializer_list< std::reference_wrapper< Writable > > initializer_list)
void rename_table(Table_Id table_id, const std::string &name) final
void timestamp(int64_t timestamp) final