Public Types | Public Member Functions | Private Attributes | Friends
ecl::Stencil< unsigned char * > Class Template Reference

Stencil variant operating on a raw unsigned char array. More...

#include <specialisations.hpp>

List of all members.

Public Types

typedef const unsigned char * const_iterator
 Uses the array's constant iterator type.
typedef const unsigned char & const_reference
 Uses the array's element const reference type.
typedef std::reverse_iterator
< const_iterator
const_reverse_iterator
 Uses the array's constant reverse iterator type.
typedef std::ptrdiff_t difference_type
typedef unsigned char * iterator
 Uses the array's iterator type.
typedef unsigned char & reference
 Uses the array's element reference type.
typedef std::reverse_iterator
< iterator
reverse_iterator
 Uses the array's reverse iterator type.
typedef std::size_t size_type
 Uses the array's type used to denote the length of the array.
typedef unsigned char value_type
 Uses the array's element type.

Public Member Functions

reference at (size_type i) throw (StandardException)
const_reference at (size_type i) const throw (StandardException)
reference back () ecl_assert_throw_decl(StandardException)
const_reference back () const ecl_assert_throw_decl(StandardException)
iterator begin () ecl_assert_throw_decl(StandardException)
const_iterator begin () const ecl_assert_throw_decl(StandardException)
iterator end () ecl_assert_throw_decl(StandardException)
const_iterator end () const ecl_assert_throw_decl(StandardException)
reference front () ecl_assert_throw_decl(StandardException)
const_reference front () const ecl_assert_throw_decl(StandardException)
containers::BoundedListInitialiser
< value_type, iterator
operator<< (const value_type &value)
Stencil< unsigned char * > & operator= (const Stencil< unsigned char * > &s) ecl_assert_throw_decl(StandardException)
 This either resettles this stencil or copies across to it (depending on the rhs stencil).
reference operator[] (size_type i) ecl_assert_throw_decl(StandardException)
const_reference operator[] (size_type i) const ecl_assert_throw_decl(StandardException)
reverse_iterator rbegin () ecl_assert_throw_decl(StandardException)
const_reverse_iterator rbegin () const ecl_assert_throw_decl(StandardException)
reverse_iterator rend () ecl_assert_throw_decl(StandardException)
const_reverse_iterator rend () const ecl_assert_throw_decl(StandardException)
void resettle (const unsigned int &start_index, const unsigned int &n) ecl_assert_throw_decl(StandardException)
 Resettle the stencil on a different range over the same underlying array.
size_type size () const
 Stencil (iterator underlying_array, const unsigned int &length, iterator begin_iter, iterator end_iter) ecl_assert_throw_decl(StandardException)
 Initialises with a pointer to the underlying array with boundary constraints.
 Stencil (iterator underlying_array, const unsigned int &length, const unsigned int &start_index=0, const unsigned int &n=0) ecl_assert_throw_decl(StandardException)
 Initialises with a reference to the underlying array and boundary constraints.
Stencil< unsigned char * > stencil (const unsigned int &start_index, const unsigned int &n) const ecl_assert_throw_decl(StandardException)
 Generate a sub-stencil.
virtual ~Stencil ()

Private Attributes

iterator array
iterator b_iter
iterator e_iter
unsigned int length

Friends

template<typename OutputStream >
OutputStream & operator<< (OutputStream &ostream, const Stencil< unsigned char * > &stencil)
 Insertion operator for stencils.

Detailed Description

template<>
class ecl::Stencil< unsigned char * >

Stencil variant operating on a raw unsigned char array.

This of course assumes the user is responsible for range checking on the unsigned char array.

TODO : generalise this for T*.

See also:
ecl::Stencil

Definition at line 39 of file specialisations.hpp.


Member Typedef Documentation

typedef const unsigned char* ecl::Stencil< unsigned char * >::const_iterator

Uses the array's constant iterator type.

Definition at line 47 of file specialisations.hpp.

typedef const unsigned char& ecl::Stencil< unsigned char * >::const_reference

Uses the array's element const reference type.

Definition at line 49 of file specialisations.hpp.

typedef std::reverse_iterator<const_iterator> ecl::Stencil< unsigned char * >::const_reverse_iterator

Uses the array's constant reverse iterator type.

Definition at line 53 of file specialisations.hpp.

typedef std::ptrdiff_t ecl::Stencil< unsigned char * >::difference_type

Definition at line 51 of file specialisations.hpp.

typedef unsigned char* ecl::Stencil< unsigned char * >::iterator

Uses the array's iterator type.

Definition at line 46 of file specialisations.hpp.

typedef unsigned char& ecl::Stencil< unsigned char * >::reference

Uses the array's element reference type.

Definition at line 48 of file specialisations.hpp.

typedef std::reverse_iterator<iterator> ecl::Stencil< unsigned char * >::reverse_iterator

Uses the array's reverse iterator type.

Definition at line 52 of file specialisations.hpp.

typedef std::size_t ecl::Stencil< unsigned char * >::size_type

Uses the array's type used to denote the length of the array.

Definition at line 50 of file specialisations.hpp.

typedef unsigned char ecl::Stencil< unsigned char * >::value_type

Uses the array's element type.

Definition at line 45 of file specialisations.hpp.


Constructor & Destructor Documentation

ecl::Stencil< unsigned char * >::Stencil ( iterator  underlying_array,
const unsigned int &  length,
iterator  begin_iter,
iterator  end_iter 
) [inline]

Initialises with a pointer to the underlying array with boundary constraints.

Sets up the underlying storage container along with boundary constraints in the style of stl containers.

Parameters:
underlying_array: reference to the underlying array.
length: of the underlying array
begin_iter: start of the stencil window.
end_iter: end of the stencil window.
Exceptions:
:StandardException : throws if the indices provided are out of range [debug mode only].

Definition at line 72 of file specialisations.hpp.

ecl::Stencil< unsigned char * >::Stencil ( iterator  underlying_array,
const unsigned int &  length,
const unsigned int &  start_index = 0,
const unsigned int &  n = 0 
) [inline]

Initialises with a reference to the underlying array and boundary constraints.

Sets up the underlying storage container along with boundary constraints in the style of eigen block intialisations.

Parameters:
underlying_array: reference to the underlying array.
length: of the underlying array
start_index: start of the stencil window.
n: number of elements to include in the window.
Exceptions:
:StandardException : throws if the indices provided are out of range [debug mode only].

Definition at line 95 of file specialisations.hpp.

virtual ecl::Stencil< unsigned char * >::~Stencil ( ) [inline, virtual]

Definition at line 105 of file specialisations.hpp.


Member Function Documentation

reference ecl::Stencil< unsigned char * >::at ( size_type  i) throw (StandardException) [inline]

Accesses elements in the stencil, returning references to the requested element. This accessor always does range checks. Compare this with the [] accessor which only checks if NDEBUG is not defined.

Parameters:
i: the index of the requested element.
Returns:
reference : a reference to the requested element.
Exceptions:
:StandardException : throws if range is requested element is out of range.

Definition at line 363 of file specialisations.hpp.

const_reference ecl::Stencil< unsigned char * >::at ( size_type  i) const throw (StandardException) [inline]

Accesses elements in the stencil, returning references to the requested element. This accessor always does range checks. Compare this with the [] accessor which only checks if NDEBUG is not defined. This also ensures the references are constant, which in turn ensures the contents cannot of the array cannot be modified.

Parameters:
i: the index of the requested element.
Returns:
const_reference : a const_reference to the requested element.
Exceptions:
:StandardException : throws if range is requested element is out of range.

Definition at line 387 of file specialisations.hpp.

reference ecl::Stencil< unsigned char * >::back ( ) [inline]

Generates an reference to the last element in the array.

Returns:
reference : reference to the last element in the array.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 302 of file specialisations.hpp.

const_reference ecl::Stencil< unsigned char * >::back ( ) const [inline]

Generates a constant reference to the last element in the array (cannot change the value).

Returns:
const_reference : const_reference to the last element in the array.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 312 of file specialisations.hpp.

iterator ecl::Stencil< unsigned char * >::begin ( ) [inline]

Generates a pointer (iterator) pointing to the start of the stencil.

Returns:
iterator : points to the beginning of the stencil.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 198 of file specialisations.hpp.

const_iterator ecl::Stencil< unsigned char * >::begin ( ) const [inline]

Generates a const pointer (iterator) pointing to the start of the array.

Returns:
const_iterator : constant pointer (iterator) pointing to the end of the array.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 208 of file specialisations.hpp.

iterator ecl::Stencil< unsigned char * >::end ( ) [inline]

Generates an pointer (iterator) pointing to the end of the array.

Returns:
iterator : points to the end of the array.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 218 of file specialisations.hpp.

const_iterator ecl::Stencil< unsigned char * >::end ( ) const [inline]

Generates a const pointer (iterator) pointing to the end of the array.

Returns:
const_iterator : constant pointer (iterator) pointing to the end of the array.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 228 of file specialisations.hpp.

reference ecl::Stencil< unsigned char * >::front ( ) [inline]

Generates an reference to the first element in the array.

Returns:
reference : reference to the first element in the array.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 282 of file specialisations.hpp.

const_reference ecl::Stencil< unsigned char * >::front ( ) const [inline]

Generates a constant reference to the first element in the array (cannot change the value).

Returns:
const_reference : const_reference to the first element in the array.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 292 of file specialisations.hpp.

containers::BoundedListInitialiser<value_type,iterator> ecl::Stencil< unsigned char * >::operator<< ( const value_type value) [inline]

Provides a comma initialisation facility. This initiates the comma initialiser with an iterator to the underlying array and then leaves the initialiser to do the rest. The initialiser will do range checking if NDEBUG is not defined.

 unsigned char buffer[4];          // At this point it is uninitialised.
 buffer << 0xff, 0x00, 0x01, 0x02; // If NDEBUG is not defined, this will throw if you exceed the range.
Parameters:
value: the first value to enter , ElementType, ArraySizeinto the array.
Returns:
BoundedListInitialiser : the comma initialiser mechanism.

Definition at line 164 of file specialisations.hpp.

Stencil<unsigned char*>& ecl::Stencil< unsigned char * >::operator= ( const Stencil< unsigned char * > &  s) [inline]

This either resettles this stencil or copies across to it (depending on the rhs stencil).

The assignment operator has one of two effects - it will either reassign this stencil if both stencils work on the same underlying array, OR it copies across if acting on two different arrays.

Parameters:
s
Returns:
Stencil<unsigned char*> : a handle to this stencil
Exceptions:
:StandardException : if copying from another stencil/array, throws if size exceeded [debug mode only].
See also:
Stencil

Definition at line 181 of file specialisations.hpp.

reference ecl::Stencil< unsigned char * >::operator[] ( size_type  i) [inline]

Accesses elements in the stencil, returning references to the requested element. This accessor only does range checks in debug mode (NDEBUG is not defined). Compare this with the at() accessor which always checks if the range is exceeded.

Returns:
reference : a reference to the requested element.
Exceptions:
:StandardException : throws if range is requested element is out of range [debug mode only].

Definition at line 330 of file specialisations.hpp.

const_reference ecl::Stencil< unsigned char * >::operator[] ( size_type  i) const [inline]

Accesses elements in the stencil, returning references to the requested element. This accessor only does range checks in debug mode (NDEBUG is not defined). Compare this with the at() accessor which always checks if the range is exceeded. This also ensures the references are constant, which in turn ensures the contents cannot of the array cannot be modified.

Returns:
const_reference : a constant reference to the requested element.
Exceptions:
:StandardException : throws if range is requested element is out of range [debug mode only].

Definition at line 347 of file specialisations.hpp.

reverse_iterator ecl::Stencil< unsigned char * >::rbegin ( ) [inline]

Generates a reverse iterator pointing to the end of the array.

Returns:
reverse_iterator : points to the end of the array.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 238 of file specialisations.hpp.

const_reverse_iterator ecl::Stencil< unsigned char * >::rbegin ( ) const [inline]

Generates a constant reverse iterator pointing to the end of the array.

Returns:
const_reverse_iterator : constant reverse iterator pointing to the end of the array.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 248 of file specialisations.hpp.

reverse_iterator ecl::Stencil< unsigned char * >::rend ( ) [inline]

Generates a reverse iterator pointing to the beginning of the array.

Returns:
reverse_iterator : points to the beginning of the array.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 258 of file specialisations.hpp.

const_reverse_iterator ecl::Stencil< unsigned char * >::rend ( ) const [inline]

Generates a constant reverse iterator pointing to the beginning of the array.

Returns:
const_reverse_iterator : constant reverse iterator pointing to the beginning of the array.
Exceptions:
:StandardException : throws if the underlying array changed size and the stencil is now out of range [debug mode only].

Definition at line 268 of file specialisations.hpp.

void ecl::Stencil< unsigned char * >::resettle ( const unsigned int &  start_index,
const unsigned int &  n 
) [inline]

Resettle the stencil on a different range over the same underlying array.

Resets the range of the stencil operating on the currently referenced array. Using a starting index + size is in line with the way eigen blocks and segments work.

Parameters:
start_index: start of the stencil window.
n: number of elements to include in the window.
Exceptions:
:StandardException : throws if the indices provided are out of range [debug mode only].

Definition at line 139 of file specialisations.hpp.

size_type ecl::Stencil< unsigned char * >::size ( ) const [inline]

The size of the stencil.

Returns:
size_type : the size of the stencil.

Definition at line 408 of file specialisations.hpp.

Stencil<unsigned char*> ecl::Stencil< unsigned char * >::stencil ( const unsigned int &  start_index,
const unsigned int &  n 
) const [inline]

Generate a sub-stencil.

Opens another window on this stencil. Using a starting index + size is in line with the way eigen blocks and segments work.

Parameters:
start_index: start of the stencil window.
n: number of elements to include in the window.
Returns:
Stencil<Array> : the generated sub-stencil.
Exceptions:
:StandardException : throws if the indices provided are out of range [debug mode only].

Definition at line 120 of file specialisations.hpp.


Friends And Related Function Documentation

template<typename OutputStream >
OutputStream& operator<< ( OutputStream &  ostream,
const Stencil< unsigned char * > &  stencil 
) [friend]

Insertion operator for stencils.

Insertion operator for sending the stencil to an output stream. This is raw, and has no formatting.

Concept Check: makes sure the template parameter provided for the stream is a stream type with the required functionality.

Parameters:
ostream: the output stream.
stencil: the stencil to be inserted.
Template Parameters:
OutputStream: the stream being used.
ArrayType: the type of the underlying array.
Returns:
OutputStream : continue streaming with the updated output stream.

Member Data Documentation

iterator ecl::Stencil< unsigned char * >::array [private]

Definition at line 433 of file specialisations.hpp.

iterator ecl::Stencil< unsigned char * >::b_iter [private]

Definition at line 435 of file specialisations.hpp.

iterator ecl::Stencil< unsigned char * >::e_iter [private]

Definition at line 435 of file specialisations.hpp.

unsigned int ecl::Stencil< unsigned char * >::length [private]

Definition at line 434 of file specialisations.hpp.


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


ecl_containers
Author(s): Daniel Stonier
autogenerated on Thu Jun 6 2019 21:17:43