Joedb 9.5.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
8namespace joedb
9{
10 /// @ingroup journal
12 {
13 protected:
14 const char * data;
15 const size_t data_size;
16
17 //////////////////////////////////////////////////////////////////////////
18 size_t pread(char *buffer, size_t size, int64_t offset) const override
19 //////////////////////////////////////////////////////////////////////////
20 {
21 if (size_t(offset) >= data_size)
22 return 0;
23 const size_t max_size = data_size - size_t(offset);
24 const size_t n = std::min(size, max_size);
25 std::memcpy(buffer, &data[size_t(offset)], n);
26 return n;
27 }
28
29 public:
30 //////////////////////////////////////////////////////////////////////////
31 Readonly_Memory_File(const void *memory, size_t size):
32 //////////////////////////////////////////////////////////////////////////
34 data((const char *)memory),
35 data_size(size)
36 {
37 }
38
39 //////////////////////////////////////////////////////////////////////////
40 Readonly_Memory_File(const std::string &s):
41 //////////////////////////////////////////////////////////////////////////
42 Readonly_Memory_File(s.data(), s.size())
43 {
44 }
45
46 //////////////////////////////////////////////////////////////////////////
47 Readonly_Memory_File(const std::vector<char> &v):
48 //////////////////////////////////////////////////////////////////////////
49 Readonly_Memory_File(v.data(), v.size())
50 {
51 }
52
53 //////////////////////////////////////////////////////////////////////////
54 int64_t get_size() const override
55 //////////////////////////////////////////////////////////////////////////
56 {
57 return int64_t(data_size);
58 }
59 };
60}
61
62#endif
Readonly_Memory_File(const std::string &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
Definition Blob.h:7