OpenCurves  0.9
plotfunction.h
1 //
2 // author Kazys Stepanas
3 //
4 // Copyright (c) CSIRO 2013
5 //
6 #ifndef __PLOTFUNCTION_H_
7 #define __PLOTFUNCTION_H_
8 
9 #include "plotsconfig.h"
10 
11 #include "plotexpression.h"
12 
13 #include "plotfunctioninfo.h"
14 #include "plotfunctionresult.h"
15 
16 #include <QVector>
17 
18 class FunctionDefinition;
19 
32 {
33 public:
39  PlotFunction(const FunctionDefinition *function, const QVector<PlotExpression *> &args = QVector<PlotExpression *>());
40 
42  ~PlotFunction();
43 
46  const FunctionDefinition *function() const { return _function; }
47 
49  virtual BindResult bind(const QList<PlotInstance *> &curves, PlotBindingTracker &bindTracker, PlotExpressionBindDomain &info, bool repeatLastBinding = false);
50 
52  virtual void unbind();
53 
56  virtual double sample(double sampleTime) const;
57 
59  const QVector<PlotExpression *> &args() const { return _args; }
60 
62  QVector<PlotExpression *> cloneArgs() const;
63 
65  virtual PlotExpression *clone() const;
66 
67 private:
69  virtual QString stringExpression() const;
70 
71  QVector<PlotExpression *> _args;
72  const FunctionDefinition *_function;
73  mutable PlotFunctionInfo _info;
74  void *_functionContext;
75 };
76 
77 #endif // __PLOTFUNCTION_H_
PlotFunction(const FunctionDefinition *function, const QVector< PlotExpression * > &args=QVector< PlotExpression * >())
Create a function expression.
Supports multiple bindings of the same expression to different curves.
Definition: plotbindingtracker.h:34
virtual BindResult bind(const QList< PlotInstance * > &curves, PlotBindingTracker &bindTracker, PlotExpressionBindDomain &info, bool repeatLastBinding=false)
Bind the argument expressions for the function.
Core data for binding a PlotExpression.
Definition: plotexpressionbinddomain.h:49
virtual PlotExpression * clone() const
Deep clone, including arguments.
Plot sampling progress information for PlotFunction.
Definition: plotfunctioninfo.h:16
~PlotFunction()
Destructor, releasing all args().
QVector< PlotExpression * > cloneArgs() const
Clone the arguments.
virtual double sample(double sampleTime) const
Sample at sampleTime.
BindResult
Return values for the PlotExpression::bind() method.
Definition: plotexpressionbinddomain.h:15
const QVector< PlotExpression * > & args() const
Get the argument expressions.
Definition: plotfunction.h:59
Defines a function which can be used with the FunctionRegister.
Definition: functiondefinition.h:34
virtual void unbind()
Unbind arguments.
A PlotExpression represents an operation in a plot equation.
Definition: plotexpression.h:91
A function called to operation on any number of plot expressions.
Definition: plotfunction.h:31