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