17 #ifndef DOXYGEN_SHOULD_SKIP_THIS 18 template <
int cnt,
int DimSkip,
typename DATA_TYPE,
int RANK>
19 constexpr
typename std::enable_if<( cnt == RANK ), idx_t>::type get_var_size_impl(
20 array::ArrayView<DATA_TYPE, RANK>& field ) {
24 template <
int cnt,
int DimSkip,
typename DATA_TYPE,
int RANK>
25 constexpr
typename std::enable_if<( cnt != RANK ), idx_t>::type get_var_size_impl(
26 array::ArrayView<DATA_TYPE, RANK>& field ) {
27 return ( cnt == DimSkip ) ? get_var_size_impl<cnt + 1, DimSkip>( field )
28 : get_var_size_impl<cnt + 1, DimSkip>( field ) * field.template shape<cnt>();
31 template <
int DimSkip,
typename DATA_TYPE,
int RANK>
32 constexpr
idx_t get_var_size( array::ArrayView<DATA_TYPE, RANK>& field ) {
33 return get_var_size_impl<0, DimSkip>( field );
36 template <
typename DimPolicy>
38 static constexpr
int value = -1;
43 static constexpr
int value = cDim;
46 template <
typename DimPolicy,
typename DATA_TYPE,
int RANK>
49 return std::is_same<DimPolicy, FirstDim>::value
This file contains the ArrayView class, a class that allows to wrap any contiguous raw data into a vi...
Multi-dimensional access to a Array object or Field object.
Definition: GridToolsArrayView.h:32
Definition: ArrayViewDefs.h:28
Definition: ArrayViewUtil.h:37
Contains all atlas classes and methods.
Definition: atlas-grids.cc:33
long idx_t
Integer type for indices in connectivity tables.
Definition: config.h:42
Definition: ArrayViewDefs.h:20