12#ifndef joedb_db_encoded_file_Database_declared
13#define joedb_db_encoded_file_Database_declared
42 class container_of_buffer;
49 std::vector<joedb::Blob> field_value_of_data;
50 std::vector<int64_t> field_value_of_size;
51 std::vector<int64_t> field_value_of_offset;
55 size_t size()
const {
return freedom_keeper.
size();}
57 void resize(
size_t new_size)
59 field_value_of_data.resize(new_size);
60 field_value_of_size.resize(new_size);
61 field_value_of_offset.resize(new_size);
62 freedom_keeper.
resize(new_size);
75 template<
typename E = joedb::Exception>
78 std::string s(
"joedb::db::encoded_file: ");
129 std::copy_n(value, size, target);
135 int64_t field_value_of_size
152 std::copy_n(value, size, target);
158 int64_t field_value_of_offset
175 std::copy_n(value, size, target);
197 template<
class Comparator>
198 std::vector<id_of_buffer>
sorted_buffer(Comparator comparator)
const;
272 template<
class Comparator>
275 std::vector<id_of_buffer> result;
277 result.emplace_back(x);
278 std::sort(result.begin(), result.end(), comparator);
void resize(Record_Id new_size)
Record_Id get_previous(Record_Id index) const
Record_Id get_next(Record_Id index) const
Store all the tables of the database.
static void throw_exception(std::string_view message)
void internal_delete_buffer(Record_Id record_id)
container_of_buffer get_buffer_table() const
void internal_update_buffer__size(Record_Id record_id, int64_t field_value_of_size)
int64_t get_size(id_of_buffer record) const
bool is_valid(id_of_buffer id) const
joedb::Blob get_data(id_of_buffer record) const
void internal_update_vector_buffer__data(Record_Id record_id, size_t size, const joedb::Blob *value)
detail::data_of_buffer storage_of_buffer
id_of_buffer next(id_of_buffer id) const
void internal_insert_buffer(Record_Id record_id)
void internal_update_buffer__offset(Record_Id record_id, int64_t field_value_of_offset)
void internal_update_buffer__data(Record_Id record_id, joedb::Blob field_value_of_data)
static id_of_buffer null_buffer()
bool is_valid_record_id_for_buffer(Record_Id record_id) const
id_of_buffer previous(id_of_buffer id) const
std::vector< id_of_buffer > sorted_buffer(Comparator comparator) const
void internal_update_vector_buffer__offset(Record_Id record_id, size_t size, const int64_t *value)
friend class container_of_buffer
void internal_vector_insert_buffer(Record_Id record_id, size_t size)
int64_t get_offset(id_of_buffer record) const
void internal_update_vector_buffer__size(Record_Id record_id, size_t size, const int64_t *value)
Implement the joedb::Readable interface for a compiled database.
bool operator==(const iterator &i) const
id_of_buffer operator*() const
std::forward_iterator_tag iterator_category
std::ptrdiff_t difference_type
bool operator!=(const iterator &i) const
returned by Database::get_buffer_table
id_of_buffer get_end() const
id_of_buffer last() const
id_of_buffer first() const
joedb::index_t get_size() const
static id_of_buffer get_at(size_t i)
bool is_valid_at(size_t i)
Strongly-typed wrapper around an integer representing a row of the buffer table.
constexpr Record_Id get_record_id() const
constexpr auto get_id() const
#define JOEDB_RELEASE_ASSERT(x)
always-tested assertion (release and debug mode)
constexpr const char * get_version()
Automatically generated by joedbc.
constexpr index_t to_underlying(Record_Id id)