@@ -715,15 +715,6 @@ internal static unsafe void XIncref(IntPtr op)
715715#endif
716716 }
717717
718- internal static NewReference NewRef ( BorrowedReference reference )
719- {
720- var address = reference . DangerousGetAddress ( ) ;
721- XIncref ( address ) ;
722- return NewReference . DangerousFromPointer ( address ) ;
723- }
724- internal static NewReference NewRefOrNull ( BorrowedReference reference )
725- => reference . IsNull ? default : NewRef ( reference ) ;
726-
727718 /// <summary>
728719 /// Increase Python's ref counter for the given object, and get the object back.
729720 /// </summary>
@@ -1039,19 +1030,12 @@ internal static int PyObject_HasAttrString(BorrowedReference pointer, string nam
10391030
10401031 internal static IntPtr PyObject_GetAttrString ( IntPtr pointer , string name )
10411032 {
1042- IntPtr nameMem = Marshal. StringToHGlobalAnsi( name ) ;
1043- try
1044- {
1045- return Delegates. PyObject_GetAttrString ( pointer , nameMem ) ;
1046- }
1047- finally
1048- {
1049- Marshal . FreeHGlobal ( nameMem ) ;
1050- }
1033+ using var namePtr = new StrPtr ( name , Encoding . UTF8 ) ;
1034+ return Delegates . PyObject_GetAttrString ( pointer , namePtr ) ;
10511035 }
10521036
10531037
1054- internal static IntPtr PyObject_GetAttrString( IntPtr pointer , IntPtr name ) => Delegates . PyObject_GetAttrString ( pointer , name ) ;
1038+ internal static IntPtr PyObject_GetAttrString ( IntPtr pointer , StrPtr name ) => Delegates . PyObject_GetAttrString ( pointer , name ) ;
10551039
10561040
10571041 internal static int PyObject_SetAttrString ( IntPtr pointer , string name , IntPtr value )
@@ -1060,7 +1044,7 @@ internal static int PyObject_SetAttrString(IntPtr pointer, string name, IntPtr v
10601044 return Delegates . PyObject_SetAttrString ( pointer , namePtr , value ) ;
10611045 }
10621046
1063- internal static int PyObject_HasAttr ( IntPtr pointer , IntPtr name ) => Delegates . PyObject_HasAttr ( pointer , name ) ;
1047+ internal static int PyObject_HasAttr ( BorrowedReference pointer , BorrowedReference name ) => Delegates . PyObject_HasAttr ( pointer , name ) ;
10641048
10651049
10661050 internal static NewReference PyObject_GetAttr ( BorrowedReference pointer , IntPtr name )
@@ -1324,7 +1308,7 @@ internal static bool PyFloat_Check(IntPtr ob)
13241308 internal static IntPtr PyFloat_FromDouble ( double value ) => Delegates . PyFloat_FromDouble ( value ) ;
13251309
13261310
1327- internal static IntPtr PyFloat_FromString ( IntPtr value , IntPtr junk ) => Delegates . PyFloat_FromString ( value , junk ) ;
1311+ internal static NewReference PyFloat_FromString ( BorrowedReference value ) => Delegates . PyFloat_FromString ( value ) ;
13281312
13291313
13301314 internal static double PyFloat_AsDouble ( IntPtr ob ) => Delegates . PyFloat_AsDouble ( ob ) ;
@@ -1990,8 +1974,6 @@ internal static int PySys_SetObject(string name, BorrowedReference ob)
19901974 //====================================================================
19911975 // Python type object API
19921976 //====================================================================
1993- static readonly delegate * unmanaged[ Cdecl] < IntPtr , bool > pyType_Check ;
1994-
19951977 internal static bool PyType_Check ( IntPtr ob )
19961978 {
19971979 return PyObject_TypeCheck ( ob , PyTypeType ) ;
@@ -2272,7 +2254,7 @@ private static class Delegates
22722254 static Delegates ( )
22732255 {
22742256 PyDictProxy_New = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyDictProxy_New ) , GetUnmanagedDll ( _PythonDll ) ) ;
2275- Py_IncRef = ( delegate * unmanaged[ Cdecl] < IntPtr , void > ) GetFunctionByName ( nameof ( Py_IncRef ) , GetUnmanagedDll ( _PythonDll ) ) ;
2257+ Py_IncRef = ( delegate * unmanaged[ Cdecl] < IntPtr , void > ) GetFunctionByName ( nameof ( Py_IncRef ) , GetUnmanagedDll ( _PythonDll ) ) ;
22762258 Py_DecRef = ( delegate * unmanaged[ Cdecl] < IntPtr , void > ) GetFunctionByName ( nameof ( Py_DecRef ) , GetUnmanagedDll ( _PythonDll ) ) ;
22772259 Py_Initialize = ( delegate * unmanaged[ Cdecl] < void > ) GetFunctionByName ( nameof ( Py_Initialize ) , GetUnmanagedDll ( _PythonDll ) ) ;
22782260 Py_InitializeEx = ( delegate * unmanaged[ Cdecl] < int , void > ) GetFunctionByName ( nameof ( Py_InitializeEx ) , GetUnmanagedDll ( _PythonDll ) ) ;
@@ -2322,9 +2304,9 @@ static Delegates()
23222304 PyCFunction_Call = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyCFunction_Call ) , GetUnmanagedDll ( _PythonDll ) ) ;
23232305 PyMethod_New = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyMethod_New ) , GetUnmanagedDll ( _PythonDll ) ) ;
23242306 PyObject_HasAttrString = ( delegate * unmanaged[ Cdecl] < BorrowedReference , StrPtr , int > ) GetFunctionByName ( nameof ( PyObject_HasAttrString ) , GetUnmanagedDll ( _PythonDll ) ) ;
2325- PyObject_GetAttrString = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyObject_GetAttrString ) , GetUnmanagedDll ( _PythonDll ) ) ;
2307+ PyObject_GetAttrString = ( delegate * unmanaged[ Cdecl] < IntPtr , StrPtr , IntPtr > ) GetFunctionByName ( nameof ( PyObject_GetAttrString ) , GetUnmanagedDll ( _PythonDll ) ) ;
23262308 PyObject_SetAttrString = ( delegate * unmanaged[ Cdecl] < IntPtr , StrPtr , IntPtr , int > ) GetFunctionByName ( nameof ( PyObject_SetAttrString ) , GetUnmanagedDll ( _PythonDll ) ) ;
2327- PyObject_HasAttr = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , int > ) GetFunctionByName ( nameof ( PyObject_HasAttr ) , GetUnmanagedDll ( _PythonDll ) ) ;
2309+ PyObject_HasAttr = ( delegate * unmanaged[ Cdecl] < BorrowedReference , BorrowedReference , int > ) GetFunctionByName ( nameof ( PyObject_HasAttr ) , GetUnmanagedDll ( _PythonDll ) ) ;
23282310 PyObject_GetAttr = ( delegate * unmanaged[ Cdecl] < BorrowedReference , BorrowedReference , NewReference > ) GetFunctionByName ( nameof ( PyObject_GetAttr ) , GetUnmanagedDll ( _PythonDll ) ) ;
23292311 PyObject_SetAttr = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , int > ) GetFunctionByName ( nameof ( PyObject_SetAttr ) , GetUnmanagedDll ( _PythonDll ) ) ;
23302312 PyObject_GetItem = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyObject_GetItem ) , GetUnmanagedDll ( _PythonDll ) ) ;
@@ -2382,7 +2364,7 @@ static Delegates()
23822364 PyLong_FromVoidPtr = ( delegate * unmanaged[ Cdecl] < IntPtr , NewReference > ) GetFunctionByName ( nameof ( PyLong_FromVoidPtr ) , GetUnmanagedDll ( _PythonDll ) ) ;
23832365 PyLong_AsVoidPtr = ( delegate * unmanaged[ Cdecl] < BorrowedReference , IntPtr > ) GetFunctionByName ( nameof ( PyLong_AsVoidPtr ) , GetUnmanagedDll ( _PythonDll ) ) ;
23842366 PyFloat_FromDouble = ( delegate * unmanaged[ Cdecl] < double , IntPtr > ) GetFunctionByName ( nameof ( PyFloat_FromDouble ) , GetUnmanagedDll ( _PythonDll ) ) ;
2385- PyFloat_FromString = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyFloat_FromString ) , GetUnmanagedDll ( _PythonDll ) ) ;
2367+ PyFloat_FromString = ( delegate * unmanaged[ Cdecl] < BorrowedReference , NewReference > ) GetFunctionByName ( nameof ( PyFloat_FromString ) , GetUnmanagedDll ( _PythonDll ) ) ;
23862368 PyFloat_AsDouble = ( delegate * unmanaged[ Cdecl] < IntPtr , double > ) GetFunctionByName ( nameof ( PyFloat_AsDouble ) , GetUnmanagedDll ( _PythonDll ) ) ;
23872369 PyNumber_Add = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyNumber_Add ) , GetUnmanagedDll ( _PythonDll ) ) ;
23882370 PyNumber_Subtract = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyNumber_Subtract ) , GetUnmanagedDll ( _PythonDll ) ) ;
@@ -2594,9 +2576,9 @@ static Delegates()
25942576 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , IntPtr > PyCFunction_Call { get ; }
25952577 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , IntPtr > PyMethod_New { get ; }
25962578 internal static delegate * unmanaged[ Cdecl] < BorrowedReference , StrPtr , int > PyObject_HasAttrString { get ; }
2597- internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > PyObject_GetAttrString { get ; }
2579+ internal static delegate * unmanaged[ Cdecl] < IntPtr , StrPtr , IntPtr > PyObject_GetAttrString { get ; }
25982580 internal static delegate * unmanaged[ Cdecl] < IntPtr , StrPtr , IntPtr , int > PyObject_SetAttrString { get ; }
2599- internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , int > PyObject_HasAttr { get ; }
2581+ internal static delegate * unmanaged[ Cdecl] < BorrowedReference , BorrowedReference , int > PyObject_HasAttr { get ; }
26002582 internal static delegate * unmanaged[ Cdecl] < BorrowedReference , BorrowedReference , NewReference > PyObject_GetAttr { get ; }
26012583 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , int > PyObject_SetAttr { get ; }
26022584 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > PyObject_GetItem { get ; }
@@ -2647,7 +2629,7 @@ static Delegates()
26472629 internal static delegate * unmanaged[ Cdecl] < IntPtr , NewReference > PyLong_FromVoidPtr { get ; }
26482630 internal static delegate * unmanaged[ Cdecl] < BorrowedReference , IntPtr > PyLong_AsVoidPtr { get ; }
26492631 internal static delegate * unmanaged[ Cdecl] < double , IntPtr > PyFloat_FromDouble { get ; }
2650- internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > PyFloat_FromString { get ; }
2632+ internal static delegate * unmanaged[ Cdecl] < BorrowedReference , NewReference > PyFloat_FromString { get ; }
26512633 internal static delegate * unmanaged[ Cdecl] < IntPtr , double > PyFloat_AsDouble { get ; }
26522634 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > PyNumber_Add { get ; }
26532635 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > PyNumber_Subtract { get ; }
0 commit comments