@@ -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 )
@@ -1344,7 +1328,7 @@ internal static bool PyFloat_Check(IntPtr ob)
13441328 internal static IntPtr PyFloat_FromDouble ( double value ) => Delegates . PyFloat_FromDouble ( value ) ;
13451329
13461330
1347- internal static IntPtr PyFloat_FromString ( IntPtr value , IntPtr junk ) => Delegates . PyFloat_FromString ( value , junk ) ;
1331+ internal static NewReference PyFloat_FromString ( BorrowedReference value ) => Delegates . PyFloat_FromString ( value ) ;
13481332
13491333
13501334 internal static double PyFloat_AsDouble ( IntPtr ob ) => Delegates . PyFloat_AsDouble ( ob ) ;
@@ -2009,8 +1993,6 @@ internal static int PySys_SetObject(string name, BorrowedReference ob)
20091993 //====================================================================
20101994 // Python type object API
20111995 //====================================================================
2012- static readonly delegate * unmanaged[ Cdecl] < IntPtr , bool > pyType_Check ;
2013-
20141996 internal static bool PyType_Check ( IntPtr ob )
20151997 {
20161998 return PyObject_TypeCheck ( ob , PyTypeType ) ;
@@ -2284,7 +2266,7 @@ private static class Delegates
22842266 static Delegates ( )
22852267 {
22862268 PyDictProxy_New = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyDictProxy_New ) , GetUnmanagedDll ( _PythonDll ) ) ;
2287- Py_IncRef = ( delegate * unmanaged[ Cdecl] < IntPtr , void > ) GetFunctionByName ( nameof ( Py_IncRef ) , GetUnmanagedDll ( _PythonDll ) ) ;
2269+ Py_IncRef = ( delegate * unmanaged[ Cdecl] < IntPtr , void > ) GetFunctionByName ( nameof ( Py_IncRef ) , GetUnmanagedDll ( _PythonDll ) ) ;
22882270 Py_DecRef = ( delegate * unmanaged[ Cdecl] < IntPtr , void > ) GetFunctionByName ( nameof ( Py_DecRef ) , GetUnmanagedDll ( _PythonDll ) ) ;
22892271 Py_Initialize = ( delegate * unmanaged[ Cdecl] < void > ) GetFunctionByName ( nameof ( Py_Initialize ) , GetUnmanagedDll ( _PythonDll ) ) ;
22902272 Py_InitializeEx = ( delegate * unmanaged[ Cdecl] < int , void > ) GetFunctionByName ( nameof ( Py_InitializeEx ) , GetUnmanagedDll ( _PythonDll ) ) ;
@@ -2334,9 +2316,9 @@ static Delegates()
23342316 PyCFunction_Call = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyCFunction_Call ) , GetUnmanagedDll ( _PythonDll ) ) ;
23352317 PyMethod_New = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyMethod_New ) , GetUnmanagedDll ( _PythonDll ) ) ;
23362318 PyObject_HasAttrString = ( delegate * unmanaged[ Cdecl] < BorrowedReference , StrPtr , int > ) GetFunctionByName ( nameof ( PyObject_HasAttrString ) , GetUnmanagedDll ( _PythonDll ) ) ;
2337- PyObject_GetAttrString = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyObject_GetAttrString ) , GetUnmanagedDll ( _PythonDll ) ) ;
2319+ PyObject_GetAttrString = ( delegate * unmanaged[ Cdecl] < IntPtr , StrPtr , IntPtr > ) GetFunctionByName ( nameof ( PyObject_GetAttrString ) , GetUnmanagedDll ( _PythonDll ) ) ;
23382320 PyObject_SetAttrString = ( delegate * unmanaged[ Cdecl] < IntPtr , StrPtr , IntPtr , int > ) GetFunctionByName ( nameof ( PyObject_SetAttrString ) , GetUnmanagedDll ( _PythonDll ) ) ;
2339- PyObject_HasAttr = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , int > ) GetFunctionByName ( nameof ( PyObject_HasAttr ) , GetUnmanagedDll ( _PythonDll ) ) ;
2321+ PyObject_HasAttr = ( delegate * unmanaged[ Cdecl] < BorrowedReference , BorrowedReference , int > ) GetFunctionByName ( nameof ( PyObject_HasAttr ) , GetUnmanagedDll ( _PythonDll ) ) ;
23402322 PyObject_GetAttr = ( delegate * unmanaged[ Cdecl] < BorrowedReference , BorrowedReference , NewReference > ) GetFunctionByName ( nameof ( PyObject_GetAttr ) , GetUnmanagedDll ( _PythonDll ) ) ;
23412323 PyObject_SetAttr = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , int > ) GetFunctionByName ( nameof ( PyObject_SetAttr ) , GetUnmanagedDll ( _PythonDll ) ) ;
23422324 PyObject_GetItem = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyObject_GetItem ) , GetUnmanagedDll ( _PythonDll ) ) ;
@@ -2394,7 +2376,7 @@ static Delegates()
23942376 PyLong_FromVoidPtr = ( delegate * unmanaged[ Cdecl] < IntPtr , NewReference > ) GetFunctionByName ( nameof ( PyLong_FromVoidPtr ) , GetUnmanagedDll ( _PythonDll ) ) ;
23952377 PyLong_AsVoidPtr = ( delegate * unmanaged[ Cdecl] < BorrowedReference , IntPtr > ) GetFunctionByName ( nameof ( PyLong_AsVoidPtr ) , GetUnmanagedDll ( _PythonDll ) ) ;
23962378 PyFloat_FromDouble = ( delegate * unmanaged[ Cdecl] < double , IntPtr > ) GetFunctionByName ( nameof ( PyFloat_FromDouble ) , GetUnmanagedDll ( _PythonDll ) ) ;
2397- PyFloat_FromString = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyFloat_FromString ) , GetUnmanagedDll ( _PythonDll ) ) ;
2379+ PyFloat_FromString = ( delegate * unmanaged[ Cdecl] < BorrowedReference , NewReference > ) GetFunctionByName ( nameof ( PyFloat_FromString ) , GetUnmanagedDll ( _PythonDll ) ) ;
23982380 PyFloat_AsDouble = ( delegate * unmanaged[ Cdecl] < IntPtr , double > ) GetFunctionByName ( nameof ( PyFloat_AsDouble ) , GetUnmanagedDll ( _PythonDll ) ) ;
23992381 PyNumber_Add = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyNumber_Add ) , GetUnmanagedDll ( _PythonDll ) ) ;
24002382 PyNumber_Subtract = ( delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > ) GetFunctionByName ( nameof ( PyNumber_Subtract ) , GetUnmanagedDll ( _PythonDll ) ) ;
@@ -2606,9 +2588,9 @@ static Delegates()
26062588 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , IntPtr > PyCFunction_Call { get ; }
26072589 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , IntPtr > PyMethod_New { get ; }
26082590 internal static delegate * unmanaged[ Cdecl] < BorrowedReference , StrPtr , int > PyObject_HasAttrString { get ; }
2609- internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > PyObject_GetAttrString { get ; }
2591+ internal static delegate * unmanaged[ Cdecl] < IntPtr , StrPtr , IntPtr > PyObject_GetAttrString { get ; }
26102592 internal static delegate * unmanaged[ Cdecl] < IntPtr , StrPtr , IntPtr , int > PyObject_SetAttrString { get ; }
2611- internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , int > PyObject_HasAttr { get ; }
2593+ internal static delegate * unmanaged[ Cdecl] < BorrowedReference , BorrowedReference , int > PyObject_HasAttr { get ; }
26122594 internal static delegate * unmanaged[ Cdecl] < BorrowedReference , BorrowedReference , NewReference > PyObject_GetAttr { get ; }
26132595 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr , int > PyObject_SetAttr { get ; }
26142596 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > PyObject_GetItem { get ; }
@@ -2659,7 +2641,7 @@ static Delegates()
26592641 internal static delegate * unmanaged[ Cdecl] < IntPtr , NewReference > PyLong_FromVoidPtr { get ; }
26602642 internal static delegate * unmanaged[ Cdecl] < BorrowedReference , IntPtr > PyLong_AsVoidPtr { get ; }
26612643 internal static delegate * unmanaged[ Cdecl] < double , IntPtr > PyFloat_FromDouble { get ; }
2662- internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > PyFloat_FromString { get ; }
2644+ internal static delegate * unmanaged[ Cdecl] < BorrowedReference , NewReference > PyFloat_FromString { get ; }
26632645 internal static delegate * unmanaged[ Cdecl] < IntPtr , double > PyFloat_AsDouble { get ; }
26642646 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > PyNumber_Add { get ; }
26652647 internal static delegate * unmanaged[ Cdecl] < IntPtr , IntPtr , IntPtr > PyNumber_Subtract { get ; }
0 commit comments