ITK  4.9.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Private Attributes | List of all members
VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp > Struct Template Reference

#include <itkVariableLengthVector.h>

Detailed Description

template<typename TExpr1, typename TExpr2, typename TBinaryOp>
struct VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp >

Expression Template for VariableLengthVector. Contains an expression template that models a binary operation between two sub expressions (of type VariableLengthVector, or VariableLengthVectorExpression)

Template Parameters
TExpr1Type of the left sub-expression
TExpr2Type of the right sub-expression
TBinaryOpBinary Operation to apply to both sub-expressions.
Note
We permit to add a VariableLengthVector<float> with a VariableLengthVector<double>, the result will be of type VariableLengthVector<double>.
Warning
Explicitly static casting an expression to a VariableLengthVector<> will defeat the purpose of the optimization implemented here. It's thus best to let the expression automatically adjust to the type with the most precision. Eventually, when assigning to the final destination (a VariableLengthVector<>), a casting on-the-fly could be realized by the assignment operator, or by the copy constructor.
Todo:
Add support for unary operations like operator-().

Definition at line 1162 of file itkVariableLengthVector.h.

Public Types

typedef NumericTraits< ResType >
::RealType 
RealValueType
 
typedef mpl::PromoteType
< typename Details::GetType
< TExpr1 >::Type, typename
Details::GetType< TExpr2 >
::Type >::Type 
ResType
 

Public Member Functions

RealValueType GetNorm () const noexcept
 
RealValueType GetSquaredNorm () const noexcept
 
unsigned int Size () const noexcept
 
 VariableLengthVectorExpression (TExpr1 const &lhs, TExpr2 const &rhs) noexcept
 
ResType operator[] (unsigned int idx) const noexcept
 

Private Attributes

TExpr1 const & m_lhs
 
TExpr2 const & m_rhs
 

Member Typedef Documentation

template<typename TExpr1, typename TExpr2, typename TBinaryOp>
typedef NumericTraits< ResType >::RealType VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp >::RealValueType

Real type of the elements.

Definition at line 1182 of file itkVariableLengthVector.h.

template<typename TExpr1, typename TExpr2, typename TBinaryOp>
typedef mpl::PromoteType< typename Details::GetType<TExpr1>::Type, typename Details::GetType<TExpr2>::Type>::Type VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp >::ResType

Vector type of the Result Expression.

Definition at line 1180 of file itkVariableLengthVector.h.

Constructor & Destructor Documentation

template<typename TExpr1, typename TExpr2, typename TBinaryOp>
VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp >::VariableLengthVectorExpression ( TExpr1 const &  lhs,
TExpr2 const &  rhs 
)
inlinenoexcept

Definition at line 1164 of file itkVariableLengthVector.h.

References itkStaticAssert.

Member Function Documentation

template<typename TExpr1, typename TExpr2, typename TBinaryOp>
RealValueType VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp >::GetNorm ( ) const
noexcept

Returns vector's Euclidean Norm

template<typename TExpr1, typename TExpr2, typename TBinaryOp>
RealValueType VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp >::GetSquaredNorm ( ) const
noexcept

Returns vector's squared Euclidean Norm

template<typename TExpr1, typename TExpr2, typename TBinaryOp>
ResType VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp >::operator[] ( unsigned int  idx) const
inlinenoexcept

Element access operator.

Precondition
idx < Size()

Definition at line 1194 of file itkVariableLengthVector.h.

template<typename TExpr1, typename TExpr2, typename TBinaryOp>
unsigned int VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp >::Size ( void  ) const
inlinenoexcept

Returns the size of the vector expression.

Definition at line 1175 of file itkVariableLengthVector.h.

Member Data Documentation

template<typename TExpr1, typename TExpr2, typename TBinaryOp>
TExpr1 const& VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp >::m_lhs
private

Definition at line 1210 of file itkVariableLengthVector.h.

template<typename TExpr1, typename TExpr2, typename TBinaryOp>
TExpr2 const& VariableLengthVectorExpression< TExpr1, TExpr2, TBinaryOp >::m_rhs
private

Definition at line 1211 of file itkVariableLengthVector.h.


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