NuGet Package: https://www.nuget.org/packages/BitFields/
The analyzer in this package currently does not support packages.config format.
Type definition:
struct Rgb555 { enum BitFields { B = 5, G = 5, R = 5, } }
Quick Action:
Generated code:
using BitFields; partial struct Rgb555 { public ushort Value; private const int BShift = 0; private const ushort BMask = unchecked((ushort)((1U << 5) - (1U << 0))); public Bit5 B { get => (Bit5)((Value & BMask) >> BShift); set => Value = unchecked((ushort)((Value & ~BMask) | ((((ushort)value) << BShift) & BMask))); } private const int GShift = 5; private const ushort GMask = unchecked((ushort)((1U << 10) - (1U << 5))); public Bit5 G { get => (Bit5)((Value & GMask) >> GShift); set => Value = unchecked((ushort)((Value & ~GMask) | ((((ushort)value) << GShift) & GMask))); } private const int RShift = 10; private const ushort RMask = unchecked((ushort)((1U << 15) - (1U << 10))); public Bit5 R { get => (Bit5)((Value & RMask) >> RShift); set => Value = unchecked((ushort)((Value & ~RMask) | ((((ushort)value) << RShift) & RMask))); } }

