|
dune-common 2.9.1
|
Loading...
Searching...
No Matches
#include <algorithm>#include <cassert>#include <cmath>#include <complex>#include <cstddef>#include <cstdint>#include <cstdlib>#include <functional>#include <istream>#include <ostream>#include <type_traits>#include <utility>#include <dune/common/classname.hh>#include <dune/common/indices.hh>#include <dune/common/simd/base.hh>#include <dune/common/simd/defaults.hh>#include <dune/common/typetraits.hh>Go to the source code of this file.
Classes | |
| class | Dune::AlignedBase< align, Impl > |
| CRTP base mixin class to check alignment. More... | |
| struct | Dune::IsNumber< AlignedNumberImpl::AlignedNumber< T, align > > |
| class | Dune::AlignedNumberImpl::AlignedNumber< T, align > |
| aligned wrappers for arithmetic types More... | |
| struct | Dune::Simd::Overloads::ScalarType< AlignedNumber< T, align > > |
| struct | Dune::Simd::Overloads::RebindType< U, AlignedNumber< T, align > > |
| struct | Dune::Simd::Overloads::LaneCount< AlignedNumber< T, align > > |
Namespaces | |
| namespace | Dune |
| Dune namespace. | |
| namespace | Dune::AlignedNumberImpl |
| namespace | Dune::Simd |
| Namespace for vectorization interface functions used by library developers. | |
| namespace | Dune::Simd::Overloads |
| Namespace for the overloads and specializations that make up a SIMD implementation. | |
Macros | |
| #define | DUNE_ASSIGN_OP(OP) |
| #define | DUNE_BINARY_OP(OP) |
| #define | DUNE_UNARY_FUNC(name) |
Typedefs | |
| using | Dune::ViolatedAlignmentHandler = std::function< void(const char *, std::size_t, const void *)> |
type of the handler called by violatedAlignment() | |
Variables | |
| static constexpr auto | Dune::debugAlignment = 2*alignof(std::max_align_t) |
| an alignment large enough to trigger alignment errors | |
Macro Definition Documentation
◆ DUNE_ASSIGN_OP
| #define DUNE_ASSIGN_OP | ( | OP | ) |
Value:
class = std::enable_if_t< \
( uAlign <= align && \
sizeof(std::declval<T&>() OP std::declval<U>()) ) \
> > \
AlignedNumber &operator OP(const AlignedNumber<U, uAlign> &u) \
{ \
value_ OP U(u); \
return *this; \
} \
\
template<class U, \
class = std::void_t<decltype(std::declval<T&>() OP \
std::declval<U>())> > \
AlignedNumber &operator OP(const U &u) \
{ \
value_ OP u; \
return *this; \
} \
\
static_assert(true, "Require semicolon to unconfuse editors")
STL namespace.
◆ DUNE_BINARY_OP
| #define DUNE_BINARY_OP | ( | OP | ) |
Value:
class = std::void_t<decltype(std::declval<T>() \
OP std::declval<U>())> > \
decltype(auto) \
operator OP(const AlignedNumber<T, tAlign> &t, \
const AlignedNumber<U, uAlign> &u) \
{ \
/* can't use std::max(); not constexpr */ \
return aligned<(tAlign > uAlign ? tAlign : uAlign)>(T(t) OP U(u)); \
} \
\
class = std::void_t<decltype(std::declval<T>() \
OP std::declval<U>())> > \
decltype(auto) \
operator OP(const T &t, const AlignedNumber<U, uAlign> &u) \
{ \
return aligned<uAlign>(t OP U(u)); \
} \
\
class = std::void_t<decltype(std::declval<T>() \
OP std::declval<U>())> > \
decltype(auto) \
operator OP(const AlignedNumber<T, tAlign> &t, const U &u) \
{ \
return aligned<tAlign>(T(t) OP u); \
} \
\
static_assert(true, "Require semicolon to unconfuse editors")
◆ DUNE_UNARY_FUNC
| #define DUNE_UNARY_FUNC | ( | name | ) |
Value:
template<class T, std::size_t align> \
decltype(auto) name(const AlignedNumber<T, align> &u) \
{ \
using std::name; \
return aligned<align>(name(T(u))); \
} \
static_assert(true, "Require semicolon to unconfuse editors")
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8