public override void Emit(IMapping mapping, byte[] input, ICollection <Symbol> buffer) { var set = mapping.GetCodeSet(_codeSet); buffer.Add(set.GetSymbolForCode(set.StartCode)); _highMode.Wrap(set, buffer, FlushHelper.CreateFlushEmits(set, input, buffer, Start, Length)); }
public override void Emit(IMapping mapping, byte[] input, ICollection <Symbol> buffer) { if (_needsChangeOfSet) { var previousSet = mapping.GetCodeSet(Predecessor.FinalCodeSet); var mySet = mapping.GetCodeSet(FinalCodeSet); if (!mySet.SwitchToCode.HasValue) { throw new InvalidOperationException($"Cannot switch to {FinalCodeSet} from "); } buffer.Add(previousSet.GetSymbolForCode(mySet.SwitchToCode.Value)); } var set = mapping.GetCodeSet(FinalCodeSet); _highMode.Wrap(set, buffer, FlushHelper.CreateFlushEmits(set, input, buffer, Start, Length)); }