10#if __cplusplus < 201103L
11#error "mmap_v2 is only supported with c++11 or newer"
19#ifndef WIBBLE_SYS_MMAP_V2
20#define WIBBLE_SYS_MMAP_V2
32#define DEFAULT_MODE (ProtectMode::Read | ProtectMode::Shared)
47 size_t size() {
return _size; }
48 explicit operator bool() {
return bool( _ptr ); }
53 template<
typename T >
55 return *
reinterpret_cast< T *
>(
56 reinterpret_cast< char *
>( _ptr.get() ) +
offset );
59 template<
typename T >
61 return *
reinterpret_cast< T *
>(
62 reinterpret_cast< char *
>( _ptr.get() ) +
offset );
65 template<
typename T >
68 template<
typename T >
70 return reinterpret_cast< T *
>( _ptr.get() );
73 template<
typename T >
75 return reinterpret_cast< const T *
>( _ptr.get() );
78 template<
typename T >
92 std::shared_ptr< void > _ptr;
96 void _map(
const std::string & );
#define DEFAULT_MODE
Definition mmap_v2.h:32
StrongEnumFlags< ProtectMode > ProtectModeFlags
Definition mmap_v2.h:33
const T & cget(size_t offset) const
Definition mmap_v2.h:60
const T & get(size_t offset) const
Definition mmap_v2.h:66
size_t size()
Definition mmap_v2.h:47
void map(const std::string &, ProtectModeFlags=DEFAULT_MODE)
MMap(const std::string &, ProtectModeFlags=DEFAULT_MODE)
const T * asConstArrayOf() const
Definition mmap_v2.h:74
bool valid()
Definition mmap_v2.h:49
const T * asArrayOf() const
Definition mmap_v2.h:79
void map(int fd, ProtectModeFlags=DEFAULT_MODE)
MMap()
Definition mmap_v2.h:37
T * asArrayOf()
Definition mmap_v2.h:69
ProtectMode
Definition mmap_v2.h:28
T & get(size_t offset)
Definition mmap_v2.h:54
char & operator[](size_t offset)
Definition mmap_v2.h:83
const char & operator[](size_t offset) const
Definition mmap_v2.h:87
constexpr static const ProtectModeFlags defaultMode
Definition mmap_v2.h:35
MMap(int fd, ProtectModeFlags)
ProtectModeFlags mode()
Definition mmap_v2.h:50