Joedb 10.2.1
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Memory_File.cpp
Go to the documentation of this file.
2
3#include <cstring>
4
5namespace joedb
6{
7 ////////////////////////////////////////////////////////////////////////////
8 size_t Memory_File::pread(char *buffer, size_t size, int64_t offset) const
9 ////////////////////////////////////////////////////////////////////////////
10 {
11 if (size_t(offset) >= data.size())
12 return 0;
13 const size_t max_size = data.size() - size_t(offset);
14 const size_t n = std::min(size, max_size);
15 std::memcpy(buffer, &data[size_t(offset)], n);
16 return n;
17 }
18
19 ////////////////////////////////////////////////////////////////////////////
20 void Memory_File::pwrite(const char *buffer, size_t size, int64_t offset)
21 ////////////////////////////////////////////////////////////////////////////
22 {
23 const size_t end = size_t(offset) + size;
24 if (end > data.size())
25 data.resize(end);
26 std::memcpy(&data[size_t(offset)], buffer, size);
27 }
28}
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