FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
MultiCopy.hpp
1#ifndef __FIBER_MULTICOPY_HPP
2#define __FIBER_MULTICOPY_HPP
3
4#include "MultiArray.hpp"
5#include "Iterator.hpp"
6
7namespace Fiber
8{
9
11{
12static void copy(unsigned char&result, double value)
13 {
14 result = static_cast<unsigned char>(0xFF*value);
15 }
16
17static void copy(unsigned short&result, double value)
18 {
19 result = static_cast<unsigned short>(0xFFFF*value);
20 }
21};
22
23
25{
26template <class dst, class src>
27static void copy(dst&result, src value)
28 {
29 result = dst(value);
30 }
31
32template <class dst, class src>
33static void copy(ElementProxy<Iterator<dst> > result, const ElementProxy<Iterator<src> >&value)
34 {
35 result = dst(value);
36 }
37};
38
39
45template <class Dest, class Source, Dims_t N, class Converter>
47{
49 do
50 {
51 C.copy( DestArray[ I ], SrcArray[ I ]);
52 }
53 while( I.inc(SrcArray.Size() ) );
54}
55
56
62template <class Dest, class Source, Dims_t N, class Converter>
65{
67 do
68 {
69 C.copy( DestArray[ I+DestOffset ], SrcArray[ I ]);
70 }
71 while( I.inc(SrcArray.Size() ) );
72}
73
79template <class Dest, class Source, Dims_t N, class Converter>
81 const MultiArray<N, Source>&SrcArray, const MultiIndex<N>&SrcOffset,
82 const Converter&C )
83{
85 do
86 {
87 C.copy( DestArray[ I ], SrcArray[ I+SrcOffset ]);
88 }
89 while( I.inc(SrcArray.Size() ) );
90}
91
97template <class Dest, class Source, Dims_t N, class Converter>
99 const MultiArray<N, Source>&SrcArray, const MultiIndex<N>&SrcOffset,
100 const Converter&C)
101{
103 do
104 {
105 C.copy( DestArray[ I+DestOffset ], SrcArray[ I+SrcOffset ]);
106 }
107 while( I.inc(SrcArray.Size() ) );
108}
109
113template <class Dest, class Source, Dims_t N, class Converter>
115 const MultiArray<N, Source>&SrcArray, const MultiIndex<N>&SrcOffset,
116 const Converter&C)
117{
119 do
120 {
121 C.copy( DestArray[ I+DestOffset ], SrcArray[ I+SrcOffset ]);
122// C.copy( DestArray[ I.operator+(DestOffset) ], SrcArray[ I+SrcOffset ]);
123 }
124 while( I.inc( HowMany ) );
125}
126
127} /* namespace Fiber */
128
129#endif /* __Fiber_MULTICOPY_HPP */
An iterator with an optional DataCreator, which is just a class to intercept creation of data along a...
Definition CreativeIterator.hpp:34
A proxy for Iterators, such that an Iterator's element looks like an Iterator's element (!...
Definition vector/Iterator.hpp:866
void CopySubset(const MultiIndex< N > &HowMany, MultiArray< N, Dest > &DestArray, const MultiIndex< N > &DestOffset, const MultiArray< N, Source > &SrcArray, const MultiIndex< N > &SrcOffset, const Converter &C)
Copy a subset of data from the source array to the destination array.
Definition MultiCopy.hpp:114
void Copy(MultiArray< N, Dest > &DestArray, const MultiArray< N, Source > &SrcArray, const Converter &C)
Copy data from the source array to the destination array, whereby the destination array must be large...
Definition MultiCopy.hpp:46
Given a fragmented field of curvilinear coordinates, (3D array of coordinates), build a uniform Grid ...
Definition FAQ.dox:2
Definition MultiCopy.hpp:25
Definition MultiCopy.hpp:11