Ejemplo n.º 1
0
 internal void CompressApplicableMethodList(IntegerList a, IntegerList applicable_list)
 {
     while (applicable_list.Count >= 2) {
         int id = applicable_list[0];
         FunctionObject functionObject = base.Scripter.GetFunctionObject(id);
         bool flag = true;
         for (int i = 1; i < applicable_list.Count; i++) {
             int num3 = applicable_list[i];
             FunctionObject obj3 = base.Scripter.GetFunctionObject(num3);
             int num4 = 0;
             int num5 = 0;
             for (int j = 0; j < a.Count; j++) {
                 int num7 = a[j];
                 int paramId = functionObject.GetParamId(j);
                 int num9 = obj3.GetParamId(j);
                 int num10 = base.Scripter.conversion.CompareConversions(base.Scripter, num7, paramId, num9);
                 if (num10 > 0) {
                     num4++;
                 }
                 else if (num10 < 0) {
                     num5++;
                 }
             }
             if ((num4 > 0) && (num5 == 0)) {
                 flag = false;
                 applicable_list.DeleteValue(num3);
                 break;
             }
             if ((num5 > 0) && (num4 == 0)) {
                 flag = false;
                 applicable_list.DeleteValue(id);
                 break;
             }
         }
         if (flag) {
             break;
         }
     }
 }