private static int DefaultComplexity(ComplexityContext context) { if (context.Cost.Multipliers.Count == 0) { return(context.Cost.Complexity); } int complexity = 0; for (int i = 0; i < context.Cost.Multipliers.Count; i++) { if (MultiplierHelper.TryGetMultiplierValue( context.FieldSelection, context.Variables, context.Cost.Multipliers[i], out int multiplier)) { complexity += context.Cost.Complexity * multiplier; } else { complexity += context.Cost.Complexity; } } return(complexity); }
/// <summary> /// The default complexity calculation algorithm. /// </summary> /// <param name="context"> /// The complexity context. /// </param> /// <returns> /// Returns the calculated field complexity. /// </returns> public static int DefaultCalculation(ComplexityContext context) { if (context.Multipliers.Count == 0) { return(context.Complexity + context.ChildComplexity); } var cost = context.Complexity + context.ChildComplexity; var needsDefaultMultiplier = true; foreach (MultiplierPathString multiplier in context.Multipliers) { if (context.TryGetArgumentValue(multiplier, out int value)) { cost *= value; needsDefaultMultiplier = false; } } if (needsDefaultMultiplier && context.DefaultMultiplier.HasValue) { cost *= context.DefaultMultiplier.Value; } return(cost); }
public static int DefaultCalculation(ComplexityContext context) { return(context.Cost.Complexity); }