public void OnNext(byte value) { if (IsInTextDataMode) { if (TextDataBlock.isPrintable(value)) { textDataBlock.Append(value); if (textDataBlock.CurNoOfBytes == 16) { FlushTextDataAndLeaveTextDataMode(); EnterTextDataMode(); } } else { FlushTextDataAndLeaveTextDataMode(); // recurse to processs value now OnNext(value); } } else { if (instr == null) { instr = new ConcreteInstruction(posStart, value); } else { instr.Append(value); } if (instr.IsComplete) { FlushInstruction(); if (instr.IsTextDataLabel) { EnterTextDataMode(); } instr = null; } } }
private void EnterTextDataMode() { textDataBlock = new TextDataBlock(posStart); }