aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Common/Memory/Ptr.cs
diff options
context:
space:
mode:
authorTSR Berry <20988865+TSRBerry@users.noreply.github.com>2023-04-08 01:22:00 +0200
committerMary <thog@protonmail.com>2023-04-27 23:51:14 +0200
commitcee712105850ac3385cd0091a923438167433f9f (patch)
tree4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.Common/Memory/Ptr.cs
parentcd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff)
Move solution and projects to src
Diffstat (limited to 'Ryujinx.Common/Memory/Ptr.cs')
-rw-r--r--Ryujinx.Common/Memory/Ptr.cs68
1 files changed, 0 insertions, 68 deletions
diff --git a/Ryujinx.Common/Memory/Ptr.cs b/Ryujinx.Common/Memory/Ptr.cs
deleted file mode 100644
index 66bcf569..00000000
--- a/Ryujinx.Common/Memory/Ptr.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Runtime.CompilerServices;
-
-namespace Ryujinx.Common.Memory
-{
- /// <summary>
- /// Represents a pointer to an unmanaged resource.
- /// </summary>
- /// <typeparam name="T">Type of the unmanaged resource</typeparam>
- public unsafe struct Ptr<T> : IEquatable<Ptr<T>> where T : unmanaged
- {
- private IntPtr _ptr;
-
- /// <summary>
- /// Null pointer.
- /// </summary>
- public static Ptr<T> Null => new Ptr<T>() { _ptr = IntPtr.Zero };
-
- /// <summary>
- /// True if the pointer is null, false otherwise.
- /// </summary>
- public bool IsNull => _ptr == IntPtr.Zero;
-
- /// <summary>
- /// Gets a reference to the value.
- /// </summary>
- public ref T Value => ref Unsafe.AsRef<T>((void*)_ptr);
-
- /// <summary>
- /// Creates a new pointer to an unmanaged resource.
- /// </summary>
- /// <remarks>
- /// For data on the heap, proper pinning is necessary during
- /// use. Failure to do so will result in memory corruption and crashes.
- /// </remarks>
- /// <param name="value">Reference to the unmanaged resource</param>
- public Ptr(ref T value)
- {
- _ptr = (IntPtr)Unsafe.AsPointer(ref value);
- }
-
- public override bool Equals(object obj)
- {
- return obj is Ptr<T> other && Equals(other);
- }
-
- public bool Equals([AllowNull] Ptr<T> other)
- {
- return _ptr == other._ptr;
- }
-
- public override int GetHashCode()
- {
- return _ptr.GetHashCode();
- }
-
- public static bool operator ==(Ptr<T> left, Ptr<T> right)
- {
- return left.Equals(right);
- }
-
- public static bool operator !=(Ptr<T> left, Ptr<T> right)
- {
- return !(left == right);
- }
- }
-}