From ac914c719d401c44cb2633127952b022bf563ff3 Mon Sep 17 00:00:00 2001 From: René den Hertog Date: Thu, 26 Oct 2017 17:34:51 +0200 Subject: 'Bounded Retransmission Protocol' Blob --- .../Source/brpcompare/HashAlphabet.java | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 assignments/assignment2/Bounded Retransmission Protocol Tester/Source/brpcompare/HashAlphabet.java (limited to 'assignments/assignment2/Bounded Retransmission Protocol Tester/Source/brpcompare/HashAlphabet.java') diff --git a/assignments/assignment2/Bounded Retransmission Protocol Tester/Source/brpcompare/HashAlphabet.java b/assignments/assignment2/Bounded Retransmission Protocol Tester/Source/brpcompare/HashAlphabet.java new file mode 100755 index 0000000..46742d2 --- /dev/null +++ b/assignments/assignment2/Bounded Retransmission Protocol Tester/Source/brpcompare/HashAlphabet.java @@ -0,0 +1,54 @@ +package brpcompare; + +import net.automatalib.words.Alphabet; +import net.automatalib.words.abstractimpl.AbstractAlphabet; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * Created by joshua on 14/07/2016. + * I noticed that getSymbolIndex was called a lot. So I optimized for that, with a look up structure. + * Too bad it wasn't in LearnLib already. + */ +public class HashAlphabet extends AbstractAlphabet { + private final ArrayList symbols; + private final HashMap indices; + + public HashAlphabet(Alphabet in) { + symbols = new ArrayList<>(in); + indices = new HashMap<>(in.size()); + for (int i = 0; i < symbols.size(); i++) { + indices.put(symbols.get(i), i); + } + } + + @Override + public I getSymbol(int index) { + return symbols.get(index); + } + + @Override + public int getSymbolIndex(I symbol) { + return indices.get(symbol); + } + + @Override + public int size() { + return symbols.size(); + } + + /* (non-Javadoc) + * @see net.automatalib.words.abstractimpl.AbstractAlphabet#writeToArray(int, java.lang.Object[], int, int) + */ + @Override + public void writeToArray(int offset, Object[] array, int tgtOfs, int num) { + System.arraycopy(symbols, offset, array, tgtOfs, num); + } + + @Override + public boolean containsSymbol(I symbol) { + return indices.containsKey(symbol); + } + +} -- cgit v1.2.3