STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Friends | List of all members
Concurrency::details::_Array_view_shape< _Rank, _Element_size > Class Template Reference

#include <amp.h>

Inheritance diagram for Concurrency::details::_Array_view_shape< _Rank, _Element_size >:
Concurrency::details::_Array_view_base< _Rank, sizeof(_Value_type)/sizeof(int)> Concurrency::details::_Array_view_base< _Rank, _Element_size > Concurrency::array_view< _Value_type, _Rank > Concurrency::array_view< const _Value_type, _Rank >

Public Member Functions

__declspec(property(get=get_extent)) Concurrency Concurrency::extent< _Rank > get_extent () const __GPU
 The extent of this array or view. More...
 
 ~_Array_view_shape () __GPU
 

Protected Member Functions

int _Base_linear_offset () const __GPU
 
 _Array_view_shape (const _Array_view_shape &_Other) __GPU
 
 _Array_view_shape (const _Array_view_shape &_Other, const Concurrency::index< _Rank > &_Section_origin, const Concurrency::extent< _Rank > &_Section_extent) __GPU
 
 _Array_view_shape (int _Base_linear_offset, const Concurrency::extent< _Rank > &_Array_extent) __GPU
 
 _Array_view_shape (int _Base_linear_offset, const Concurrency::extent< _Rank > &_Array_extent, const Concurrency::index< _Rank > &_Section_origin, const Concurrency::extent< _Rank > &_Section_extent) __GPU
 
_Array_view_shapeoperator= (const _Array_view_shape &_Other) __GPU
 
void _Project0 (int _I, _Array_view_shape< _Rank-1, _Element_size > &_Projected_shape) const __GPU
 
 _Array_view_shape () __GPU
 

Protected Attributes

Concurrency::extent< _Rank > _M_array_extent
 
Concurrency::extent< _Rank > _M_array_multiplier
 
Concurrency::index< _Rank > _M_view_offset
 
int _M_total_linear_offset
 
Concurrency::extent< _Rank > _M_view_extent
 

Private Types

typedef _Array_flatten_helper< _Rank, typename Concurrency::extent< _Rank >::value_type, typename Concurrency::index< _Rank >::value_type > _Flatten_helper
 

Private Member Functions

void _Initialize_multiplier () __GPU
 

Friends

class _Array_view_shape< _Rank+1, _Element_size >
 

Member Typedef Documentation

template<int _Rank, int _Element_size>
typedef _Array_flatten_helper<_Rank, typename Concurrency::extent<_Rank>::value_type, typename Concurrency::index<_Rank>::value_type> Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_Flatten_helper
private

Constructor & Destructor Documentation

template<int _Rank, int _Element_size>
Concurrency::details::_Array_view_shape< _Rank, _Element_size >::~_Array_view_shape ( )
inline
1543 {}
template<int _Rank, int _Element_size>
Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_Array_view_shape ( const _Array_view_shape< _Rank, _Element_size > &  _Other)
inlineprotected
1552  :
1558  {
1559  }
Concurrency::extent< _Rank > _M_array_multiplier
Definition: amp.h:1644
Concurrency::extent< _Rank > _M_view_extent
Definition: amp.h:1647
Concurrency::extent< _Rank > _M_array_extent
Definition: amp.h:1643
int _M_total_linear_offset
Definition: amp.h:1646
Concurrency::index< _Rank > _M_view_offset
Definition: amp.h:1645
template<int _Rank, int _Element_size>
Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_Array_view_shape ( const _Array_view_shape< _Rank, _Element_size > &  _Other,
const Concurrency::index< _Rank > &  _Section_origin,
const Concurrency::extent< _Rank > &  _Section_extent 
)
inlineprotected
1563  :
1566  _M_view_offset(_Other._M_view_offset + _Section_origin),
1567  _M_view_extent(_Section_extent)
1568  {
1569  _Is_valid_section(_Other._M_view_extent, _Section_origin, _Section_extent);
1570 
1572  }
Concurrency::extent< _Rank > _M_array_multiplier
Definition: amp.h:1644
static void _Is_valid_section(const _T2< _Rank > &_Base_extent, const _T1< _Rank > &_Section_origin, const _T2< _Rank > &_Section_extent) __CPU_ONLY
Definition: xxamp.h:1107
int _Base_linear_offset() const __GPU
Definition: amp.h:1546
Concurrency::extent< _Rank > _M_view_extent
Definition: amp.h:1647
Concurrency::extent< _Rank > _M_array_extent
Definition: amp.h:1643
int _M_total_linear_offset
Definition: amp.h:1646
static _T2 func(const _T1 *_Multiplier, const _T2 *_Index) __GPU
Definition: xxamp.h:925
Concurrency::index< _Rank > _M_view_offset
Definition: amp.h:1645
template<int _Rank, int _Element_size>
Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_Array_view_shape ( int  _Base_linear_offset,
const Concurrency::extent< _Rank > &  _Array_extent 
)
inlineprotected
1575  :
1576  _M_array_extent(_Array_extent),
1577  _M_view_offset(index<_Rank>()),
1579  _M_view_extent(_Array_extent)
1580  {
1582  }
int _Base_linear_offset() const __GPU
Definition: amp.h:1546
Concurrency::extent< _Rank > _M_view_extent
Definition: amp.h:1647
void _Initialize_multiplier() __GPU
Definition: amp.h:1635
Concurrency::extent< _Rank > _M_array_extent
Definition: amp.h:1643
int _M_total_linear_offset
Definition: amp.h:1646
Concurrency::index< _Rank > _M_view_offset
Definition: amp.h:1645
template<int _Rank, int _Element_size>
Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_Array_view_shape ( int  _Base_linear_offset,
const Concurrency::extent< _Rank > &  _Array_extent,
const Concurrency::index< _Rank > &  _Section_origin,
const Concurrency::extent< _Rank > &  _Section_extent 
)
inlineprotected
1586  :
1587  _M_array_extent(_Array_extent),
1588  _M_view_offset(_Section_origin),
1590  _M_view_extent(_Section_extent)
1591  {
1592  _Is_valid_section(_Array_extent, _Section_origin, _Section_extent);
1593 
1595  _M_total_linear_offset += (_Element_size * _Flatten_helper::func(_M_array_multiplier._M_base, _M_view_offset._M_base));
1596  }
Concurrency::extent< _Rank > _M_array_multiplier
Definition: amp.h:1644
static void _Is_valid_section(const _T2< _Rank > &_Base_extent, const _T1< _Rank > &_Section_origin, const _T2< _Rank > &_Section_extent) __CPU_ONLY
Definition: xxamp.h:1107
int _Base_linear_offset() const __GPU
Definition: amp.h:1546
Concurrency::extent< _Rank > _M_view_extent
Definition: amp.h:1647
void _Initialize_multiplier() __GPU
Definition: amp.h:1635
Concurrency::extent< _Rank > _M_array_extent
Definition: amp.h:1643
int _M_total_linear_offset
Definition: amp.h:1646
static _T2 func(const _T1 *_Multiplier, const _T2 *_Index) __GPU
Definition: xxamp.h:925
Concurrency::index< _Rank > _M_view_offset
Definition: amp.h:1645
template<int _Rank, int _Element_size>
Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_Array_view_shape ( )
inlineprotected
1630  {
1631  }
Concurrency::extent< _Rank > _M_array_multiplier
Definition: amp.h:1644
Concurrency::extent< _Rank > _M_view_extent
Definition: amp.h:1647
Concurrency::extent< _Rank > _M_array_extent
Definition: amp.h:1643
Concurrency::index< _Rank > _M_view_offset
Definition: amp.h:1645

Member Function Documentation

template<int _Rank, int _Element_size>
int Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_Base_linear_offset ( ) const
inlineprotected
1547  {
1548  return (_M_total_linear_offset - (_Element_size * _Flatten_helper::func(_M_array_multiplier._M_base, _M_view_offset._M_base)));
1549  }
Concurrency::extent< _Rank > _M_array_multiplier
Definition: amp.h:1644
int _M_total_linear_offset
Definition: amp.h:1646
static _T2 func(const _T1 *_Multiplier, const _T2 *_Index) __GPU
Definition: xxamp.h:925
Concurrency::index< _Rank > _M_view_offset
Definition: amp.h:1645
template<int _Rank, int _Element_size>
void Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_Initialize_multiplier ( )
inlineprivate
1636  {
1638  unsigned int _Ext = _M_array_extent[_Rank-1];
1639  details::_Array_init_helper<Concurrency::extent<_Rank>, Concurrency::extent<_Rank>>::func(_Ext, _M_array_multiplier, _M_array_extent);
1640  }
Concurrency::extent< _Rank > _M_array_multiplier
Definition: amp.h:1644
static void _Is_valid_extent(const _T< _Rank > &_Tuple) __CPU_ONLY
Definition: xxamp.h:1203
Concurrency::extent< _Rank > _M_array_extent
Definition: amp.h:1643
The extent type represents an N-dimensional vector of int which specifies the bounds of an N-dimen...
Definition: amp.h:383
_Pre_maybenull_ _Post_z_ char _Pre_maybenull_ _Post_z_ char _Pre_maybenull_ _Post_z_ char _Pre_maybenull_ _Post_z_ char * _Ext
Definition: stdlib.h:854
template<int _Rank, int _Element_size>
void Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_Project0 ( int  _I,
_Array_view_shape< _Rank-1, _Element_size > &  _Projected_shape 
) const
inlineprotected
1609  {
1610  static_assert(_Rank > 1, "Projection is only supported on array_views with a rank of 2 or higher");
1611 
1613 
1614  typedef Concurrency::extent<_Rank-1> _RES_EXT;
1615  typedef Concurrency::extent<_Rank> _SRC_EXT;
1616  typedef Concurrency::index<_Rank-1> _RES_IDX;
1617  typedef Concurrency::index<_Rank> _SRC_IDX;
1619  _Projected_shape._M_array_extent, this->_M_array_extent,
1620  _Projected_shape._M_array_multiplier, this->_M_array_multiplier,
1621  _Projected_shape._M_view_offset, this->_M_view_offset,
1622  _Projected_shape._M_view_extent, this->_M_view_extent);
1623 
1624  _Projected_shape._M_total_linear_offset = _M_total_linear_offset + (_Element_size * _I * _M_array_multiplier[0]);
1625  }
Concurrency::extent< _Rank > _M_array_multiplier
Definition: amp.h:1644
Concurrency::extent< _Rank > _M_view_extent
Definition: amp.h:1647
static void _Is_valid_projection(int _I, const _T1< _Rank > &_Base_extent) __CPU_ONLY
Definition: xxamp.h:1135
static void func(_RES_EXT &_ResArrayExtent, const _SRC_EXT &_SrcArrayExtent, _RES_EXT &_ResArrayMultiplier, const _SRC_EXT &_SrcArrayMultiplier, _RES_IDX &_ResViewOffset, const _SRC_IDX &_SrcViewOffset, _RES_EXT &_ResViewExtent, const _SRC_EXT &_SrcViewExtent) __GPU
Definition: xxamp.h:768
Concurrency::extent< _Rank > _M_array_extent
Definition: amp.h:1643
The extent type represents an N-dimensional vector of int which specifies the bounds of an N-dimen...
Definition: amp.h:383
int _M_total_linear_offset
Definition: amp.h:1646
Define an N-dimensional index point; which may also be viewed as a vector based at the origin in N-sp...
Definition: amp.h:53
Concurrency::index< _Rank > _M_view_offset
Definition: amp.h:1645
template<int _Rank, int _Element_size>
__declspec (property(get=get_extent)) Concurrency Concurrency::extent<_Rank> Concurrency::details::_Array_view_shape< _Rank, _Element_size >::get_extent ( ) const
inline

The extent of this array or view.

1539  {
1540  return _M_view_extent;
1541  }
Concurrency::extent< _Rank > _M_view_extent
Definition: amp.h:1647
template<int _Rank, int _Element_size>
_Array_view_shape& Concurrency::details::_Array_view_shape< _Rank, _Element_size >::operator= ( const _Array_view_shape< _Rank, _Element_size > &  _Other)
inlineprotected
1599  {
1602  _M_view_offset = _Other._M_view_offset;
1604  _M_view_extent = _Other._M_view_extent;
1605  return *this;
1606  }
Concurrency::extent< _Rank > _M_array_multiplier
Definition: amp.h:1644
Concurrency::extent< _Rank > _M_view_extent
Definition: amp.h:1647
Concurrency::extent< _Rank > _M_array_extent
Definition: amp.h:1643
int _M_total_linear_offset
Definition: amp.h:1646
Concurrency::index< _Rank > _M_view_offset
Definition: amp.h:1645

Friends And Related Function Documentation

template<int _Rank, int _Element_size>
friend class _Array_view_shape< _Rank+1, _Element_size >
friend

Member Data Documentation

template<int _Rank, int _Element_size>
Concurrency::extent<_Rank> Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_M_array_extent
protected
template<int _Rank, int _Element_size>
Concurrency::extent<_Rank> Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_M_array_multiplier
protected
template<int _Rank, int _Element_size>
int Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_M_total_linear_offset
protected
template<int _Rank, int _Element_size>
Concurrency::extent<_Rank> Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_M_view_extent
protected
template<int _Rank, int _Element_size>
Concurrency::index<_Rank> Concurrency::details::_Array_view_shape< _Rank, _Element_size >::_M_view_offset
protected

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