revised callback system to use multiple arguments; added tobitstring function in utility
This commit is contained in:
parent
10611449bf
commit
d2a648f7d9
@ -32,8 +32,8 @@ end
|
||||
-- sim:queuecallback(self, str)
|
||||
-- end
|
||||
|
||||
function Gate:cb(str)
|
||||
sim:queuecallback(self, str)
|
||||
function Gate:cb(...)
|
||||
sim:queuecallback(self, ...)
|
||||
end
|
||||
|
||||
function Gate:queue(delay)
|
||||
|
@ -328,13 +328,11 @@ function Simulation:sendcallbacks()
|
||||
local data = "CB"
|
||||
|
||||
for objref, args in pairs(self.callbacks) do
|
||||
local argc = 0
|
||||
local escargs = {}
|
||||
for argidx, argv in ipairs(args) do
|
||||
table.insert(escargs, expandescape(tostring(argv)))
|
||||
argc = argc+1
|
||||
end
|
||||
data = data .. "\t" .. objref .. "\t"..argc..(#escargs>0 and ("\t"..table.concat(escargs, "\t")) or "")
|
||||
data = data .. "\t" .. objref .. "\t"..(#escargs)..(#escargs>0 and ("\t"..table.concat(escargs, "\t")) or "")
|
||||
end
|
||||
|
||||
client:send(data .. "\n")
|
||||
|
@ -51,3 +51,17 @@ function collapseescape(str)
|
||||
|
||||
return table.concat(ostrt)
|
||||
end
|
||||
|
||||
function tobitstring(num, len)
|
||||
local maxval = bit.lshift(1, len)
|
||||
if num>=maxval then error("bitstring value too big") end
|
||||
|
||||
num = num%maxval
|
||||
|
||||
local bitstring = ""
|
||||
for i = len, 1, -1 do
|
||||
bitstring = bitstring..bit.rshift(bit.band(num, bit.lshift(1, i-1)), i-1)
|
||||
end
|
||||
|
||||
return bitstring
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user