Example #1
0
        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));
        }
Example #2
0
        public override void Emit(IMapping mapping, byte[] input, ICollection <Symbol> buffer)
        {
            var set = mapping.GetCodeSet(CodeSetType.CodeC);

            buffer.Add(set.GetSymbolForCode(set.StartCode));
            FlushHelper.FlushCodeSetC(mapping, input, buffer, Start, Length);
        }
Example #3
0
        public override void Emit(IMapping mapping, byte[] input, ICollection <Symbol> buffer)
        {
            if (_switchToSet)
            {
                var previousSet = mapping.GetCodeSet(Predecessor.FinalCodeSet);
                buffer.Add(previousSet.GetSymbolForCode(SpecialCodes.SwitchToCodeC));
            }

            FlushHelper.FlushCodeSetC(mapping, input, buffer, Start, Length);
        }
Example #4
0
        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));
        }