X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fstandard%2Fmemory%2FMainMemoryParser.java;fp=plugins%2Fnet.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fstandard%2Fmemory%2FMainMemoryParser.java;h=0000000000000000000000000000000000000000;hb=b5d55c59d7069171bd928e4a945d9185ee4bc2b0;hp=c3b0d689dbec88f110e629e88519f41b8c87b4bb;hpb=f098cd47d06be0cc654532a5fad0e5e89f0ef93c;p=Mograsim.git diff --git a/plugins/net.mograsim.machine/src/net/mograsim/machine/standard/memory/MainMemoryParser.java b/plugins/net.mograsim.machine/src/net/mograsim/machine/standard/memory/MainMemoryParser.java deleted file mode 100644 index c3b0d689..00000000 --- a/plugins/net.mograsim.machine/src/net/mograsim/machine/standard/memory/MainMemoryParser.java +++ /dev/null @@ -1,98 +0,0 @@ -package net.mograsim.machine.standard.memory; - -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; - -import net.mograsim.logic.core.types.BitVector; -import net.mograsim.machine.MainMemory; -import net.mograsim.machine.MainMemoryDefinition; - -public class MainMemoryParser -{ - private final static String lineSeparator = System.getProperty("line.separator"); - - public static void parseMemory(final MainMemory memory, String inputPath) throws IOException - { - try (InputStream input = new FileInputStream(inputPath)) - { - parseMemory(memory, input); - } - } - - /** - * @param input The input to parse must be in csv format; The stream is closed after being consumed. - * - * @throws IOException - */ - public static MainMemory parseMemory(MainMemoryDefinition memDef, InputStream input) throws IOException - { - try - { - MainMemory memory = new WordAddressableMemory(memDef); - parseMemory(memory, input); - return memory; - } - catch (NullPointerException e) - { - throw new MainMemoryParseException(e); - } - } - - /** - * - * @param input The input to parse must be in csv format; The stream is closed after being consumed. - * - * @throws IOException - */ - public static void parseMemory(final MainMemory memory, InputStream input) throws IOException - { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8))) - { - MainMemoryDefinition def = memory.getDefinition(); - - long minAddr = def.getMinimalAddress(); - long maxAddr = def.getMaximalAddress(); - - String line; - long i = minAddr; - try - { - for (; i <= maxAddr && reader.ready() && !"".equals((line = reader.readLine())); i++) - { - memory.setCell(i, BitVector.parseBitstring(line)); - } - } - catch (IOException e) - { - e.printStackTrace(); - } - } - } - - public static InputStream write(MainMemory memory) - { - return new InputStream() - { - long instIndex = memory.getDefinition().getMinimalAddress(), maxAddress = memory.getDefinition().getMaximalAddress(); - InputStream instStream = new ByteArrayInputStream(new byte[0]); - - @Override - public int read() throws IOException - { - int val = instStream.read(); - if (val == -1 && instIndex <= maxAddress) - { - instStream = new ByteArrayInputStream( - (memory.getCell(instIndex++).toBitstring() + lineSeparator).getBytes(StandardCharsets.UTF_8)); - val = instStream.read(); - } - return val; - } - }; - } -}