utilities: metaSlice + map range: mapPos
This commit is contained in:
parent
9489544972
commit
8f25e0aeb0
4 changed files with 36 additions and 0 deletions
|
@ -213,5 +213,20 @@ namespace MultiArrayTools
|
|||
return ma.format(mNSpace);
|
||||
}
|
||||
|
||||
template <class Range>
|
||||
auto metaSlice(const std::shared_ptr<Range>& r)
|
||||
-> ConstSlice<typename Range::value_type,ClassicRange>
|
||||
{
|
||||
ClassicRF crf(r->size());
|
||||
return ConstSlice<typename Range::value_type,ClassicRange>( createExplicit(crf), &r->get(0) );
|
||||
}
|
||||
|
||||
template <class Range, class ORange>
|
||||
auto metaSlice(const std::shared_ptr<Range>& r, const std::shared_ptr<ORange>& ro)
|
||||
-> ConstSlice<typename Range::value_type,ORange>
|
||||
{
|
||||
return ConstSlice<typename Range::value_type,ORange>( ro, &r->get(0) );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -95,6 +95,14 @@ namespace MultiArrayTools
|
|||
auto dynToAnonMove(MultiArray<T,DynamicRange<EC>>&& ma)
|
||||
-> MultiArray<T,AnonymousRange>;
|
||||
|
||||
template <class Range>
|
||||
auto metaSlice(const std::shared_ptr<Range>& r)
|
||||
-> ConstSlice<typename Range::value_type,ClassicRange>;
|
||||
|
||||
template <class Range, class ORange>
|
||||
auto metaSlice(const std::shared_ptr<Range>& r, const std::shared_ptr<ORange>& ro)
|
||||
-> ConstSlice<typename Range::value_type,ORange>;
|
||||
|
||||
template <class IndexType>
|
||||
inline void For(const std::shared_ptr<IndexType>& ind, const std::function<void(void)>& ll)
|
||||
{
|
||||
|
|
|
@ -562,6 +562,17 @@ namespace MultiArrayTools
|
|||
( std::shared_ptr<RangeBase>( RB::mThis )) );
|
||||
}
|
||||
|
||||
template <class MapF, SpaceType XSTYPE, class... Ranges>
|
||||
std::vector<size_t> GenMapRange<MapF,XSTYPE,Ranges...>::mapPos() const
|
||||
{
|
||||
auto i = mMapf.begin();
|
||||
std::vector<size_t> out(i.max());
|
||||
for(; i.pos() != i.max(); ++i){
|
||||
out[i.pos()] = mOutRange->getMeta( mMapf[i] );
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/*
|
||||
template <class MapF, SpaceType XSTYPE, class... Ranges>
|
||||
template <class... ERanges>
|
||||
|
|
|
@ -269,6 +269,8 @@ namespace MultiArrayTools
|
|||
const MultiArray<size_t,ORType>& mapMultiplicity() const;
|
||||
MultiArray<size_t,GenMapRange> explMapMultiplicity() const;
|
||||
|
||||
std::vector<size_t> mapPos() const;
|
||||
|
||||
/*
|
||||
template <class... ERanges>
|
||||
auto cat(const std::shared_ptr<GenMapRange<ERanges...> >& erange)
|
||||
|
|
Loading…
Reference in a new issue