Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit675ec5f

Browse files
committed
addressed a few code comments
1 parentc0a751b commit675ec5f

File tree

8 files changed

+31
-40
lines changed

8 files changed

+31
-40
lines changed

‎src/runtime/NewReference.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@ ref struct NewReference
1111
{
1212
IntPtrpointer;
1313

14+
/// <summary>Creates a <see cref="NewReference"/> pointing to the same object</summary>
15+
publicNewReference(BorrowedReferencereference,boolcanBeNull=false)
16+
{
17+
varaddress=canBeNull
18+
?reference.DangerousGetAddressOrNull()
19+
:reference.DangerousGetAddress();
20+
Runtime.XIncref(address);
21+
this.pointer=address;
22+
}
23+
1424
[Pure]
1525
publicstaticimplicitoperatorBorrowedReference(inNewReferencereference)
1626
=>newBorrowedReference(reference.pointer);

‎src/runtime/converter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,9 +241,9 @@ internal static IntPtr ToPython(object value, Type type)
241241
// return Runtime.PyFloat_FromDouble((double)((float)value));
242242
stringss=((float)value).ToString(nfi);
243243
IntPtrps=Runtime.PyString_FromString(ss);
244-
IntPtrop=Runtime.PyFloat_FromString(ps,IntPtr.Zero);
244+
NewReferenceop=Runtime.PyFloat_FromString(newBorrowedReference(ps));;
245245
Runtime.XDecref(ps);
246-
returnop;
246+
returnop.DangerousMoveToPointerOrNull();
247247

248248
caseTypeCode.Double:
249249
returnRuntime.PyFloat_FromDouble((double)value);

‎src/runtime/importhook.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -306,15 +306,14 @@ public static IntPtr __import__(IntPtr self, IntPtr argsRaw, IntPtr kw)
306306
varmod=ManagedType.GetManagedObject(module)asModuleObject;
307307
mod?.LoadNames();
308308
}
309-
returnRuntime.NewRef(module).DangerousMoveToPointer();
309+
returnnewNewReference(module).DangerousMoveToPointer();
310310
}
311311
if(clr_prefix!=null)
312312
{
313313
returnGetCLRModule(fromList).DangerousMoveToPointerOrNull();
314314
}
315315
module=Runtime.PyDict_GetItemString(modules,names[0]);
316-
returnRuntime.NewRefOrNull(module)
317-
.DangerousMoveToPointer();
316+
returnnewNewReference(module,canBeNull:true).DangerousMoveToPointer();
318317
}
319318
Exceptions.Clear();
320319

‎src/runtime/pyfloat.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ private static IntPtr FromString(string value)
6666
{
6767
using(vars=newPyString(value))
6868
{
69-
IntPtrval=Runtime.PyFloat_FromString(s.obj,IntPtr.Zero);
69+
NewReferenceval=Runtime.PyFloat_FromString(s.Reference);
7070
PythonException.ThrowIfIsNull(val);
71-
returnval;
71+
returnval.DangerousMoveToPointerOrNull();
7272
}
7373
}
7474

‎src/runtime/pyobject.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ public bool HasAttr(PyObject name)
272272
{
273273
if(name==null)thrownewArgumentNullException(nameof(name));
274274

275-
returnRuntime.PyObject_HasAttr(obj,name.obj)!=0;
275+
returnRuntime.PyObject_HasAttr(Reference,name.Reference)!=0;
276276
}
277277

278278

‎src/runtime/runtime.cs

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -715,15 +715,6 @@ internal static unsafe void XIncref(IntPtr op)
715715
#endif
716716
}
717717

718-
internalstaticNewReferenceNewRef(BorrowedReferencereference)
719-
{
720-
varaddress=reference.DangerousGetAddress();
721-
XIncref(address);
722-
returnNewReference.DangerousFromPointer(address);
723-
}
724-
internalstaticNewReferenceNewRefOrNull(BorrowedReferencereference)
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
internalstaticIntPtrPyObject_GetAttrString(IntPtrpointer,stringname)
10411032
{
1042-
IntPtrnameMem= 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=newStrPtr(name,Encoding.UTF8);
1034+
returnDelegates.PyObject_GetAttrString(pointer,namePtr);
10511035
}
10521036

10531037

1054-
internalstaticIntPtr PyObject_GetAttrString(IntPtrpointer,IntPtrname)=>Delegates.PyObject_GetAttrString(pointer,name);
1038+
internalstaticIntPtrPyObject_GetAttrString(IntPtrpointer,StrPtrname)=>Delegates.PyObject_GetAttrString(pointer,name);
10551039

10561040

10571041
internalstaticintPyObject_SetAttrString(IntPtrpointer,stringname,IntPtrvalue)
@@ -1060,7 +1044,7 @@ internal static int PyObject_SetAttrString(IntPtr pointer, string name, IntPtr v
10601044
returnDelegates.PyObject_SetAttrString(pointer,namePtr,value);
10611045
}
10621046

1063-
internalstaticintPyObject_HasAttr(IntPtrpointer,IntPtrname)=>Delegates.PyObject_HasAttr(pointer,name);
1047+
internalstaticintPyObject_HasAttr(BorrowedReferencepointer,BorrowedReferencename)=>Delegates.PyObject_HasAttr(pointer,name);
10641048

10651049

10661050
internalstaticNewReferencePyObject_GetAttr(BorrowedReferencepointer,IntPtrname)
@@ -1344,7 +1328,7 @@ internal static bool PyFloat_Check(IntPtr ob)
13441328
internalstaticIntPtrPyFloat_FromDouble(doublevalue)=>Delegates.PyFloat_FromDouble(value);
13451329

13461330

1347-
internalstaticIntPtrPyFloat_FromString(IntPtrvalue,IntPtrjunk)=>Delegates.PyFloat_FromString(value,junk);
1331+
internalstaticNewReferencePyFloat_FromString(BorrowedReferencevalue)=>Delegates.PyFloat_FromString(value);
13481332

13491333

13501334
internalstaticdoublePyFloat_AsDouble(IntPtrob)=>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-
staticreadonlydelegate* unmanaged[Cdecl]<IntPtr,bool>pyType_Check;
2013-
20141996
internalstaticboolPyType_Check(IntPtrob)
20151997
{
20161998
returnPyObject_TypeCheck(ob,PyTypeType);
@@ -2284,7 +2266,7 @@ private static class Delegates
22842266
staticDelegates()
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
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,IntPtr,IntPtr,IntPtr>PyCFunction_Call{get;}
26072589
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,IntPtr,IntPtr,IntPtr>PyMethod_New{get;}
26082590
internalstaticdelegate* unmanaged[Cdecl]<BorrowedReference,StrPtr,int>PyObject_HasAttrString{get;}
2609-
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,IntPtr,IntPtr>PyObject_GetAttrString{get;}
2591+
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,StrPtr,IntPtr>PyObject_GetAttrString{get;}
26102592
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,StrPtr,IntPtr,int>PyObject_SetAttrString{get;}
2611-
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,IntPtr,int>PyObject_HasAttr{get;}
2593+
internalstaticdelegate* unmanaged[Cdecl]<BorrowedReference,BorrowedReference,int>PyObject_HasAttr{get;}
26122594
internalstaticdelegate* unmanaged[Cdecl]<BorrowedReference,BorrowedReference,NewReference>PyObject_GetAttr{get;}
26132595
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,IntPtr,IntPtr,int>PyObject_SetAttr{get;}
26142596
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,IntPtr,IntPtr>PyObject_GetItem{get;}
@@ -2659,7 +2641,7 @@ static Delegates()
26592641
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,NewReference>PyLong_FromVoidPtr{get;}
26602642
internalstaticdelegate* unmanaged[Cdecl]<BorrowedReference,IntPtr>PyLong_AsVoidPtr{get;}
26612643
internalstaticdelegate* unmanaged[Cdecl]<double,IntPtr>PyFloat_FromDouble{get;}
2662-
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,IntPtr,IntPtr>PyFloat_FromString{get;}
2644+
internalstaticdelegate* unmanaged[Cdecl]<BorrowedReference,NewReference>PyFloat_FromString{get;}
26632645
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,double>PyFloat_AsDouble{get;}
26642646
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,IntPtr,IntPtr>PyNumber_Add{get;}
26652647
internalstaticdelegate* unmanaged[Cdecl]<IntPtr,IntPtr,IntPtr>PyNumber_Subtract{get;}

‎src/runtime/runtime_data.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ internal static void Stash()
8585
Marshal.Copy(data,0,mem+IntPtr.Size,(int)ms.Length);
8686

8787
ClearCLRData();
88-
#warning this leaks memory in mem
88+
8989
NewReferencecapsule=PyCapsule_New(mem,IntPtr.Zero,IntPtr.Zero);
9090
PySys_SetObject("clr_data",capsule);
9191
// Let the dictionary own the reference

‎src/runtime/typemanager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -938,7 +938,7 @@ public static IntPtr CreateObjectType()
938938
resRef.Dispose();
939939
BorrowedReferenceA=Runtime.PyDict_GetItemString(globals,"A");
940940
Debug.Assert(!A.IsNull);
941-
returnRuntime.NewRef(A).DangerousMoveToPointer();
941+
returnnewNewReference(A).DangerousMoveToPointer();
942942
}
943943
}
944944
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp