share sproto C struct

This commit is contained in:
Cloud Wu
2015-04-08 11:23:52 +08:00
parent ca33bf8b3e
commit 5a1132101b
3 changed files with 35 additions and 39 deletions

View File

@@ -13,14 +13,23 @@ function sproto_mt:__gc()
core.deleteproto(self.__cobj)
end
function sproto.new(bin,sz,nogc)
local cobj = assert(core.newproto(bin,sz))
function sproto.new(bin)
local cobj = assert(core.newproto(bin))
local self = {
__cobj = cobj,
__tcache = setmetatable( {} , weak_mt ),
__pcache = setmetatable( {} , weak_mt ),
}
return setmetatable(self, nogc and sproto_nogc or sproto_mt)
return setmetatable(self, sproto_mt)
end
function sproto.sharenew(cobj)
local self = {
__cobj = cobj,
__tcache = setmetatable( {} , weak_mt ),
__pcache = setmetatable( {} , weak_mt ),
}
return setmetatable(self, sproto_nogc)
end
function sproto.parse(ptext)