OpenCurves  0.9
functiondefinition.h
1 //
2 // author
3 //
4 // Copyright (c) CSIRO 2015
5 //
6 #ifndef FUNCTIONDEFINITION_H_
7 #define FUNCTIONDEFINITION_H_
8 
9 #include "plotsconfig.h"
10 
11 #include <QString>
12 
13 struct PlotFunctionResult;
14 struct PlotFunctionInfo;
15 
35 {
36 public:
42  FunctionDefinition(const QString &category, const QString &name, unsigned argc = 0, bool variadic = false);
43 
50  FunctionDefinition(const QString &category, const QString &name, const QString &description, unsigned argc = 0, bool variadic = false);
51 
53  virtual ~FunctionDefinition();
54 
57  inline const QString &category() const { return _category; }
58 
61  inline void setCategory(const QString &category) { _category = category; }
62 
65  inline const QString &name() const { return _name; }
66 
69  inline void setName(const QString &name) { _name = name; }
70 
77  inline const QString &displayName() const { return _displayName; }
78 
81  inline void setDisplayName(const QString &name) { _displayName = name; }
82 
85  inline const QString &description() const { return _description; }
86 
89  inline void setDesciption(const QString &description) { _description = description; }
90 
93  inline unsigned argc() const { return _argc; }
94 
97  inline void setArgc(unsigned count) { _argc = count; }
98 
101  inline bool variadic() const { return _variadic; }
102 
105  inline void setVariadic(bool variadic) { _variadic = variadic; }
106 
118  virtual void evaluate(PlotFunctionResult &result, double time, unsigned int argc, const double *argv, const PlotFunctionInfo &info, void *context) const = 0;
119 
130  virtual void *createContext() const;
131 
136  virtual void destroyContext(void *context) const;
137 
158  QString deduceDisplayName() const;
159 
160 private:
161  QString _category;
162  QString _name;
163  QString _displayName;
164  QString _description;
165  unsigned _argc;
166  bool _variadic;
167 };
168 
169 #endif // FUNCTIONDEFINITION_H_
void setDesciption(const QString &description)
Set the function description.
Definition: functiondefinition.h:89
QString deduceDisplayName() const
Deduces the display name of the function to show usage.
void setArgc(unsigned count)
Set the minimum required arguments.
Definition: functiondefinition.h:97
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
void setDisplayName(const QString &name)
Set the function name as displayed to the user.
Definition: functiondefinition.h:81
virtual void * createContext() const
Called to create an operating context for calculating function values.
void setVariadic(bool variadic)
Set the variadic flag.
Definition: functiondefinition.h:105
bool variadic() const
Is the function variadic beyond argc()?
Definition: functiondefinition.h:101
FunctionDefinition(const QString &category, const QString &name, unsigned argc=0, bool variadic=false)
Construct a function definition.
Plot sampling progress information for PlotFunction.
Definition: plotfunctioninfo.h:16
void setName(const QString &name)
Set the function name as used by the generator.
Definition: functiondefinition.h:69
unsigned argc() const
Access the minimum argument count.
Definition: functiondefinition.h:93
const QString & displayName() const
Return the function name as displayed with the user.
Definition: functiondefinition.h:77
virtual void destroyContext(void *context) const
Destroys the context created by createContext().
virtual void evaluate(PlotFunctionResult &result, double time, unsigned int argc, const double *argv, const PlotFunctionInfo &info, void *context) const =0
Evaluate the function with the given context data.
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
virtual ~FunctionDefinition()
Virtual destructor.
void setCategory(const QString &category)
Set the category name for the function.
Definition: functiondefinition.h:61