aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/libparser/node/roundnode.h
diff options
context:
space:
mode:
authorRenaud Guezennec <renaud@rolisteam.org>2025-02-09 06:05:05 +0100
committerRenaud Guezennec <renaud@rolisteam.org>2025-02-09 06:05:05 +0100
commit6fcb5ca46927f7baab744e117af9eb1ce5b74838 (patch)
tree803b14b1315dfed095705d0c417b19c970541535 /src/libparser/node/roundnode.h
parentb8486f92408afa1a0c71d3f62d93f49ac8bebc60 (diff)
downloadOneRoll-6fcb5ca46927f7baab744e117af9eb1ce5b74838.tar.gz
OneRoll-6fcb5ca46927f7baab744e117af9eb1ce5b74838.zip
[Dice] add functions: floor, ceil, round
Diffstat (limited to 'src/libparser/node/roundnode.h')
-rw-r--r--src/libparser/node/roundnode.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/libparser/node/roundnode.h b/src/libparser/node/roundnode.h
new file mode 100644
index 0000000..0bf49b7
--- /dev/null
+++ b/src/libparser/node/roundnode.h
@@ -0,0 +1,31 @@
+#ifndef ROUNDNODE_H
+#define ROUNDNODE_H
+
+#include "executionnode.h"
+#include "scalarresult.h"
+
+class RoundNode : public ExecutionNode
+{
+public:
+ enum Mode {
+ FLOOR,
+ CEIL,
+ ROUND
+ };
+ RoundNode(Mode mode);
+
+ // ExecutionNode interface
+public:
+ void run(ExecutionNode *previous);
+ QString toString(bool withLabel) const;
+ qint64 getPriority() const;
+ ExecutionNode *getCopy() const;
+ void setCommand(ExecutionNode* cmd);
+
+private:
+ std::unique_ptr<ScalarResult> m_scalarResult;
+ ExecutionNode* m_cmd= nullptr;
+ Mode m_mode{ROUND};
+};
+
+#endif // ROUNDNODE_H