ApplicationId.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. namespace Ryujinx.Horizon.Sdk.Ncm
  2. {
  3. readonly struct ApplicationId
  4. {
  5. public readonly ulong Id;
  6. public static int Length => sizeof(ulong);
  7. public static ApplicationId First => new(0x0100000000010000);
  8. public static ApplicationId Last => new(0x01FFFFFFFFFFFFFF);
  9. public static ApplicationId Invalid => new(0);
  10. public bool IsValid => Id >= First.Id && Id <= Last.Id;
  11. public ApplicationId(ulong id)
  12. {
  13. Id = id;
  14. }
  15. public override bool Equals(object obj)
  16. {
  17. return obj is ApplicationId applicationId && applicationId.Equals(this);
  18. }
  19. public bool Equals(ApplicationId other)
  20. {
  21. return other.Id == Id;
  22. }
  23. public override int GetHashCode()
  24. {
  25. return Id.GetHashCode();
  26. }
  27. public static bool operator ==(ApplicationId lhs, ApplicationId rhs)
  28. {
  29. return lhs.Equals(rhs);
  30. }
  31. public static bool operator !=(ApplicationId lhs, ApplicationId rhs)
  32. {
  33. return !lhs.Equals(rhs);
  34. }
  35. public override string ToString()
  36. {
  37. return $"0x{Id:x}";
  38. }
  39. }
  40. }