Primary template class
for XCalculator's specializations.
More...
#include "keyvalue/mngt/XCalculator.h"
Public Member Functions | |
value::Value | getValue (const value::Variant &data) const |
Gets the result of processing a value::Variant. | |
const char * | getName () const |
Gets Calculator's name. | |
value::Result | getResult (const DataSet &data) const |
Gets result of processing a DataSet. | |
value::Result | getResult (const value::Variant &data) const |
Gets result of processing a value::Variant. | |
virtual value::Value | getValue (const DataSet &data) const |
Gets the result of processing a DataSet. | |
Static Public Member Functions | |
static Calculator & | getInstance () |
Gets the unique instance of a XCalculator specialization. | |
Static Protected Member Functions | |
static void | setGetter (Calculator &(*getter)()) |
Sets the point of acess to the unique instance of a Calculator specialization. | |
Static Private Member Functions | |
static Calculator & | getSingleton () |
Gets the unique instance of an XCalculator specialization. |
Primary template class
for XCalculator's specializations.
This template class<> extends Calculator through
public
inheritance. While a regular Calculator specialization needs a DataSet to store the data needed to compute the result, the XCalculator can calculates from a single value::Variant input.
Calculator< Tag > & getInstance | ( | ) | [inline, static] |
Gets the unique instance of a XCalculator specialization.
This method calls Calculator::setGetter() to set method getSingleton() below as the point of access to the unique instance of the corresponding Calculator specialization. Then it returns this instance.
return A reference to the unique instance of an XCalculator specialization.
Reimplemented from Calculator< Tag >.
value::Value getValue | ( | const value::Variant & | data | ) | const [virtual] |
Gets the result of processing a value::Variant.
The implementation must be provided by specializations.
data | : Input value::Variant. |
Reimplemented from Calculator< Tag >.
Calculator< Tag > & getSingleton | ( | ) | [inline, static, private] |
Gets the unique instance of an XCalculator specialization.
return A reference to the unique instance of an XCalculator specialization.
Reimplemented from Calculator< Tag >.
const char* getName | ( | ) | const [virtual, inherited] |
Gets Calculator's name.
Implementation must be provided by specializations. (For an example see keyvalue/bridge/processor/DataSetNames.cpp.)
Implements Processor.
value::Result getResult | ( | const DataSet & | data | ) | const [inline, virtual, inherited] |
value::Result getResult | ( | const value::Variant & | data | ) | const [inline, virtual, inherited] |
Gets result of processing a value::Variant.
A redirection to getValue(const value::Variant& data).
data | : value::Variant to be processed. |
Implements Processor.
virtual value::Value getValue | ( | const DataSet & | data | ) | const [virtual, inherited] |
void setGetter | ( | Calculator< Tag > &(*)() | getter | ) | [inline, static, protected, inherited] |
Sets the point of acess to the unique instance of a Calculator specialization.
Each specialization of this template class
must be a singleton and the getInstance() method above gives acess to this unique instance.
However, trough public
inheritance, a Buider specialization can be extended to an XCalculator one. In this case, the unique accesible instance of a Calculator specialization must be an instance of an XCalculator specialization. Therefore, each XCalculator specialization must register itself as the provider of the unique instance of the Calculator specialization which is returned by getInstance().
The registration is done by calling this method and providing a global point of access to the unique instance of the Calculator specialization.
: | A pointer to a funtion which returns a reference to the unique instance of a Calculator specialization. |