Dirac - A Video Codec

Created by the British Broadcasting Corporation.


dirac::TwoDArray< T > Class Template Reference

A template class for two-dimensional arrays. More...

#include <arrays.h>

Inheritance diagram for dirac::TwoDArray< T >:

Public Member Functions

 TwoDArray ()
 Default constructor.
 TwoDArray (const int height, const int width)
 Constructor.
 TwoDArray (const int height, const int width, T val)
 Constructor.
virtual ~TwoDArray ()
 Destructor.
 TwoDArray (const TwoDArray< T > &Cpy)
 Copy constructor.
TwoDArray< T > & operator= (const TwoDArray< T > &rhs)
 Assignment =.
bool CopyContents (TwoDArray< T > &out) const
 Copy Contents.
void Fill (T val)
 Fill contents.
void Resize (const int height, const int width)
 Resizes the array, deleting the current data.
element_typeoperator[] (const int pos)
 Element access.
const element_typeoperator[] (const int pos) const
 Element access.
int LengthX () const
 Returns the width.
int LengthY () const
 Returns the height.
int FirstX () const
 Returns the index of the first element of a row.
int FirstY () const
 Returns the index of the first element of a column.
int LastX () const
 Returns the index of the last element of a row.
int LastY () const
 Returns the index of the first element of a column.

Private Types

typedef T * element_type

Private Member Functions

void Init (const int height, const int width)
 Initialise the array.
void FreeData ()
 Free all the allocated data.

Private Attributes

int m_first_x
int m_first_y
int m_last_x
int m_last_y
int m_length_x
int m_length_y
element_typem_array_of_rows

Detailed Description

template<class T>
class dirac::TwoDArray< T >

A template class to do two-d arrays, so that explicit memory (de-)allocation is not required. Only zero-based arrays are currently supported so that access is fast. Accessing elements along a row is therefore much faster than accessing them along a column. Rows are contiguous in memory, so array[y][x] is equivalent to array[0][x+y*LengthX()].

Member Typedef Documentation

◆ element_type

template<class T>
typedef T* dirac::TwoDArray< T >::element_type
private

Constructor & Destructor Documentation

◆ TwoDArray() [1/4]

template<class T>
dirac::TwoDArray< T >::TwoDArray ( )
inline

Default constructor creates an empty array.

Referenced by CopyContents(), operator=(), and TwoDArray().

◆ TwoDArray() [2/4]

template<class T>
dirac::TwoDArray< T >::TwoDArray ( const int height,
const int width )
inline

The constructor creates an array of given width height.

◆ TwoDArray() [3/4]

template<class T>
dirac::TwoDArray< T >::TwoDArray ( const int height,
const int width,
T val )

The constructor creates an array of given width and length height and initialises it to a value

References Init(), m_array_of_rows, m_length_x, and m_length_y.

◆ ~TwoDArray()

template<class T>
virtual dirac::TwoDArray< T >::~TwoDArray ( )
inlinevirtual

Destructor frees the data allocated in the constructor.

◆ TwoDArray() [4/4]

template<class T>
dirac::TwoDArray< T >::TwoDArray ( const TwoDArray< T > & Cpy)

Copy constructor copies data and metadata.

References Init(), m_array_of_rows, m_first_x, m_first_y, m_last_x, m_last_y, m_length_x, m_length_y, and TwoDArray().

Member Function Documentation

◆ CopyContents()

template<class T>
bool dirac::TwoDArray< T >::CopyContents ( TwoDArray< T > & out) const

Copy contents of array into output array retaining the dimensions of the output array. If output array is larger that array then pad with last true value. Return true is copy was successful

References m_array_of_rows, m_length_x, m_length_y, and TwoDArray().

◆ Fill()

template<class T>
void dirac::TwoDArray< T >::Fill ( T val)

Initialise the array with the val provided.

References m_array_of_rows, m_length_x, and m_length_y.

◆ FirstX()

◆ FirstY()

◆ FreeData()

template<class T>
void dirac::TwoDArray< T >::FreeData ( )
private

◆ Init()

template<class T>
void dirac::TwoDArray< T >::Init ( const int height,
const int width )
private

◆ LastX()

◆ LastY()

◆ LengthX()

◆ LengthY()

◆ operator=()

template<class T>
TwoDArray< T > & dirac::TwoDArray< T >::operator= ( const TwoDArray< T > & rhs)

Assignement = assigns both data and metadata.

References FreeData(), Init(), m_array_of_rows, m_first_x, m_first_y, m_last_x, m_last_y, m_length_x, m_length_y, and TwoDArray().

◆ operator[]() [1/2]

template<class T>
element_type & dirac::TwoDArray< T >::operator[] ( const int pos)
inline

Accesses the rows of the arrays, which are returned in the form of pointers to the row data NOT OneDArray objects.

◆ operator[]() [2/2]

template<class T>
const element_type & dirac::TwoDArray< T >::operator[] ( const int pos) const
inline

Accesses the rows of the arrays, which are returned in the form of pointers to the row data NOT OneDArray objects.

◆ Resize()

template<class T>
void dirac::TwoDArray< T >::Resize ( const int height,
const int width )

References FreeData(), Init(), m_length_x, and m_length_y.

Member Data Documentation

◆ m_array_of_rows

template<class T>
element_type* dirac::TwoDArray< T >::m_array_of_rows
private

◆ m_first_x

template<class T>
int dirac::TwoDArray< T >::m_first_x
private

Referenced by Init(), operator=(), and TwoDArray().

◆ m_first_y

template<class T>
int dirac::TwoDArray< T >::m_first_y
private

Referenced by Init(), operator=(), and TwoDArray().

◆ m_last_x

template<class T>
int dirac::TwoDArray< T >::m_last_x
private

Referenced by Init(), operator=(), and TwoDArray().

◆ m_last_y

template<class T>
int dirac::TwoDArray< T >::m_last_y
private

Referenced by Init(), operator=(), and TwoDArray().

◆ m_length_x

template<class T>
int dirac::TwoDArray< T >::m_length_x
private

◆ m_length_y

template<class T>
int dirac::TwoDArray< T >::m_length_y
private

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

© 2004 British Broadcasting Corporation. Dirac code licensed under the Mozilla Public License (MPL) Version 1.1.
HTML documentation generated by Dimitri van Heesch's excellent Doxygen tool.