add gate/net pointer lists

This commit is contained in:
Redo
2022-11-04 16:29:11 -06:00
parent 5aa11f9e43
commit 658bcc6ad8
7 changed files with 62 additions and 190 deletions

View File

@@ -3,6 +3,18 @@ local ffi = FFI or require("ffi")
Gate = {}
ffi.cdef [[
struct Net;
struct Gate {
int* in_queue;
int* port_states;
int** port_net_state;
int** port_net_state_num;
int** port_net_in_queue;
struct Net** port_nets_c;
};
]]
function Gate.new(objref, definition)
local gate = {
-- Logic Critical
@@ -14,10 +26,21 @@ function Gate.new(objref, definition)
port_net_state = ffi.new("int*["..(#definition.ports+1).."]"),
port_net_state_num = ffi.new("int*["..(#definition.ports+1).."]"),
port_net_in_queue = ffi.new("int*["..(#definition.ports+1).."]"),
port_nets_c = ffi.new("struct Net*["..(#definition.ports+1).."]"),
objref = objref,
definition = definition,
}
gate.in_queue[0] = 0
gate.c = ffi.new("struct Gate")
gate.c.in_queue = gate.in_queue
gate.c.port_states = gate.port_states
gate.c.port_net_state = gate.port_net_state
gate.c.port_net_state_num = gate.port_net_state_num
gate.c.port_net_in_queue = gate.port_net_in_queue
gate.c.port_nets_c = gate.port_nets_c
return gate
end