X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2FGenericMemory.java;h=314a748f8d6157149064933327e42c528e7b1874;hb=b5d55c59d7069171bd928e4a945d9185ee4bc2b0;hp=8052014021bf99a20e12842b25db62ca9d7e1a6b;hpb=7d05144c25daa53e60fc9ed9fd503546a86567f8;p=Mograsim.git diff --git a/plugins/net.mograsim.machine/src/net/mograsim/machine/GenericMemory.java b/plugins/net.mograsim.machine/src/net/mograsim/machine/GenericMemory.java index 80520140..314a748f 100644 --- a/plugins/net.mograsim.machine/src/net/mograsim/machine/GenericMemory.java +++ b/plugins/net.mograsim.machine/src/net/mograsim/machine/GenericMemory.java @@ -5,16 +5,16 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Set; -public abstract class GenericMemory implements Memory +public abstract class GenericMemory implements Memory { private final long minimalAddress, maximalAddress; - private final MemoryDefinition definition; + private final D definition; private final int pageSize = 64; - private Set observers = new HashSet<>(); + private Set observers = new HashSet<>(); private HashMap pages; - public GenericMemory(MemoryDefinition definition) + public GenericMemory(D definition) { super(); this.definition = definition; @@ -67,18 +67,17 @@ public abstract class GenericMemory implements Memory private class Page { - private Object[] memory; + private T[] memory; + @SuppressWarnings("unchecked") public Page() { - memory = new Object[pageSize]; + memory = (T[]) new Object[pageSize]; } public T getCell(int index) { - @SuppressWarnings("unchecked") - T data = (T) memory[index]; - return data; + return memory[index]; } public void setCell(int index, T data) @@ -94,25 +93,24 @@ public abstract class GenericMemory implements Memory } @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) + protected void notifyObservers(long address) { observers.forEach(ob -> ob.update(address)); } @Override - public MemoryDefinition getDefinition() + public D getDefinition() { return definition; }