Classes |
struct | MultiArgView1< A1, Dom > |
struct | MultiArgView2< A1, A2, Dom > |
struct | MultiArgView3< A1, A2, A3, Dom > |
struct | MultiArgView4< A1, A2, A3, A4, Dom > |
struct | MultiArgView5< A1, A2, A3, A4, A5, Dom > |
struct | MultiArgView6< A1, A2, A3, A4, A5, A6, Dom > |
struct | MultiArgView7< A1, A2, A3, A4, A5, A6, A7, Dom > |
struct | View1< MultiArg1< A1 >, Dom > |
struct | View1< MultiArg2< A1, A2 >, Dom > |
struct | View1< MultiArg3< A1, A2, A3 >, Dom > |
struct | View1< MultiArg4< A1, A2, A3, A4 >, Dom > |
struct | View1< MultiArg5< A1, A2, A3, A4, A5 >, Dom > |
struct | View1< MultiArg6< A1, A2, A3, A4, A5, A6 >, Dom > |
struct | View1< MultiArg7< A1, A2, A3, A4, A5, A6, A7 >, Dom > |
struct | MultiArg1< A1 > |
struct | MultiArg2< A1, A2 > |
struct | MultiArg3< A1, A2, A3 > |
struct | MultiArg4< A1, A2, A3, A4 > |
struct | MultiArg5< A1, A2, A3, A4, A5 > |
struct | MultiArg6< A1, A2, A3, A4, A5, A6 > |
struct | MultiArg7< A1, A2, A3, A4, A5, A6, A7 > |
Functions |
template<class A1 , class Function > |
void | applyMultiArg (const MultiArg1< A1 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class Function > |
void | applyMultiArg (const MultiArg2< A1, A2 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class A3 , class Function > |
void | applyMultiArg (const MultiArg3< A1, A2, A3 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class A3 , class A4 , class Function > |
void | applyMultiArg (const MultiArg4< A1, A2, A3, A4 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class A3 , class A4 , class A5 , class Function > |
void | applyMultiArg (const MultiArg5< A1, A2, A3, A4, A5 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class A3 , class A4 , class A5 , class A6 , class Function > |
void | applyMultiArg (const MultiArg6< A1, A2, A3, A4, A5, A6 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class A3 , class A4 , class A5 , class A6 , class A7 , class Function > |
void | applyMultiArg (const MultiArg7< A1, A2, A3, A4, A5, A6, A7 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class Function > |
void | applyMultiArg (const MultiArg1< A1 > &node, const Function &f) |
template<class A1 , class A2 , class Function > |
void | applyMultiArg (const MultiArg2< A1, A2 > &node, const Function &f) |
template<class A1 , class A2 , class A3 , class Function > |
void | applyMultiArg (const MultiArg3< A1, A2, A3 > &node, const Function &f) |
template<class A1 , class A2 , class A3 , class A4 , class Function > |
void | applyMultiArg (const MultiArg4< A1, A2, A3, A4 > &node, const Function &f) |
template<class A1 , class A2 , class A3 , class A4 , class A5 , class Function > |
void | applyMultiArg (const MultiArg5< A1, A2, A3, A4, A5 > &node, const Function &f) |
template<class A1 , class A2 , class A3 , class A4 , class A5 , class A6 , class Function > |
void | applyMultiArg (const MultiArg6< A1, A2, A3, A4, A5, A6 > &node, const Function &f) |
template<class A1 , class A2 , class A3 , class A4 , class A5 , class A6 , class A7 , class Function > |
void | applyMultiArg (const MultiArg7< A1, A2, A3, A4, A5, A6, A7 > &node, const Function &f) |
template<class A1 , class Function > |
void | applyMultiArgIf (const MultiArg1< A1 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class Function > |
void | applyMultiArgIf (const MultiArg2< A1, A2 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class A3 , class Function > |
void | applyMultiArgIf (const MultiArg3< A1, A2, A3 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class A3 , class A4 , class Function > |
void | applyMultiArgIf (const MultiArg4< A1, A2, A3, A4 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class A3 , class A4 , class A5 , class Function > |
void | applyMultiArgIf (const MultiArg5< A1, A2, A3, A4, A5 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class A3 , class A4 , class A5 , class A6 , class Function > |
void | applyMultiArgIf (const MultiArg6< A1, A2, A3, A4, A5, A6 > &node, const Function &f, const std::vector< bool > &condition) |
template<class A1 , class A2 , class A3 , class A4 , class A5 , class A6 , class A7 , class Function > |
void | applyMultiArgIf (const MultiArg7< A1, A2, A3, A4, A5, A6, A7 > &node, const Function &f, const std::vector< bool > &condition) |
The MultiArg1...N classes are intended to be used to wrap multiple arrays, fields, or particles where a common set of operations need to be performed on the set.
Typical operations would be: taking views, getting locks, performing intersections.
It would be nicer in some sense to have an inhomogenous container with common interfaces through a base class. That approach would avoid the following huge number of MultiArg classes. The difficulty arises in extracting the arrays at the end and handing them off to a function. To extract the arrays requires knowing their types, requiring you to know the complete signature of the function you are calling. At that point, you've already accumulated all the type information in something at least as complicated as the MultiArg<> classes here.