<PackageReference Include="Apache.Arrow.Scalars" Version="23.0.0" />

Apache.Arrow.Scalars.Variant.VariantEncodingHelper

static class VariantEncodingHelper
namespace Apache.Arrow.Scalars.Variant { public ref struct VariantArrayReader { public int ElementCount { get; } public VariantArrayReader(ReadOnlySpan<byte> metadata, ReadOnlySpan<byte> value); public VariantReader GetElement(int index); } } namespace Apache.Arrow.Scalars.Variant { public ref struct VariantObjectReader { public int FieldCount { get; } public VariantObjectReader(ReadOnlySpan<byte> metadata, ReadOnlySpan<byte> value); public int GetFieldId(int index); public string GetFieldName(int index); public ReadOnlySpan<byte> GetFieldNameBytes(int index); public VariantReader GetFieldValue(int index); public bool TryGetField(ReadOnlySpan<byte> name, out VariantReader value); public bool TryGetField(string name, out VariantReader value); } } namespace Apache.Arrow.Scalars.Variant { internal static class VariantEncodingHelper { public const int MetadataVersion = 1; public static VariantBasicType GetBasicType(byte header); public static int GetValueHeader(byte header); public static byte MakeValueHeader(VariantBasicType basicType, int valueHeader); public static VariantPrimitiveType GetPrimitiveType(byte header); public static byte MakePrimitiveHeader(VariantPrimitiveType primitiveType); public static int GetShortStringLength(byte header); public static byte MakeShortStringHeader(int length); public static byte MakeObjectHeader(int fieldIdSize, int offsetSize, bool isLarge); public static void ParseObjectHeader(byte header, out int fieldIdSize, out int offsetSize, out bool isLarge); public static byte MakeArrayHeader(int offsetSize, bool isLarge); public static void ParseArrayHeader(byte header, out int offsetSize, out bool isLarge); public static void ParseMetadataHeader(byte header, out int version, out bool sortedStrings, out int offsetSize); public static byte MakeMetadataHeader(bool sortedStrings, int offsetSize); public static int ReadLittleEndianInt(ReadOnlySpan<byte> span, int byteWidth); public static void WriteLittleEndianInt(Span<byte> span, int value, int byteWidth); public static int ByteWidthForValue(int value); } }