# 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>`

List of all members.

## 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_type & operator[] (const int pos)
    Element access.
- const element_type & operator[] (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_type * m_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

template<class T>

typedef T* dirac::TwoDArray< T >::element_type`[private]`

## Constructor & Destructor Documentation

template<class T>

dirac::TwoDArray< T >::TwoDArray | ( |  | ) | `[inline]`

Default constructor creates an empty array.

template<class T>

dirac::TwoDArray< T >::TwoDArray | ( | const int | height,
|  | const int | width |
| ) |  |  | `[inline]`

The constructor creates an array of given width height.

template<class T>

dirac::TwoDArray< T >::TwoDArray | ( | const int | height,
|  | const int | width,
|  | T | val |
| ) |  |  | `[inline]`

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

References dirac::TwoDArray< T >::Init(), dirac::TwoDArray< T >::m_array_of_rows, dirac::TwoDArray< T >::m_length_x, and dirac::TwoDArray< T >::m_length_y.

template<class T>

virtual dirac::TwoDArray< T >::~TwoDArray | ( |  | ) | `[inline, virtual]`

Destructor frees the data allocated in the constructor.

template<class T>

dirac::TwoDArray< T >::TwoDArray | ( | const TwoDArray< T > & | Cpy | ) | `[inline]`

Copy constructor copies data and metadata.

References dirac::TwoDArray< T >::Init(), dirac::TwoDArray< T >::m_array_of_rows, dirac::TwoDArray< T >::m_first_x, dirac::TwoDArray< T >::m_first_y, dirac::TwoDArray< T >::m_last_x, dirac::TwoDArray< T >::m_last_y, dirac::TwoDArray< T >::m_length_x, and dirac::TwoDArray< T >::m_length_y.

## Member Function Documentation

template<class T>

bool dirac::TwoDArray< T >::CopyContents | ( | TwoDArray< T > & | out | ) | const`[inline]`

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 dirac::TwoDArray< T >::m_array_of_rows, dirac::TwoDArray< T >::m_length_x, and dirac::TwoDArray< T >::m_length_y.

template<class T>

void dirac::TwoDArray< T >::Fill | ( | T | val | ) | `[inline]`

Initialise the array with the val provided.

References dirac::TwoDArray< T >::m_array_of_rows, dirac::TwoDArray< T >::m_length_x, and dirac::TwoDArray< T >::m_length_y.

template<class T>

int dirac::TwoDArray< T >::FirstX | ( |  | ) | const`[inline]`

template<class T>

int dirac::TwoDArray< T >::FirstY | ( |  | ) | const`[inline]`

template<class T >

void dirac::TwoDArray< T >::FreeData | ( |  | ) | `[inline, private]`

References dirac::TwoDArray< T >::m_array_of_rows, dirac::TwoDArray< T >::m_length_x, and dirac::TwoDArray< T >::m_length_y.

Referenced by dirac::TwoDArray< T >::operator=(), dirac::TwoDArray< T >::Resize(), and dirac::TwoDArray< CodeBlock >::~TwoDArray().

template<class T >

void dirac::TwoDArray< T >::Init | ( | const int | height,
|  | const int | width |
| ) |  |  | `[inline, private]`

References dirac::TwoDArray< T >::m_array_of_rows, dirac::TwoDArray< T >::m_first_x, dirac::TwoDArray< T >::m_first_y, dirac::TwoDArray< T >::m_last_x, dirac::TwoDArray< T >::m_last_y, dirac::TwoDArray< T >::m_length_x, and dirac::TwoDArray< T >::m_length_y.

Referenced by dirac::TwoDArray< T >::operator=(), dirac::TwoDArray< T >::Resize(), dirac::TwoDArray< T >::TwoDArray(), and dirac::TwoDArray< CodeBlock >::TwoDArray().

template<class T>

int dirac::TwoDArray< T >::LastX | ( |  | ) | const`[inline]`

template<class T>

int dirac::TwoDArray< T >::LastY | ( |  | ) | const`[inline]`

template<class T>

int dirac::TwoDArray< T >::LengthX | ( |  | ) | const`[inline]`

Referenced by dirac::operator>>().

template<class T>

int dirac::TwoDArray< T >::LengthY | ( |  | ) | const`[inline]`

Referenced by dirac::operator>>().

template<class T>

TwoDArray< T > & dirac::TwoDArray< T >::operator= | ( | const TwoDArray< T > & | rhs | ) | `[inline]`

Assignement = assigns both data and metadata.

References dirac::TwoDArray< T >::FreeData(), dirac::TwoDArray< T >::Init(), dirac::TwoDArray< T >::m_array_of_rows, dirac::TwoDArray< T >::m_first_x, dirac::TwoDArray< T >::m_first_y, dirac::TwoDArray< T >::m_last_x, dirac::TwoDArray< T >::m_last_y, dirac::TwoDArray< T >::m_length_x, and dirac::TwoDArray< T >::m_length_y.

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.

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.

template<class T >

void dirac::TwoDArray< T >::Resize | ( | const int | height,
|  | const int | width |
| ) |  |  | `[inline]`

References dirac::TwoDArray< T >::FreeData(), dirac::TwoDArray< T >::Init(), dirac::TwoDArray< T >::m_length_x, and dirac::TwoDArray< T >::m_length_y.

## Member Data Documentation

template<class T>

element_type* dirac::TwoDArray< T >::m_array_of_rows`[private]`

Referenced by dirac::TwoDArray< T >::CopyContents(), dirac::TwoDArray< T >::Fill(), dirac::TwoDArray< T >::FreeData(), dirac::TwoDArray< T >::Init(), dirac::TwoDArray< T >::operator=(), dirac::TwoDArray< CodeBlock >::operator[](), and dirac::TwoDArray< T >::TwoDArray().

template<class T>

int dirac::TwoDArray< T >::m_first_x`[private]`

Referenced by dirac::TwoDArray< CodeBlock >::FirstX(), dirac::TwoDArray< T >::Init(), dirac::TwoDArray< T >::operator=(), and dirac::TwoDArray< T >::TwoDArray().

template<class T>

int dirac::TwoDArray< T >::m_first_y`[private]`

Referenced by dirac::TwoDArray< CodeBlock >::FirstY(), dirac::TwoDArray< T >::Init(), dirac::TwoDArray< T >::operator=(), and dirac::TwoDArray< T >::TwoDArray().

template<class T>

int dirac::TwoDArray< T >::m_last_x`[private]`

Referenced by dirac::TwoDArray< T >::Init(), dirac::TwoDArray< CodeBlock >::LastX(), dirac::TwoDArray< T >::operator=(), and dirac::TwoDArray< T >::TwoDArray().

template<class T>

int dirac::TwoDArray< T >::m_last_y`[private]`

Referenced by dirac::TwoDArray< T >::Init(), dirac::TwoDArray< CodeBlock >::LastY(), dirac::TwoDArray< T >::operator=(), and dirac::TwoDArray< T >::TwoDArray().

template<class T>

int dirac::TwoDArray< T >::m_length_x`[private]`

Referenced by dirac::TwoDArray< T >::CopyContents(), dirac::TwoDArray< T >::Fill(), dirac::TwoDArray< T >::FreeData(), dirac::TwoDArray< T >::Init(), dirac::TwoDArray< CodeBlock >::LengthX(), dirac::TwoDArray< T >::operator=(), dirac::TwoDArray< T >::Resize(), and dirac::TwoDArray< T >::TwoDArray().

template<class T>

int dirac::TwoDArray< T >::m_length_y`[private]`

Referenced by dirac::TwoDArray< T >::CopyContents(), dirac::TwoDArray< T >::Fill(), dirac::TwoDArray< T >::FreeData(), dirac::TwoDArray< T >::Init(), dirac::TwoDArray< CodeBlock >::LengthY(), dirac::TwoDArray< T >::operator=(), dirac::TwoDArray< T >::Resize(), and dirac::TwoDArray< T >::TwoDArray().

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

- arrays.h

© 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.