SUNphi  1.0
SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 > Class Template Reference

Class to assign a SmET to another one. More...

#include <Assign.hpp>

Inheritance diagram for SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >:
SUNphi::BaseAssigner SUNphi::BinarySmET< Assigner< _Ref1, _Ref2 > > SUNphi::SmET< Assigner< _Ref1, _Ref2 > > SUNphi::BaseBinarySmET SUNphi::BaseSmET SUNphi::BaseSmET

Public Types

using Ref1 = _Ref1
 
using Ref2 = _Ref2
 
using Tk = TkOf< _Ref1 >
 TensorKind of the result is the same of l.h.s
 
using Fund = FundTypeOf< Ref1 >
 Fundamental type is of the same type of the l.h.s.
 
using PosOfRef1TcsInResTk = PosOfTypesNotAsserting< typename Tk::types, typename TK1::types >
 
using PosOfRef1PresTcsInResTk = FilterVariadicClassPos< IsPresent, PosOfRef1TcsInResTk >
 
template<typename MD >
using MergedDelims1 = IntSeqGetElsAfterAppending< TK1::nTypes, false, MD, PosOfRef1TcsInResTk >
 
using PosOfRef2TcsInResTk = PosOfTypesNotAsserting< typename Tk::types, typename TK2::types >
 
using PosOfRef2PresTcsInResTk = FilterVariadicClassPos< IsPresent, PosOfRef2TcsInResTk >
 
template<typename MD >
using MergedDelims2 = IntSeqGetElsAfterAppending< TK2::nTypes, false, MD, PosOfRef2TcsInResTk >
 
using MergeableComps = PairOfTensKindMergeability::template CompsMergeability< typename RemRef< Ref1 >::MergeableComps, typename RemRef< Ref2 >::MergeableComps, PosOfRef1TcsInResTk, PosOfRef2TcsInResTk >
 

Public Member Functions

template<typename TC , typename = ConstrainIsTensComp<TC>>
int compSize () const
 Returns the size of a component.
 
template<typename Tref >
bool isAliasing (const Tref &alias) const
 
decltype(auto) getMaximallyMergedCompsView ()
 
template<typename Is >
decltype(auto) getMergedCompsView () const
 
template<typename... Ts>
decltype(auto) getMergedCompsView (Ts &&...ts)
 
template<typename... Args>
decltype(auto) eval (const Args &...args)
 
template<typename... Args>
decltype(auto) eval (const Args &...args) const
 
template<typename SMET1 , typename SMET2 , typename = EnableIf<isSame<Unqualified<SMET1>,Unqualified<Ref1>>>, typename = EnableIf<isSame<Unqualified<SMET2>,Unqualified<Ref2>>>>
 Assigner (SMET1 &&smet1, SMET2 &&smet2)
 
Assigner< _Ref1, _Ref2 > & operator~ ()
 
const Assigner< _Ref1, _Ref2 > & operator~ () const
 
decltype(auto) operator() (Oth &&...oth)
 
decltype(auto) operator() (Oth &&...oth) const
 

Static Public Member Functions

template<typename Is , typename = EnableIf<isIntSeq<Is>>>
static constexpr void assertMergeableWith ()
 

Public Attributes

Reference< Ref1ref1
 
Reference< Ref2ref2
 

Static Public Attributes

static constexpr bool isStoring = false
 
static constexpr bool isAssignable
 

Detailed Description

template<typename _Ref1, typename _Ref2, typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
class SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >

Class to assign a SmET to another one.

Definition at line 59 of file Assign.hpp.

Member Typedef Documentation

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
using SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::MergeableComps = PairOfTensKindMergeability::template CompsMergeability< typename RemRef<Ref1>::MergeableComps, typename RemRef<Ref2>::MergeableComps, PosOfRef1TcsInResTk, PosOfRef2TcsInResTk>

List of points where the TensKind can be split

Defer the mergeability to the internal implementation

Definition at line 102 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
template<typename MD >
using SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::MergedDelims1 = IntSeqGetElsAfterAppending<TK1 ::nTypes,false,MD,PosOfRef1TcsInResTk>

Merged delimiters of Ref1 according to MD

Definition at line 99 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
template<typename MD >
using SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::MergedDelims2 = IntSeqGetElsAfterAppending<TK2 ::nTypes,false,MD,PosOfRef2TcsInResTk>

Merged delimiters of Ref2 according to MD

Definition at line 100 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
using SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::PosOfRef1PresTcsInResTk = FilterVariadicClassPos<IsPresent,PosOfRef1TcsInResTk>

Position of all the TensComp of Ref1 present in Res Tk

Definition at line 99 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
using SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::PosOfRef1TcsInResTk = PosOfTypesNotAsserting<typename Tk::types,typename TK1 ::types>

Position of all the TensComp of Ref1 in Res Tk

Definition at line 99 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
using SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::PosOfRef2PresTcsInResTk = FilterVariadicClassPos<IsPresent,PosOfRef2TcsInResTk>

Position of all the TensComp of Ref2 present in Res Tk

Definition at line 100 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
using SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::PosOfRef2TcsInResTk = PosOfTypesNotAsserting<typename Tk::types,typename TK2 ::types>

Position of all the TensComp of Ref2 in Res Tk

Definition at line 100 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
using SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::Ref1 = _Ref1

Type of the binding reference 1

Definition at line 87 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
using SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::Ref2 = _Ref2

Type of the binding reference 2

Definition at line 87 of file Assign.hpp.

Constructor & Destructor Documentation

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
template<typename SMET1 , typename SMET2 , typename = EnableIf<isSame<Unqualified<SMET1>,Unqualified<Ref1>>>, typename = EnableIf<isSame<Unqualified<SMET2>,Unqualified<Ref2>>>>
SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::Assigner ( SMET1 &&  smet1,
SMET2 &&  smet2 
)
inlineexplicit

Constructor taking universal reference

Definition at line 127 of file Assign.hpp.

Member Function Documentation

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
template<typename Is , typename = EnableIf<isIntSeq<Is>>>
static constexpr void SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::assertMergeableWith ( )
inlinestatic

Assert that a given merging condition is valid

Definition at line 102 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
template<typename... Args>
decltype(auto) SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::eval ( const Args &...  args)
inline

evaluator for Assigner, evaluating r.h.s

Parameters
argsComponents to get

Definition at line 122 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
template<typename... Args>
decltype(auto) SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::eval ( const Args &...  args) const
inline

const evaluator for Assigner, evaluating r.h.s

Parameters
argsComponents to get

Definition at line 123 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
decltype(auto) SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::getMaximallyMergedCompsView ( )
inline

Returns the maximal possible merged comps view

Definition at line 102 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
template<typename Is >
decltype(auto) SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::getMergedCompsView ( ) const
inline

Merge appropriately the two references and returns their assignement

Definition at line 108 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
template<typename... Ts>
decltype(auto) SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::getMergedCompsView ( Ts &&...  ts)
inline

Overload the getMergedCompsView const method passing all args

Parameters
tsArguments

Definition at line 108 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
template<typename Tref >
bool SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::isAliasing ( const Tref &  alias) const
inline

Forward aliasing check to the references

Definition at line 91 of file Assign.hpp.

decltype(auto) SUNphi::SmET< Assigner< _Ref1, _Ref2 > >::operator() ( Oth &&...  oth)
inlineinherited

Implements the call operator via CRTP

Parameters
othOther quantit

Definition at line 289 of file BaseSmET.hpp.

decltype(auto) SUNphi::SmET< Assigner< _Ref1, _Ref2 > >::operator() ( Oth &&...  oth) const
inlineinherited

Implements the const call operator via CRTP

< Other quantit

Definition at line 290 of file BaseSmET.hpp.

Assigner< _Ref1, _Ref2 > & SUNphi::BinarySmET< Assigner< _Ref1, _Ref2 > >::operator~ ( )
inlineinherited

Cast operator to class T

Definition at line 37 of file BinarySmET.hpp.

const Assigner< _Ref1, _Ref2 > & SUNphi::BinarySmET< Assigner< _Ref1, _Ref2 > >::operator~ ( ) const
inlineinherited

Constant cast operator to class T

Definition at line 37 of file BinarySmET.hpp.

Member Data Documentation

constexpr bool SUNphi::BinarySmET< Assigner< _Ref1, _Ref2 > >::isAssignable
staticinherited

Returns whether this SmET can be the left hand of an assignement

This SmET can never be lhs

Definition at line 35 of file BinarySmET.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
constexpr bool SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::isStoring = false
static

Returns whether this SmET is storing

This SmET is not storing

Definition at line 90 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
Reference<Ref1 > SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::ref1

Reference to the 1 object

Definition at line 87 of file Assign.hpp.

template<typename _Ref1 , typename _Ref2 , typename TK1 = typename RemRef<_Ref1>::Tk, typename TK2 = typename RemRef<_Ref2>::Tk>
Reference<Ref2 > SUNphi::Assigner< _Ref1, _Ref2, TK1, TK2 >::ref2

Reference to the 2 object

Definition at line 87 of file Assign.hpp.


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