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

Commitb709a4b

Browse files
committed
Ditch obsolete tp_compare implementation.
We can use tp_richcompare for all supported Python versions.
1 parent4b5ae6d commitb709a4b

File tree

3 files changed

+39
-64
lines changed

3 files changed

+39
-64
lines changed

‎src/runtime/classbase.cs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public virtual IntPtr type_subscript(IntPtr idx)
6767
//====================================================================
6868
// Standard comparison implementation for instances of reflected types.
6969
//====================================================================
70-
#if(PYTHON32||PYTHON33||PYTHON34||PYTHON35)
70+
7171
publicstaticIntPtrtp_richcompare(IntPtrob,IntPtrother,intop){
7272
CLRObjectco1;
7373
CLRObjectco2;
@@ -169,27 +169,6 @@ public static IntPtr tp_richcompare(IntPtr ob, IntPtr other, int op) {
169169
returnRuntime.PyNotImplemented;
170170
}
171171
}
172-
#else
173-
publicstaticinttp_compare(IntPtrob,IntPtrother)
174-
{
175-
if(ob==other)
176-
{
177-
return0;
178-
}
179-
180-
CLRObjectco1=GetManagedObject(ob)asCLRObject;
181-
CLRObjectco2=GetManagedObject(other)asCLRObject;
182-
Objecto1=co1.inst;
183-
Objecto2=co2.inst;
184-
185-
if(Object.Equals(o1,o2))
186-
{
187-
return0;
188-
}
189-
return-1;
190-
}
191-
#endif
192-
193172

194173
//====================================================================
195174
// Standard iteration support for instances of reflected types. This

‎src/runtime/runtime.cs

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -232,13 +232,13 @@ internal static void Initialize()
232232
}
233233

234234
#if(PYTHON32||PYTHON33||PYTHON34||PYTHON35)
235-
IntPtrop=Runtime.PyImport_ImportModule("builtins");
236-
IntPtrdict=Runtime.PyObject_GetAttrString(op,"__dict__");
237-
PyNotImplemented=Runtime.PyObject_GetAttrString(op,"NotImplemented");
235+
IntPtrop=Runtime.PyImport_ImportModule("builtins");
236+
IntPtrdict=Runtime.PyObject_GetAttrString(op,"__dict__");
238237
#else
239238
IntPtrdict=Runtime.PyImport_GetModuleDict();
240239
IntPtrop=Runtime.PyDict_GetItemString(dict,"__builtin__");
241240
#endif
241+
PyNotImplemented=Runtime.PyObject_GetAttrString(op,"NotImplemented");
242242
PyBaseObjectType=Runtime.PyObject_GetAttrString(op,"object");
243243

244244
PyModuleType=Runtime.PyObject_Type(op);
@@ -255,8 +255,8 @@ internal static void Initialize()
255255
Runtime.XDecref(op);
256256

257257
#if(PYTHON32||PYTHON33||PYTHON34||PYTHON35)
258-
Runtime.XDecref(dict);
259-
Runtime.XDecref(op);
258+
Runtime.XDecref(dict);
259+
Runtime.XDecref(op);
260260
#endif
261261

262262
op=Runtime.PyString_FromString("string");
@@ -268,9 +268,9 @@ internal static void Initialize()
268268
Runtime.XDecref(op);
269269

270270
#if(PYTHON32||PYTHON33||PYTHON34||PYTHON35)
271-
op=Runtime.PyBytes_FromString("bytes");
272-
PyBytesType=Runtime.PyObject_Type(op);
273-
Runtime.XDecref(op);
271+
op=Runtime.PyBytes_FromString("bytes");
272+
PyBytesType=Runtime.PyObject_Type(op);
273+
Runtime.XDecref(op);
274274
#endif
275275

276276
op=Runtime.PyTuple_New(0);
@@ -389,17 +389,18 @@ internal static int AtExit()
389389
internalstaticIntPtrPyTypeType;
390390

391391
#if(PYTHON32||PYTHON33||PYTHON34||PYTHON35)
392-
internalstaticIntPtrPyBytesType;
393-
internalstaticIntPtrPyNotImplemented;
394-
internalconstintPy_LT=0;
395-
internalconstintPy_LE=1;
396-
internalconstintPy_EQ=2;
397-
internalconstintPy_NE=3;
398-
internalconstintPy_GT=4;
399-
internalconstintPy_GE=5;
400-
internalstaticIntPtr_PyObject_NextNotImplemented;
392+
internalstaticIntPtrPyBytesType;
393+
internalstaticIntPtr_PyObject_NextNotImplemented;
401394
#endif
402395

396+
internalstaticIntPtrPyNotImplemented;
397+
internalconstintPy_LT=0;
398+
internalconstintPy_LE=1;
399+
internalconstintPy_EQ=2;
400+
internalconstintPy_NE=3;
401+
internalconstintPy_GT=4;
402+
internalconstintPy_GE=5;
403+
403404
internalstaticIntPtrPyTrue;
404405
internalstaticIntPtrPyFalse;
405406
internalstaticIntPtrPyNone;

‎src/tests/test_class.py

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -210,39 +210,34 @@ def testComparisons(self):
210210
self.assertEqual(d1==d2,False)
211211
self.assertEqual(d1!=d2,True)
212212

213-
ifsix.PY3:
214-
self.assertEqual(d1<d2,True)
215-
self.assertEqual(d1<=d2,True)
216-
self.assertEqual(d1>=d2,False)
217-
self.assertEqual(d1>d2,False)
213+
self.assertEqual(d1<d2,True)
214+
self.assertEqual(d1<=d2,True)
215+
self.assertEqual(d1>=d2,False)
216+
self.assertEqual(d1>d2,False)
218217

219218
self.assertEqual(d1==d1,True)
220219
self.assertEqual(d1!=d1,False)
221220

222-
ifsix.PY3:
223-
self.assertEqual(d1<d1,False)
224-
self.assertEqual(d1<=d1,True)
225-
self.assertEqual(d1>=d1,True)
226-
self.assertEqual(d1>d1,False)
221+
self.assertEqual(d1<d1,False)
222+
self.assertEqual(d1<=d1,True)
223+
self.assertEqual(d1>=d1,True)
224+
self.assertEqual(d1>d1,False)
227225

228226
self.assertEqual(d2==d1,False)
229227
self.assertEqual(d2!=d1,True)
230228

231-
ifsix.PY3:
232-
self.assertEqual(d2<d1,False)
233-
self.assertEqual(d2<=d1,False)
234-
self.assertEqual(d2>=d1,True)
235-
self.assertEqual(d2>d1,True)
236-
237-
ifsix.PY3:
238-
self.assertRaises(TypeError,lambda:d1<None)
239-
self.assertRaises(TypeError,lambda:d1<System.Guid())
240-
241-
ifsix.PY3:
242-
# ClassTest does not implement IComparable
243-
c1=ClassTest()
244-
c2=ClassTest()
245-
self.assertRaises(TypeError,lambda:c1<c2)
229+
self.assertEqual(d2<d1,False)
230+
self.assertEqual(d2<=d1,False)
231+
self.assertEqual(d2>=d1,True)
232+
self.assertEqual(d2>d1,True)
233+
234+
self.assertRaises(TypeError,lambda:d1<None)
235+
self.assertRaises(TypeError,lambda:d1<System.Guid())
236+
237+
# ClassTest does not implement IComparable
238+
c1=ClassTest()
239+
c2=ClassTest()
240+
self.assertRaises(TypeError,lambda:c1<c2)
246241

247242

248243
classClassicClass:

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp