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

[legend]

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 =.
- 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.
- const int LengthX () const
    Returns the width.
- const int LengthY () const
    Returns the height.
- const int FirstX () const
    Returns the index of the first element of a row.
- const int FirstY () const
    Returns the index of the first element of a column.
- const int LastX () const
    Returns the index of the last element of a row.
- const 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>

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>

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.

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>

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>

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

Referenced by dirac::operator>>().

template<class T>

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

Referenced by dirac::operator>>().

template<class T>

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

template<class T>

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

template<class T>

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

template<class T>

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

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(), and dirac::TwoDArray< T >::TwoDArray().

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=(), and dirac::TwoDArray< T >::Resize().

## Member Data Documentation

template<class T>

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

Referenced by 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< 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< 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< T >::operator=(), and dirac::TwoDArray< T >::TwoDArray().

template<class T>

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

Referenced by dirac::TwoDArray< T >::FreeData(), dirac::TwoDArray< T >::Init(), 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 >::FreeData(), dirac::TwoDArray< T >::Init(), dirac::TwoDArray< T >::operator=(), dirac::TwoDArray< T >::Resize(), and dirac::TwoDArray< T >::TwoDArray().

template<class T>

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

Referenced by dirac::TwoDArray< T >::FreeData(), dirac::TwoDArray< T >::Init(), dirac::TwoDArray< T >::operator=(), 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.