1#ifndef __FIBER_CREATE_INDIRECTION_ARRAY_HPP
2#define __FIBER_CREATE_INDIRECTION_ARRAY_HPP
5#include "DynamicSize.hpp"
15bool CreateIndirection(
const RefPtr<ChunkBase>&Dst,
const RefPtr<ChunkBase>&Src,
17 index_t start, index_t
end,
int dst_offset = 0,
int src_offset = 0,
size_t ElementArraySize = 1);
20bool CreateIndirection(
const RefPtr<ChunkBase>&Dst,
const RefPtr<ChunkBase>&Src,
22 index_t start, index_t
end,
int dst_offset = 0,
int src_offset = 0,
size_t ElementArraySize = 1);
25template <
class IndexType>
26inline bool CreateIndirectionPush(
const RefPtr<ChunkBase>&Dst,
const RefPtr<ChunkBase>&Src,
28 index_t start, index_t
end,
int dst_offset = 0,
int src_offset = 0,
size_t ElementArraySize = 1)
31 return CreateIndirection(Dst, Src,
34 start,
end, dst_offset, src_offset, ElementArraySize);
37template <
class IndexType>
38inline bool CreateIndirectionPull(
const RefPtr<ChunkBase>&Dst,
const RefPtr<ChunkBase>&Src,
40 index_t start, index_t
end,
int dst_offset = 0,
int src_offset = 0,
size_t ElementArraySize = 1)
43 return CreateIndirection(Dst, Src,
46 start,
end, dst_offset, src_offset, ElementArraySize);
62RefPtr<MemBase>
pullData(
const RefPtr<MemBase>&SourceData,
const RefPtr<ChunkBase>&Indirection,
63 const DynamicSize&DestSize,
size_t ElementArraySize = 1);
66RefPtr<MemBase>
pullData(
const RefPtr<MemBase>&SourceData,
const DynamicSize&DestSize,
67 const RefPtr<ChunkBase>&Indirection,
size_t ElementArraySize = 1)
69 return pullData( SourceData, Indirection, DestSize, ElementArraySize);
73RefPtr<MemBase>
pullData(
const RefPtr<MemBase>&SourceData,
const RefPtr<MemBase>&Indirection,
74 size_t ElementArraySize);
84bool CreateIndirection(RefPtr<ChunkBase>&Dest,
const RefPtr<ChunkBase>&Src,
const std::vector<uint32_t>&indirection_vec,
bool PullData, index_t DestOffset = 0);
87bool CreateIndirection(RefPtr<ChunkBase>&Dest,
const RefPtr<ChunkBase>&Src,
const std::vector<uint64_t>&indirection_vec,
bool PullData, index_t DestOffset = 0);
92bool CreateIndirection(RefPtr<ChunkBase>&Dest,
const RefPtr<ChunkBase>&Src,
93 const RefPtr<ChunkBase>&indirection_vec,
bool PullData, index_t DestOffset = 0);
96bool CreateIndirection(
const RefPtr<MemBase>&Dest,
const RefPtr<MemBase>&Src,
97 const RefPtr<ChunkBase>&indirection_vec,
bool PullData, index_t DestOffset = 0);
101 CreateIndirection(
const RefPtr<MemBase>&Src,
102 const RefPtr<ChunkBase>&indirection_vec,
105 const DynamicSize&DestSize=DynamicSize(),
106 const MemBase::Creator_t&C=
nullptr);
116 CreateIndirection(
const RefPtr<MemBase>&Src,
117 const RefPtr<MemBase>&indirection_vec,
120 const DynamicSize&DestSize=DynamicSize(),
121 const MemBase::Creator_t& =
nullptr);
125 CreateIndirection(
const RefPtr<MemBase>&Src,
128 index_t DestOffset = 0,
129 const index_t DestSize=0,
130 const MemBase::Creator_t& =
nullptr,
131 const bool IsBijectiveIndirection =
true);
135 CreateIndirection(
const RefPtr<MemBase>&Src,
138 index_t DestOffset = 0,
139 const index_t DestSize=0,
140 const MemBase::Creator_t& =
nullptr);
constexpr auto end(_Container &__cont) -> decltype(__cont.end())
RefPtr< MemBase > pullData(const RefPtr< MemBase > &SourceData, const RefPtr< ChunkBase > &Indirection, const DynamicSize &DestSize, size_t ElementArraySize)
Create a MemBase from a given MemBase using indirect indexing of the given one, with the result place...
Definition CreateIndirectionArray.cpp:377
Given a fragmented field of curvilinear coordinates, (3D array of coordinates), build a uniform Grid ...
Definition FAQ.dox:2