X Tutup
namespace Python.Runtime { using System; /// /// Represents a reference to a Python object, that is being lent, and /// can only be safely used until execution returns to the caller. /// readonly ref struct BorrowedReference { readonly IntPtr pointer; public bool IsNull => this.pointer == IntPtr.Zero; /// Gets a raw pointer to the Python object public IntPtr DangerousGetAddress() => this.IsNull ? throw new NullReferenceException() : this.pointer; /// /// Creates new instance of from raw pointer. Unsafe. /// public BorrowedReference(IntPtr pointer) { this.pointer = pointer; } public static bool operator ==(BorrowedReference a, BorrowedReference b) => a.pointer == b.pointer; public static bool operator !=(BorrowedReference a, BorrowedReference b) => a.pointer != b.pointer; public override bool Equals(object obj) { if (obj is IntPtr ptr) return ptr == pointer; return false; } public override int GetHashCode() => pointer.GetHashCode(); } }
X Tutup