ATLAS Offline Software
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
CxxUtils::Array< N > Class Template Reference

Read-only multidimensional array. More...

#include <Array.h>

Collaboration diagram for CxxUtils::Array< N >:

Public Types

enum  { NDIM = N }
 The number of dimensions of the array. More...
 
typedef ArrayIteratorChooser< N >::const_iterator const_iterator
 The iterator for this container. More...
 

Public Member Functions

 Array ()
 Default constructor. More...
 
 Array (const Arrayrep &rep)
 Constructor. More...
 
bool valid () const
 Test for validity. More...
 
std::vector< unsigned int > shape () const
 Return the array shape. More...
 
unsigned int size (unsigned int dim=0) const
 Return the size of the array along one dimension. More...
 
Array< N-1 > operator[] (unsigned int i) const
 Array indexing. More...
 
const Arrayelt * ptr () const
 Return a direct pointer to array elements. More...
 
const_iterator begin () const
 Return an iterator pointing at the beginning of the container. More...
 
const_iterator end () const
 Return an iterator pointing past the end of the container. More...
 
void write_array (std::ostream &stream) const
 Creates a text representation of the array content. More...
 

Protected Member Functions

 Array (const Arrayrep &rep, unsigned int offs)
 Private constructor for array indexing. More...
 

Protected Attributes

friend WritableArray< N+1 >
 
const Arrayrepm_rep
 Pointer to the representation. More...
 
unsigned int m_offs
 Offset in the Arrayrep's data of the first element of this array. More...
 

Friends

class Array< N+1 >
 
class ArrayIterator< N+1 >
 

Detailed Description

template<unsigned int N>
class CxxUtils::Array< N >

Read-only multidimensional array.

Array<N> provides read-only access to an array. Indexing with [] returns an Array<N-1>. Array<0> is special; it doesn't support indexing, but does support implicit conversion to the element type, Arrayelt. The Array classes do not own their storage (and thus indexing does not require a complete copy). Rather, the complete data for the array are stored in an instance of Arrayrep. An Array holds a pointer to an Arrayrep and an offset into the data.

Definition at line 137 of file Control/CxxUtils/CxxUtils/Array.h.

Member Typedef Documentation

◆ const_iterator

template<unsigned int N>
typedef ArrayIteratorChooser<N>::const_iterator CxxUtils::Array< N >::const_iterator

The iterator for this container.

Definition at line 144 of file Control/CxxUtils/CxxUtils/Array.h.

Member Enumeration Documentation

◆ anonymous enum

template<unsigned int N>
anonymous enum

The number of dimensions of the array.

Enumerator
NDIM 

Definition at line 141 of file Control/CxxUtils/CxxUtils/Array.h.

141 { NDIM = N };

Constructor & Destructor Documentation

◆ Array() [1/3]

template<unsigned int N>
CxxUtils::Array< N >::Array ( )

Default constructor.

This produces an invalid Array that is not associated with an Arrayrep. valid() will return false for such an array. The only other things that it is legal to do with an invalid array are to assign to it (which may make it valid) or request its size with size() (which will always return 0).

◆ Array() [2/3]

template<unsigned int N>
CxxUtils::Array< N >::Array ( const Arrayrep rep)

Constructor.

Parameters
repArrayrep from which to initialize the array.

Initialize an array from an Arrayrep. The new array will represent the entire Arrayrep. The dimension N must match the length of the Arrayrep's shape.

◆ Array() [3/3]

template<unsigned int N>
CxxUtils::Array< N >::Array ( const Arrayrep rep,
unsigned int  offs 
)
protected

Private constructor for array indexing.

Parameters
repArrayrep from which to initialize the array.
offsOffset of the first element of the new array within rep.

This is a private constructor used to make the Array instances returned from an indexing operation.

Member Function Documentation

◆ begin()

template<unsigned int N>
const_iterator CxxUtils::Array< N >::begin ( ) const

Return an iterator pointing at the beginning of the container.

Returns
An iterator pointing at the beginning of the container.

◆ end()

template<unsigned int N>
const_iterator CxxUtils::Array< N >::end ( ) const

Return an iterator pointing past the end of the container.

Returns
An iterator pointing past the end of the container.

◆ operator[]()

template<unsigned int N>
Array<N-1> CxxUtils::Array< N >::operator[] ( unsigned int  i) const

Array indexing.

Parameters
iThe desired index. Must be less than the array size along this dimension.
Returns
The i'th N-1 dimensional subarray in the array.

Note that this operation is not available if N is 0.

◆ ptr()

template<unsigned int N>
const Arrayelt* CxxUtils::Array< N >::ptr ( ) const

Return a direct pointer to array elements.

Returns
A pointer to the first array elements.

Subsequent elements follow in standard C indexing order.

◆ shape()

template<unsigned int N>
std::vector<unsigned int> CxxUtils::Array< N >::shape ( ) const

Return the array shape.

Returns
The array shape.

The array shape is vector with one element for each array dimension, giving the size of the array along that dimension.

◆ size()

template<unsigned int N>
unsigned int CxxUtils::Array< N >::size ( unsigned int  dim = 0) const

Return the size of the array along one dimension.

Parameters
dimThe dimension of the size to retrieve. Must be less than the number of dimensions.
Returns
The array size along dimension dim.

◆ valid()

template<unsigned int N>
bool CxxUtils::Array< N >::valid ( ) const

Test for validity.

Returns
True if the Array is associated with an Arrayrep, false if not.

◆ write_array()

template<unsigned int N>
void CxxUtils::Array< N >::write_array ( std::ostream &  stream) const

Creates a text representation of the array content.

Parameters
std::ostreamwhere the text should be written

Writes the content of the array to a ostream. The sub-arrays are enclosed by square-brackets and separated by commas.

Friends And Related Function Documentation

◆ Array< N+1 >

template<unsigned int N>
friend class Array< N+1 >
friend

Definition at line 246 of file Control/CxxUtils/CxxUtils/Array.h.

◆ ArrayIterator< N+1 >

template<unsigned int N>
friend class ArrayIterator< N+1 >
friend

Definition at line 250 of file Control/CxxUtils/CxxUtils/Array.h.

Member Data Documentation

◆ m_offs

template<unsigned int N>
unsigned int CxxUtils::Array< N >::m_offs
protected

Offset in the Arrayrep's data of the first element of this array.

Definition at line 258 of file Control/CxxUtils/CxxUtils/Array.h.

◆ m_rep

template<unsigned int N>
const Arrayrep* CxxUtils::Array< N >::m_rep
protected

Pointer to the representation.

Null if this instance was created using the default constructor.

Definition at line 255 of file Control/CxxUtils/CxxUtils/Array.h.

◆ WritableArray< N+1 >

template<unsigned int N>
friend CxxUtils::Array< N >::WritableArray< N+1 >
protected

Definition at line 250 of file Control/CxxUtils/CxxUtils/Array.h.


The documentation for this class was generated from the following file:
JetTiledMap::N
@ N
Definition: TiledEtaPhiMap.h:44
CxxUtils::Array::NDIM
@ NDIM
Definition: Control/CxxUtils/CxxUtils/Array.h:141