SUNphi  1.0
IntSeqInsert.hpp File Reference

Go to the source code of this file.

Typedefs

template<int Ins, typename IS , int IncrAft = 0, bool IgnoreIfPresent = false>
using SUNphi::InsertInOrderedIntSeq = decltype(_insertInOrderedIntSeq< Ins, IncrAft, IgnoreIfPresent >(intSeq<>, typename ConstrainIsOrderedIntSeq< IS >::type{}))
 
template<typename ToIns , typename Is , typename IncrAft = IntSeqOfSameNumb<ToIns::size,0>, bool IgnoreIfPresent = false, typename = EnableIf<isIntSeq<ToIns> and isIntSeq<IncrAft> and ToIns::size==IncrAft::size>>
using SUNphi::InsertIntSeqInOrderedIntSeq = decltype(_InsertIntSeqInOrderedIntSeq< IgnoreIfPresent >(ToIns{}, IncrAft{}, Is{}))
 Insert the elements of the IntSeq Is in an ordered IntSeq.
 

Functions

template<int Ins, int IncrAft, bool IgnoreIfPresent, int... Bef, int HeadAft, int... TailAft>
decltype(auto) SUNphi::_insertInOrderedIntSeq (const IntSeq< Bef... > &, const IntSeq< HeadAft, TailAft... > &)
 
template<int Ins, int IncrAft, bool IgnoreIfPresent>
decltype(auto) SUNphi::_insertInOrderedIntSeq (const IntSeq<> &, const IntSeq<> &)
 Insert the integer Ins in a previously empty IntSeq.
 
template<bool IgnoreIfPresent, int HeadToIns, int... TailToIns, int HeadIncrAft, int... TailIncrAft, typename Is >
decltype(auto) SUNphi::_InsertIntSeqInOrderedIntSeq (const IntSeq< HeadToIns, TailToIns... > &toIns, const IntSeq< HeadIncrAft, TailIncrAft... > &incrAft, const Is &)
 
template<bool IgnoreIfPresent, typename Is >
decltype(auto) SUNphi::_InsertIntSeqInOrderedIntSeq (const IntSeq<> &noIns, const IntSeq<> &noIncrAft, const Is &)
 

Typedef Documentation

template<int Ins, typename IS , int IncrAft = 0, bool IgnoreIfPresent = false>
using SUNphi::InsertInOrderedIntSeq = typedef decltype(_insertInOrderedIntSeq<Ins,IncrAft,IgnoreIfPresent>(intSeq<>,typename ConstrainIsOrderedIntSeq<IS>::type{}))

Insert the integer Ins in an ordered IntSeq

The elements after are incremented by IncrAft. The insertion is ignored if IgnoreIfPresent is true. Examples:

using A=IntSeq<0,1,3>;
using B=InsertInOrderedIntSeq<3,A,10,true>; // IntSeq<0,1,3>
using C=InsertInOrderedIntSeq<3,A,10,false>; // IntSeq<0,1,3,13>

Definition at line 68 of file IntSeqInsert.hpp.

Function Documentation

template<int Ins, int IncrAft, bool IgnoreIfPresent, int... Bef, int HeadAft, int... TailAft>
decltype(auto) SUNphi::_insertInOrderedIntSeq ( const IntSeq< Bef... > &  ,
const IntSeq< HeadAft, TailAft... > &   
)

Insert the integer Ins in order of HeadAft,TailAft...

Technically, the two IntSeq do not have to be ordered, the insertion is done when HeadAft is larger than Ins. The elements after are incremented by IncrAft. The insertion is ignored if IgnoreIfPresent is true.

Definition at line 25 of file IntSeqInsert.hpp.

template<bool IgnoreIfPresent, int HeadToIns, int... TailToIns, int HeadIncrAft, int... TailIncrAft, typename Is >
decltype(auto) SUNphi::_InsertIntSeqInOrderedIntSeq ( const IntSeq< HeadToIns, TailToIns... > &  toIns,
const IntSeq< HeadIncrAft, TailIncrAft... > &  incrAft,
const Is &   
)

Insert the elements of the IntSeq Is in an ordered IntSeq

Internal implementation

Definition at line 81 of file IntSeqInsert.hpp.

template<bool IgnoreIfPresent, typename Is >
decltype(auto) SUNphi::_InsertIntSeqInOrderedIntSeq ( const IntSeq<> &  noIns,
const IntSeq<> &  noIncrAft,
const Is &   
)

Insert the elements of the IntSeq Is in an ordered IntSeq

Internal implementation, empty case

Definition at line 101 of file IntSeqInsert.hpp.