Beispiel #1
0
        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}");
            }
        }
Beispiel #2
0
        // 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();
        }