STK++ 0.9.13
STK::hidden::Traits< BinaryOperator< FunctorOp, Lhs, Rhs > > Struct Template Reference

Traits class for the BinaryOperator. More...

#include <STK_BinaryOperators.h>

Public Types

enum  {
  binary_op_Kind_ = BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::binary_op_Kind_ , isLhs1D_ = (( Lhs ::structure_ == int(Arrays:: vector_ )))||(( Lhs ::structure_ == int(Arrays:: point_ )))||(( Lhs ::structure_ == int(Arrays:: diagonal_ ))) , isRhs1D_ = (( Rhs ::structure_ == int(Arrays:: vector_ )))||(( Rhs ::structure_ == int(Arrays:: point_ )))||(( Rhs ::structure_ == int(Arrays:: diagonal_ ))) , isRhs2D_ ,
  isLhs2D_ , isRes0D_ = (( Lhs ::structure_ == int(Arrays:: number_ ))) && (( Rhs ::structure_ == int(Arrays:: number_ ))) , isRes1D_ = ((( Lhs ::structure_ == int(Arrays:: vector_ )))||(( Lhs ::structure_ == int(Arrays:: point_ )))) && ((( Rhs ::structure_ == int(Arrays:: vector_ )))||(( Rhs ::structure_ == int(Arrays:: point_ )))) , isRes2D_ = isLhs2D_ && isRhs2D_ ,
  is1D1D_ = isLhs1D_ && isRhs1D_ , structure_ = hidden::BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::structure_ , orient_ = Lhs::orient_ , sizeRows_ = BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::sizeRows_ ,
  sizeCols_ = BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::sizeCols_ , storage_ , useForRows_ = BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::useForRows_ , useForCols_ = BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::useForCols_
}
 
typedef RowOperator< BinaryOperator< FunctorOp, Lhs, Rhs > > Row
 
typedef ColOperator< BinaryOperator< FunctorOp, Lhs, Rhs > > Col
 
typedef FunctorOp::result_type Type
 
typedef FunctorOp::result_type TypeConst
 

Detailed Description

template<typename FunctorOp, typename Lhs, typename Rhs>
struct STK::hidden::Traits< BinaryOperator< FunctorOp, Lhs, Rhs > >

Traits class for the BinaryOperator.

Definition at line 53 of file STK_BinaryOperators.h.

Member Typedef Documentation

◆ Col

◆ Row

◆ Type

typedef FunctorOp::result_type STK::hidden::Traits< BinaryOperator< FunctorOp, Lhs, Rhs > >::Type

Definition at line 90 of file STK_BinaryOperators.h.

◆ TypeConst

typedef FunctorOp::result_type STK::hidden::Traits< BinaryOperator< FunctorOp, Lhs, Rhs > >::TypeConst

Definition at line 91 of file STK_BinaryOperators.h.

Member Enumeration Documentation

◆ anonymous enum

Enumerator
binary_op_Kind_ 
isLhs1D_ 
isRhs1D_ 
isRhs2D_ 
isLhs2D_ 
isRes0D_ 
isRes1D_ 
isRes2D_ 
is1D1D_ 
structure_ 
orient_ 
sizeRows_ 
sizeCols_ 
storage_ 
useForRows_ 
useForCols_ 

Definition at line 55 of file STK_BinaryOperators.h.

56 {
57 // find the kind of binary operator and the Structure using helper class BinaryEltImpl
58 binary_op_Kind_ = BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::binary_op_Kind_,
59
60 isLhs1D_ = EGAL(Lhs,vector_)||EGAL(Lhs,point_)||EGAL(Lhs,diagonal_),
61 isRhs1D_ = EGAL(Rhs,vector_)||EGAL(Rhs,point_)||EGAL(Rhs,diagonal_),
62
63 isRhs2D_ = EGAL(Rhs,array2D_)||EGAL(Rhs,square_)||EGAL(Rhs,diagonal_)
64 ||EGAL(Rhs,lower_triangular_)||EGAL(Rhs,upper_triangular_)
65 ||EGAL(Rhs,symmetric_)||EGAL(Rhs,lower_symmetric_)||EGAL(Rhs,upper_symmetric_),
66 isLhs2D_ = EGAL(Lhs,array2D_)||EGAL(Lhs,square_)||EGAL(Lhs,diagonal_)
67 ||EGAL(Lhs,lower_triangular_)||EGAL(Lhs,upper_triangular_)
68 ||EGAL(Lhs,symmetric_)||EGAL(Lhs,lower_symmetric_)||EGAL(Lhs,upper_symmetric_),
69
70
71 isRes0D_ = EGAL(Lhs,number_) && EGAL(Rhs,number_),
72 isRes1D_ = (EGAL(Lhs,vector_)||EGAL(Lhs,point_)) && (EGAL(Rhs,vector_)||EGAL(Rhs,point_)),
74
76
77 // get the structure from the helper class BinaryEltImpl
78 structure_ = hidden::BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::structure_,
79 orient_ = Lhs::orient_, // preserve the Lhs storage orientation. Could be optimized ?
80 sizeRows_ = BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::sizeRows_,
81 sizeCols_ = BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::sizeCols_,
82 storage_ = (Lhs::storage_ == int(Arrays::dense_)) || (Rhs::storage_ == int(Arrays::dense_))
84
85 useForRows_ = BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::useForRows_,
86 useForCols_ = BinaryEltImpl<FunctorOp, Lhs, Rhs, Lhs::structure_, Rhs::structure_>::useForCols_
87 };
#define EGAL(arg1, arg2)
@ sparse_
sparse matrix/vector/array/expression
@ dense_
dense matrix/vector/array/expression

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