18 #ifndef FFA_OPERATION_H
19 #define FFA_OPERATION_H
27 #include "FFaLib/FFaPatterns/FFaMemPool.H"
53 static void freeMemPools() { getMemPoolMgr()->freeMemPools(); }
55 static FFaMemPoolMgr* getMemPoolMgr()
57 static FFaMemPoolMgr memPools;
74 template <
class RetType>
133 template <
class OperationCB>
141 static void addOperation(
const std::string& name, OperationCB operation)
143 static std::vector<NamedOper> ops;
144 ops.emplace_back(name,operation);
156 names.push_back(oper.first);
166 static const std::string noop;
182 if (oper.first == name)
199 template <
class OperationCB>
200 std::vector< std::pair<std::string,OperationCB> >*
208 template <
class RetType,
class PrmType = RetType>
262 #ifdef FT_USE_MEMPOOL
267 #ifdef FT_USE_MEMPOOL
269 template <
class RetType,
class PrmType>
271 FFaOperationBase::getMemPoolMgr());
280 template <
class RetType>
287 const std::string& name =
"")
302 if (p) p->invalidate();
311 if (p && p->hasData())
323 std::vector<RetType> pVals(
myParams.size());
324 for (
size_t i = 0; i <
myParams.size(); i++)
326 ok &=
myParams[i]->invoke(pVals[i]);
345 #ifdef FT_USE_MEMPOOL
350 #ifdef FT_USE_MEMPOOL
352 template <
class RetType>
354 FFaOperationBase::getMemPoolMgr());
Macros for definition of dynamic callback objects.
A class for vector operations.
Definition: FFaOperation.H:283
virtual ~FFaNToOneOp()
The destructor deletes the child operations, if any.
Definition: FFaOperation.H:336
std::vector< FFaOperation< RetType > * > myParams
Parameter child operations.
Definition: FFaOperation.H:343
virtual void invalidate()
Invalidates the cached value of this operation.
Definition: FFaOperation.H:298
virtual bool evaluate(RetType &value)
Invokes the actual operation.
Definition: FFaOperation.H:318
virtual bool hasData() const
Checks if this operation will return any data.
Definition: FFaOperation.H:308
FFaNToOneOp(const std::vector< FFaOperation< RetType > * > ¶ms, const std::string &name="")
The constructor selects the actual operation to use from name.
Definition: FFaOperation.H:286
Base class for all operations.
Definition: FFaOperation.H:38
virtual ~FFaOperationBase()
Empty destructor.
Definition: FFaOperation.H:43
short int myRefCount
Reference counter.
Definition: FFaOperation.H:66
void ref()
Increments the reference counter.
Definition: FFaOperation.H:47
FFaOperationBase()
Default constructor.
Definition: FFaOperation.H:41
static void freeMemPools()
Dummy method doing nothing.
Definition: FFaOperation.H:62
void unref()
Decrements the reference counter, and deletes *this if zero.
Definition: FFaOperation.H:49
A class used to manage and store callbacks of a certain type.
Definition: FFaOperation.H:135
static const std::string & getDefaultOperation()
Returns the default operation of type OperationCB.
Definition: FFaOperation.H:161
OperationCB myOperationCB
The selected operation.
Definition: FFaOperation.H:192
static void getOperations(std::vector< std::string > &names)
Returns a list of all operations of type OperationCB.
Definition: FFaOperation.H:149
void selectOperation(const std::string &name)
Selects the named operation to use.
Definition: FFaOperation.H:178
std::pair< std::string, OperationCB > NamedOper
Convenience type alias for a named operations.
Definition: FFaOperation.H:137
FFaOperationContainer()
The default constructor selects the default operation.
Definition: FFaOperation.H:172
static std::vector< NamedOper > * ourOperations
Static container for operations of type OperationCB.
Definition: FFaOperation.H:196
static void addOperation(const std::string &name, OperationCB operation)
Adds a named operation to the OperationCB container.
Definition: FFaOperation.H:141
The base class used as argument in other operations.
Definition: FFaOperation.H:76
virtual bool evaluate(RetType &value)=0
Invokes the actual operation.
bool IAmEvaluated
If true, the cached value will be used.
Definition: FFaOperation.H:112
virtual void invalidate()
Invalidates the cached value of this operation.
Definition: FFaOperation.H:101
FFaOperation()
Default constructor.
Definition: FFaOperation.H:79
RetType myCachedValue
Cached operation value, to avoid re-evaluation.
Definition: FFaOperation.H:109
virtual bool hasData() const =0
Checks if this operation will return any data.
bool invoke(RetType &value)
Returns current value of this operation.
Definition: FFaOperation.H:85
virtual ~FFaOperation()
Empty destructor.
Definition: FFaOperation.H:81
A class for scalar operations.
Definition: FFaOperation.H:211
virtual ~FFaUnaryOp()
The destructor deletes the child operation, if any.
Definition: FFaOperation.H:254
FFaUnaryOp(FFaOperation< PrmType > *param, const std::string &name="")
The constructor selects the actual operation to use from name.
Definition: FFaOperation.H:214
virtual bool evaluate(RetType &value)
Invokes the actual operation.
Definition: FFaOperation.H:239
virtual bool hasData() const
Checks if this operation will return any data.
Definition: FFaOperation.H:233
FFaOperation< PrmType > * myParam
Parameter child operation.
Definition: FFaOperation.H:260
virtual void invalidate()
Invalidates the cached value of this operation.
Definition: FFaOperation.H:224
Various math utilities.
Definition: FFaMath.H:58
void setSpecialResultValue(double value, double equiv)
Defines a special result value and its associated equivalent value.
Definition: FFaBasicOperations.C:334