[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/sdpython/pythonnet/master/src/runtime/BorrowedReference.cs [Back]  [Original]

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();
    }
}

Web Proxy Viewer  |  New URL  |  Original Page