Dune Core Modules (2.6.0)

Range Utilities

Utilities for reduction like operations on ranges. More...

Classes

class  Dune::IntegralRange< T >
 dynamic integer range for use in range-based for loops More...
 
class  Dune::StaticIntegralRange< T, to, from >
 static integer range for use in range-based for loops More...
 

Typedefs

typedef T Dune::IntegralRange< T >::value_type
 type of integers contained in the range
 
typedef Impl::IntegralRangeIterator< T > Dune::IntegralRange< T >::iterator
 type of iterator
 
typedef std::make_unsigned_t< T > Dune::IntegralRange< T >::size_type
 unsigned integer type corresponding to value_type
 
typedef T Dune::StaticIntegralRange< T, to, from >::value_type
 type of integers contained in the range
 
typedef Impl::IntegralRangeIterator< T > Dune::StaticIntegralRange< T, to, from >::iterator
 type of iterator
 
typedef std::make_unsigned_t< T > Dune::StaticIntegralRange< T, to, from >::size_type
 unsigned integer type corresponding to value_type
 
typedef decltype(shift_integer_sequence< from >(std::make_integer_sequence< T, to-from >())) typedef Dune::StaticIntegralRange< T, to, from >::integer_sequence
 type of corresponding std::integer_sequence
 

Functions

template<typename T , typename std::enable_if< is_range< T >::value, int >::type = 0>
T::value_type Dune::max_value (const T &v)
 compute the maximum value over a range More...
 
template<typename T , typename std::enable_if< is_range< T >::value, int >::type = 0>
T::value_type Dune::min_value (const T &v)
 compute the minimum value over a range More...
 
template<typename T , typename std::enable_if< is_range< T >::value, int >::type = 0>
bool Dune::any_true (const T &v)
 similar to std::bitset<N>::any() return true, if any entries is true More...
 
template<typename T , typename std::enable_if< is_range< T >::value, int >::type = 0>
bool Dune::all_true (const T &v)
 similar to std::bitset<N>::all() return true, if any entries is true More...
 
constexpr Dune::IntegralRange< T >::IntegralRange (value_type from, value_type to) noexcept
 construct integer range [from, to)
 
constexpr Dune::IntegralRange< T >::IntegralRange (value_type to) noexcept
 construct integer range [0, to)
 
constexpr Dune::IntegralRange< T >::IntegralRange (std::pair< value_type, value_type > range) noexcept
 construct integer range std::pair
 
constexpr iterator Dune::IntegralRange< T >::begin () const noexcept
 obtain a random-access iterator to the first element
 
constexpr iterator Dune::IntegralRange< T >::end () const noexcept
 obtain a random-access iterator past the last element
 
constexpr value_type Dune::IntegralRange< T >::operator[] (const value_type &i) const noexcept
 access specified element
 
constexpr bool Dune::IntegralRange< T >::empty () const noexcept
 check whether the range is empty
 
constexpr size_type Dune::IntegralRange< T >::size () const noexcept
 obtain number of elements in the range
 
constexpr Dune::StaticIntegralRange< T, to, from >::StaticIntegralRange () noexcept=default
 default constructor
 
constexpr Dune::StaticIntegralRange< T, to, from >::operator IntegralRange< T > () const noexcept
 cast into dynamic IntegralRange
 
constexpr Dune::StaticIntegralRange< T, to, from >::operator integer_sequence () const noexcept
 cast into corresponding std::integer_sequence
 
static constexpr iterator Dune::StaticIntegralRange< T, to, from >::begin () noexcept
 obtain a random-access iterator to the first element
 
static constexpr iterator Dune::StaticIntegralRange< T, to, from >::end () noexcept
 obtain a random-access iterator past the last element
 
template<class U , U i>
constexpr auto Dune::StaticIntegralRange< T, to, from >::operator[] (const std::integral_constant< U, i > &) const noexcept -> std::integral_constant< value_type, from+static_cast< value_type >(i)>
 access specified element (static version)
 
constexpr value_type Dune::StaticIntegralRange< T, to, from >::operator[] (const size_type &i) const noexcept
 access specified element (dynamic version)
 
static constexpr std::integral_constant< bool, from==to > Dune::StaticIntegralRange< T, to, from >::empty () noexcept
 check whether the range is empty
 
static constexpr std::integral_constant< size_type, static_cast< size_type >to) - static_cast< size_type >from) > Dune::StaticIntegralRange< T, to, from >::size () noexcept
 obtain number of elements in the range
 
template<class T , class U , std::enable_if_t< std::is_same< std::decay_t< T >, std::decay_t< U >>::value, int > = 0, std::enable_if_t< std::is_integral< std::decay_t< T >>::value, int > = 0>
static IntegralRange< std::decay_t< T > > Dune::range (T &&from, U &&to) noexcept
 free standing function for setting up a range based for loop over an integer range for (auto i: range(0,10)) // 0,1,2,3,4,5,6,7,8,9 or for (auto i: range(-10,10)) // -10,-9,..,8,9 or for (auto i: range(10)) // 0,1,2,3,4,5,6,7,8,9
 

Detailed Description

Utilities for reduction like operations on ranges.

All these reduction operations work for appropriate ranges and scalar values

Function Documentation

◆ all_true()

template<typename T , typename std::enable_if< is_range< T >::value, int >::type = 0>
bool Dune::all_true ( const T &  v)

similar to std::bitset<N>::all() return true, if any entries is true

overloads for scalar values, ranges, and std::bitset<N> exist

◆ any_true()

template<typename T , typename std::enable_if< is_range< T >::value, int >::type = 0>
bool Dune::any_true ( const T &  v)

similar to std::bitset<N>::any() return true, if any entries is true

overloads for scalar values, ranges, and std::bitset<N> exist

◆ max_value()

template<typename T , typename std::enable_if< is_range< T >::value, int >::type = 0>
T::value_type Dune::max_value ( const T &  v)

compute the maximum value over a range

overloads for scalar values, and ranges exist

◆ min_value()

template<typename T , typename std::enable_if< is_range< T >::value, int >::type = 0>
T::value_type Dune::min_value ( const T &  v)

compute the minimum value over a range

overloads for scalar values, and ranges exist

Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (Apr 23, 22:30, 2024)