11 for (
const auto &[fid, fname]: field_names)
22 throw Exception(
"add_field: name already used");
23 if (current_field_id ==
Field_Id(std::numeric_limits<std::underlying_type<Field_Id>::type>::max()))
24 throw Exception(
"add_field: reached maximum field count");
27 fields.insert(std::make_pair(current_field_id,
Field(type, freedom.
size())));
28 field_names[current_field_id] = name;
35 const auto it = fields.find(field_id);
36 if (it == fields.end())
37 throw Exception(
"drop_field: invalid field_id");
38 field_names.erase(field_id);
47 throw Exception(
"delete_record: bad record_id");
57 for (
auto &field: fields)
63 throw Exception(
"insert: record_id already in use");
74 for (
auto &field: fields)
81 for (
size_t i = 0; i < size; i++)
bool is_used(size_t index) const
void append_vector(size_t size)
bool is_free(size_t index) const
void delete_record(Record_Id record_id)
void drop_field(Field_Id field_id)
Field_Id find_field(const std::string &name) const
void insert_vector(Record_Id record_id, size_t size)
void add_field(const std::string &name, const Type &type)
void insert_record(Record_Id record_id)
constexpr std::underlying_type< Table_Id >::type to_underlying(Table_Id id)