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