FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
CreateIndirectionArray.hpp
1#ifndef __FIBER_CREATE_INDIRECTION_ARRAY_HPP
2#define __FIBER_CREATE_INDIRECTION_ARRAY_HPP
3
4#include "MemBase.hpp"
5#include "DynamicSize.hpp"
6
7
8namespace Fiber
9{
10
12
13
14extern FIELD_API
15bool CreateIndirection(const RefPtr<ChunkBase>&Dst, const RefPtr<ChunkBase>&Src,
16 const std::vector<uint32_t>*indirection_dst,const std::vector<uint32_t>*indirection_src,
17 index_t start, index_t end, int dst_offset = 0, int src_offset = 0, size_t ElementArraySize = 1);
18
19extern FIELD_API
20bool CreateIndirection(const RefPtr<ChunkBase>&Dst, const RefPtr<ChunkBase>&Src,
21 const std::vector<uint64_t>*indirection_dst,const std::vector<uint64_t>*indirection_src,
22 index_t start, index_t end, int dst_offset = 0, int src_offset = 0, size_t ElementArraySize = 1);
23
24
25template <class IndexType>
26inline bool CreateIndirectionPush(const RefPtr<ChunkBase>&Dst, const RefPtr<ChunkBase>&Src,
27 const std::vector<IndexType>&indirection_dst,
28 index_t start, index_t end, int dst_offset = 0, int src_offset = 0, size_t ElementArraySize = 1)
29{
30
31 return CreateIndirection(Dst, Src,
32 &indirection_dst,
33 static_cast<const std::vector<IndexType>*>(nullptr),
34 start, end, dst_offset, src_offset, ElementArraySize);
35}
36
37template <class IndexType>
38inline bool CreateIndirectionPull(const RefPtr<ChunkBase>&Dst, const RefPtr<ChunkBase>&Src,
39 const std::vector<IndexType>&indirection_src,
40 index_t start, index_t end, int dst_offset = 0, int src_offset = 0, size_t ElementArraySize = 1)
41{
42
43 return CreateIndirection(Dst, Src,
44 static_cast<const std::vector<IndexType>*>(nullptr),
45 &indirection_src,
46 start, end, dst_offset, src_offset, ElementArraySize);
47}
48
49
61extern FIELD_API
62RefPtr<MemBase> pullData(const RefPtr<MemBase>&SourceData, const RefPtr<ChunkBase>&Indirection,
63 const DynamicSize&DestSize, size_t ElementArraySize = 1);
64
65inline
66RefPtr<MemBase> pullData(const RefPtr<MemBase>&SourceData, const DynamicSize&DestSize,
67 const RefPtr<ChunkBase>&Indirection, size_t ElementArraySize = 1)
68{
69 return pullData( SourceData, Indirection, DestSize, ElementArraySize);
70}
71
72extern FIELD_API
73RefPtr<MemBase> pullData(const RefPtr<MemBase>&SourceData, const RefPtr<MemBase>&Indirection,
74 size_t ElementArraySize);
75
76
77//extern FIELD_API
78//RefPtr<MemBase> pullData(const RefPtr<MemBase>&SourceData, const RefPtr<MemBase>&Indirection);
79
80
81
82#if 0
83extern FIELD_API
84bool CreateIndirection(RefPtr<ChunkBase>&Dest, const RefPtr<ChunkBase>&Src, const std::vector<uint32_t>&indirection_vec, bool PullData, index_t DestOffset = 0);
85
86extern FIELD_API
87bool CreateIndirection(RefPtr<ChunkBase>&Dest, const RefPtr<ChunkBase>&Src, const std::vector<uint64_t>&indirection_vec, bool PullData, index_t DestOffset = 0);
88
89
90
91extern FIELD_API
92bool CreateIndirection(RefPtr<ChunkBase>&Dest, const RefPtr<ChunkBase>&Src,
93 const RefPtr<ChunkBase>&indirection_vec, bool PullData, index_t DestOffset = 0);
94
95extern FIELD_API
96bool CreateIndirection(const RefPtr<MemBase>&Dest, const RefPtr<MemBase>&Src,
97 const RefPtr<ChunkBase>&indirection_vec, bool PullData, index_t DestOffset = 0);
98
99extern FIELD_API
100RefPtr<MemBase>
101 CreateIndirection(const RefPtr<MemBase>&Src,
102 const RefPtr<ChunkBase>&indirection_vec,
103 bool PullData,
104 index_t DestOffset,
105 const DynamicSize&DestSize=DynamicSize(),
106 const MemBase::Creator_t&C=nullptr);
107
108
114extern FIELD_API
115RefPtr<MemBase>
116 CreateIndirection(const RefPtr<MemBase>&Src,
117 const RefPtr<MemBase>&indirection_vec,
118 bool PullData,
119 index_t DestOffset,
120 const DynamicSize&DestSize=DynamicSize(),
121 const MemBase::Creator_t& = nullptr);
122
123extern FIELD_API
124RefPtr<MemBase>
125 CreateIndirection(const RefPtr<MemBase>&Src,
126 const std::vector<uint32_t>&indirection_vec,
127 bool PullData,
128 index_t DestOffset = 0,
129 const index_t DestSize=0,
130 const MemBase::Creator_t& = nullptr,
131 const bool IsBijectiveIndirection = true);
132
133extern FIELD_API
134RefPtr<MemBase>
135 CreateIndirection(const RefPtr<MemBase>&Src,
136 const std::vector<uint64_t>&indirection_vec,
137 bool PullData,
138 index_t DestOffset = 0,
139 const index_t DestSize=0,
140 const MemBase::Creator_t& = nullptr);
141#endif
142
143} // namespace Fiber
144
145#endif // __FIBER_CREATE_INDIRECTION_ARRAY_HPP
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