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(1)] public struct ChipsetInfoV1 : IInitializable, IChipsetInfo, IEquatable { internal StructureVersion _Version; internal readonly uint _VendorId; internal readonly uint _DeviceId; internal readonly ShortString _VendorName; internal readonly ShortString _ChipsetName; /// public bool Equals(ChipsetInfoV1 other) { return _VendorId == other._VendorId && _DeviceId == other._DeviceId && _VendorName.Equals(other._VendorName) && _ChipsetName.Equals(other._ChipsetName); } /// public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) { return false; } return obj is ChipsetInfoV1 v1 && Equals(v1); } /// public override int GetHashCode() { unchecked { var hashCode = (int) _VendorId; hashCode = (hashCode * 397) ^ (int) _DeviceId; hashCode = (hashCode * 397) ^ _VendorName.GetHashCode(); hashCode = (hashCode * 397) ^ _ChipsetName.GetHashCode(); 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 => ChipsetInfoFlag.None; } } }