stop using self in class functions
This commit is contained in:
144
sim/group.lua
144
sim/group.lua
@@ -37,88 +37,88 @@ function Group.new(self)
|
||||
return o
|
||||
end
|
||||
|
||||
function Group.getsize(self)
|
||||
return self.nwires + self.nout_ports + self.nin_ports
|
||||
function Group.getsize(group)
|
||||
return group.nwires + group.nout_ports + group.nin_ports
|
||||
end
|
||||
|
||||
function Group.addwire(self, wire)
|
||||
if Wire.getgroup(wire) ~= self then
|
||||
function Group.addwire(group, wire)
|
||||
if Wire.getgroup(wire) ~= group then
|
||||
if Wire.getgroup(wire) ~= nil then
|
||||
Group.mergewith(self, Wire.getgroup(wire))
|
||||
Group.mergewith(group, Wire.getgroup(wire))
|
||||
else
|
||||
self.wires[wire] = wire
|
||||
self.nwires = self.nwires + 1
|
||||
group.wires[wire] = wire
|
||||
group.nwires = group.nwires + 1
|
||||
|
||||
Wire.setgroup(wire, self)
|
||||
Wire.setgroup(wire, group)
|
||||
Wire.update(wire)
|
||||
Simulation.queuegroup(GSim, self)
|
||||
Simulation.queuegroup(GSim, group)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Group.removewire(self, wire)
|
||||
function Group.removewire(group, wire)
|
||||
Wire.setgroup(wire, nil)
|
||||
self.wires[wire] = nil
|
||||
group.wires[wire] = nil
|
||||
|
||||
local sim = GSim
|
||||
|
||||
for k, wire in pairs(self.wires) do
|
||||
for k, wire in pairs(group.wires) do
|
||||
Wire.setgroup(wire, nil)
|
||||
end
|
||||
|
||||
for k, port in pairs(self.out_ports) do
|
||||
for k, port in pairs(group.out_ports) do
|
||||
Port.setgroup(port, nil)
|
||||
end
|
||||
|
||||
for k, port in pairs(self.in_ports) do
|
||||
for k, port in pairs(group.in_ports) do
|
||||
Port.setgroup(port, nil)
|
||||
end
|
||||
|
||||
for k, wire in pairs(self.wires) do
|
||||
for k, wire in pairs(group.wires) do
|
||||
Simulation.connectwire(sim, wire)
|
||||
end
|
||||
|
||||
for k, port in pairs(self.out_ports) do
|
||||
for k, port in pairs(group.out_ports) do
|
||||
Simulation.connectport(sim, port)
|
||||
end
|
||||
|
||||
for k, port in pairs(self.in_ports) do
|
||||
for k, port in pairs(group.in_ports) do
|
||||
Simulation.connectport(sim, port)
|
||||
end
|
||||
|
||||
self.wires = {}
|
||||
self.out_ports = {}
|
||||
self.in_ports = {}
|
||||
group.wires = {}
|
||||
group.out_ports = {}
|
||||
group.in_ports = {}
|
||||
|
||||
self.nwires = 0
|
||||
self.nout_ports = 0
|
||||
self.nin_ports = 0
|
||||
group.nwires = 0
|
||||
group.nout_ports = 0
|
||||
group.nin_ports = 0
|
||||
|
||||
Simulation.dequeuegroup(GSim, self)
|
||||
Simulation.dequeuegroup(GSim, group)
|
||||
end
|
||||
|
||||
function Group.addport(self, port)
|
||||
function Group.addport(group, port)
|
||||
if port.group~=nil then error("port already has group") end
|
||||
port.group = self
|
||||
port.group = group
|
||||
|
||||
if port.type == PortTypes.output then
|
||||
if self.out_ports[port] then error("port already in group") end
|
||||
if group.out_ports[port] then error("port already in group") end
|
||||
|
||||
self.out_ports[port] = port
|
||||
self.nout_ports = self.nout_ports + 1
|
||||
group.out_ports[port] = port
|
||||
group.nout_ports = group.nout_ports + 1
|
||||
if Port.getstate(port) then
|
||||
self.state_num = self.state_num + 1
|
||||
group.state_num = group.state_num + 1
|
||||
end
|
||||
|
||||
Simulation.queuegroup(GSim, self)
|
||||
Simulation.queuegroup(GSim, group)
|
||||
|
||||
elseif port.type == PortTypes.input then
|
||||
if self.in_ports[port] then error("port already in group") end
|
||||
if group.in_ports[port] then error("port already in group") end
|
||||
|
||||
self.in_ports[port] = port
|
||||
self.nin_ports = self.nin_ports + 1
|
||||
group.in_ports[port] = port
|
||||
group.nin_ports = group.nin_ports + 1
|
||||
if port.causeupdate then
|
||||
table.insert(self.in_ports_update, port)
|
||||
table.insert(group.in_ports_update, port)
|
||||
end
|
||||
|
||||
Simulation.queuegate(GSim, Port.getgate(port))
|
||||
@@ -126,83 +126,83 @@ function Group.addport(self, port)
|
||||
end
|
||||
end
|
||||
|
||||
function Group.removeport(self, port)
|
||||
if port.group~=self then error("port does not have group") end
|
||||
function Group.removeport(group, port)
|
||||
if port.group~=group then error("port does not have group") end
|
||||
port.group = nil
|
||||
|
||||
if port.type == PortTypes.output then
|
||||
if not self.out_ports[port] then error("port not in group") end
|
||||
self.out_ports[port] = nil
|
||||
self.nout_ports = self.nout_ports - 1
|
||||
if not group.out_ports[port] then error("port not in group") end
|
||||
group.out_ports[port] = nil
|
||||
group.nout_ports = group.nout_ports - 1
|
||||
|
||||
if Port.getstate(port) then
|
||||
self.state_num = self.state_num - 1
|
||||
group.state_num = group.state_num - 1
|
||||
end
|
||||
|
||||
Simulation.queuegroup(GSim, self)
|
||||
Simulation.queuegroup(GSim, group)
|
||||
|
||||
elseif port.type == PortTypes.input then
|
||||
if not self.in_ports[port] then error("port not in group") end
|
||||
if not group.in_ports[port] then error("port not in group") end
|
||||
|
||||
self.in_ports[port] = nil
|
||||
self.nin_ports = self.nin_ports - 1
|
||||
group.in_ports[port] = nil
|
||||
group.nin_ports = group.nin_ports - 1
|
||||
if port.causeupdate then
|
||||
array_remove(self.in_ports_update, port)
|
||||
array_remove(group.in_ports_update, port)
|
||||
end
|
||||
|
||||
Simulation.queuegate(GSim, Port.getgate(port))
|
||||
end
|
||||
end
|
||||
|
||||
function Group.mergewith(self, group)
|
||||
if Group.getsize(self) >= Group.getsize(group) then
|
||||
Group.mergeinto(group, self)
|
||||
return self
|
||||
else
|
||||
Group.mergeinto(self, group)
|
||||
function Group.mergewith(group, group2)
|
||||
if Group.getsize(group) >= Group.getsize(group2) then
|
||||
Group.mergeinto(group2, group)
|
||||
return group
|
||||
else
|
||||
Group.mergeinto(group, group2)
|
||||
return group2
|
||||
end
|
||||
end
|
||||
|
||||
function Group.mergeinto(self, group)
|
||||
for k, wire in pairs(self.wires) do
|
||||
function Group.mergeinto(group, group2)
|
||||
for k, wire in pairs(group.wires) do
|
||||
Wire.setgroup(wire, nil)
|
||||
Group.addwire(group, wire)
|
||||
Group.addwire(group2, wire)
|
||||
end
|
||||
|
||||
for k, port in pairs(self.out_ports) do
|
||||
for k, port in pairs(group.out_ports) do
|
||||
Port.setgroup(port, nil)
|
||||
Group.addport(group, port)
|
||||
Group.addport(group2, port)
|
||||
end
|
||||
|
||||
for k, port in pairs(self.in_ports) do
|
||||
for k, port in pairs(group.in_ports) do
|
||||
Port.setgroup(port, nil)
|
||||
Group.addport(group, port)
|
||||
Group.addport(group2, port)
|
||||
end
|
||||
|
||||
self.wires = {}
|
||||
self.out_ports = {}
|
||||
self.in_ports = {}
|
||||
group.wires = {}
|
||||
group.out_ports = {}
|
||||
group.in_ports = {}
|
||||
|
||||
self.nwires = 0
|
||||
self.nout_ports = 0
|
||||
self.nin_ports = 0
|
||||
group.nwires = 0
|
||||
group.nout_ports = 0
|
||||
group.nin_ports = 0
|
||||
|
||||
Simulation.dequeuegroup(GSim, self)
|
||||
Simulation.dequeuegroup(GSim, group)
|
||||
end
|
||||
|
||||
function Group.setstate(self, state)
|
||||
if state ~= self.state then
|
||||
function Group.setstate(group, state)
|
||||
if state ~= group.state then
|
||||
local sim = GSim
|
||||
|
||||
self.state = state
|
||||
self.updatetick = sim.currenttick
|
||||
group.state = state
|
||||
group.updatetick = sim.currenttick
|
||||
|
||||
for k, port in ipairs(self.in_ports_update) do
|
||||
for k, port in ipairs(group.in_ports_update) do
|
||||
Simulation.queuegate(sim, Port.getgate(port))
|
||||
end
|
||||
|
||||
Simulation.queuegroupfx(sim, self)
|
||||
Simulation.queuegroupfx(sim, group)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user