public void Present(Span <byte> output, VariantValue value, ValuePresenterLimits limits, out int byteCount) { switch (value.Kind) { case VariantKind.Int32: AppendNumber(output, value.AsInt32Unchecked(), out byteCount); return; case VariantKind.Int64: Utf8Formatter.TryFormat(value.AsInt64Unchecked(), output, out byteCount); return; case VariantKind.Object: AppendValue(output, value.AsObjectUnchecked(), depth: 1, limits, out byteCount); return; default: throw new NotSupportedException($"Unsupported variant kind: {value.Kind}"); } }
// Does NOT have to be thread-safe private void WriteRecordWithValueToWriter(Utf8JsonWriter writer, FlowRecord record, VariantValue value) { writer.WriteStartArray(); writer.WriteNumberValue(record.LineNumber); switch (value.Kind) { case VariantKind.Int32: writer.WriteNumberValue(value.AsInt32Unchecked()); break; default: WriteOtherValueToWriter(writer, record, value); break; } if (record.Name != null) { WriteNameToWriter(writer, record.Name); } writer.WriteEndArray(); }