Interface of entity calculator which is responsible for calculation of specific types of expression.
You can find more information in comments below.
class IEntityCalculator
{
public:
virtual ERROR_INFO getLastError() = 0; // Return last error information
virtual IOperatorCalculator *getOperatorCalculator() = 0; // Return assigned or default operator calculator
virtual bool setOperatorCalculator(IOperatorCalculator *value) = 0; // Set new operator calculator. Old one will be destroyed. If nullptr is passes, default one will be used
virtual bool Pre(ICalculator *calculator, CExpression *expression, CVariable *parent, CVariable *value) = 0; // Apply "pre" operators(like ++x, --x)
virtual bool Post(ICalculator *calculator, CExpression *expression, CVariable *parent, CVariable *value) = 0; // Apply "post" operators(like, x++, x--). Could be applied only on identifier expression
virtual CVariable *List(ICalculator *calculator, CExpression *expression, CVariable *parent) = 0; // Calculate expresson of type List
virtual CVariable *Procedure(ICalculator *calculator, CExpression *expression, CVariable *parent) = 0; // Calculate expresson of type Procedure
virtual CVariable *Subscript(ICalculator *calculator, CExpression *expression, CVariable *parent) = 0; // Calculate expresson of type Subscript
virtual CVariable *Value(ICalculator *calculator, CExpression *expression, CVariable *parent) = 0; // Calculate expresson of type Value
virtual CVariable *Complex(ICalculator *calculator, CExpression *expression, CVariable *parent) = 0; // Calculate expresson of type Complex
virtual CVariable *Range(ICalculator *calculator, CExpression *expression, CVariable *parent) = 0; // Calculate expresson of type Range
virtual CVariable *Array(ICalculator *calculator, CExpression *expression, CVariable *parent) = 0; // Calculate expresson of type Array
virtual void Release() = 0; // Delete itself
};
Namespace: | nitisa::scripting |
Include: | Nitisa/Modules/Scripting/IEntityCalculator.h |