import java.util.HashSet;
-import net.mograsim.machine.MemoryObserver;
import net.mograsim.machine.standard.memory.MemoryException;
public class StandardMicroInstructionMemory implements MicroInstructionMemory
{
private MicroInstruction[] data;
private MicroInstructionMemoryDefinition definition;
- private HashSet<MemoryObserver> observers = new HashSet<>();
+ private HashSet<MemoryCellModifiedListener> observers = new HashSet<>();
public StandardMicroInstructionMemory(MicroInstructionMemoryDefinition definition)
{
int translatedAddress = translate(address);
MicroInstruction actual = data[translatedAddress];
if (actual == null)
- actual = data[translatedAddress] = definition.getMicroInstructionDefinition()
- .createDefaultInstruction(() -> notifyObservers(address));
+ actual = data[translatedAddress] = definition.getMicroInstructionDefinition().createDefaultInstruction();
return actual;
}
public void setCell(long address, MicroInstruction data)
{
this.data[translate(address)] = data;
- notifyObservers(address);
+ notifyMemoryChanged(address);
}
@Override
- public void registerObserver(MemoryObserver ob)
+ public void registerCellModifiedListener(MemoryCellModifiedListener ob)
{
observers.add(ob);
}
@Override
- public void deregisterObserver(MemoryObserver ob)
+ public void deregisterCellModifiedListener(MemoryCellModifiedListener ob)
{
observers.remove(ob);
}
- @Override
- public void notifyObservers(long address)
+ private void notifyMemoryChanged(long address)
{
observers.forEach(ob -> ob.update(address));
}
{
return definition;
}
-
}