Blaze 3.9
Classes | Public Types | Public Member Functions | Static Public Attributes | Private Attributes | List of all members
blaze::DVecGenExpr< VT, OP, TF > Class Template Reference

Expression object for the dense vector generate() function. More...

#include <DVecGenExpr.h>

Inherits blaze::VecGenExpr< DenseVector< DVecGenExpr< VT, OP, TF >, TF > >, and blaze::Computation.

Classes

class  ConstIterator
 Iterator over the elements of the dense vector generator expression. More...
 

Public Types

using This = DVecGenExpr< VT, OP, TF >
 Type of this DVecGenExpr instance.
 
using BaseType = VecGenExpr< DenseVector< This, TF > >
 Base type of this DVecGenExpr instance.
 
using ResultType = RemoveCVRef_t< VT >
 Result type for expression template evaluations.
 
using TransposeType = TransposeType_t< VT >
 Transpose type for expression template evaluations.
 
using ElementType = ElementType_t< VT >
 Resulting element type.
 
using ReturnType = decltype(std::declval< OP >()(std::declval< size_t >()))
 Return type for expression template evaluations.
 
using CompositeType = const DVecGenExpr &
 Data type for composite expression templates.
 
using Operation = OP
 Data type of the custom unary operation.
 
using VectorType = DVecGenExpr< VT, OP, TF >
 Type of the vector.
 

Public Member Functions

 DVecGenExpr (size_t size, OP &&op) noexcept
 Constructor for the DVecGenExpr class. More...
 
ReturnType operator[] (size_t index) const
 Subscript operator for the direct access to the vector elements. More...
 
ReturnType at (size_t index) const
 Checked access to the vector elements. More...
 
ConstIterator begin () const
 Returns an iterator to the first non-zero element of the dense vector. More...
 
ConstIterator end () const
 Returns an iterator just past the last non-zero element of the dense vector. More...
 
size_t size () const noexcept
 Returns the current size/dimension of the vector. More...
 
Operation operation () const
 Returns a copy of the custom unary operation. More...
 
template<typename T >
bool canAlias (const T *alias) const noexcept
 Returns whether the expression can alias with the given address alias. More...
 
template<typename T >
bool isAliased (const T *alias) const noexcept
 Returns whether the expression is aliased with the given address alias. More...
 
bool isAligned () const noexcept
 Returns whether the operands of the expression are properly aligned in memory. More...
 
bool canSMPAssign () const noexcept
 Returns whether the expression can be used in SMP assignments. More...
 
Conversion operators
BLAZE_ALWAYS_INLINE constexpr DVecGenExpr< VT, OP, TF > & operator~ () noexcept
 CRTP-based conversion operation for non-constant vectors. More...
 
BLAZE_ALWAYS_INLINE constexpr const DVecGenExpr< VT, OP, TF > & operator~ () const noexcept
 CRTP-based conversion operation for constant vectors. More...
 
constexpr DVecGenExpr< VT, OP, TF > & operator* () noexcept
 CRTP-based conversion operation for non-constant vectors. More...
 
constexpr const DVecGenExpr< VT, OP, TF > & operator* () const noexcept
 CRTP-based conversion operation for constant vectors. More...
 

Static Public Attributes

static constexpr bool simdEnabled = false
 Compilation switch for the expression template evaluation strategy.
 
static constexpr bool smpAssignable = true
 Compilation switch for the expression template assignment strategy.
 
static constexpr bool transposeFlag
 Transpose flag of the vector.
 

Private Attributes

size_t size_
 The size/dimension of the dense vector generator.
 
Operation op_
 The custom unary operation.
 

Detailed Description

template<typename VT, typename OP, bool TF>
class blaze::DVecGenExpr< VT, OP, TF >

Expression object for the dense vector generate() function.

The DVecGenExpr class represents the compile time expression for the generation of a custom dense vector via the generate() function.

Constructor & Destructor Documentation

◆ DVecGenExpr()

template<typename VT , typename OP , bool TF>
blaze::DVecGenExpr< VT, OP, TF >::DVecGenExpr ( size_t  size,
OP &&  op 
)
inlinenoexcept

Constructor for the DVecGenExpr class.

Parameters
sizeThe size/dimension of the dense vector generator.
opThe custom unary operation.

Member Function Documentation

◆ at()

template<typename VT , typename OP , bool TF>
ReturnType blaze::DVecGenExpr< VT, OP, TF >::at ( size_t  index) const
inline

Checked access to the vector elements.

Parameters
indexAccess index. The index has to be in the range $[0..N-1]$.
Returns
The resulting value.
Exceptions
std::out_of_rangeInvalid vector access index.

◆ begin()

template<typename VT , typename OP , bool TF>
ConstIterator blaze::DVecGenExpr< VT, OP, TF >::begin ( ) const
inline

Returns an iterator to the first non-zero element of the dense vector.

Returns
Iterator to the first non-zero element of the dense vector.

◆ canAlias()

template<typename VT , typename OP , bool TF>
template<typename T >
bool blaze::DVecGenExpr< VT, OP, TF >::canAlias ( const T *  alias) const
inlinenoexcept

Returns whether the expression can alias with the given address alias.

Parameters
aliasThe alias to be checked.
Returns
true in case the expression can alias, false otherwise.

◆ canSMPAssign()

template<typename VT , typename OP , bool TF>
bool blaze::DVecGenExpr< VT, OP, TF >::canSMPAssign ( ) const
inlinenoexcept

Returns whether the expression can be used in SMP assignments.

Returns
true in case the expression can be used in SMP assignments, false if not.

◆ end()

template<typename VT , typename OP , bool TF>
ConstIterator blaze::DVecGenExpr< VT, OP, TF >::end ( ) const
inline

Returns an iterator just past the last non-zero element of the dense vector.

Returns
Iterator just past the last non-zero element of the dense vector.

◆ isAliased()

template<typename VT , typename OP , bool TF>
template<typename T >
bool blaze::DVecGenExpr< VT, OP, TF >::isAliased ( const T *  alias) const
inlinenoexcept

Returns whether the expression is aliased with the given address alias.

Parameters
aliasThe alias to be checked.
Returns
true in case an alias effect is detected, false otherwise.

◆ isAligned()

template<typename VT , typename OP , bool TF>
bool blaze::DVecGenExpr< VT, OP, TF >::isAligned ( ) const
inlinenoexcept

Returns whether the operands of the expression are properly aligned in memory.

Returns
true in case the operands are aligned, false if not.

◆ operation()

template<typename VT , typename OP , bool TF>
Operation blaze::DVecGenExpr< VT, OP, TF >::operation ( ) const
inline

Returns a copy of the custom unary operation.

Returns
A copy of the custom unary operation.

◆ operator*() [1/2]

BLAZE_ALWAYS_INLINE constexpr const DVecGenExpr< VT, OP, TF > & blaze::Vector< DVecGenExpr< VT, OP, TF > , TF >::operator*
constexprnoexceptinherited

CRTP-based conversion operation for constant vectors.

Returns
Const reference of the actual type of the vector.

This operator performs the CRTP-based type-safe downcast to the actual type VT of the vector. It will return a constant reference to the actual type VT.

◆ operator*() [2/2]

BLAZE_ALWAYS_INLINE constexpr DVecGenExpr< VT, OP, TF > & blaze::Vector< DVecGenExpr< VT, OP, TF > , TF >::operator*
constexprnoexceptinherited

CRTP-based conversion operation for non-constant vectors.

Returns
Mutable reference of the actual type of the vector.

This operator performs the CRTP-based type-safe downcast to the actual type VT of the vector. It will return a mutable reference to the actual type VT.

◆ operator[]()

template<typename VT , typename OP , bool TF>
ReturnType blaze::DVecGenExpr< VT, OP, TF >::operator[] ( size_t  index) const
inline

Subscript operator for the direct access to the vector elements.

Parameters
indexAccess index. The index has to be in the range $[0..N-1]$.
Returns
The resulting value.

◆ operator~() [1/2]

BLAZE_ALWAYS_INLINE constexpr const DVecGenExpr< VT, OP, TF > & blaze::Vector< DVecGenExpr< VT, OP, TF > , TF >::operator~
constexprnoexceptinherited

CRTP-based conversion operation for constant vectors.

Returns
Constant reference of the actual type of the vector.

This operator performs the CRTP-based type-safe downcast to the actual type VT of the vector. It will return a constant reference to the actual type VT.

◆ operator~() [2/2]

BLAZE_ALWAYS_INLINE constexpr DVecGenExpr< VT, OP, TF > & blaze::Vector< DVecGenExpr< VT, OP, TF > , TF >::operator~
constexprnoexceptinherited

CRTP-based conversion operation for non-constant vectors.

Returns
Mutable reference of the actual type of the vector.

This operator performs the CRTP-based type-safe downcast to the actual type VT of the vector. It will return a mutable reference to the actual type VT.

◆ size()

template<typename VT , typename OP , bool TF>
size_t blaze::DVecGenExpr< VT, OP, TF >::size ( ) const
inlinenoexcept

Returns the current size/dimension of the vector.

Returns
The size of the vector.

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