esso::Array< N, Fix< T0 > > Class Template Reference

Multidimensional, efficient array class for large data sets. More...

#include <fix.h>

List of all members.

Public Member Functions

T & operator() (IXTYPE i0) const
T & operator() (IXTYPE i0, IXTYPE i1) const
T & operator() (IXTYPE i0, IXTYPE i1, IXTYPE i2) const
T & operator() (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3) const
T & operator() (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3, IXTYPE i4) const
T & operator() (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3, IXTYPE i4, IXTYPE i5) const
T & operator[] (const Ix< N > &ix) const
constructor
 Array ()
 Array (const Ix< varrank > &len0)
 Array (const Ix< varrank > &len0, const Ix< N > &l0)
 Array (const Array &src)
template<class TypeS>
 Array (const Array< N, TypeS > &src)
 Array (IXTYPE i0)
 Array (IXTYPE i0, IXTYPE i1)
 Array (IXTYPE i0, IXTYPE i1, IXTYPE i2)
 Array (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3)
 Array (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3, IXTYPE i4)
 Array (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3, IXTYPE i4, IXTYPE i5)
const
IXTYPE L (DIMT n) const
IXTYPE U (DIMT n) const
IXTYPE Len (DIMT n) const
IXTYPE Stride (DIMT n) const
T * Origo () const
T * Start () const
const MultiPtr< T > & Data () const
bool IsNull () const
nonconst
bool Dealloc ()
bool Realloc (const Ix< varrank > &len0)
bool Realloc (const Ix< varrank > &len0, const Ix< N > &l0)
bool Realloc (const Ix< varrank > &len0, const Ix< N > &l0, const MultiPtr< T > &data0, T *origo0)
template<class TypeS>
bool Realloc (const Array< N, TypeS > &src)
template<class TypeS>
bool Refer (const Array< N, TypeS > &src)
bool Clone ()
template<class TypeS>
bool Clone (const Array< N, TypeS > &src)
template<class TypeS>
Arrayoperator= (const Array< N, TypeS > &src)
Arrayoperator= (const Array &src)
ArrayShift (DIMT n, IXTYPE i)
ArrayShift (const Ix< N > &ix)
ArrayRestrict (DIMT n, IXTYPE l0, IXTYPE u0)
ArrayRestrict (const Ix< N > &l0, const Ix< N > &u0)
ArrayRestrictL (DIMT n, IXTYPE l0)
ArrayRestrictL (const Ix< N > &l0)
ArrayRestrictU (DIMT n, IXTYPE u0)
ArrayRestrictU (const Ix< N > &u0)


Detailed Description

template<int N, class T0>
class esso::Array< N, Fix< T0 > >

Multidimensional, efficient array class for large data sets.

Use this array for efficient numerical computations or other applications where powerful and efficient arrays are needed for large data sets.

This specialization of Array<N,T> is often more efficient than the default Array type.

The difference between Fix and standard Array is:

As an example of fixing lower index bounds at compile time, Array<3,Fix<int[5]> > declares a three-dimensional array whose lowest dimension is always of length 5. Or even Array<3,Fix<int[5][10]> > where the two lowest ranges are given as template arguments.

There may be two reasons for doing this. First it increases type safety, if the lowest dimension range is known then the compiler should be told about it. Second it may increase the compiler's ability to optimize some loops.

To retrieve a fortran-compatible pointer to first element, use member function Start.


Constructor & Destructor Documentation

template<int N, class T0>
esso::Array< N, Fix< T0 > >::Array (  )  [inline]

Default constructor. Initialize array with no data and index bounds zero

template<int N, class T0>
esso::Array< N, Fix< T0 > >::Array ( const Ix< varrank > &  len0  )  [inline]

Constructor with given number of elements and lower index bound = 0

template<int N, class T0>
esso::Array< N, Fix< T0 > >::Array ( const Ix< varrank > &  len0,
const Ix< N > &  l0 
) [inline]

Constructor with given number of elements and given lower index bound

template<int N, class T0>
esso::Array< N, Fix< T0 > >::Array ( const Array< N, Fix< T0 > > &  src  )  [inline]

Copy constructor Creates a reference to the same memory area as src

template<int N, class T0>
template<class TypeS>
esso::Array< N, Fix< T0 > >::Array ( const Array< N, TypeS > &  src  )  [inline]

Copy constructor from another array type object If possible, create a reference to the same memory area as src. If this is not possible, create a new memory area and copy src 's elements

template<int N, class T0>
esso::Array< N, Fix< T0 > >::Array ( IXTYPE  i0  )  [inline]

1-dimensional array of given length and lower bounds =0 (only compiles for Array<1,T>)

template<int N, class T0>
esso::Array< N, Fix< T0 > >::Array ( IXTYPE  i0,
IXTYPE  i1 
) [inline]

2-dimensional array of given length and lower bounds =0 (only compiles for Array<2,T>)

template<int N, class T0>
esso::Array< N, Fix< T0 > >::Array ( IXTYPE  i0,
IXTYPE  i1,
IXTYPE  i2 
) [inline]

3-dimensional array of given length and lower bounds =0 (only compiles for Array<3,T>)

template<int N, class T0>
esso::Array< N, Fix< T0 > >::Array ( IXTYPE  i0,
IXTYPE  i1,
IXTYPE  i2,
IXTYPE  i3 
) [inline]

4-dimensional array of given length and lower bounds =0 (only compiles for Array<4,T>)

template<int N, class T0>
esso::Array< N, Fix< T0 > >::Array ( IXTYPE  i0,
IXTYPE  i1,
IXTYPE  i2,
IXTYPE  i3,
IXTYPE  i4 
) [inline]

5-dimensional array of given length and lower bounds =0 (only compiles for Array<5,T>)

template<int N, class T0>
esso::Array< N, Fix< T0 > >::Array ( IXTYPE  i0,
IXTYPE  i1,
IXTYPE  i2,
IXTYPE  i3,
IXTYPE  i4,
IXTYPE  i5 
) [inline]

6-dimensional array of given length and lower bounds =0 (only compiles for Array<6,T>)


Member Function Documentation

template<int N, class T0>
IXTYPE esso::Array< N, Fix< T0 > >::L ( DIMT  n  )  const [inline]

Lower index bounds L(n) is the lowest index allowed on dimension n

template<int N, class T0>
IXTYPE esso::Array< N, Fix< T0 > >::U ( DIMT  n  )  const [inline]

Upper index bounds U(n) is one more than the largest index allowed on dimension n

template<int N, class T0>
IXTYPE esso::Array< N, Fix< T0 > >::Len ( DIMT  n  )  const [inline]

Convenience function giving the number of array elements along given dimension. Simply put, Len(n) is U(n) - L(n)

template<int N, class T0>
T* esso::Array< N, Fix< T0 > >::Origo (  )  const [inline]

Pointer to element at index (0,0,...,0) Useful in some rare circumstances. Note that this pointer does not point to a valid element if (0,0,...,0) is outside valid index range.

template<int N, class T0>
T* esso::Array< N, Fix< T0 > >::Start (  )  const [inline]

Pointer to first valid element i.e. element at lowest index bound

Use this function to get pointer to pass to fortran functions.

References esso::Array< N, T0 >::operator[]().

template<int N, class T0>
bool esso::Array< N, Fix< T0 > >::IsNull (  )  const [inline]

Returns:
true if this array has no data allocated

template<int N, class T0>
bool esso::Array< N, Fix< T0 > >::Dealloc (  )  [inline]

Release this object from it's element data and set index bounds to zero

Returns:
always returns true

template<int N, class T0>
bool esso::Array< N, Fix< T0 > >::Realloc ( const Ix< varrank > &  len0  )  [inline]

Release this object from it's element data and allocate a new data set with given size (lower index bounds zero)

Returns:
always returns true

template<int N, class T0>
bool esso::Array< N, Fix< T0 > >::Realloc ( const Ix< varrank > &  len0,
const Ix< N > &  l0 
) [inline]

Release this object from it's element data and allocate a new data set with given size and given lower index bounds

Returns:
always returns true

template<int N, class T0>
template<class TypeS>
bool esso::Array< N, Fix< T0 > >::Realloc ( const Array< N, TypeS > &  src  )  [inline]

Release this object from it's element data and allocate a new, uninitialized data set with index bounds identical to those of src.

Returns:
true if successful or false if operation failed

template<int N, class T0>
template<class TypeS>
bool esso::Array< N, Fix< T0 > >::Refer ( const Array< N, TypeS > &  src  )  [inline]

Reinitialize this object as an identical copy of src (refering to the same element data as src)

Returns:
true if successful or false if operation failed

template<int N, class T0>
bool esso::Array< N, Fix< T0 > >::Clone (  )  [inline]

Same as Clone(*this).

Returns:
always returns true

References esso::Clone().

template<int N, class T0>
template<class TypeS>
bool esso::Array< N, Fix< T0 > >::Clone ( const Array< N, TypeS > &  src  )  [inline]

Release this object from it's element data and allocate a new data set with index bounds identical to those of src. Finally copy the element data from src

Note that this is the same as Realloc followed by element-wise copy.

Returns:
true if successful or false if operation failed

References esso::Array< N, T0 >::IsNull(), and esso::Array< N, T0 >::Realloc().

template<int N, class T0>
template<class TypeS>
Array& esso::Array< N, Fix< T0 > >::operator= ( const Array< N, TypeS > &  src  )  [inline]

Create an identical reference to src data if possible (same as Refer(src) ), otherwise create a new data area and copy src 's elements into it (same as Clone(src))

template<int N, class T0>
Array& esso::Array< N, Fix< T0 > >::operator= ( const Array< N, Fix< T0 > > &  src  )  [inline]

Create an identical reference to src data (same as Refer(src))

References esso::Array< N, T0 >::data, esso::Array< N, T0 >::l, esso::Array< N, T0 >::origo, esso::Array< N, T0 >::stride, and esso::Array< N, T0 >::u.

template<int N, class T0>
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::Shift ( DIMT  n,
IXTYPE  i 
) [inline]

Shift data and valid index range along dimension n

template<int N, class T0>
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::Shift ( const Ix< N > &  ix  )  [inline]

Shift data and valid index range along all dimensions

References esso::Shift().

template<int N, class T0>
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::Restrict ( DIMT  n,
IXTYPE  l0,
IXTYPE  u0 
) [inline]

Restrict valid index range along dimension n . Resulting index range along n is intersection of [l0,u0[ and [L(n),U(n)[.

template<int N, class T0>
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::Restrict ( const Ix< N > &  l0,
const Ix< N > &  u0 
) [inline]

Restrict valid index range along all dimensions

template<int N, class T0>
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::RestrictL ( DIMT  n,
IXTYPE  l0 
) [inline]

Restrict lower index bound along dimension n

template<int N, class T0>
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::RestrictL ( const Ix< N > &  l0  )  [inline]

Restrict lower index bound along all dimensions

template<int N, class T0>
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::RestrictU ( DIMT  n,
IXTYPE  u0 
) [inline]

Restrict upper index bound along dimension n

template<int N, class T0>
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::RestrictU ( const Ix< N > &  u0  )  [inline]

Restrict upper index bound along all dimensions

template<int N, class T0>
T& esso::Array< N, Fix< T0 > >::operator() ( IXTYPE  i0  )  const [inline]

Get 1-dimensional array element at given position

template<int N, class T0>
T& esso::Array< N, Fix< T0 > >::operator() ( IXTYPE  i0,
IXTYPE  i1 
) const [inline]

Get 2-dimensional array element at given position

template<int N, class T0>
T& esso::Array< N, Fix< T0 > >::operator() ( IXTYPE  i0,
IXTYPE  i1,
IXTYPE  i2 
) const [inline]

Get 3-dimensional array element at given position

template<int N, class T0>
T& esso::Array< N, Fix< T0 > >::operator() ( IXTYPE  i0,
IXTYPE  i1,
IXTYPE  i2,
IXTYPE  i3 
) const [inline]

Get 4-dimensional array element at given position

template<int N, class T0>
T& esso::Array< N, Fix< T0 > >::operator() ( IXTYPE  i0,
IXTYPE  i1,
IXTYPE  i2,
IXTYPE  i3,
IXTYPE  i4 
) const [inline]

Get 5-dimensional array element at given position

template<int N, class T0>
T& esso::Array< N, Fix< T0 > >::operator() ( IXTYPE  i0,
IXTYPE  i1,
IXTYPE  i2,
IXTYPE  i3,
IXTYPE  i4,
IXTYPE  i5 
) const [inline]

Get 6-dimensional array element at given position

template<int N, class T0>
T& esso::Array< N, Fix< T0 > >::operator[] ( const Ix< N > &  ix  )  const [inline]

Get element at given position


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

Generated on Mon Feb 23 19:15:47 2009 for Expresso by  doxygen 1.5.6