TDME2  1.9.200
MiniScriptMatrix3x3.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <span>
4 
5 #include <miniscript/miniscript/MiniScript.h>
6 
7 #include <tdme/tdme.h>
8 #include <tdme/math/Matrix3x3.h>
10 
11 using std::span;
12 
13 using miniscript::miniscript::MiniScript;
14 
16 
17 /**
18  * MiniScript Matrix3x3 data type
19  * @author Andreas Drewke
20  */
21 class tdme::utilities::MiniScriptMatrix3x3 final: public MiniScript::ScriptDataType {
22 private:
23  // overridden methods
24  void registerMethods(MiniScript* miniScript) const override;
25  void unsetScriptVariableValue(MiniScript::ScriptVariable& variable) const override;
26  void setScriptVariableValue(MiniScript::ScriptVariable& variable, const void* value) const override;
27  void copyScriptVariable(MiniScript::ScriptVariable& to, const MiniScript::ScriptVariable& from) const override;
28  bool mul(MiniScript* miniScript, const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue, const MiniScript::ScriptStatement& statement) const override;
29  bool div(MiniScript* miniScript, const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue, const MiniScript::ScriptStatement& statement) const override;
30  bool add(MiniScript* miniScript, const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue, const MiniScript::ScriptStatement& statement) const override;
31  bool sub(MiniScript* miniScript, const span<MiniScript::ScriptVariable>& argumentValues, MiniScript::ScriptVariable& returnValue, const MiniScript::ScriptStatement& statement) const override;
32 
33 public:
34  static const string CLASS_NAME;
35  static const string TYPE_NAME;
36 
37  /**
38  * Get matrix3x3 value from given variable
39  * @param TYPE_MATRIX3x3 custom data type for vector3
40  * @param arguments arguments
41  * @param idx argument index
42  * @param value value
43  * @param optional optional
44  * @return success
45  */
46  static inline bool getMatrix3x3Value(MiniScript::ScriptVariableType TYPE_MATRIX3x3, const span<MiniScript::ScriptVariable>& arguments, int idx, Matrix3x3& value, bool optional = false) {
47  if (idx >= arguments.size()) return optional;
48  const auto& argument = arguments[idx];
49  if (argument.getType() == TYPE_MATRIX3x3) {
50  if (argument.getValuePtr() == 0ll) return optional;
51  value = *static_cast<Matrix3x3*>((void*)argument.getValuePtr());
52  return true;
53  }
54  return optional;
55 
56  }
57 
58  // forbid class copy
60 
61  /**
62  * MiniScript Matrix3x3 data type
63  * @param miniScript mini script instance
64  */
65  MiniScriptMatrix3x3(): MiniScript::ScriptDataType(true) {
66  //
67  }
68 
69  // overridden methods
70  const string& getClassName() const override;
71  const string& getTypeAsString() const override;
72  const string getValueAsString(const MiniScript::ScriptVariable& variable) const override;
73 
74 };
Matrix3x3 class representing matrix3x3 mathematical structure and operations for 2d space.
Definition: Matrix3x3.h:20
MiniScript Matrix3x3 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
void copyScriptVariable(MiniScript::ScriptVariable &to, const MiniScript::ScriptVariable &from) const override
void unsetScriptVariableValue(MiniScript::ScriptVariable &variable) const override
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 bool getMatrix3x3Value(MiniScript::ScriptVariableType TYPE_MATRIX3x3, const span< MiniScript::ScriptVariable > &arguments, int idx, Matrix3x3 &value, bool optional=false)
Get matrix3x3 value from given variable.
void setScriptVariableValue(MiniScript::ScriptVariable &variable, const void *value) const override
void registerMethods(MiniScript *miniScript) const override
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6