Interface of class responsible for calculation of different operators.
You can find more information in comments below.
class IOperatorCalculator
{
public:
// Calculate math simple 2 operand expression
virtual CVariable *Percent(CVariable *value1, CVariable *value2) = 0; // %
virtual CVariable *Ampersand(CVariable *value1, CVariable *value2) = 0; // &
virtual CVariable *Asterisk(CVariable *value1, CVariable *value2) = 0; // *
virtual CVariable *Plus(CVariable *value1, CVariable *value2) = 0; // +
virtual CVariable *Minus(CVariable *value1, CVariable *value2) = 0; // -
virtual CVariable *Period(CVariable *value1, CVariable *value2) = 0; // .
virtual CVariable *Slash(CVariable *value1, CVariable *value2) = 0; // /
virtual CVariable *Less(CVariable *value1, CVariable *value2) = 0; // <
virtual CVariable *Equal(CVariable *value1, CVariable *value2) = 0; // =
virtual CVariable *Greater(CVariable *value1, CVariable *value2) = 0; // >
virtual CVariable *Caret(CVariable *value1, CVariable *value2) = 0; // ^
virtual CVariable *Pipe(CVariable *value1, CVariable *value2) = 0; // |
virtual CVariable *ExclamationEqual(CVariable *value1, CVariable *value2) = 0; // !=
virtual CVariable *Exclamation2Equal(CVariable *value1, CVariable *value2) = 0; // !==
virtual CVariable *DoubleAmpersand(CVariable *value1, CVariable *value2) = 0; // &&
virtual CVariable *LessEqual(CVariable *value1, CVariable *value2) = 0; // <=
virtual CVariable *Less2Equal(CVariable *value1, CVariable *value2) = 0; // <==
virtual CVariable *LessGreater(CVariable *value1, CVariable *value2) = 0; // <>
virtual CVariable *DoubleLess(CVariable *value1, CVariable *value2) = 0; // <<
virtual CVariable *DoubleEqual(CVariable *value1, CVariable *value2) = 0; // ==
virtual CVariable *TripleEqual(CVariable *value1, CVariable *value2) = 0; // ===
virtual CVariable *DoubleGreater(CVariable *value1, CVariable *value2) = 0; // >>
virtual CVariable *GreaterEqual(CVariable *value1, CVariable *value2) = 0; // >=
virtual CVariable *Greater2Equal(CVariable *value1, CVariable *value2) = 0; // >==
virtual CVariable *DoublePipe(CVariable *value1, CVariable *value2) = 0; // ||
virtual CVariable *SymAnd(CVariable *value1, CVariable *value2) = 0; // and
virtual CVariable *SymOr(CVariable *value1, CVariable *value2) = 0; // or
virtual CVariable *SymXor(CVariable *value1, CVariable *value2) = 0; // xor
virtual CVariable *SymShr(CVariable *value1, CVariable *value2) = 0; // shr
virtual CVariable *SymShl(CVariable *value1, CVariable *value2) = 0; // shl
virtual CVariable *SymDiv(CVariable *value1, CVariable *value2) = 0; // div
virtual CVariable *SymMod(CVariable *value1, CVariable *value2) = 0; // mod
// Change value according to "pre" operator
virtual bool PreExclamation(CVariable *value) = 0; // !
virtual bool PrePlus(CVariable *value) = 0; // +
virtual bool PreMinus(CVariable *value) = 0; // -
virtual bool Pre2Plus(CVariable *value) = 0; // ++
virtual bool Pre2Minus(CVariable *value) = 0; // --
virtual bool PreSymNot(CVariable *value) = 0; // not
// Change value according to "post" operator
virtual bool Post2Plus(CVariable *value) = 0; // ++
virtual bool Post2Minus(CVariable *value) = 0; // --
virtual void Release() = 0;
};
Namespace: | nitisa::scripting |
Include: | Nitisa/Modules/Scripting/IOperatorCalculator.h |