OpenCurves  0.9
functionsimple.h
1 //
2 // author
3 //
4 // Copyright (c) CSIRO 2015
5 //
6 #ifndef FUNCTIONSIMPLE_H_
7 #define FUNCTIONSIMPLE_H_
8 
9 #include "plotsconfig.h"
10 
11 #include "functiondefinition.h"
12 
13 #include <functional>
14 
26 {
27 public:
29  typedef std::function<double (double)> ValueFunction;
31  typedef double (*ValueFunctionPtr)(double);
32 
34  typedef std::function<void(PlotFunctionResult &result, double time, unsigned int argc, const double *argv, const PlotFunctionInfo &info)> ExpandedFunction;
36  typedef void(*ExpandedFunctionPtr)(PlotFunctionResult &result, double time, unsigned int argc, const double *argv, const PlotFunctionInfo &info);
37 
45  FunctionSimple(const ValueFunction &func, const QString &category, const QString &name, const QString &description = QString());
46 
54  FunctionSimple(const ExpandedFunction &func, const QString &category, const QString &name, unsigned argc = 0, bool variadic = false);
55 
64  FunctionSimple(const ExpandedFunction &func, const QString &category, const QString &name, const QString &description, unsigned argc = 0, bool variadic = false);
65 
70  inline ExpandedFunction function() const { return _function; }
71 
83  void evaluate(PlotFunctionResult &result, double time, unsigned int argc, const double *argv, const PlotFunctionInfo &info, void *context) const override;
84 
85 protected:
86  ExpandedFunction _function;
87 };
88 
89 #endif // FUNCTIONSIMPLE_H_
std::function< double(double)> ValueFunction
Simple implementation parameterisation.
Definition: functionsimple.h:29
const QString & category() const
Access the function categorisation for UI grouping.
Definition: functiondefinition.h:57
const QString & description() const
Access the function description.
Definition: functiondefinition.h:85
ExpandedFunction _function
The function object.
Definition: functionsimple.h:86
void(* ExpandedFunctionPtr)(PlotFunctionResult &result, double time, unsigned int argc, const double *argv, const PlotFunctionInfo &info)
ExpandedFunction typedef to a C function.
Definition: functionsimple.h:36
double(* ValueFunctionPtr)(double)
ValueFunction typedef to a C function.
Definition: functionsimple.h:31
bool variadic() const
Is the function variadic beyond argc()?
Definition: functiondefinition.h:101
void evaluate(PlotFunctionResult &result, double time, unsigned int argc, const double *argv, const PlotFunctionInfo &info, void *context) const override
Evaluates the function results.
Plot sampling progress information for PlotFunction.
Definition: plotfunctioninfo.h:16
unsigned argc() const
Access the minimum argument count.
Definition: functiondefinition.h:93
std::function< void(PlotFunctionResult &result, double time, unsigned int argc, const double *argv, const PlotFunctionInfo &info)> ExpandedFunction
Expanded function parameterisation.
Definition: functionsimple.h:34
const QString & name() const
Access the function name as used by the expression generator.
Definition: functiondefinition.h:65
Result value from a PlotFunction.
Definition: plotfunctionresult.h:27
Defines a function which can be used with the FunctionRegister.
Definition: functiondefinition.h:34
Defines a function which is implemented by a given function object.
Definition: functionsimple.h:25
FunctionSimple(const ValueFunction &func, const QString &category, const QString &name, const QString &description=QString())
Constructor routing the function implementation through a ValueFunction.