12#ifndef joedb_db_encoded_file_Database_declared
13#define joedb_db_encoded_file_Database_declared
41 class container_of_buffer;
47 std::vector<joedb::Blob> field_value_of_data;
48 std::vector<int64_t> field_value_of_size;
49 std::vector<int64_t> field_value_of_offset;
53 size_t size()
const {
return freedom_keeper.
size();}
55 void resize(
size_t new_size)
57 field_value_of_data.resize(new_size);
58 field_value_of_size.resize(new_size);
59 field_value_of_offset.resize(new_size);
60 freedom_keeper.
resize(new_size);
74 template<
typename E = joedb::Exception>
77 throw E(
"joedb::db::encoded_file: " + message);
126 std::copy_n(value, size, target);
132 int64_t field_value_of_size
149 std::copy_n(value, size, target);
155 int64_t field_value_of_offset
172 std::copy_n(value, size, target);
194 template<
class Comparator>
195 std::vector<id_of_buffer>
sorted_buffer(Comparator comparator)
const;
269 template<
class Comparator>
272 std::vector<id_of_buffer> result;
274 result.emplace_back(x);
275 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.
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
static void throw_exception(const std::string &message)
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)
friend class id_of_buffer
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
std::forward_iterator_tag iterator_category
std::ptrdiff_t difference_type
id_of_buffer operator*() const
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)