FieldType.BitField." /> FieldType.BitField." /> FieldType.BitField." />
Class Sealed
public sealed class BitFieldBuilder

Namespace: SharpMeter.Core.Tables

Builder for defining bit sub-fields within a FieldType.BitField.

Methods

NameDescription
Bits(…) Adds a multi-bit field.
Bits(…) Adds a multi-bit field with enum value mappings.
Build() Builds the immutable array of bit field definitions.
Flag(string name, int bitPosition) Adds a single-bit flag.

Bits(string name, int startBit, int bitCount)

BitFieldBuilder BitFieldBuilder.Bits(string name, int startBit, int bitCount)

Adds a multi-bit field.

Bits(string name, int startBit, int bitCount, (int Value, string Label)[] values)

BitFieldBuilder BitFieldBuilder.Bits(string name, int startBit, int bitCount, params (int Value, string Label)[] values)

Adds a multi-bit field with enum value mappings.

Build()

ImmutableArray<BitFieldDefinition> BitFieldBuilder.Build()

Builds the immutable array of bit field definitions.

Flag(string name, int bitPosition)

BitFieldBuilder BitFieldBuilder.Flag(string name, int bitPosition)

Adds a single-bit flag.

View Source
/// <summary>
///     Builder for defining bit sub-fields within a <see cref = "FieldType.BitField"/>.
/// </summary>
public sealed class BitFieldBuilder
{
#region Fields
    private readonly List<BitFieldDefinition> _bits = [];
#endregion
#region Methods
    /// <summary>Adds a single-bit flag.</summary>
    public BitFieldBuilder Flag(string name, int bitPosition)
    {
        _bits.Add(new BitFieldDefinition(name, bitPosition, 1));
        return this;
    }

    /// <summary>Adds a multi-bit field.</summary>
    public BitFieldBuilder Bits(string name, int startBit, int bitCount)
    {
        _bits.Add(new BitFieldDefinition(name, startBit, bitCount));
        return this;
    }

    /// <summary>Adds a multi-bit field with enum value mappings.</summary>
    public BitFieldBuilder Bits(string name, int startBit, int bitCount, params (int Value, string Label)[] values)
    {
        var enumValues = ImmutableDictionary.CreateRange(values.Select(v => KeyValuePair.Create(v.Value, v.Label)));
        _bits.Add(new BitFieldDefinition(name, startBit, bitCount, enumValues));
        return this;
    }

    /// <summary>Builds the immutable array of bit field definitions.</summary>
    internal ImmutableArray<BitFieldDefinition> Build() => [.._bits];
#endregion
}
Was this page helpful?