stop using self in class functions

This commit is contained in:
Redo0
2021-05-25 17:25:34 -05:00
parent 730ca3fd64
commit 4cf2231a01
4 changed files with 226 additions and 226 deletions

View File

@@ -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