Joedb 10.3.0
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Readonly_Memory_File.h
Go to the documentation of this file.
1#ifndef joedb_Readonly_Memory_File_declared
2#define joedb_Readonly_Memory_File_declared
3
5
6#include <vector>
7#include <cstring>
8#include <string_view>
9
10namespace joedb
11{
12 /// @ingroup journal
14 {
15 protected:
16 const char * data;
17 const size_t data_size;
18
19 //////////////////////////////////////////////////////////////////////////
20 size_t pread(char *buffer, size_t size, int64_t offset) const override
21 //////////////////////////////////////////////////////////////////////////
22 {
23 if (size_t(offset) >= data_size)
24 return 0;
25 const size_t max_size = data_size - size_t(offset);
26 const size_t n = std::min(size, max_size);
27 std::memcpy(buffer, &data[size_t(offset)], n);
28 return n;
29 }
30
31 public:
32 //////////////////////////////////////////////////////////////////////////
33 Readonly_Memory_File(const void *memory, size_t size):
34 //////////////////////////////////////////////////////////////////////////
36 data((const char *)memory),
37 data_size(size)
38 {
39 }
40
41 //////////////////////////////////////////////////////////////////////////
42 Readonly_Memory_File(const std::string_view s):
43 //////////////////////////////////////////////////////////////////////////
44 Readonly_Memory_File(s.data(), s.size())
45 {
46 }
47
48 //////////////////////////////////////////////////////////////////////////
49 Readonly_Memory_File(const std::vector<char> &v):
50 //////////////////////////////////////////////////////////////////////////
51 Readonly_Memory_File(v.data(), v.size())
52 {
53 }
54
55 //////////////////////////////////////////////////////////////////////////
56 int64_t get_size() const override
57 //////////////////////////////////////////////////////////////////////////
58 {
59 return int64_t(data_size);
60 }
61 };
62}
63
64#endif
Readonly_Memory_File(const std::string_view s)
int64_t get_size() const override
Get the size of the file, or -1 if it is unknown.
Readonly_Memory_File(const std::vector< char > &v)
Readonly_Memory_File(const void *memory, size_t size)
size_t pread(char *buffer, size_t size, int64_t offset) const override
Read a range of bytes.
Open_Mode
Definition Open_Mode.h:8
@ read_existing
fails if does not exist