5 #include <miniscript/miniscript/MiniScript.h>
13 using miniscript::miniscript::MiniScript;
29 void copyScriptVariable(MiniScript::ScriptVariable& to,
const MiniScript::ScriptVariable& from)
const override;
30 bool mul(MiniScript* miniScript,
const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue,
const MiniScript::ScriptStatement& statement)
const override;
31 bool div(MiniScript* miniScript,
const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue,
const MiniScript::ScriptStatement& statement)
const override;
32 bool add(MiniScript* miniScript,
const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue,
const MiniScript::ScriptStatement& statement)
const override;
33 bool sub(MiniScript* miniScript,
const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue,
const MiniScript::ScriptStatement& statement)
const override;
48 static inline bool getQuaternionValue(MiniScript::ScriptVariableType TYPE_QUATERNION,
const span<MiniScript::ScriptVariable>& arguments,
int idx,
Quaternion& value,
bool optional =
false) {
49 if (idx >= arguments.size())
return optional;
50 const auto& argument = arguments[idx];
51 if (argument.getType() == TYPE_QUATERNION) {
52 if (argument.getValuePtr() == 0ll)
return optional;
53 value = *
static_cast<Quaternion*
>((
void*)argument.getValuePtr());
73 const string getValueAsString(
const MiniScript::ScriptVariable& variable)
const override;
Quaternion class representing quaternion mathematical structure and operations with x,...
MiniScript Quaternion data type.
const string & getTypeAsString() const override
bool add(MiniScript *miniScript, const span< MiniScript::ScriptVariable > &argumentValues, MiniScript::ScriptVariable &returnValue, const MiniScript::ScriptStatement &statement) const override
bool sub(MiniScript *miniScript, const span< MiniScript::ScriptVariable > &argumentValues, MiniScript::ScriptVariable &returnValue, const MiniScript::ScriptStatement &statement) const override
static const string TYPE_NAME
void copyScriptVariable(MiniScript::ScriptVariable &to, const MiniScript::ScriptVariable &from) const override
void unsetScriptVariableValue(MiniScript::ScriptVariable &variable) const override
static bool getQuaternionValue(MiniScript::ScriptVariableType TYPE_QUATERNION, const span< MiniScript::ScriptVariable > &arguments, int idx, Quaternion &value, bool optional=false)
Get quaternion value from given variable.
bool div(MiniScript *miniScript, const span< MiniScript::ScriptVariable > &argumentValues, MiniScript::ScriptVariable &returnValue, const MiniScript::ScriptStatement &statement) const override
const string & getClassName() const override
bool mul(MiniScript *miniScript, const span< MiniScript::ScriptVariable > &argumentValues, MiniScript::ScriptVariable &returnValue, const MiniScript::ScriptStatement &statement) const override
const string getValueAsString(const MiniScript::ScriptVariable &variable) const override
static const string CLASS_NAME
void setScriptVariableValue(MiniScript::ScriptVariable &variable, const void *value) const override
void registerMethods(MiniScript *miniScript) const override
#define FORBID_CLASS_COPY(CLASS)