AsmGrader 0.0.0
Loading...
Searching...
No Matches
asmgrader::ByteVector< Endianness > Class Template Reference

#include <byte_vector.hpp>

Public Types

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

Public Member Functions

 ByteVector ()=default
 
template<ranges::input_iterator It>
 ByteVector (It first, It last)
 
 ByteVector (std::initializer_list< Byte > init)
 
 ByteVector (std::size_t count, Byte value=Byte{})
 
bool empty () const
 
Byteoperator[] (size_t idx)
 
const Byteoperator[] (size_t idx) const
 
Byteat (size_t idx)
 
const Byteat (size_t idx) const
 
template<ranges::input_iterator It>
auto insert (const_iterator pos, It first, It last)
 
void push_back (const Byte &value)
 
template<typename... Args>
void emplace_back (Args &&... args)
 
auto begin ()
 
auto begin () const
 
auto cbegin () const
 
auto end ()
 
auto end () const
 
auto cend () const
 
auto data ()
 
auto data () const
 
size_t size () const
 
void resize (std::size_t new_size)
 
template<ranges::range Range>
requires requires(Range range, std::size_t size, Byte byte) { { range.resize(size) }; { static_cast<ranges::range_value_t<Range>>(byte.value) }; }
Range to_range () const
 T should be a stdlib-compatible container type where Byte is convertible to T::value_type.
 
template<typename... Types>
requires (sizeof...(Types) > 0 && (std::is_trivially_copyable_v<Types> && ...))
auto bit_cast_to () const -> std::conditional_t< sizeof...(Types)==1, boost::mp11::mp_first< boost::mp11::mp_list< Types... > >, std::tuple< Types... > >
 

Member Typedef Documentation

◆ allocator_type

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::allocator_type = std::allocator<Byte>

◆ const_iterator

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::const_iterator = std::vector<Byte>::const_iterator

◆ const_pointer

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::const_pointer = const value_type*

◆ const_reference

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::const_reference = const value_type&

◆ const_reverse_iterator

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::const_reverse_iterator = std::vector<Byte>::const_reverse_iterator

◆ difference_type

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::difference_type = std::ptrdiff_t

◆ iterator

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::iterator = std::vector<Byte>::iterator

◆ pointer

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::pointer = value_type*

◆ reference

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::reference = value_type&

◆ reverse_iterator

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::reverse_iterator = std::vector<Byte>::reverse_iterator

◆ size_type

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::size_type = std::size_t

◆ value_type

template<EndiannessKind Endianness>
using asmgrader::ByteVector< Endianness >::value_type = Byte

Constructor & Destructor Documentation

◆ ByteVector() [1/4]

template<EndiannessKind Endianness>
asmgrader::ByteVector< Endianness >::ByteVector ( )
default

◆ ByteVector() [2/4]

template<EndiannessKind Endianness>
template<ranges::input_iterator It>
asmgrader::ByteVector< Endianness >::ByteVector ( It first,
It last )
inline

◆ ByteVector() [3/4]

template<EndiannessKind Endianness>
asmgrader::ByteVector< Endianness >::ByteVector ( std::initializer_list< Byte > init)
inline

◆ ByteVector() [4/4]

template<EndiannessKind Endianness>
asmgrader::ByteVector< Endianness >::ByteVector ( std::size_t count,
Byte value = Byte{} )
inlineexplicit

Member Function Documentation

◆ at() [1/2]

template<EndiannessKind Endianness>
Byte & asmgrader::ByteVector< Endianness >::at ( size_t idx)
inline

◆ at() [2/2]

template<EndiannessKind Endianness>
const Byte & asmgrader::ByteVector< Endianness >::at ( size_t idx) const
inline

◆ begin() [1/2]

template<EndiannessKind Endianness>
auto asmgrader::ByteVector< Endianness >::begin ( )
inline

◆ begin() [2/2]

template<EndiannessKind Endianness>
auto asmgrader::ByteVector< Endianness >::begin ( ) const
inline

◆ bit_cast_to()

template<EndiannessKind Endianness>
template<typename... Types>
requires (sizeof...(Types) > 0 && (std::is_trivially_copyable_v<Types> && ...))
auto asmgrader::ByteVector< Endianness >::bit_cast_to ( ) const -> std::conditional_t<sizeof...(Types) == 1, boost::mp11::mp_first<boost::mp11::mp_list<Types...>>, std::tuple<Types...>>
inline

◆ cbegin()

template<EndiannessKind Endianness>
auto asmgrader::ByteVector< Endianness >::cbegin ( ) const
inline

◆ cend()

template<EndiannessKind Endianness>
auto asmgrader::ByteVector< Endianness >::cend ( ) const
inline

◆ data() [1/2]

template<EndiannessKind Endianness>
auto asmgrader::ByteVector< Endianness >::data ( )
inline

◆ data() [2/2]

template<EndiannessKind Endianness>
auto asmgrader::ByteVector< Endianness >::data ( ) const
inline

◆ emplace_back()

template<EndiannessKind Endianness>
template<typename... Args>
void asmgrader::ByteVector< Endianness >::emplace_back ( Args &&... args)
inline

◆ empty()

template<EndiannessKind Endianness>
bool asmgrader::ByteVector< Endianness >::empty ( ) const
inline

◆ end() [1/2]

template<EndiannessKind Endianness>
auto asmgrader::ByteVector< Endianness >::end ( )
inline

◆ end() [2/2]

template<EndiannessKind Endianness>
auto asmgrader::ByteVector< Endianness >::end ( ) const
inline

◆ insert()

template<EndiannessKind Endianness>
template<ranges::input_iterator It>
auto asmgrader::ByteVector< Endianness >::insert ( const_iterator pos,
It first,
It last )
inline

◆ operator[]() [1/2]

template<EndiannessKind Endianness>
Byte & asmgrader::ByteVector< Endianness >::operator[] ( size_t idx)
inline

◆ operator[]() [2/2]

template<EndiannessKind Endianness>
const Byte & asmgrader::ByteVector< Endianness >::operator[] ( size_t idx) const
inline

◆ push_back()

template<EndiannessKind Endianness>
void asmgrader::ByteVector< Endianness >::push_back ( const Byte & value)
inline

◆ resize()

template<EndiannessKind Endianness>
void asmgrader::ByteVector< Endianness >::resize ( std::size_t new_size)
inline

◆ size()

template<EndiannessKind Endianness>
size_t asmgrader::ByteVector< Endianness >::size ( ) const
inline

◆ to_range()

template<EndiannessKind Endianness>
template<ranges::range Range>
requires requires(Range range, std::size_t size, Byte byte) { { range.resize(size) }; { static_cast<ranges::range_value_t<Range>>(byte.value) }; }
Range asmgrader::ByteVector< Endianness >::to_range ( ) const
inline

T should be a stdlib-compatible container type where Byte is convertible to T::value_type.


The documentation for this class was generated from the following file: