PSCF v1.4.0
Util::Array< Data > Class Template Reference

Array container class template. More...

#include <Array.h>

Inheritance diagram for Util::Array< Data >:
Util::DArray< System::WField > Util::DArray< Util::RingBuffer< Data > > Pscf::Prdc::Cpu::FftwDArray< Data > Util::DArray< Data > Util::DRArray< Data > Util::RArray< Data > Pscf::HostDArray< cudaComplex > Pscf::HostDArray< T > Pscf::HostDArray< Data > Pscf::Prdc::Cuda::HostDArrayComplex

Public Member Functions

int capacity () const
 Return allocated size.
void begin (ArrayIterator< Data > &iterator)
 Set an iterator to begin this Array.
void begin (ConstArrayIterator< Data > &iterator) const
 Set a const iterator to begin this Array.
Data & operator[] (int i)
 Get an element by non-const reference.
Data const & operator[] (int i) const
 Get an element by const reference.
Data * cArray ()
 Return a pointer to the underlying C array.
Data const * cArray () const
 Return pointer to const to the underlying C array.

Protected Member Functions

 Array ()
 Constructor (protected to provent direct instantiation).
 ~Array ()
 Destructor (protected to prevent direct destruction).

Protected Attributes

Data * data_
 Pointer to an array of Data elements.
int capacity_
 Allocated size of the data_ array.

Detailed Description

template<typename Data>
class Util::Array< Data >

Array container class template.

An Array is a sequence that supports random access via an overloaded operator [], and that wraps a dynamically allocated C array.

The Array class template is designed to be used as only as a base class, and does not provide functions for memory management. Specializations of the DArray, RArray, and DRArray class templates are derived from corresponding specializations of the Array template. The Array template has a protected constructor and a protected destructor. As a result, an Array can only be created as part of an instance of a derived class, and cannot be destroyed via a base class pointer or reference.

When compiled in debug mode (i.e., when NDEBUG is not defined) the subscript operator [] checks the validity of the element index.

Definition at line 39 of file Array.h.

Constructor & Destructor Documentation

◆ Array()

template<typename Data>
Util::Array< Data >::Array ( )
protected

Constructor (protected to provent direct instantiation).

Definition at line 128 of file Array.h.

References capacity_, and data_.

◆ ~Array()

template<typename Data>
Util::Array< Data >::~Array ( )
protected

Destructor (protected to prevent direct destruction).

Definition at line 137 of file Array.h.

Member Function Documentation

◆ capacity()

template<typename Data>
int Util::Array< Data >::capacity ( ) const
inline

Return allocated size.

Returns
number of elements allocated in array

Definition at line 144 of file Array.h.

References capacity_.

Referenced by Pscf::VecOp::absV(), Pscf::VecOp::addEqS(), Pscf::VecOp::addEqS(), Pscf::VecOp::addEqV(), Pscf::VecOp::addEqVc(), Pscf::VecOp::addVcS(), Pscf::VecOp::addVcVc(), Pscf::VecOp::addVcVcS(), Pscf::VecOp::addVcVcVc(), Pscf::VecOp::addVS(), Pscf::VecOp::addVS(), Pscf::VecOp::addVS(), Pscf::VecOp::addVV(), Pscf::VecOp::addVV(), Pscf::VecOp::addVV(), Pscf::Prdc::Cpu::FftwDArray< Data >::allocate(), Pscf::Rp::Mixture< D, Types< D > >::allocate(), Util::ArraySet< Data >::allocate(), Util::DArray< Data >::allocate(), Util::DRaggedMatrix< Data >::allocate(), Util::DRArray< Data >::allocate(), Util::DRArray< Data >::associate(), Util::RArray< Data >::associate(), Util::RArray< Data >::associate(), Pscf::Prdc::checkAllocateFields(), Pscf::FieldComparison< FT >::compare(), Pscf::Prdc::Cpu::CFieldComparison< D >::compare(), Pscf::Prdc::Cpu::RFieldDftComparison< D >::compare(), Pscf::Cpc::Solvent< D >::compute(), Pscf::R1d::Mixture::compute(), Pscf::Correlation::Polymer< WT >::computeOmega(), Pscf::Correlation::Mixture< WT >::computeOmegaTotal(), Pscf::Correlation::Mixture< RealT >::computeOmegaTotal(), Pscf::Correlation::Polymer< WT >::computeOmegaTotal(), Pscf::Rp::IntraCorrelation< D, T >::computeOmegaTotal(), Pscf::Rp::BinaryStructureFactor< D, T >::computeS(), Pscf::Rpg::FieldIo< D >::convertBasisToKGrid(), Pscf::Rp::FieldIo< D, RFT, KFT, FFT >::convertBasisToRGrid(), Pscf::Rpg::FieldIo< D >::convertKGridToBasis(), Pscf::Cp::FieldIo< D, CFT, FFT >::convertKGridToRGrid(), Pscf::Rp::FieldIo< D, RFT, KFT, FFT >::convertKGridToRGrid(), Pscf::Cp::FieldIo< D, CFT, FFT >::convertRGridToKGrid(), Pscf::Rp::FieldIo< D, RFT, KFT, FFT >::convertRGridToKGrid(), Pscf::Prdc::copyArrays(), Util::DArray< Data >::DArray(), Pscf::DeviceArray< Data >::DeviceArray(), Util::Distribution::Distribution(), Pscf::VecOp::divEqS(), Pscf::VecOp::divEqS(), Pscf::VecOp::divEqS(), Pscf::VecOp::divEqV(), Pscf::VecOp::divEqV(), Pscf::VecOp::divEqV(), Pscf::VecOp::divEqVc(), Pscf::VecOp::divSV(), Pscf::VecOp::divVS(), Pscf::VecOp::divVS(), Pscf::VecOp::divVS(), Pscf::VecOp::divVV(), Pscf::VecOp::divVV(), Pscf::VecOp::divVV(), Util::DRArray< Data >::DRArray(), Pscf::VecOp::eqS(), Pscf::VecOp::eqS(), Pscf::VecOp::eqS(), Pscf::VecOp::eqV(), Pscf::VecOp::eqV(), Pscf::VecOp::eqV(), Pscf::VecOp::eqV(), Pscf::VecOp::eqV(), Pscf::VecOp::eqV(), Pscf::VecOp::eqV(), Pscf::VecOp::eqV(), Pscf::VecOp::eqVPair(), Pscf::VecOp::expV(), Pscf::VecOp::expV(), Pscf::VecOp::expVc(), Pscf::R1d::FieldIo::extend(), Pscf::Prdc::Cpu::FFT< D >::forwardTransform(), Pscf::Prdc::Cpu::FFT< D >::forwardTransform(), Pscf::HostDArray< Data >::HostDArray(), Pscf::HostDArray< cudaComplex >::HostDArray(), Pscf::Prdc::Cuda::HostDArrayComplex::HostDArrayComplex(), Pscf::VecOp::imag(), Pscf::R1d::Domain::innerProduct(), Pscf::Reduce::innerProduct(), Pscf::Prdc::inspectArrays(), Pscf::Prdc::inspectFields(), Util::IntDistribution::IntDistribution(), Pscf::Prdc::Cpu::FFT< D >::inverseTransform(), Pscf::Prdc::Cpu::FFT< D >::inverseTransformSafe(), Pscf::Prdc::Cpu::FFT< D >::inverseTransformUnsafe(), Pscf::Reduce::max(), Pscf::Reduce::max(), Pscf::Reduce::maxAbs(), Pscf::Reduce::min(), Pscf::Reduce::min(), Pscf::Reduce::minAbs(), Pscf::VecOp::mulEqS(), Pscf::VecOp::mulEqS(), Pscf::VecOp::mulEqS(), Pscf::VecOp::mulEqV(), Pscf::VecOp::mulEqV(), Pscf::VecOp::mulEqV(), Pscf::VecOp::mulEqVPair(), Pscf::VecOp::mulVS(), Pscf::VecOp::mulVS(), Pscf::VecOp::mulVS(), Pscf::VecOp::mulVV(), Pscf::VecOp::mulVV(), Pscf::VecOp::mulVV(), Pscf::VecOp::mulVVPair(), Pscf::CpuVecRandom::normal(), Pscf::DeviceArray< Data >::operator=(), Pscf::Prdc::Cuda::CField< D >::operator=(), Pscf::Prdc::Cuda::RField< D >::operator=(), Pscf::Prdc::Cuda::RFieldDft< D >::operator=(), Util::DArray< Data >::operator=(), Util::DArray< Data >::operator=(), Util::Distribution::operator=(), Util::DRArray< Data >::operator=(), Util::DRArray< Data >::operator=(), Util::IntDistribution::operator=(), Util::Polynomial< T >::Polynomial(), Util::RArray< Data >::RArray(), Pscf::Prdc::readBasisData(), Pscf::Prdc::readBasisData(), Pscf::Prdc::readCFieldsData(), Pscf::Rp::FieldIo< D, RFT, KFT, FFT >::readFieldBasis(), Pscf::R1d::FieldIo::readFields(), Pscf::Prdc::readRGridData(), Pscf::VecOp::real(), Util::DArray< Data >::reallocate(), Pscf::R1d::FieldIo::remesh(), Pscf::Prdc::replicateUnitCell(), Pscf::Rp::FieldIo< D, RFT, KFT, FFT >::scaleFieldBasis(), Pscf::Rpc::FieldIo< D >::scaleFieldRGrid(), Pscf::Rp::FieldIo< D, RFT, KFT, FFT >::scaleFieldsRGrid(), Pscf::Prdc::Cpu::FftwDArray< Data >::serialize(), Util::DArray< Data >::serialize(), Pscf::Rp::WFields< D, RFT, FIT >::setBasis(), Pscf::Cp::Mixture< D, Polymer< D >, Solvent< D >, Types< D > >::setFieldIo(), Pscf::Rp::WFields< D, RFT, FIT >::setRGrid(), Pscf::Correlation::Polymer< WT >::setup(), Pscf::Prdc::Cpu::FFT< D >::setup(), Pscf::Rp::ShiftMove< D, T >::shiftField(), Pscf::LuSolver::solve(), Pscf::R1d::Domain::spatialAverage(), Pscf::VecOp::sqAbsV(), Pscf::VecOp::sqSqAbsV(), Pscf::VecOp::sqV(), Pscf::VecOp::sqV(), Pscf::Cpc::Block< D >::stepBondBead(), Pscf::Rpc::Block< D >::stepBondBead(), Pscf::Cpc::Block< D >::stepFieldBead(), Pscf::Rpc::Block< D >::stepFieldBead(), Pscf::Cpc::Block< D >::stepHalfBondBead(), Pscf::Rpc::Block< D >::stepHalfBondBead(), Pscf::Cpc::Block< D >::stepThread(), Pscf::Rpc::Block< D >::stepThread(), Pscf::Rpg::FilmFieldGenExt< D >::stress(), Pscf::VecOp::subEqS(), Pscf::VecOp::subEqS(), Pscf::VecOp::subEqS(), Pscf::VecOp::subEqV(), Pscf::VecOp::subEqV(), Pscf::VecOp::subEqV(), Pscf::VecOp::subVS(), Pscf::VecOp::subVS(), Pscf::VecOp::subVS(), Pscf::VecOp::subVV(), Pscf::VecOp::subVV(), Pscf::VecOp::subVV(), Pscf::Reduce::sum(), Pscf::Reduce::sum(), Pscf::Reduce::sum(), Pscf::Reduce::sum(), Pscf::Reduce::sumProduct(), Pscf::Reduce::sumSq(), Pscf::Reduce::sumSq(), Pscf::CpuVecRandom::uniform(), Pscf::CpuVecRandom::uniform(), Pscf::Prdc::writeBasisData(), Pscf::Prdc::writeBasisData(), Pscf::Prdc::writeCFieldsData(), Pscf::R1d::FieldIo::writeField(), Pscf::Rp::FieldIo< D, RFT, KFT, FFT >::writeFieldBasis(), Pscf::R1d::FieldIo::writeFields(), and Pscf::Prdc::writeRGridData().

◆ begin() [1/2]

template<typename Data>
void Util::Array< Data >::begin ( ArrayIterator< Data > & iterator)
inline

Set an iterator to begin this Array.

On return, iterator points to the first element of the array, and the iterator end pointer is set to one past the last element.

Parameters
iteratorArrayIterator, initialized on output

Definition at line 151 of file Array.h.

References capacity_, data_, Util::ArrayIterator< Data >::setCurrent(), and Util::ArrayIterator< Data >::setEnd().

◆ begin() [2/2]

template<typename Data>
void Util::Array< Data >::begin ( ConstArrayIterator< Data > & iterator) const
inline

Set a const iterator to begin this Array.

On return, iterator points to the first element of the array, and the iterator end pointer is set to one past the last element.

Parameters
iteratorConstArrayIterator, initialized on output

Definition at line 163 of file Array.h.

References capacity_, data_, Util::ConstArrayIterator< Data >::setCurrent(), and Util::ConstArrayIterator< Data >::setEnd().

◆ operator[]() [1/2]

template<typename Data>
Data & Util::Array< Data >::operator[] ( int i)
inline

Get an element by non-const reference.

Mimic C-array subscripting.

Parameters
iarray index
Returns
non-const reference to element i

Definition at line 175 of file Array.h.

References capacity_, and data_.

◆ operator[]() [2/2]

template<typename Data>
Data const & Util::Array< Data >::operator[] ( int i) const
inline

Get an element by const reference.

Mimics C-array subscripting.

Parameters
iarray index
Returns
const reference to element i

Definition at line 187 of file Array.h.

References capacity_, and data_.

◆ cArray() [1/2]

◆ cArray() [2/2]

template<typename Data>
Data const * Util::Array< Data >::cArray ( ) const
inline

Return pointer to const to the underlying C array.

Definition at line 206 of file Array.h.

References data_.

Member Data Documentation

◆ data_

◆ capacity_


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