FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
BinaryOperator.hpp
1#ifndef __FIBER_FIELD_BINARY_OPERATOR_HPP
2#define __FIBER_FIELD_BINARY_OPERATOR_HPP
3
4#include "ComputationalField.hpp"
5
6namespace Fiber
7{
8
9
32template <class Operator, class PrimaryValueType,
33 class SecondaryValueType = PrimaryValueType,
34 class ResultValueType = PrimaryValueType>
36{
37 RefPtr<Field> SecondaryField;
38
41
42 typedef ResultValueType result_type;
43
52
53 template <Dims_t Dims>
54 bool computeFragment(MemArray<Dims, result_type>&Result,
56 const RefPtr<FragmentID>&myFragmentID)
57 {
59
60 assert( SecondaryField );
61
63 pSecondaryArray = SecondaryField->getData(myFragmentID) )
64 {
67
69 MultiIndex<Dims> Index;
70
71 do
72 {
73 Operator::ternary(Result[ Index ], PrimaryArray[ Index ], SecondaryArray[ Index ] );
74 }
75 while( Index.inc(Size) );
76
77 return true;
78 }
79 return false;
80 }
81};
82
83} // namespace Fiber
84
85
86#endif // __FIBER_FIELD_BINARY_OPERATOR_HPP
An iterator with an optional DataCreator, which is just a class to intercept creation of data along a...
Definition CreativeIterator.hpp:34
Given a fragmented field of curvilinear coordinates, (3D array of coordinates), build a uniform Grid ...
Definition FAQ.dox:2
Wizt::VCreatorProperty< Wizt::VCreatorProperties::OPERATORNAME > Operator
Implementing a binary operation on two fields with on-demand computation per fragment and discarding ...
Definition BinaryOperator.hpp:36
BinaryOperator(const RefPtr< Field > &theSecondaryField)
The constructor, wants to know about the secondary field.
Definition BinaryOperator.hpp:49