diff options
| author | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2024-07-20 18:30:41 +0200 |
|---|---|---|
| committer | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2024-07-20 18:30:41 +0200 |
| commit | f78a792d4802be386a8798de100e17649ca2c3fd (patch) | |
| tree | ea40113285cb9ba155da005735e0986e47c9ec7b /vendor/lua | |
| parent | 9d6ed991cbb9ba8df592133eb401110cfb056620 (diff) | |
Add Lua example to vendor\lua as well as basic tests.
Diffstat (limited to 'vendor/lua')
| -rw-r--r-- | vendor/lua/README.md | 48 |
1 files changed, 43 insertions, 5 deletions
diff --git a/vendor/lua/README.md b/vendor/lua/README.md index 8f4b0f5a5..4bc7804bb 100644 --- a/vendor/lua/README.md +++ b/vendor/lua/README.md @@ -1,12 +1,50 @@ # Lua in Odin -```odin -import lua "vendor:lua/5.4" // or whatever version you want -``` - Lua packages * `vendor:lua/5.1` (version 5.1.5) * `vendor:lua/5.2` (version 5.2.4) * `vendor:lua/5.3` (version 5.3.6) -* `vendor:lua/5.4` (version 5.4.2)
\ No newline at end of file +* `vendor:lua/5.4` (version 5.4.2) + +With custom context-based allocator: + +```odin +package lua_example_with_context + +import "core:fmt" +import lua "vendor:lua/5.4" // or whatever version you want +import "core:c" +import "base:runtime" + +state: ^lua.State + +lua_allocator :: proc "c" (ud: rawptr, ptr: rawptr, osize, nsize: c.size_t) -> (buf: rawptr) { + old_size := int(osize) + new_size := int(nsize) + context = (^runtime.Context)(ud)^ + + if ptr == nil { + data, err := runtime.mem_alloc(new_size) + return raw_data(data) if err == .None else nil + } else { + if nsize > 0 { + data, err := runtime.mem_resize(ptr, old_size, new_size) + return raw_data(data) if err == .None else nil + } else { + runtime.mem_free(ptr) + return + } + } +} + +main :: proc() { + _context := context + state = lua.newstate(lua_allocator, &_context) + defer lua.close(state) + + lua.L_dostring(state, "return 'somestring'") + str := lua.tostring(state, -1) + fmt.println(str) +} +```
\ No newline at end of file |