Exiv2
Loading...
Searching...
No Matches
Exiv2::Slice< const T * > Struct Template Reference

#include <slice.hpp>

Inheritance diagram for Exiv2::Slice< const T * >:

Public Types

using iterator
 
using const_iterator
 
using value_type
 
- Public Types inherited from Exiv2::Internal::MutableSliceBase< storage_type, data_type >
using iterator = typename ConstSliceBase<storage_type, data_type>::iterator
 
using const_iterator = typename ConstSliceBase<storage_type, data_type>::const_iterator
 
using value_type = typename ConstSliceBase<storage_type, data_type>::value_type
 
- Public Types inherited from Exiv2::Internal::ConstSliceBase< storage_type, data_type >
using iterator = typename storage_type<data_type>::iterator
 
using const_iterator = typename storage_type<data_type>::const_iterator
 
using value_type = typename storage_type<data_type>::value_type
 
- Public Types inherited from Exiv2::Internal::ConstSliceBase< Internal::PtrSliceStorage, const T * >
using iterator
 
using const_iterator
 
using value_type
 

Public Member Functions

 Slice (const T *ptr, size_t begin, size_t end)
 
Slice< const T * > subSlice (size_t begin, size_t end) const
 
Slice subSlice (size_t begin, size_t end)
 
Slice< const const T * > subSlice (size_t begin, size_t end) const
 
- Public Member Functions inherited from Exiv2::Internal::MutableSliceBase< storage_type, data_type >
value_type & at (size_t index)
 
const value_type & at (size_t index) const
 
iterator begin () noexcept
 
iterator end () noexcept
 
- Public Member Functions inherited from Exiv2::Internal::ConstSliceBase< storage_type, data_type >
 ConstSliceBase (data_type &data, size_t begin, size_t end)
 
const value_type & at (size_t index) const
 
const_iterator cbegin () const noexcept
 
const_iterator cend () const noexcept
 
template<typename slice_type>
slice_type subSlice (size_t begin, size_t end) const
 
- Public Member Functions inherited from Exiv2::Internal::SliceBase
 SliceBase (size_t begin, size_t end)
 
size_t size () const noexcept
 
- Public Member Functions inherited from Exiv2::Internal::ConstSliceBase< Internal::PtrSliceStorage, const T * >
 ConstSliceBase (const T *&data, size_t begin, size_t end)
 
const value_type & at (size_t index) const
 
const_iterator cbegin () const noexcept
 
const_iterator cend () const noexcept
 
slice_type subSlice (size_t begin, size_t end) const
 

Additional Inherited Members

- Protected Types inherited from Exiv2::Internal::MutableSliceBase< storage_type, data_type >
using base_type = ConstSliceBase<storage_type, data_type>
 
- Protected Member Functions inherited from Exiv2::Internal::MutableSliceBase< storage_type, data_type >
ConstSliceBase< storage_type, const data_type > to_const_base () const noexcept
 
template<typename slice_type>
slice_type subSlice (size_t begin, size_t end)
 
- Protected Member Functions inherited from Exiv2::Internal::SliceBase
void rangeCheck (size_t index) const
 
- Protected Attributes inherited from Exiv2::Internal::ConstSliceBase< storage_type, data_type >
storage_type< data_type > storage_
 
- Protected Attributes inherited from Exiv2::Internal::SliceBase
size_t begin_
 
size_t end_
 
- Protected Attributes inherited from Exiv2::Internal::ConstSliceBase< Internal::PtrSliceStorage, const T * >
Internal::PtrSliceStorage< const T * > storage_
 

Detailed Description

template<typename T>
struct Exiv2::Slice< const T * >

Specialization of slices for constant C-arrays.

These have exactly the same interface as the slices for STL-containers, with the crucial exception, that the slice's constructor cannot make a proper bounds check! It can only verify that you didn't accidentally swap begin and end!

Constructor & Destructor Documentation

◆ Slice()

template<typename T>
Exiv2::Slice< const T * >::Slice ( const T * ptr,
size_t begin,
size_t end )
inline

Constructor.

Parameters
[in]ptrC-array of which a slice should be constructed. Must not be a null pointer.
[in]beginIndex of the first element in the slice.
[in]endIndex of the first element that is no longer in the slice.

Please note that the constructor has no way how to verify that begin and end are not out of bounds of the provided array!

References Exiv2::Internal::MutableSliceBase< storage_type, data_type >::begin(), Exiv2::Internal::ConstSliceBase< Internal::PtrSliceStorage, const T * >::ConstSliceBase(), and Exiv2::Internal::MutableSliceBase< storage_type, data_type >::end().

Member Function Documentation

◆ subSlice() [1/2]

Slice Exiv2::Slice< const T * >::subSlice ( size_t begin,
size_t end )
inline

Construct a sub-slice of this slice with the given bounds. The bounds are evaluated with respect to the current slice.

Parameters
[in]beginFirst element in the new slice.
[in]endFirst element beyond the new slice.
Exceptions
std::out_of_rangewhen begin or end are invalid

◆ subSlice() [2/2]

Slice< const const T * > Exiv2::Slice< const T * >::subSlice ( size_t begin,
size_t end ) const
inlinenodiscard

Constructs a new constant subSlice. Behaves otherwise exactly like the non-const version.


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