aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs')
-rw-r--r--src/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs b/src/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs
new file mode 100644
index 00000000..37b4cbfb
--- /dev/null
+++ b/src/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs
@@ -0,0 +1,52 @@
+namespace Ryujinx.Horizon.Sdk.Ncm
+{
+ readonly struct ApplicationId
+ {
+ public readonly ulong Id;
+
+ public static int Length => sizeof(ulong);
+
+ public static ApplicationId First => new(0x0100000000010000);
+
+ public static ApplicationId Last => new(0x01FFFFFFFFFFFFFF);
+
+ public static ApplicationId Invalid => new(0);
+
+ public bool IsValid => Id >= First.Id && Id <= Last.Id;
+
+ public ApplicationId(ulong id)
+ {
+ Id = id;
+ }
+
+ public override bool Equals(object obj)
+ {
+ return obj is ApplicationId applicationId && applicationId.Equals(this);
+ }
+
+ public bool Equals(ApplicationId other)
+ {
+ return other.Id == Id;
+ }
+
+ public override int GetHashCode()
+ {
+ return Id.GetHashCode();
+ }
+
+ public static bool operator ==(ApplicationId lhs, ApplicationId rhs)
+ {
+ return lhs.Equals(rhs);
+ }
+
+ public static bool operator !=(ApplicationId lhs, ApplicationId rhs)
+ {
+ return !lhs.Equals(rhs);
+ }
+
+ public override string ToString()
+ {
+ return $"0x{Id:x}";
+ }
+ }
+} \ No newline at end of file