8 std::map<Table_Id, Record_Id> offset;
13 for (
const auto &[tid, tname]: merged.
get_tables())
19 for (
const auto &[tid, tname]: merged.
get_tables())
32 for (
const auto &[fid, fname]: db.
get_fields(tid))
39 case Type::Type_Id::null:
42 #define TYPE_MACRO(type, return_type, type_id, R, W)\
43 case Type::Type_Id::type_id:\
45 merged.update_vector_##type_id\
51 db.get_own_##type_id##_const_storage(tid, Record_Id(0), fid, capacity)\
60 const auto reference_offset = offset[type.
get_table_id()];
62 Record_Id *reference = merged.get_own_reference_storage
70 for (
size_t i = 0; i < size_t(size); i++)
71 if (reference[i].is_not_null())
72 reference[i] = reference[i] +
to_underlying(reference_offset);
78 for (
Record_Id record_id{0}; record_id < size; ++record_id)
80 if (freedom_keeper.
is_used(record_id))
85 for (
const auto &[fid, fname]: db.
get_fields(tid))
91 case Type::Type_Id::null:
94 case Type::Type_Id::reference:
96 Record_Id referenced = db.get_reference(tid, record_id, fid);
99 merged.update_reference
109 #define TYPE_MACRO(type, return_type, type_id, R, W)\
110 case Type::Type_Id::type_id:\
112 merged.update_##type_id\
117 db.get_##type_id(tid, record_id, fid)\
121 #define TYPE_MACRO_NO_REFERENCE