use c structs around queues

This commit is contained in:
Redo
2022-11-04 18:35:15 -06:00
parent 9744345219
commit e8208b2f34
2 changed files with 13 additions and 7 deletions

View File

@@ -252,6 +252,11 @@ function Simulation.queuegate(sim, gate)
gate.in_queue[0] = 1
end
function Simulation.queuegate_c(sim, cgate)
local gate = Simulation.gate_from_cgate(cgate)
Simulation.queuegate(sim, gate)
end
function Simulation.queuegate_safe(sim, gate)
if gate.in_queue[0]==0 then
Simulation.queuegate(sim, gate)
@@ -326,8 +331,9 @@ end
function Simulation.ticklogic(sim)
for i = 1, sim.num_groupqueue do
local net = sim.groupqueue[i]
Group.update(net, sim.current_tick)
net.in_queue[0] = 0
local cnet = net.c
Group.update_c(cnet, sim.current_tick)
cnet.in_queue[0] = 0
sim.groupqueue[i] = nil
end
sim.num_groupqueue = 0
@@ -343,8 +349,10 @@ function Simulation.ticklogic(sim)
for i = 1, sim.num_gatequeue do
local gate = sim.gatequeue[i]
local cgate = gate.c
gate = Simulation.gate_from_cgate(sim, cgate)
gate.logic(gate)
gate.in_queue[0] = 0
cgate.in_queue[0] = 0
sim.gatequeue[i] = nil
end
sim.num_gatequeue = 0