diff --git a/include/groundext.h b/include/groundext.h index e8c35ac..735b9b7 100644 --- a/include/groundext.h +++ b/include/groundext.h @@ -7,10 +7,30 @@ extern "C" { #endif +// Macro for easily returning errors +#define ERROR(what, type) return createErrorGroundValue(createGroundError(what, type, NULL, NULL)) + // Forward declaration of the scope structure used in interpreter struct GroundScope; typedef struct GroundScope GroundScope; +/* + * Stores data associated with an error thrown during Ground execution. + */ +typedef struct GroundError { + char* what; + char* type; + struct GroundInstruction* where; + size_t line; + bool hasLine; +} GroundError; + +// Creates a GroundValue containing (in), with type ERROR. +GroundValue createErrorGroundValue(GroundError in); + +// Creates a GroundError. +GroundError createGroundError(char* what, char* type, GroundInstruction* where, size_t* line); + /* * Function pointer type for native functions. * scope: The current execution scope (opaque).