aboutsummaryrefslogtreecommitdiffstats
path: root/optable.h
diff options
context:
space:
mode:
Diffstat (limited to 'optable.h')
-rw-r--r--optable.h42
1 files changed, 42 insertions, 0 deletions
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