public GameVersionRange IntersectWith(GameVersionRange other) { if (ReferenceEquals(other, null)) { throw new ArgumentNullException("other"); } var highestLow = GameVersionBound.Highest(Lower, other.Lower); var lowestHigh = GameVersionBound.Lowest(Upper, other.Upper); return(IsEmpty(highestLow, lowestHigh) ? null : new GameVersionRange(highestLow, lowestHigh)); }
public bool IsSupersetOf(GameVersionRange other) { if (ReferenceEquals(other, null)) { throw new ArgumentNullException("other"); } var lowerIsOkay = Lower.Value.IsAny || (Lower.Value < other.Lower.Value) || (Lower.Value == other.Lower.Value && (Lower.Inclusive || !other.Lower.Inclusive)); var upperIsOkay = Upper.Value.IsAny || (other.Upper.Value < Upper.Value) || (other.Upper.Value == Upper.Value && (Upper.Inclusive || !other.Upper.Inclusive)); return(lowerIsOkay && upperIsOkay); }
private static string DeriveString(GameVersionRange versionRange) { var sb = new StringBuilder(); sb.Append(versionRange.Lower.Inclusive ? '[' : '('); if (versionRange.Lower.Value != null) { sb.Append(versionRange.Lower.Value); } sb.Append(','); if (versionRange.Upper.Value != null) { sb.Append(versionRange.Upper.Value); } sb.Append(versionRange.Upper.Inclusive ? ']' : ')'); return(sb.ToString()); }