AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.7.0" />

 Priority

public struct Priority : IEquatable<Priority>
A priority object for comparing priorities.
using System; using System.Runtime.InteropServices; namespace AngleSharp.Css { [StructLayout(LayoutKind.Explicit, CharSet = CharSet.Unicode, Pack = 1)] public struct Priority : IEquatable<Priority> { [FieldOffset(0)] private byte tags; [FieldOffset(1)] private byte classes; [FieldOffset(2)] private byte ids; [FieldOffset(3)] private byte inlines; [FieldOffset(0)] private uint priority; public static readonly Priority Zero = new Priority(0); public static readonly Priority OneTag = new Priority(0, 0, 0, 1); public static readonly Priority OneClass = new Priority(0, 0, 1, 0); public static readonly Priority OneId = new Priority(0, 1, 0, 0); public static readonly Priority Inline = new Priority(1, 0, 0, 0); public byte Tags => tags; public byte Classes => classes; public byte Ids => ids; public byte Inlines => inlines; public Priority(uint priority) { inlines = (ids = (classes = (tags = 0))); this.priority = priority; } public Priority(byte inlines, byte ids, byte classes, byte tags) { priority = 0; this.inlines = inlines; this.ids = ids; this.classes = classes; this.tags = tags; } public static Priority operator +(Priority a, Priority b) { return new Priority(a.priority + b.priority); } public static bool operator ==(Priority a, Priority b) { return a.priority == b.priority; } public static bool operator >(Priority a, Priority b) { return a.priority > b.priority; } public static bool operator >=(Priority a, Priority b) { return a.priority >= b.priority; } public static bool operator <(Priority a, Priority b) { return a.priority < b.priority; } public static bool operator <=(Priority a, Priority b) { return a.priority <= b.priority; } public static bool operator !=(Priority a, Priority b) { return a.priority != b.priority; } public bool Equals(Priority other) { return priority == other.priority; } public override bool Equals(object obj) { if (obj is Priority) return Equals((Priority)obj); return false; } public override int GetHashCode() { return (int)priority; } public override string ToString() { return $"""{inlines}""{ids}""{classes}""{tags}"""; } } }