Skip to content

Commit

Permalink
Remove LINQ from GuidGenerator
Browse files Browse the repository at this point in the history
  • Loading branch information
Sergio0694 committed Feb 2, 2024
1 parent 19f52d3 commit cbac465
Showing 1 changed file with 27 additions and 4 deletions.
31 changes: 27 additions & 4 deletions src/WinRT.Runtime/GuidGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

using System;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
Expand Down Expand Up @@ -101,7 +100,19 @@ public static string GetSignature(
}
else
{
var args = type.GetFields(BindingFlags.Instance | BindingFlags.Public).Select(fi => GetSignature(fi.FieldType));
static string[] SelectSignaturesForFields(FieldInfo[] fields)
{
string[] signatures = new string[fields.Length];

for (int i = 0; i < fields.Length; i++)
{
signatures[i] = GetSignature(fields[i].FieldType);
}

return signatures;
}

var args = SelectSignaturesForFields(type.GetFields(BindingFlags.Instance | BindingFlags.Public));
return "struct(" + type.FullName + ";" + String.Join(";", args) + ")";
}
}
Expand All @@ -117,7 +128,19 @@ public static string GetSignature(

if (type.IsGenericType)
{
var args = type.GetGenericArguments().Select(t => GetSignature(t));
static string[] SelectSignaturesForTypes(Type[] types)
{
string[] signatures = new string[types.Length];

for (int i = 0; i < types.Length; i++)
{
signatures[i] = GetSignature(types[i]);
}

return signatures;
}

var args = SelectSignaturesForTypes(type.GetGenericArguments());
return "pinterface({" + GetGUID(type) + "};" + String.Join(";", args) + ")";
}

Expand Down Expand Up @@ -181,7 +204,7 @@ public static Guid CreateIID(Type type)
internal static Guid CreateIIDForGenericType(string signature)
{
#if !NET
var data = wrt_pinterface_namespace.ToByteArray().Concat(UTF8Encoding.UTF8.GetBytes(signature)).ToArray();
var data = System.Linq.Enumerable.ToArray(System.Linq.Enumerable.Concat(wrt_pinterface_namespace.ToByteArray(), Encoding.UTF8.GetBytes(signature)));

using (SHA1 sha = new SHA1CryptoServiceProvider())
{
Expand Down

0 comments on commit cbac465

Please sign in to comment.