Skip to content

Commit

Permalink
[Xamarin.MacDev] Split IAppleSdkVersion.TryParse in two methods. (#73)
Browse files Browse the repository at this point in the history
Split IAppleSdkVersion.TryParse into two methods, one that outputs the parsed
int array and one that outputs the actual IAppleSdkVersion. This way we can
re-use the actual version validation by using the int array overload when
we're not interested in the actual version output.
  • Loading branch information
rolfbjarne committed Jun 9, 2020
1 parent 45c5a68 commit a1bc6f3
Showing 1 changed file with 18 additions and 5 deletions.
23 changes: 18 additions & 5 deletions Xamarin.MacDev/IAppleSdkVersion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,36 @@ public static IAppleSdkVersion GetDefault (this IAppleSdkVersion @this, IAppleSd
return v.Count > 0 ? v [v.Count - 1] : @this.GetUseDefault ();
}

public static bool TryParse<T> (string s, out T result) where T : IAppleSdkVersion, new()
public static bool TryParse (string s, out int[] result)
{
result = new T ();
if (s == null)
if (s == null) {
result = null;
return false;
}

var vstr = s.Split ('.');
var vint = new int [vstr.Length];
result = new int [vstr.Length];

for (int j = 0; j < vstr.Length; j++) {
int component;
if (!int.TryParse (vstr [j], out component))
return false;

vint [j] = component;
result [j] = component;
}

return true;
}

public static bool TryParse<T> (string s, out T result) where T : IAppleSdkVersion, new()
{
result = new T ();
if (s == null)
return false;

if (!TryParse (s, out var vint))
return false;

result.SetVersion (vint);
return true;
}
Expand Down

0 comments on commit a1bc6f3

Please sign in to comment.