Skip to content

Karius/lua-stable

 
 

Repository files navigation

Share table between lua states

lua api with meta info support

local stable = require "stable"

-- init meta info first , we have two struct and one enum now : "foo" , "bar" and "xx"
local info = stable.init {
	foo = {
		hello = 1,	-- number , default value is 1
		world = { "Alice", "Bob" },	-- anonymous enum
		foobar = {
			foobar = "",	-- string
		},
		array = "*number",	-- number array
		bars = "*bar",	-- struct bar array
	},
	bar = {
		first = true,
		second = 1,
		third = "*xx", -- enum xx array
	},
	xx = { "ONE", "TWO" }
}

-- create an object with type "foo"
a = stable.create "foo"

a.world = "Alice"
a.foobar = "xxx"
a.bars[1] = { second = 2 }
a.bars[2] = { third = { "ONE" , "ONE" , "TWO" } }

-- release a
stable.release(a)

raw api

local sraw = require "stable.raw"

sraw.init()  -- init lightuserdata metatable

local t = sraw.create()

t.hello = { world = true } 
-- If you don't want to set explicit, use this :
--   sraw.set(t,"hello", { world = true })

print(t.hello.world)
-- or use this :
--   hello = sraw.get(t,"hello") ; print( sraw.get(hello, "world"))

-- you can send t (a lightuserdata) to other lua state. (thread safe)

for k,v in pairs(t.hello) do  -- or use sraw.pairs
  print (k,v)
end

sraw.release(t)

About

Share table among lua states

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published