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

Commit1542cc9

Browse files
gertdreyerlostmsu
authored andcommitted
Normalized names. Added HashCode and Equals to testing objects
1 parentd3bde9d commit1542cc9

File tree

5 files changed

+48
-41
lines changed

5 files changed

+48
-41
lines changed

‎src/embed_tests/TestOperator.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ public OwnInt(int value)
4141
_value=value;
4242
}
4343

44+
publicoverrideintGetHashCode()
45+
{
46+
returnunchecked(65535+_value.GetHashCode());
47+
}
48+
49+
publicoverrideboolEquals(objectobj)
50+
{
51+
returnobjisOwnInt@object&&
52+
Num==@object.Num;
53+
}
54+
4455
publicstaticOwnIntoperator-(OwnIntp1,OwnIntp2)
4556
{
4657
returnnewOwnInt(p1._value-p2._value);
@@ -125,14 +136,8 @@ public bool CanDecode(PyType objectType, Type targetType)
125136
returnobjectType.Name=="int"&&targetType==typeof(OwnInt);
126137
}
127138

128-
publicboolTryDecode<T>(PyObjectpyObj,outT?value)
139+
publicboolTryDecode<T>(PyObjectpyObj,outTvalue)
129140
{
130-
if(pyObj.PyType.Name!="int"||typeof(T)!=typeof(OwnInt))
131-
{
132-
value=default(T);
133-
returnfalse;
134-
}
135-
136141
value=(T)(object)newOwnInt(pyObj.As<int>());
137142
returntrue;
138143
}

‎src/runtime/ClassManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ private static ClassInfo GetClassInfo(Type type, ClassBase impl)
546546
ci.members[pyName]=newMethodObject(type,name,forwardMethods).AllocObject();
547547
// Only methods where only the right operand is the declaring type.
548548
if(reverseMethods.Length>0)
549-
ci.members[pyNameReverse]=newMethodObject(type,name,reverseMethods,reverse_args:true).AllocObject();
549+
ci.members[pyNameReverse]=newMethodObject(type,name,reverseMethods,argsReversed:true).AllocObject();
550550
}
551551
}
552552

‎src/runtime/MethodBinder.cs

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,18 @@ internal class MethodBinder
3232
publicconstboolDefaultAllowThreads=true;
3333
publicboolallow_threads=DefaultAllowThreads;
3434

35-
publicboolargs_reversed=false;
35+
publicboolargsReversed=false;
3636

37-
internalMethodBinder(boolreverse_args=false)
37+
internalMethodBinder(boolargsReversed=false)
3838
{
3939
list=newList<MaybeMethodBase>();
40-
args_reversed=reverse_args;
40+
this.argsReversed=argsReversed;
4141
}
4242

43-
internalMethodBinder(MethodInfomi,boolreverse_args=false)
43+
internalMethodBinder(MethodInfomi,boolargsReversed=false)
4444
{
4545
list=newList<MaybeMethodBase>{newMaybeMethodBase(mi)};
46-
args_reversed=reverse_args;
46+
this.argsReversed=argsReversed;
4747
}
4848

4949
publicintCount
@@ -276,11 +276,11 @@ internal static int ArgPrecedence(Type t)
276276
/// <param name="inst">The Python target of the method invocation.</param>
277277
/// <param name="args">The Python arguments.</param>
278278
/// <param name="kw">The Python keyword arguments.</param>
279-
/// <param name="reverse_args">Reverse arguments of methods. Used for methods such as __radd__, __rsub__, __rmod__ etc</param>
279+
/// <param name="argsReversed">Reverse arguments of methods. Used for methods such as __radd__, __rsub__, __rmod__ etc</param>
280280
/// <returns>A Binding if successful. Otherwise null.</returns>
281-
internalBinding?Bind(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,boolreverse_args=false)
281+
internalBinding?Bind(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,boolargsReversed=false)
282282
{
283-
returnBind(inst,args,kw,null,null,reverse_args);
283+
returnBind(inst,args,kw,null,null,argsReversed);
284284
}
285285

286286
/// <summary>
@@ -293,11 +293,11 @@ internal static int ArgPrecedence(Type t)
293293
/// <param name="args">The Python arguments.</param>
294294
/// <param name="kw">The Python keyword arguments.</param>
295295
/// <param name="info">If not null, only bind to that method.</param>
296-
/// <param name="reverse_args">Reverse arguments of methods. Used for methods such as __radd__, __rsub__, __rmod__ etc</param>
296+
/// <param name="argsReversed">Reverse arguments of methods. Used for methods such as __radd__, __rsub__, __rmod__ etc</param>
297297
/// <returns>A Binding if successful. Otherwise null.</returns>
298-
internalBinding?Bind(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,MethodBase?info,boolreverse_args=false)
298+
internalBinding?Bind(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,MethodBase?info,boolargsReversed=false)
299299
{
300-
returnBind(inst,args,kw,info,null,reverse_args);
300+
returnBind(inst,args,kw,info,null,argsReversed);
301301
}
302302

303303
privatereadonlystructMatchedMethod
@@ -341,9 +341,9 @@ public MismatchedMethod(Exception exception, MethodBase mb)
341341
/// <param name="kw">The Python keyword arguments.</param>
342342
/// <param name="info">If not null, only bind to that method.</param>
343343
/// <param name="methodinfo">If not null, additionally attempt to bind to the generic methods in this array by inferring generic type parameters.</param>
344-
/// <param name="reverse_args">Reverse arguments of methods. Used for methods such as __radd__, __rsub__, __rmod__ etc</param>
344+
/// <param name="argsReversed">Reverse arguments of methods. Used for methods such as __radd__, __rsub__, __rmod__ etc</param>
345345
/// <returns>A Binding if successful. Otherwise null.</returns>
346-
internalBinding?Bind(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,MethodBase?info,MethodBase[]?methodinfo,boolreverse_args=false)
346+
internalBinding?Bind(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,MethodBase?info,MethodBase[]?methodinfo,boolargsReversed=false)
347347
{
348348
// loop to find match, return invoker w/ or w/o error
349349
varkwargDict=newDictionary<string,PyObject>();
@@ -371,10 +371,10 @@ public MismatchedMethod(Exception exception, MethodBase mb)
371371
_methods=GetMethods();
372372
}
373373

374-
returnBind(inst,args,kwargDict,_methods,matchGenerics:true,reverse_args);
374+
returnBind(inst,args,kwargDict,_methods,matchGenerics:true,argsReversed);
375375
}
376376

377-
privatestaticBinding?Bind(BorrowedReferenceinst,BorrowedReferenceargs,Dictionary<string,PyObject>kwargDict,MethodBase[]methods,boolmatchGenerics,boolreversed=false)
377+
privatestaticBinding?Bind(BorrowedReferenceinst,BorrowedReferenceargs,Dictionary<string,PyObject>kwargDict,MethodBase[]methods,boolmatchGenerics,boolargsReversed=false)
378378
{
379379
varpynargs=(int)Runtime.PyTuple_Size(args);
380380
varisGeneric=false;
@@ -394,20 +394,22 @@ public MismatchedMethod(Exception exception, MethodBase mb)
394394
// Binary operator methods will have 2 CLR args but only one Python arg
395395
// (unary operators will have 1 less each), since Python operator methods are bound.
396396
isOperator=isOperator&&pynargs==pi.Length-1;
397-
boolisReverse=isOperator&&reversed;// Only cast if isOperator.
397+
boolisReverse=isOperator&&argsReversed;// Only cast if isOperator.
398398
if(isReverse&&OperatorMethod.IsComparisonOp((MethodInfo)mi))
399399
continue;// Comparison operators in Python have no reverse mode.
400400
if(!MatchesArgumentCount(pynargs,pi,kwargDict,outboolparamsArray,outArrayList?defaultArgList,outintkwargsMatched,outintdefaultsNeeded)&&!isOperator)
401401
{
402402
continue;
403403
}
404404
// Preprocessing pi to remove either the first or second argument.
405-
if(isOperator&&!isReverse){
405+
if(isOperator&&!isReverse)
406+
{
406407
// The first Python arg is the right operand, while the bound instance is the left.
407408
// We need to skip the first (left operand) CLR argument.
408409
pi=pi.Skip(1).ToArray();
409410
}
410-
elseif(isOperator&&isReverse){
411+
elseif(isOperator&&isReverse)
412+
{
411413
// The first Python arg is the left operand.
412414
// We need to take the first CLR argument.
413415
pi=pi.Take(1).ToArray();
@@ -817,14 +819,14 @@ static bool MatchesArgumentCount(int positionalArgumentCount, ParameterInfo[] pa
817819
returnmatch;
818820
}
819821

820-
internalvirtualNewReferenceInvoke(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,boolreverse_args=false)
822+
internalvirtualNewReferenceInvoke(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,boolargsReversed=false)
821823
{
822-
returnInvoke(inst,args,kw,null,null,reverse_args);
824+
returnInvoke(inst,args,kw,null,null,argsReversed);
823825
}
824826

825-
internalvirtualNewReferenceInvoke(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,MethodBase?info,boolreverse_args=false)
827+
internalvirtualNewReferenceInvoke(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,MethodBase?info,boolargsReversed=false)
826828
{
827-
returnInvoke(inst,args,kw,info,null,reverse_args=false);
829+
returnInvoke(inst,args,kw,info,null,argsReversed=false);
828830
}
829831

830832
protectedstaticvoidAppendArgumentTypes(StringBuilderto,BorrowedReferenceargs)
@@ -860,7 +862,7 @@ protected static void AppendArgumentTypes(StringBuilder to, BorrowedReference ar
860862
to.Append(')');
861863
}
862864

863-
internalvirtualNewReferenceInvoke(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,MethodBase?info,MethodBase[]?methodinfo,boolreverse_args=false)
865+
internalvirtualNewReferenceInvoke(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,MethodBase?info,MethodBase[]?methodinfo,boolargsReversed=false)
864866
{
865867
// No valid methods, nothing to bind.
866868
if(GetMethods().Length==0)
@@ -873,7 +875,7 @@ internal virtual NewReference Invoke(BorrowedReference inst, BorrowedReference a
873875
returnExceptions.RaiseTypeError(msg.ToString());
874876
}
875877

876-
Binding?binding=Bind(inst,args,kw,info,methodinfo,reverse_args);
878+
Binding?binding=Bind(inst,args,kw,info,methodinfo,argsReversed);
877879
objectresult;
878880
IntPtrts=IntPtr.Zero;
879881

‎src/runtime/Types/MethodBinding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ public static NewReference tp_call(BorrowedReference ob, BorrowedReference args,
238238
}
239239
}
240240

241-
returnself.m.Invoke(targetisnull?BorrowedReference.Null:target,args,kw,self.info.UnsafeValue,self.m.binder.args_reversed);
241+
returnself.m.Invoke(targetisnull?BorrowedReference.Null:target,args,kw,self.info.UnsafeValue,self.m.binder.argsReversed);
242242
}
243243
finally
244244
{

‎src/runtime/Types/MethodObject.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ internal class MethodObject : ExtensionType
2727
internalPyString?doc;
2828
internalMaybeTypetype;
2929

30-
publicMethodObject(MaybeTypetype,stringname,MethodBase[]info,boolallow_threads,boolreverse_args=false)
30+
publicMethodObject(MaybeTypetype,stringname,MethodBase[]info,boolallow_threads,boolargsReversed=false)
3131
{
3232
this.type=type;
3333
this.name=name;
3434
this.infoList=newList<MaybeMethodInfo>();
35-
binder=newMethodBinder(reverse_args);
35+
binder=newMethodBinder(argsReversed);
3636
foreach(MethodBaseitemininfo)
3737
{
3838
this.infoList.Add(item);
@@ -45,8 +45,8 @@ public MethodObject(MaybeType type, string name, MethodBase[] info, bool allow_t
4545
binder.allow_threads=allow_threads;
4646
}
4747

48-
publicMethodObject(MaybeTypetype,stringname,MethodBase[]info,boolreverse_args=false)
49-
:this(type,name,info,allow_threads:AllowThreads(info),reverse_args)
48+
publicMethodObject(MaybeTypetype,stringname,MethodBase[]info,boolargsReversed=false)
49+
:this(type,name,info,allow_threads:AllowThreads(info),argsReversed)
5050
{
5151
}
5252

@@ -67,14 +67,14 @@ internal MethodBase[] info
6767
}
6868
}
6969

70-
publicvirtualNewReferenceInvoke(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,boolreverse_args=false)
70+
publicvirtualNewReferenceInvoke(BorrowedReferenceinst,BorrowedReferenceargs,BorrowedReferencekw,boolargsReversed=false)
7171
{
72-
returnInvoke(inst,args,kw,null,reverse_args);
72+
returnInvoke(inst,args,kw,null,argsReversed);
7373
}
7474

75-
publicvirtualNewReferenceInvoke(BorrowedReferencetarget,BorrowedReferenceargs,BorrowedReferencekw,MethodBase?info,boolreverse_args=false)
75+
publicvirtualNewReferenceInvoke(BorrowedReferencetarget,BorrowedReferenceargs,BorrowedReferencekw,MethodBase?info,boolargsReversed=false)
7676
{
77-
returnbinder.Invoke(target,args,kw,info,this.info,reverse_args);
77+
returnbinder.Invoke(target,args,kw,info,this.info,argsReversed);
7878
}
7979

8080
/// <summary>

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp