Class
Sealed
public sealed class BitFieldBuilder
Namespace: SharpMeter.Core.Tables
Builder for defining bit sub-fields within a FieldType.BitField.
Methods
| Name | Description |
|---|---|
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
}