private <I, SP, TP> void writeAutomatonBody(UniversalAutomaton<?, I, ?, SP, TP> automaton, Alphabet<I> alphabet, boolean deterministic, BlockPropertyEncoder<? super SP> spDecoder, SinglePropertyEncoder<? super TP> tpDecoder) throws IOException { final int numStates = automaton.size(); out.writeInt(numStates); // this cast is required .. final UniversalAutomaton<?, I, ?, SP, TP> resultWithCorrectType = automaton; if (deterministic) { encodeBodyDet(resultWithCorrectType, alphabet, spDecoder, tpDecoder); } else { encodeBodyNondet(resultWithCorrectType, alphabet, spDecoder, tpDecoder); } }
private <S, SP> void encodeStatesDet(UniversalAutomaton<S, ?, ?, SP, ?> source, final S init, final List<S> states, BlockPropertyEncoder<? super SP> encoder) throws IOException { out.writeInt(states.indexOf(init)); encodeStateProperties(source, states, encoder); }
private <S, I, SP, TP> void encodeBodyNondet(UniversalAutomaton<S, I, ?, SP, TP> source, Alphabet<I> alphabet, BlockPropertyEncoder<? super SP> spEncoder, SinglePropertyEncoder<? super TP> tpEncoder) throws IOException { final List<S> states = new ArrayList<>(source.getStates()); final Set<S> initials = source.getInitialStates(); encodeStatesNondet(source, initials, states, spEncoder); encodeTransitionsNondet(source, alphabet, states, tpEncoder); }
public <I, SP, TP> void writeAutomaton(UniversalAutomaton<?, I, ?, SP, TP> source, Alphabet<I> alphabet, AutomatonType expectedType, BlockPropertyEncoder<? super SP> spEncoder, SinglePropertyEncoder<? super TP> tpEncoder) throws IOException { writeHeader(expectedType); out.writeInt(alphabet.size()); writeAutomatonBody(source, alphabet, expectedType.isDeterministic(), spEncoder, tpEncoder); }
private <S, I, SP, TP> void encodeBodyDet(UniversalAutomaton<S, I, ?, SP, TP> result, Alphabet<I> alphabet, BlockPropertyEncoder<? super SP> spEncoder, SinglePropertyEncoder<? super TP> tpEncoder) throws IOException { final Set<S> initials = result.getInitialStates(); if (initials.size() != 1) { throw new IllegalArgumentException(); } final List<S> states = new ArrayList<>(result.getStates()); final S init = initials.iterator().next(); encodeStatesDet(result, init, states, spEncoder); encodeTransitionsDet(result, alphabet, states, tpEncoder); }
public <I> void writeNFA(NFA<?, I> automaton, Alphabet<I> alphabet) throws IOException { writeAutomaton(automaton, alphabet, AutomatonType.NFA, new AcceptanceEncoder(), SinglePropertyEncoder.nullEncoder()); } }
private <S, I, SP, TP> void encodeBodyNondet(UniversalAutomaton<S, I, ?, SP, TP> source, Alphabet<I> alphabet, BlockPropertyEncoder<? super SP> spEncoder, SinglePropertyEncoder<? super TP> tpEncoder) throws IOException { final List<S> states = new ArrayList<>(source.getStates()); final Set<S> initials = source.getInitialStates(); encodeStatesNondet(source, initials, states, spEncoder); encodeTransitionsNondet(source, alphabet, states, tpEncoder); }
public <I, SP, TP> void writeAutomaton(UniversalAutomaton<?, I, ?, SP, TP> source, Alphabet<I> alphabet, AutomatonType expectedType, BlockPropertyEncoder<? super SP> spEncoder, SinglePropertyEncoder<? super TP> tpEncoder) throws IOException { writeHeader(expectedType); out.writeInt(alphabet.size()); writeAutomatonBody(source, alphabet, expectedType.isDeterministic(), spEncoder, tpEncoder); }
private <S, I, SP, TP> void encodeBodyDet(UniversalAutomaton<S, I, ?, SP, TP> result, Alphabet<I> alphabet, BlockPropertyEncoder<? super SP> spEncoder, SinglePropertyEncoder<? super TP> tpEncoder) throws IOException { final Set<S> initials = result.getInitialStates(); if (initials.size() != 1) { throw new IllegalArgumentException(); } final List<S> states = new ArrayList<>(result.getStates()); final S init = initials.iterator().next(); encodeStatesDet(result, init, states, spEncoder); encodeTransitionsDet(result, alphabet, states, tpEncoder); }
public <I> void writeDFA(DFA<?, I> automaton, Alphabet<I> alphabet) throws IOException { writeAutomaton(automaton, alphabet, AutomatonType.DFA, new AcceptanceEncoder(), SinglePropertyEncoder.nullEncoder()); }
private <I, SP, TP> void writeAutomatonBody(UniversalAutomaton<?, I, ?, SP, TP> automaton, Alphabet<I> alphabet, boolean deterministic, BlockPropertyEncoder<? super SP> spDecoder, SinglePropertyEncoder<? super TP> tpDecoder) throws IOException { final int numStates = automaton.size(); out.writeInt(numStates); // this cast is required .. final UniversalAutomaton<?, I, ?, SP, TP> resultWithCorrectType = automaton; if (deterministic) { encodeBodyDet(resultWithCorrectType, alphabet, spDecoder, tpDecoder); } else { encodeBodyNondet(resultWithCorrectType, alphabet, spDecoder, tpDecoder); } }
private <S, SP> void encodeStatesDet(UniversalAutomaton<S, ?, ?, SP, ?> source, final S init, final List<S> states, BlockPropertyEncoder<? super SP> encoder) throws IOException { out.writeInt(states.indexOf(init)); encodeStateProperties(source, states, encoder); }
public <I> void writeDFA(DFA<?, I> automaton, Alphabet<I> alphabet) throws IOException { writeAutomaton(automaton, alphabet, AutomatonType.DFA, new AcceptanceEncoder(), SinglePropertyEncoder.nullEncoder()); }
private <S, SP> void encodeStatesNondet(UniversalAutomaton<S, ?, ?, SP, ?> source, final Collection<? extends S> initialStates, final List<S> states, BlockPropertyEncoder<? super SP> encoder) throws IOException { // 'writeInts' out.writeInt(initialStates.size()); for (final S s : initialStates) { out.writeInt(states.indexOf(s)); } // end 'writeInts' encodeStateProperties(source, states, encoder); }
public <I> void writeNFA(NFA<?, I> automaton, Alphabet<I> alphabet) throws IOException { writeAutomaton(automaton, alphabet, AutomatonType.NFA, new AcceptanceEncoder(), SinglePropertyEncoder.nullEncoder()); } }
private <S, SP> void encodeStatesNondet(UniversalAutomaton<S, ?, ?, SP, ?> source, final Collection<? extends S> initialStates, final List<S> states, BlockPropertyEncoder<? super SP> encoder) throws IOException { // 'writeInts' out.writeInt(initialStates.size()); for (final S s : initialStates) { out.writeInt(states.indexOf(s)); } // end 'writeInts' encodeStateProperties(source, states, encoder); }