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 ); }
49 bool valid() {
return bool( _ptr ); }
53 template<
typename T >
54 T &
get(
size_t offset ) {
55 return *
reinterpret_cast< T *
>(
56 reinterpret_cast< char *
>( _ptr.get() ) + offset );
59 template<
typename T >
60 const T &
cget(
size_t offset )
const {
61 return *
reinterpret_cast< T *
>(
62 reinterpret_cast< char *
>( _ptr.get() ) + offset );
65 template<
typename T >
66 const T &
get(
size_t offset )
const {
return cget< T >( offset ); }
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 >
80 return asConstArrayOf< T >();
84 return asArrayOf< char >()[ offset ];
88 return asArrayOf< char >()[ offset ];
92 std::shared_ptr< void > _ptr;
96 void _map(
const std::string & );
103 #endif // WIBBLE_SYS_MMAP_V2 #define DEFAULT_MODE
Definition: mmap_v2.h:32
T * asArrayOf()
Definition: mmap_v2.h:69
bool valid()
Definition: mmap_v2.h:49
const char & operator[](size_t offset) const
Definition: mmap_v2.h:87
char & operator[](size_t offset)
Definition: mmap_v2.h:83
MMap()
Definition: mmap_v2.h:37
const T * asConstArrayOf() const
Definition: mmap_v2.h:74
const T & cget(size_t offset) const
Definition: mmap_v2.h:60
constexpr static const ProtectModeFlags defaultMode
Definition: mmap_v2.h:35
Definition: strongenumflags.h:19
ProtectModeFlags mode()
Definition: mmap_v2.h:50
size_t size()
Definition: mmap_v2.h:47
ProtectMode
Definition: mmap_v2.h:28
const T * asArrayOf() const
Definition: mmap_v2.h:79
void map(const std::string &, ProtectModeFlags=DEFAULT_MODE)