private void WriteControl(byte value) { if (UseFastUtf8) { EnsureBuffer(1).DangerousGetPinnableReference() = value; _output.Advance(1); } else if (UseFastUtf16) { var buffer = EnsureBuffer(2); Unsafe.As <byte, char>(ref buffer.DangerousGetPinnableReference()) = (char)value; _output.Advance(2); } else { var buffer = _output.GetSpan(); int written; while (!_output.SymbolTable.TryEncode(value, buffer, out written)) { buffer = EnsureBuffer(); } _output.Advance(written); } }
private void WriteControl(byte value) { if (UseFastUtf8) { MemoryMarshal.GetReference(EnsureBuffer(1)) = value; _output.Advance(1); } else if (UseFastUtf16) { var buffer = EnsureBuffer(2); Unsafe.As <byte, char>(ref MemoryMarshal.GetReference(buffer)) = (char)value; _output.Advance(2); } else { var buffer = _output.GetSpan(); int written; while (!_output.SymbolTable.TryEncode(value, buffer, out written)) { buffer = EnsureBuffer(); } _output.Advance(written); } }