LIBWIRE
Next-generation C++17 networking library.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Public Types | Public Member Functions | List of all members
libwire::memory_view Class Reference

Non-owning STL-like wrapper for raw memory. More...

#include <memory_view.hpp>

Public Types

using const_iterator = const_pointer
 
using const_pointer = const pointer
 
using const_reference = const value_type &
 
using const_reverse_iterator = std::reverse_iterator< iterator >
 
using difference_type = std::ptrdiff_t
 
using iterator = pointer
 
using pointer = value_type *
 
using reference = value_type &
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using size_type = size_t
 
using value_type = uint8_t
 

Public Member Functions

 memory_view () noexcept
 
 memory_view (void *memory, size_t size_bytes) noexcept
 
const_reference back () const noexcept
 
reference back () noexcept
 
const_iterator begin () const noexcept
 
iterator begin () noexcept
 
size_type capacity () const noexcept
 Return size of underlying memory size FROM begin() TO BIGGEST POSSIBLE end(). More...
 
const_iterator cbegin () const noexcept
 
const_iterator cend () const noexcept
 
void clear () noexcept
 Same as resize (0). More...
 
const_pointer data () const noexcept
 
pointer data () noexcept
 
const_iterator end () const noexcept
 
iterator end () noexcept
 
const_reference front () const noexcept
 
reference front () noexcept
 
size_type max_size () const noexcept
 Same as capacity. More...
 
const_reference operator[] (size_t) const noexcept
 
reference operator[] (size_t) noexcept
 
void resize (size_t new_size) noexcept(!false)
 "Hide" X bytes from end of memory so that new_size is left visible. More...
 
void shrink_back (size_type bytes_count) noexcept
 "Hide" X bytes from end of memory. More...
 
void shrink_front (size_type bytes_count) noexcept
 "Hide" X bytes from begin of memory. More...
 
size_type size () const noexcept
 Currently visible memory size. More...
 
void swap (memory_view &other) noexcept
 

Detailed Description

Non-owning STL-like wrapper for raw memory.

Mostly mimics std::vector except some things:

Implemented to allow to use raw memory in read/write operations without additional overload sets.

Definition at line 58 of file memory_view.hpp.

Member Typedef Documentation

Definition at line 68 of file memory_view.hpp.

Definition at line 66 of file memory_view.hpp.

Definition at line 64 of file memory_view.hpp.

Definition at line 70 of file memory_view.hpp.

using libwire::memory_view::difference_type = std::ptrdiff_t

Definition at line 62 of file memory_view.hpp.

Definition at line 67 of file memory_view.hpp.

Definition at line 65 of file memory_view.hpp.

Definition at line 63 of file memory_view.hpp.

using libwire::memory_view::reverse_iterator = std::reverse_iterator<iterator>

Definition at line 69 of file memory_view.hpp.

Definition at line 61 of file memory_view.hpp.

Definition at line 60 of file memory_view.hpp.

Constructor & Destructor Documentation

libwire::memory_view::memory_view ( )
noexcept
libwire::memory_view::memory_view ( void *  memory,
size_t  size_bytes 
)
noexcept

Member Function Documentation

const_reference libwire::memory_view::back ( ) const
noexcept
reference libwire::memory_view::back ( )
noexcept
const_iterator libwire::memory_view::begin ( ) const
noexcept
iterator libwire::memory_view::begin ( )
noexcept
size_type libwire::memory_view::capacity ( ) const
noexcept

Return size of underlying memory size FROM begin() TO BIGGEST POSSIBLE end().

const_iterator libwire::memory_view::cbegin ( ) const
noexcept
const_iterator libwire::memory_view::cend ( ) const
noexcept
void libwire::memory_view::clear ( )
noexcept

Same as resize (0).

const_pointer libwire::memory_view::data ( ) const
noexcept
pointer libwire::memory_view::data ( )
noexcept
const_iterator libwire::memory_view::end ( ) const
noexcept
iterator libwire::memory_view::end ( )
noexcept
const_reference libwire::memory_view::front ( ) const
noexcept
reference libwire::memory_view::front ( )
noexcept
size_type libwire::memory_view::max_size ( ) const
noexcept

Same as capacity.

const_reference libwire::memory_view::operator[] ( size_t  ) const
noexcept
reference libwire::memory_view::operator[] ( size_t  )
noexcept
void libwire::memory_view::resize ( size_t  new_size)
noexcept

"Hide" X bytes from end of memory so that new_size is left visible.

Can also show previous hidden bytes up to capacity().

If new_size > capacity() and exceptions enabled then std::out_of_range is thrown, if exceptions disabled then this function have no effect in this case.

void libwire::memory_view::shrink_back ( size_type  bytes_count)
noexcept

"Hide" X bytes from end of memory.

Behavior is undefined if bytes_count > size().

void libwire::memory_view::shrink_front ( size_type  bytes_count)
noexcept

"Hide" X bytes from begin of memory.

Behavior is undefined if bytes_count > size().

size_type libwire::memory_view::size ( ) const
noexcept

Currently visible memory size.

void libwire::memory_view::swap ( memory_view other)
noexcept