/// <summary> /// Wrapper for calling tp_traverse /// </summary> internal void CallTypeTraverse(Interop.ObjObjFunc visitproc, IntPtr arg) { if (tpHandle == IntPtr.Zero || pyHandle == IntPtr.Zero) { return; } var traversePtr = Marshal.ReadIntPtr(tpHandle, TypeOffset.tp_traverse); if (traversePtr == IntPtr.Zero) { return; } var traverseFunc = NativeCall.GetDelegate<Interop.ObjObjArgFunc>(traversePtr); var visiPtr = Marshal.GetFunctionPointerForDelegate(visitproc); traverseFunc(pyHandle, visiPtr, arg); }
internal void CallTypeTraverse(Interop.ObjObjFunc visitproc, IntPtr arg) { if (tpHandle == IntPtr.Zero || pyHandle == IntPtr.Zero) { return; } var traversePtr = Runtime.PyType_GetSlot(TypeReference, TypeSlotID.tp_traverse); if (traversePtr == IntPtr.Zero) { return; } var traverseFunc = NativeCall.GetDelegate <Interop.ObjObjArgFunc>(traversePtr); var visiPtr = Marshal.GetFunctionPointerForDelegate(visitproc); traverseFunc(pyHandle, visiPtr, arg); }