# repl_tools.h This header provides a number of tools for compiling and running Toy, and is used primarily by the repl. However, it can also be modified and used by any host program with a little effort. This is not a core part of Toy or a library, and as such `repl_tools.h` and `repl_tools.c` can both be found in the `repl/` folder. ## Defined Functions ### const char* Toy_readFile(const char* path, size_t* fileSize) This function reads in a file, and returns it as a constant buffer. It also sets the variable pointed to by `fileSize` to the size of the given buffer. On error, this function returns `NULL`. ### int Toy_writeFile(const char* path, const unsigned char* bytes, size_t size) This function writes the buffer pointed to by `bytes` to a file specified by `path`. The buffer's size should be specified by `size`. On error, this function returns a non-zero value. ### const unsigned char* Toy_compileString(const char* source, size_t* size) This function takes a cstring of Toy source code, and returns a compiled buffer based on that source code. The variable pointed to by `size` is set to the size of the bytecode. On error, this function returns `NULL`. ### void Toy_runBinary(const unsigned char* tb, size_t size) This function takes a bytecode array of `size` size, and executes it. The libraries available to the code are currently: * lib_about * lib_standard * lib_random * lib_runner ### void Toy_runBinaryFile(const char* fname) This function loads in the binary file specified by `fname`, and passes it to `Toy_runBinary()`. ### void Toy_runSource(const char* source) This function compiles the source with `Toy_compileString()`, and passes it to `Toy_runBinary()`. ### void Toy_runSourceFile(const char* fname) This function loads in the file specified by `fname`, compiles it, and passes it to `Toy_runBinary()`. ### void Toy_parseBinaryFileHeader(const char* fname) This function parses the header information stored within the bytecode file `fname`. This is only used for debugging and validation purposes.