Nektar++
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Protected Attributes | Friends | List of all members
Nektar::Array< TwoD, const DataType > Class Template Reference

2D array with garbage collection and bounds checking. More...

#include <SharedArray.hpp>

Inheritance diagram for Nektar::Array< TwoD, const DataType >:
Inheritance graph
[legend]

Public Types

typedef boost::multi_array_ref
< DataType, 2 > 
ArrayType
typedef ArrayType::const_reference const_reference
typedef ArrayType::reference reference
typedef ArrayType::index index
typedef ArrayType::const_iterator const_iterator
typedef ArrayType::iterator iterator
typedef ArrayType::element element
typedef ArrayType::size_type size_type

Public Member Functions

 Array ()
 Array (unsigned int dim1Size, unsigned int dim2Size)
 Constructs a 3 dimensional array. The elements of the array are not initialized.
 Array (unsigned int dim1Size, unsigned int dim2Size, const DataType &initValue)
 Array (unsigned int dim1Size, unsigned int dim2Size, const DataType *data)
 Array (const Array< TwoD, const DataType > &rhs)
Array< TwoD, const DataType > & operator= (const Array< TwoD, const DataType > &rhs)
const_iterator begin () const
const_iterator end () const
const_reference operator[] (index i) const
const elementget () const
const elementdata () const
size_type num_dimensions () const
const size_typeshape () const
size_type num_elements () const
size_type GetRows () const
size_type GetColumns () const

Protected Attributes

boost::shared_ptr< ArrayTypem_data

Friends

template<typename T >
bool operator== (const Array< TwoD, T > &, const Array< TwoD, T > &)
bool operator== (const Array< TwoD, NekDouble > &, const Array< TwoD, NekDouble > &)
bool IsEqual (const Array< TwoD, const NekDouble > &, const Array< TwoD, const NekDouble > &, NekDouble)

Detailed Description

template<typename DataType>
class Nektar::Array< TwoD, const DataType >

2D array with garbage collection and bounds checking.

Definition at line 319 of file SharedArray.hpp.

Member Typedef Documentation

template<typename DataType >
typedef boost::multi_array_ref<DataType, 2> Nektar::Array< TwoD, const DataType >::ArrayType

Definition at line 322 of file SharedArray.hpp.

template<typename DataType >
typedef ArrayType::const_iterator Nektar::Array< TwoD, const DataType >::const_iterator

Definition at line 327 of file SharedArray.hpp.

template<typename DataType >
typedef ArrayType::const_reference Nektar::Array< TwoD, const DataType >::const_reference

Definition at line 323 of file SharedArray.hpp.

template<typename DataType >
typedef ArrayType::element Nektar::Array< TwoD, const DataType >::element

Definition at line 330 of file SharedArray.hpp.

template<typename DataType >
typedef ArrayType::index Nektar::Array< TwoD, const DataType >::index

Definition at line 326 of file SharedArray.hpp.

template<typename DataType >
typedef ArrayType::iterator Nektar::Array< TwoD, const DataType >::iterator

Definition at line 328 of file SharedArray.hpp.

template<typename DataType >
typedef ArrayType::reference Nektar::Array< TwoD, const DataType >::reference

Definition at line 324 of file SharedArray.hpp.

template<typename DataType >
typedef ArrayType::size_type Nektar::Array< TwoD, const DataType >::size_type

Definition at line 331 of file SharedArray.hpp.

Constructor & Destructor Documentation

template<typename DataType >
Nektar::Array< TwoD, const DataType >::Array ( )
inline

Reimplemented in Nektar::Array< TwoD, DataType >.

Definition at line 336 of file SharedArray.hpp.

:
m_data(CreateStorage<DataType>(0, 0))
{
}
template<typename DataType >
Nektar::Array< TwoD, const DataType >::Array ( unsigned int  dim1Size,
unsigned int  dim2Size 
)
inline

Constructs a 3 dimensional array. The elements of the array are not initialized.

Reimplemented in Nektar::Array< TwoD, DataType >.

Definition at line 342 of file SharedArray.hpp.

:
m_data(CreateStorage<DataType>(dim1Size, dim2Size))
{
ArrayInitializationPolicy<DataType>::Initialize(m_data->data(), m_data->num_elements());
}
template<typename DataType >
Nektar::Array< TwoD, const DataType >::Array ( unsigned int  dim1Size,
unsigned int  dim2Size,
const DataType &  initValue 
)
inline

Reimplemented in Nektar::Array< TwoD, DataType >.

Definition at line 348 of file SharedArray.hpp.

:
m_data(CreateStorage<DataType>(dim1Size, dim2Size))
{
ArrayInitializationPolicy<DataType>::Initialize(m_data->data(), m_data->num_elements(), initValue);
}
template<typename DataType >
Nektar::Array< TwoD, const DataType >::Array ( unsigned int  dim1Size,
unsigned int  dim2Size,
const DataType *  data 
)
inline

Reimplemented in Nektar::Array< TwoD, DataType >.

Definition at line 354 of file SharedArray.hpp.

:
m_data(CreateStorage<DataType>(dim1Size, dim2Size))
{
ArrayInitializationPolicy<DataType>::Initialize(m_data->data(), m_data->num_elements(), data);
}
template<typename DataType >
Nektar::Array< TwoD, const DataType >::Array ( const Array< TwoD, const DataType > &  rhs)
inline

Definition at line 360 of file SharedArray.hpp.

:
m_data(rhs.m_data)
{
}

Member Function Documentation

template<typename DataType >
const_iterator Nektar::Array< TwoD, const DataType >::begin ( ) const
inline

Definition at line 376 of file SharedArray.hpp.

{ return m_data->begin(); }
template<typename DataType >
const element* Nektar::Array< TwoD, const DataType >::data ( ) const
inline

Definition at line 380 of file SharedArray.hpp.

{ return m_data->data(); }
template<typename DataType >
const_iterator Nektar::Array< TwoD, const DataType >::end ( ) const
inline

Definition at line 377 of file SharedArray.hpp.

{ return m_data->end(); }
template<typename DataType >
const element* Nektar::Array< TwoD, const DataType >::get ( ) const
inline

Definition at line 379 of file SharedArray.hpp.

{ return m_data->data(); }
template<typename DataType >
size_type Nektar::Array< TwoD, const DataType >::GetColumns ( ) const
inline

Definition at line 386 of file SharedArray.hpp.

{ return m_data->shape()[1]; }
template<typename DataType >
size_type Nektar::Array< TwoD, const DataType >::GetRows ( ) const
inline

Definition at line 385 of file SharedArray.hpp.

{ return m_data->shape()[0]; }
template<typename DataType >
size_type Nektar::Array< TwoD, const DataType >::num_dimensions ( ) const
inline

Definition at line 381 of file SharedArray.hpp.

{ return m_data->num_dimensions(); }
template<typename DataType >
size_type Nektar::Array< TwoD, const DataType >::num_elements ( ) const
inline

Definition at line 383 of file SharedArray.hpp.

{ return m_data->num_elements(); }
template<typename DataType >
Array<TwoD, const DataType>& Nektar::Array< TwoD, const DataType >::operator= ( const Array< TwoD, const DataType > &  rhs)
inline

Definition at line 365 of file SharedArray.hpp.

References m_data.

{
m_data = rhs.m_data;
return *this;
}
template<typename DataType >
const_reference Nektar::Array< TwoD, const DataType >::operator[] ( index  i) const
inline

Definition at line 378 of file SharedArray.hpp.

{ return (*m_data)[i]; }
template<typename DataType >
const size_type* Nektar::Array< TwoD, const DataType >::shape ( ) const
inline

Definition at line 382 of file SharedArray.hpp.

{ return m_data->shape(); }

Friends And Related Function Documentation

template<typename DataType >
bool IsEqual ( const Array< TwoD, const NekDouble > &  ,
const Array< TwoD, const NekDouble > &  ,
NekDouble   
)
friend

Definition at line 76 of file ArrayEqualityComparison.cpp.

{
if( (lhs.GetRows() != rhs.GetRows()) ||
(lhs.GetColumns() != rhs.GetColumns()) )
{
return false;
}
if( lhs.data() == rhs.data() )
{
return true;
}
for(unsigned int i = 0; i < lhs.GetRows(); ++i)
{
for(unsigned int j = 0; j < lhs.GetColumns(); ++j)
{
if( fabs(lhs[i][j]-rhs[i][j]) > tol )
{
return false;
}
}
}
return true;
}
template<typename DataType >
template<typename T >
bool operator== ( const Array< TwoD, T > &  ,
const Array< TwoD, T > &   
)
friend
template<typename DataType >
bool operator== ( const Array< TwoD, NekDouble > &  ,
const Array< TwoD, NekDouble > &   
)
friend

Definition at line 71 of file ArrayEqualityComparison.cpp.

{
return IsEqual(lhs,rhs);
}

Member Data Documentation

template<typename DataType >
boost::shared_ptr<ArrayType> Nektar::Array< TwoD, const DataType >::m_data
protected

Definition at line 389 of file SharedArray.hpp.

Referenced by operator=(), and Nektar::operator==().