コード例 #1
0
        private static int BaseOffset(IntPtr type)
        {
            Debug.Assert(type != IntPtr.Zero);
            int typeSize = Marshal.ReadInt32(type, TypeOffset.tp_basicsize);

            Debug.Assert(typeSize > 0 && typeSize <= ExceptionOffset.Size());
            return(typeSize);
        }
コード例 #2
0
        public static int Size(IntPtr ob)
        {
            if (IsException(ob))
            {
                return(ExceptionOffset.Size());
            }
#if PYTHON_WITH_PYDEBUG
            return(6 * IntPtr.Size);
#else
            return(4 * IntPtr.Size);
#endif
        }
コード例 #3
0
ファイル: interop.cs プロジェクト: OryxLib/Oryx.FastAdmin
        public static int Size(IntPtr ob)
        {
            if ((Runtime.PyObject_TypeCheck(ob, Exceptions.BaseException) ||
                 (Runtime.PyType_Check(ob) && Runtime.PyType_IsSubtype(ob, Exceptions.BaseException))))
            {
                return(ExceptionOffset.Size());
            }
#if PYTHON_WITH_PYDEBUG
            return(6 * IntPtr.Size);
#else
            return(4 * IntPtr.Size);
#endif
        }
コード例 #4
0
        public static int Size(IntPtr ob)
        {
#if (PYTHON32 || PYTHON33 || PYTHON33)
            if ((Runtime.PyObject_TypeCheck(ob, Exceptions.BaseException) ||
                 (Runtime.PyType_Check(ob) && Runtime.PyType_IsSubtype(ob, Exceptions.BaseException))))
            {
                return(ExceptionOffset.Size());
            }
#endif
#if (Py_DEBUG)
            return(6 * IntPtr.Size);
#else
            return(4 * IntPtr.Size);
#endif
        }