| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent d3bde9d commit 1542cc9
5 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -41,6 +41,17 @@ public OwnInt(int value) | |||
| 41 | 41 | _value = value; | |
| 42 | 42 | } | |
| 43 | 43 | ||
| 44 | + public override int GetHashCode() | ||
| 45 | + { | ||
| 46 | + return unchecked(65535 + _value.GetHashCode()); | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + public override bool Equals(object obj) | ||
| 50 | + { | ||
| 51 | + return obj is OwnInt @object && | ||
| 52 | + Num == @object.Num; | ||
| 53 | + } | ||
| 54 | + | ||
| 44 | 55 | public static OwnInt operator -(OwnInt p1, OwnInt p2) | |
| 45 | 56 | { | |
| 46 | 57 | return new OwnInt(p1._value - p2._value); | |
@@ -125,14 +136,8 @@ public bool CanDecode(PyType objectType, Type targetType) | |||
| 125 | 136 | return objectType.Name == "int" && targetType == typeof(OwnInt); | |
| 126 | 137 | } | |
| 127 | 138 | ||
| 128 | - public bool TryDecode<T>(PyObject pyObj, out T? value) | ||
| 139 | + public bool TryDecode<T>(PyObject pyObj, out T value) | ||
| 129 | 140 | { | |
| 130 | - if (pyObj.PyType.Name != "int" || typeof(T) != typeof(OwnInt)) | ||
| 131 | - { | ||
| 132 | - value = default(T); | ||
| 133 | - return false; | ||
| 134 | - } | ||
| 135 | - | ||
| 136 | 141 | value = (T)(object)new OwnInt(pyObj.As<int>()); | |
| 137 | 142 | return true; | |
| 138 | 143 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -546,7 +546,7 @@ private static ClassInfo GetClassInfo(Type type, ClassBase impl) | |||
| 546 | 546 | ci.members[pyName] = new MethodObject(type, name, forwardMethods).AllocObject(); | |
| 547 | 547 | // Only methods where only the right operand is the declaring type. | |
| 548 | 548 | if (reverseMethods.Length > 0) | |
| 549 | - ci.members[pyNameReverse] = new MethodObject(type, name, reverseMethods, reverse_args: true).AllocObject(); | ||
| 549 | + ci.members[pyNameReverse] = new MethodObject(type, name, reverseMethods, argsReversed: true).AllocObject(); | ||
| 550 | 550 | } | |
| 551 | 551 | } | |
| 552 | 552 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -32,18 +32,18 @@ internal class MethodBinder | |||
| 32 | 32 | public const bool DefaultAllowThreads = true; | |
| 33 | 33 | public bool allow_threads = DefaultAllowThreads; | |
| 34 | 34 | ||
| 35 | - public bool args_reversed = false; | ||
| 35 | + public bool argsReversed = false; | ||
| 36 | 36 | ||
| 37 | - internal MethodBinder(bool reverse_args = false) | ||
| 37 | + internal MethodBinder(bool argsReversed = false) | ||
| 38 | 38 | { | |
| 39 | 39 | list = new List<MaybeMethodBase>(); | |
| 40 | - args_reversed = reverse_args; | ||
| 40 | + this.argsReversed = argsReversed; | ||
| 41 | 41 | } | |
| 42 | 42 | ||
| 43 | - internal MethodBinder(MethodInfo mi, bool reverse_args = false) | ||
| 43 | + internal MethodBinder(MethodInfo mi, bool argsReversed = false) | ||
| 44 | 44 | { | |
| 45 | 45 | list = new List<MaybeMethodBase> { new MaybeMethodBase(mi) }; | |
| 46 | - args_reversed = reverse_args; | ||
| 46 | + this.argsReversed = argsReversed; | ||
| 47 | 47 | } | |
| 48 | 48 | ||
| 49 | 49 | public int Count | |
@@ -276,11 +276,11 @@ internal static int ArgPrecedence(Type t) | |||
| 276 | 276 | /// <param name="inst">The Python target of the method invocation.</param> | |
| 277 | 277 | /// <param name="args">The Python arguments.</param> | |
| 278 | 278 | /// <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> | ||
| 280 | 280 | /// <returns>A Binding if successful. Otherwise null.</returns> | |
| 281 | - internal Binding? Bind(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, bool reverse_args = false) | ||
| 281 | + internal Binding? Bind(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, bool argsReversed = false) | ||
| 282 | 282 | { | |
| 283 | - return Bind(inst, args, kw, null, null, reverse_args); | ||
| 283 | + return Bind(inst, args, kw, null, null, argsReversed); | ||
| 284 | 284 | } | |
| 285 | 285 | ||
| 286 | 286 | /// <summary> | |
@@ -293,11 +293,11 @@ internal static int ArgPrecedence(Type t) | |||
| 293 | 293 | /// <param name="args">The Python arguments.</param> | |
| 294 | 294 | /// <param name="kw">The Python keyword arguments.</param> | |
| 295 | 295 | /// <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> | ||
| 297 | 297 | /// <returns>A Binding if successful. Otherwise null.</returns> | |
| 298 | - internal Binding? Bind(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, MethodBase? info, bool reverse_args = false) | ||
| 298 | + internal Binding? Bind(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, MethodBase? info, bool argsReversed = false) | ||
| 299 | 299 | { | |
| 300 | - return Bind(inst, args, kw, info, null, reverse_args); | ||
| 300 | + return Bind(inst, args, kw, info, null, argsReversed); | ||
| 301 | 301 | } | |
| 302 | 302 | ||
| 303 | 303 | private readonly struct MatchedMethod | |
@@ -341,9 +341,9 @@ public MismatchedMethod(Exception exception, MethodBase mb) | |||
| 341 | 341 | /// <param name="kw">The Python keyword arguments.</param> | |
| 342 | 342 | /// <param name="info">If not null, only bind to that method.</param> | |
| 343 | 343 | /// <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> | ||
| 345 | 345 | /// <returns>A Binding if successful. Otherwise null.</returns> | |
| 346 | - internal Binding? Bind(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, MethodBase? info, MethodBase[]? methodinfo, bool reverse_args = false) | ||
| 346 | + internal Binding? Bind(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, MethodBase? info, MethodBase[]? methodinfo, bool argsReversed = false) | ||
| 347 | 347 | { | |
| 348 | 348 | // loop to find match, return invoker w/ or w/o error | |
| 349 | 349 | var kwargDict = new Dictionary<string, PyObject>(); | |
@@ -371,10 +371,10 @@ public MismatchedMethod(Exception exception, MethodBase mb) | |||
| 371 | 371 | _methods = GetMethods(); | |
| 372 | 372 | } | |
| 373 | 373 | ||
| 374 | - return Bind(inst, args, kwargDict, _methods, matchGenerics: true, reverse_args); | ||
| 374 | + return Bind(inst, args, kwargDict, _methods, matchGenerics: true, argsReversed); | ||
| 375 | 375 | } | |
| 376 | 376 | ||
| 377 | - private static Binding? Bind(BorrowedReference inst, BorrowedReference args, Dictionary<string, PyObject> kwargDict, MethodBase[] methods, bool matchGenerics, bool reversed = false) | ||
| 377 | + private static Binding? Bind(BorrowedReference inst, BorrowedReference args, Dictionary<string, PyObject> kwargDict, MethodBase[] methods, bool matchGenerics, bool argsReversed = false) | ||
| 378 | 378 | { | |
| 379 | 379 | var pynargs = (int)Runtime.PyTuple_Size(args); | |
| 380 | 380 | var isGeneric = false; | |
@@ -394,20 +394,22 @@ public MismatchedMethod(Exception exception, MethodBase mb) | |||
| 394 | 394 | // Binary operator methods will have 2 CLR args but only one Python arg | |
| 395 | 395 | // (unary operators will have 1 less each), since Python operator methods are bound. | |
| 396 | 396 | isOperator = isOperator && pynargs == pi.Length - 1; | |
| 397 | - bool isReverse = isOperator && reversed; // Only cast if isOperator. | ||
| 397 | + bool isReverse = isOperator && argsReversed; // Only cast if isOperator. | ||
| 398 | 398 | if (isReverse && OperatorMethod.IsComparisonOp((MethodInfo)mi)) | |
| 399 | 399 | continue; // Comparison operators in Python have no reverse mode. | |
| 400 | 400 | if (!MatchesArgumentCount(pynargs, pi, kwargDict, out bool paramsArray, out ArrayList? defaultArgList, out int kwargsMatched, out int defaultsNeeded) && !isOperator) | |
| 401 | 401 | { | |
| 402 | 402 | continue; | |
| 403 | 403 | } | |
| 404 | 404 | // Preprocessing pi to remove either the first or second argument. | |
| 405 | - if (isOperator && !isReverse) { | ||
| 405 | + if (isOperator && !isReverse) | ||
| 406 | + { | ||
| 406 | 407 | // The first Python arg is the right operand, while the bound instance is the left. | |
| 407 | 408 | // We need to skip the first (left operand) CLR argument. | |
| 408 | 409 | pi = pi.Skip(1).ToArray(); | |
| 409 | 410 | } | |
| 410 | - else if (isOperator && isReverse) { | ||
| 411 | + else if (isOperator && isReverse) | ||
| 412 | + { | ||
| 411 | 413 | // The first Python arg is the left operand. | |
| 412 | 414 | // We need to take the first CLR argument. | |
| 413 | 415 | pi = pi.Take(1).ToArray(); | |
@@ -817,14 +819,14 @@ static bool MatchesArgumentCount(int positionalArgumentCount, ParameterInfo[] pa | |||
| 817 | 819 | return match; | |
| 818 | 820 | } | |
| 819 | 821 | ||
| 820 | - internal virtual NewReference Invoke(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, bool reverse_args = false) | ||
| 822 | + internal virtual NewReference Invoke(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, bool argsReversed = false) | ||
| 821 | 823 | { | |
| 822 | - return Invoke(inst, args, kw, null, null, reverse_args); | ||
| 824 | + return Invoke(inst, args, kw, null, null, argsReversed); | ||
| 823 | 825 | } | |
| 824 | 826 | ||
| 825 | - internal virtual NewReference Invoke(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, MethodBase? info, bool reverse_args = false) | ||
| 827 | + internal virtual NewReference Invoke(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, MethodBase? info, bool argsReversed = false) | ||
| 826 | 828 | { | |
| 827 | - return Invoke(inst, args, kw, info, null, reverse_args = false); | ||
| 829 | + return Invoke(inst, args, kw, info, null, argsReversed = false); | ||
| 828 | 830 | } | |
| 829 | 831 | ||
| 830 | 832 | protected static void AppendArgumentTypes(StringBuilder to, BorrowedReference args) | |
@@ -860,7 +862,7 @@ protected static void AppendArgumentTypes(StringBuilder to, BorrowedReference ar | |||
| 860 | 862 | to.Append(')'); | |
| 861 | 863 | } | |
| 862 | 864 | ||
| 863 | - internal virtual NewReference Invoke(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, MethodBase? info, MethodBase[]? methodinfo, bool reverse_args = false) | ||
| 865 | + internal virtual NewReference Invoke(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, MethodBase? info, MethodBase[]? methodinfo, bool argsReversed = false) | ||
| 864 | 866 | { | |
| 865 | 867 | // No valid methods, nothing to bind. | |
| 866 | 868 | if (GetMethods().Length == 0) | |
@@ -873,7 +875,7 @@ internal virtual NewReference Invoke(BorrowedReference inst, BorrowedReference a | |||
| 873 | 875 | return Exceptions.RaiseTypeError(msg.ToString()); | |
| 874 | 876 | } | |
| 875 | 877 | ||
| 876 | - Binding? binding = Bind(inst, args, kw, info, methodinfo, reverse_args); | ||
| 878 | + Binding? binding = Bind(inst, args, kw, info, methodinfo, argsReversed); | ||
| 877 | 879 | object result; | |
| 878 | 880 | IntPtr ts = IntPtr.Zero; | |
| 879 | 881 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -238,7 +238,7 @@ public static NewReference tp_call(BorrowedReference ob, BorrowedReference args, | |||
| 238 | 238 | } | |
| 239 | 239 | } | |
| 240 | 240 | ||
| 241 | - return self.m.Invoke(target is null ? BorrowedReference.Null : target, args, kw, self.info.UnsafeValue, self.m.binder.args_reversed); | ||
| 241 | + return self.m.Invoke(target is null ? BorrowedReference.Null : target, args, kw, self.info.UnsafeValue, self.m.binder.argsReversed); | ||
| 242 | 242 | } | |
| 243 | 243 | finally | |
| 244 | 244 | { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -27,12 +27,12 @@ internal class MethodObject : ExtensionType | |||
| 27 | 27 | internal PyString? doc; | |
| 28 | 28 | internal MaybeType type; | |
| 29 | 29 | ||
| 30 | - public MethodObject(MaybeType type, string name, MethodBase[] info, bool allow_threads, bool reverse_args = false) | ||
| 30 | + public MethodObject(MaybeType type, string name, MethodBase[] info, bool allow_threads, bool argsReversed = false) | ||
| 31 | 31 | { | |
| 32 | 32 | this.type = type; | |
| 33 | 33 | this.name = name; | |
| 34 | 34 | this.infoList = new List<MaybeMethodInfo>(); | |
| 35 | - binder = new MethodBinder(reverse_args); | ||
| 35 | + binder = new MethodBinder(argsReversed); | ||
| 36 | 36 | foreach (MethodBase item in info) | |
| 37 | 37 | { | |
| 38 | 38 | this.infoList.Add(item); | |
@@ -45,8 +45,8 @@ public MethodObject(MaybeType type, string name, MethodBase[] info, bool allow_t | |||
| 45 | 45 | binder.allow_threads = allow_threads; | |
| 46 | 46 | } | |
| 47 | 47 | ||
| 48 | - public MethodObject(MaybeType type, string name, MethodBase[] info, bool reverse_args = false) | ||
| 49 | - : this(type, name, info, allow_threads: AllowThreads(info), reverse_args) | ||
| 48 | + public MethodObject(MaybeType type, string name, MethodBase[] info, bool argsReversed = false) | ||
| 49 | + : this(type, name, info, allow_threads: AllowThreads(info), argsReversed) | ||
| 50 | 50 | { | |
| 51 | 51 | } | |
| 52 | 52 | ||
@@ -67,14 +67,14 @@ internal MethodBase[] info | |||
| 67 | 67 | } | |
| 68 | 68 | } | |
| 69 | 69 | ||
| 70 | - public virtual NewReference Invoke(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, bool reverse_args = false) | ||
| 70 | + public virtual NewReference Invoke(BorrowedReference inst, BorrowedReference args, BorrowedReference kw, bool argsReversed = false) | ||
| 71 | 71 | { | |
| 72 | - return Invoke(inst, args, kw, null, reverse_args); | ||
| 72 | + return Invoke(inst, args, kw, null, argsReversed); | ||
| 73 | 73 | } | |
| 74 | 74 | ||
| 75 | - public virtual NewReference Invoke(BorrowedReference target, BorrowedReference args, BorrowedReference kw, MethodBase? info, bool reverse_args = false) | ||
| 75 | + public virtual NewReference Invoke(BorrowedReference target, BorrowedReference args, BorrowedReference kw, MethodBase? info, bool argsReversed = false) | ||
| 76 | 76 | { | |
| 77 | - return binder.Invoke(target, args, kw, info, this.info, reverse_args); | ||
| 77 | + return binder.Invoke(target, args, kw, info, this.info, argsReversed); | ||
| 78 | 78 | } | |
| 79 | 79 | ||
| 80 | 80 | /// <summary> | |
| Back | FazBrowse Home | New Git URL |
0 commit comments