private static Fst readFst(ObjectInputStream objectInputStream) { string[] array = Fst.readStringMap(objectInputStream); string[] array2 = Fst.readStringMap(objectInputStream); int num = objectInputStream.readInt(); Semiring semiring = (Semiring)objectInputStream.readObject(); int num2 = objectInputStream.readInt(); Fst fst = new Fst(num2); fst.isyms = array; fst.osyms = array2; fst.semiring = semiring; for (int i = 0; i < num2; i++) { int num3 = objectInputStream.readInt(); State state = new State(num3 + 1); float num4 = objectInputStream.readFloat(); if (num4 == fst.semiring.zero()) { num4 = fst.semiring.zero(); } else if (num4 == fst.semiring.one()) { num4 = fst.semiring.one(); } state.setFinalWeight(num4); state.id = objectInputStream.readInt(); fst.states.add(state); } fst.setStart((State)fst.states.get(num)); num2 = fst.getNumStates(); for (int i = 0; i < num2; i++) { State state2 = fst.getState(i); for (int j = 0; j < state2.initialNumArcs - 1; j++) { Arc arc = new Arc(); arc.setIlabel(objectInputStream.readInt()); arc.setOlabel(objectInputStream.readInt()); arc.setWeight(objectInputStream.readFloat()); arc.setNextState((State)fst.states.get(objectInputStream.readInt())); state2.addArc(arc); } } return(fst); }
private static ImmutableFst readImmutableFst(ObjectInputStream objectInputStream) { string[] isyms = Fst.readStringMap(objectInputStream); string[] osyms = Fst.readStringMap(objectInputStream); int num = objectInputStream.readInt(); Semiring semiring = (Semiring)objectInputStream.readObject(); int num2 = objectInputStream.readInt(); ImmutableFst immutableFst = new ImmutableFst(num2); immutableFst.isyms = isyms; immutableFst.osyms = osyms; immutableFst.semiring = semiring; for (int i = 0; i < num2; i++) { int num3 = objectInputStream.readInt(); ImmutableState immutableState = new ImmutableState(num3 + 1); float num4 = objectInputStream.readFloat(); if (num4 == immutableFst.semiring.zero()) { num4 = immutableFst.semiring.zero(); } else if (num4 == immutableFst.semiring.one()) { num4 = immutableFst.semiring.one(); } immutableState.setFinalWeight(num4); immutableState.id = objectInputStream.readInt(); immutableFst.states[immutableState.getId()] = immutableState; } immutableFst.setStart(immutableFst.states[num]); num2 = immutableFst.states.Length; for (int i = 0; i < num2; i++) { ImmutableState immutableState2 = immutableFst.states[i]; for (int j = 0; j < immutableState2.initialNumArcs - 1; j++) { Arc arc = new Arc(); arc.setIlabel(objectInputStream.readInt()); arc.setOlabel(objectInputStream.readInt()); arc.setWeight(objectInputStream.readFloat()); arc.setNextState(immutableFst.states[objectInputStream.readInt()]); immutableState2.setArc(j, arc); } } return(immutableFst); }