#include #include #ifndef PUZZLE_H // This is a param that would be placed in a slot // https://wren.io/embedding/slots-and-handles.html#writing-slots typedef struct { WrenType type; // We store this value as void * to generalize. The downside of this approach // is an extenciva allocation void *value; } PuzzleIO; typedef struct { // https://wren.io/embedding/calling-wren-from-c.html#getting-a-method-handle char *MainMethodSignature; size_t argc; PuzzleIO *argv; } Test; typedef struct { char *Name; char *Description; /// The tests that are accessible for an end user size_t TestC; Test *Tests; } Puzzle; // TODO void ReadPuzzleFromFile(const char *path); void FreePuzzle(Puzzle *self); /// A prebuilt puzzle. Used for debuging Puzzle *GetTestPuzzle(); #define PUZZLE_H #endif // PUZZLE_H