multi_range: getMeta
This commit is contained in:
parent
cfb3d4919b
commit
49812b18e2
3 changed files with 31 additions and 0 deletions
|
@ -190,6 +190,8 @@ namespace MultiArrayTools
|
|||
template <size_t N>
|
||||
auto get() const -> decltype( *std::get<N>( mSpace ) )&;
|
||||
|
||||
size_t getMeta(const MetaType& metaPos) const;
|
||||
|
||||
template <size_t N>
|
||||
auto getPtr() const -> decltype( std::get<N>( mSpace ) )&;
|
||||
|
||||
|
@ -556,6 +558,12 @@ namespace MultiArrayTools
|
|||
return *std::get<N>(mSpace);
|
||||
}
|
||||
|
||||
template <class... Ranges>
|
||||
size_t MultiRange<Ranges...>::getMeta(const MetaType& metaPos) const
|
||||
{
|
||||
return RPackNum<sizeof...(Ranges)-1>::getMeta(mSpace,metaPos);
|
||||
}
|
||||
|
||||
template <class... Ranges>
|
||||
template <size_t N>
|
||||
auto MultiRange<Ranges...>::getPtr() const -> decltype( std::get<N>( mSpace ) )&
|
||||
|
|
|
@ -405,6 +405,15 @@ namespace MultiArrayHelper
|
|||
RPackNum<N-1>::getTypeNum(res, stp);
|
||||
}
|
||||
|
||||
template <size_t N>
|
||||
template <class... Ranges>
|
||||
inline size_t RPackNum<N>::getMeta(const std::tuple<std::shared_ptr<Ranges>...>& space,
|
||||
const std::tuple<typename Ranges::IndexType::MetaType...>& meta)
|
||||
{
|
||||
return RPackNum<N-1>::getMeta(space,meta) * std::get<N>(space)->size() +
|
||||
std::get<N>(space)->getMeta(std::get<N>(meta));
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <class... Indices>
|
||||
|
@ -699,6 +708,13 @@ namespace MultiArrayHelper
|
|||
res.insert(res.begin(), tn.begin(), tn.end());
|
||||
}
|
||||
|
||||
template <class... Ranges>
|
||||
inline size_t RPackNum<0>::getMeta(const std::tuple<std::shared_ptr<Ranges>...>& space,
|
||||
const std::tuple<typename Ranges::IndexType::MetaType...>& meta)
|
||||
{
|
||||
return std::get<0>(space)->getMeta(std::get<0>(meta));
|
||||
}
|
||||
|
||||
|
||||
template <IndexType IT>
|
||||
template <class Index>
|
||||
|
|
|
@ -180,6 +180,10 @@ namespace MultiArrayHelper
|
|||
|
||||
template <class... Ranges>
|
||||
static inline void getTypeNum(vector<size_t>& res, const std::tuple<std::shared_ptr<Ranges>...>& stp);
|
||||
|
||||
template <class... Ranges>
|
||||
static inline size_t getMeta(const std::tuple<std::shared_ptr<Ranges>...>& space,
|
||||
const std::tuple<typename Ranges::IndexType::MetaType...>& meta);
|
||||
};
|
||||
|
||||
|
||||
|
@ -315,6 +319,9 @@ namespace MultiArrayHelper
|
|||
template <class... Ranges>
|
||||
static inline void getTypeNum(vector<size_t>& res, const std::tuple<std::shared_ptr<Ranges>...>& stp);
|
||||
|
||||
template <class... Ranges>
|
||||
static inline size_t getMeta(const std::tuple<std::shared_ptr<Ranges>...>& space,
|
||||
const std::tuple<typename Ranges::IndexType::MetaType...>& meta);
|
||||
};
|
||||
|
||||
template <IndexType IT>
|
||||
|
|
Loading…
Reference in a new issue