#pragma once #include typedef struct RunnerVariable { SizedString const *name; void *value; } RunnerVariable; typedef void (*BuiltinFunction)(void ***restrict stack, size_t *restrict stack_inserted); extern const BuiltinFunction BUILTIN_FUNCTIONS[]; extern const char *BUILTIN_FUNCTION_NAMES[]; extern const size_t BUILTIN_FUNCTIONS_SIZE; extern bool runner(SourceCode *code); extern bool _runner(Instructions instructions); extern bool runInstruction(Instruction instruction, void ***restrict stack, size_t *restrict stack_size, size_t *restrict stack_inserted, RunnerVariable ***restrict variables, size_t *restrict variables_size, size_t *restrict variables_inserted); extern RunnerVariable *getRunnerVariable(const SizedString *varName, RunnerVariable ***restrict variables, size_t *restrict variables_inserted); extern void setRunnerVariable(void *value, const SizedString *varName, RunnerVariable ***restrict variables, size_t *restrict variables_size, size_t *restrict variables_inserted); extern void *popFromStack(void ***restrict stack, size_t *restrict stack_inserted); extern void pushToStack(void *value, void ***restrict stack, size_t *restrict stack_size, size_t *restrict stack_inserted); extern void print(void ***restrict stack, size_t *restrict stack_inserted);