FreePOOMA  2.4.1
Classes
EvaluatorTags.h File Reference

Evaluator Tags are used for picking the appropriate evaluator given the engines in an expression. More...

#include "Evaluator/EngineTraits.h"
#include "PETE/PETE.h"
Include dependency graph for EvaluatorTags.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  EvaluatorCombine< Eval1, Eval2 >
 EvaluatorCombine<LHSEval, RHSEval> More...
struct  EvaluatorCombine< SinglePatchEvaluatorTag, MultiPatchEvaluatorTag >
struct  EvaluatorCombine< MultiPatchEvaluatorTag, SinglePatchEvaluatorTag >
struct  EvaluatorCombine< RemoteSinglePatchEvaluatorTag, MultiPatchEvaluatorTag >
struct  EvaluatorCombine< MultiPatchEvaluatorTag, RemoteSinglePatchEvaluatorTag >
struct  EvaluatorCombine< RemoteSinglePatchEvaluatorTag, SinglePatchEvaluatorTag >
struct  EvaluatorCombine< SinglePatchEvaluatorTag, RemoteSinglePatchEvaluatorTag >
struct  EvaluatorCombine< MultiPatchEvaluatorTag, MultiPatchEvaluatorTag >
struct  EvaluatorCombine< RemoteSinglePatchEvaluatorTag, RemoteSinglePatchEvaluatorTag >
struct  EvaluatorCombine< SinglePatchEvaluatorTag, SinglePatchEvaluatorTag >
struct  LeafFunctor< Scalar< T >, EvaluatorTypeTag >
struct  LeafFunctor< A, EvaluatorTypeTag >
struct  Combine2< Eval1, Eval2, Op, EvaluatorCombineTag >
struct  EvaluatorTag1< Expr >
struct  EvaluatorTag< LHS, RHS >

Detailed Description

Evaluator Tags are used for picking the appropriate evaluator given the engines in an expression.

The external interface for EvaluatorTags are the traits

which yields an evaluator tag, given the expression type or the types for the left hand side and right hand side. To add new evaluators or new engines, specialize the EvaluatorEngineTraits struct to give the evaluator tag for each engine, and specialize the EvaluatorCombine struct to determine how to chose a new evaluator given two evaluators.

Evaluator Tags are used for picking the appropriate evaluator given the engines in an expression. Each evaluator tag represents a set of engines that it is capable of dealing with.

This file provides the following interface:

To add new evaluator types, the user must specialize EvaluatorCombine for the new tags and combinations of the new tags with old ones.

To add new engines tags, you must specialize the struct EvaluatorEngineTraits<EngineTag> to return the appropriate evaluator for that engine.