Joedb 10.4.1
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Memory_File.cpp
Go to the documentation of this file.
3
4#include <cstring>
5
6namespace joedb
7{
8 ////////////////////////////////////////////////////////////////////////////
9 size_t Memory_File::pread(char *buffer, size_t size, int64_t offset) const
10 ////////////////////////////////////////////////////////////////////////////
11 {
12 JOEDB_DEBUG_ASSERT(offset >= 0);
13 if (size_t(offset) >= data.size())
14 return 0;
15 const size_t max_size = data.size() - size_t(offset);
16 const size_t n = std::min(size, max_size);
17 std::memcpy(buffer, &data[size_t(offset)], n);
18 return n;
19 }
20
21 ////////////////////////////////////////////////////////////////////////////
22 void Memory_File::pwrite(const char *buffer, size_t size, int64_t offset)
23 ////////////////////////////////////////////////////////////////////////////
24 {
25 JOEDB_DEBUG_ASSERT(offset >= 0);
26 const size_t end = size_t(offset) + size;
27 if (end > data.size())
28 data.resize(end);
29 std::memcpy(&data[size_t(offset)], buffer, size);
30 }
31}
void pwrite(const char *buffer, size_t size, int64_t offset) override
Write a range of bytes. Extend file size if necessary.
size_t pread(char *buffer, size_t size, int64_t offset) const override
Read a range of bytes.
std::string data
Definition Memory_File.h:14
#define JOEDB_DEBUG_ASSERT(x)
assertion tested in debug mode
Definition assert.h:19