using System; using System.Runtime.InteropServices; using NvAPIWrapper.Native.Attributes; using NvAPIWrapper.Native.Interfaces; using NvAPIWrapper.Native.Interfaces.General; namespace NvAPIWrapper.Native.General.Structures { /// /// Holds information about the system's chipset. /// [StructLayout(LayoutKind.Sequential, Pack = 8)] [StructureVersion(2)] public struct ChipsetInfoV2 : IInitializable, IChipsetInfo, IEquatable { internal StructureVersion _Version; internal readonly uint _VendorId; internal readonly uint _DeviceId; internal readonly ShortString _VendorName; internal readonly ShortString _ChipsetName; internal readonly ChipsetInfoFlag _Flags; /// public bool Equals(ChipsetInfoV2 other) { return _VendorId == other._VendorId && _DeviceId == other._DeviceId && _VendorName.Equals(other._VendorName) && _ChipsetName.Equals(other._ChipsetName) && _Flags == other._Flags; } /// public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) { return false; } return obj is ChipsetInfoV2 v2 && Equals(v2); } /// public override int GetHashCode() { unchecked { var hashCode = (int) _VendorId; hashCode = (hashCode * 397) ^ (int) _DeviceId; hashCode = (hashCode * 397) ^ _VendorName.GetHashCode(); hashCode = (hashCode * 397) ^ _ChipsetName.GetHashCode(); hashCode = (hashCode * 397) ^ (int) _Flags; return hashCode; } } /// public override string ToString() { return $"{VendorName} {ChipsetName}"; } /// public int VendorId { get => (int) _VendorId; } /// public int DeviceId { get => (int) _DeviceId; } /// public string VendorName { get => _VendorName.Value; } /// public string ChipsetName { get => _ChipsetName.Value; } /// public ChipsetInfoFlag Flags { get => _Flags; } } }