From 40e23d550506659f7a33057bbbc23cb1cf0632f1 Mon Sep 17 00:00:00 2001
From: dan <me@danrh.co.uk>
Date: Thu, 25 May 2023 11:00:58 -0400
Subject: refactor: split optable and stack into sep files

---
 optable.h | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 optable.h

(limited to 'optable.h')

diff --git a/optable.h b/optable.h
new file mode 100644
index 0000000..d85ff3d
--- /dev/null
+++ b/optable.h
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include <stdbool.h>
+#include "stack.h"
+
+#ifndef OPTABLE_H
+#define OPTABLE_H
+
+#define OPTABLE_MAX_SIZE 1024
+#define DEFINED_FUNC_MAX_LENGTH 1024
+#define WORD_LEN_LIMIT 255
+
+typedef void (*stackop)(stack *);
+
+typedef struct {
+    char* word;
+    bool isscript;
+    union {
+        stackop op;
+        struct {
+            char* script;
+            int scriptlen;
+        };
+    };
+} wordop;
+
+/**
+ * defineop reads a function identifier, followed by the commands to run when the function
+ *      is called, stopping when a semicolon is reached.
+ *      Reading is done from the input string.
+ *
+ * returns new position of input index
+ *
+ */
+int defineop(int starti, char *input);
+
+/**
+ * getop returns the first wordop in the optable which is called by the word given as a parameter
+ *      if none exist, returns 0
+ */
+wordop* getop(char *word);
+
+#endif //OPTABLE_H
-- 
cgit v1.2.3