make net tqueue use c structs

This commit is contained in:
Redo 2022-11-04 18:48:13 -06:00
parent 4f2b9f4e6d
commit 4b69ea3055
2 changed files with 13 additions and 8 deletions

View File

@ -58,8 +58,9 @@ function Gate.setportstate(gate, index, state)
gate.port_states[index] = state
if ((gate.port_net_state_num[index][0]>0) ~= (gate.port_net_state[index][0]==1)) and (gate.port_net_in_queue[index][0]==0) then
local group = gate.port_nets[index]
Simulation.queuegroup(GSim, group)
local net = gate.port_nets[index]
local cnet = net.c
Simulation.queuegroup_c(GSim, cnet)
end
end
end

View File

@ -284,10 +284,15 @@ function Simulation.queuegateinit(sim, gate)
end
-- Logic Critical
function Simulation.queuegroup(sim, net)
sim.groupqueue[sim.num_groupqueue+1] = net
function Simulation.queuegroup_c(sim, cnet)
sim.groupqueue[sim.num_groupqueue+1] = cnet
sim.num_groupqueue = sim.num_groupqueue + 1
net.in_queue[0] = 1
cnet.in_queue[0] = 1
end
function Simulation.queuegroup(sim, net)
local cnet = net.c
Simulation.queuegroup_c(sim, cnet)
end
function Simulation.queuegroup_safe(sim, group)
@ -298,7 +303,7 @@ end
function Simulation.dequeuegroup(sim, group)
if group.in_queue[0]~=0 then
array_remove(sim.groupqueue, group, true)
array_remove(sim.groupqueue, group.c, true)
sim.num_groupqueue = sim.num_groupqueue - 1
group.in_queue[0] = 0
end
@ -330,8 +335,7 @@ end
-- Logic Critical
function Simulation.ticklogic(sim)
for i = 1, sim.num_groupqueue do
local net = sim.groupqueue[i]
local cnet = net.c
local cnet = sim.groupqueue[i]
Group.update_c(cnet, sim.current_tick)
cnet.in_queue[0] = 0
sim.groupqueue[i] = nil