add gate/net pointer lists
This commit is contained in:
23
sim/gate.lua
23
sim/gate.lua
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user