Changed uses of IEnumerable to List in order to prevent multiple enumerations.

This commit is contained in:
Jarl Gullberg 2017-05-29 18:12:43 +02:00
parent da71abb963
commit a29f72663c
No known key found for this signature in database
GPG key ID: 750FF6F6BDA72D23

View file

@ -45,7 +45,7 @@ namespace OpenTK.Rewrite
var file = args[0];
var key = args[1];
var options = args.Where(a => a.StartsWith("-") || a.StartsWith("/"));
program.Rewrite(file, key, options);
program.Rewrite(file, key, options.ToList());
}
// mscorlib types
@ -61,7 +61,7 @@ namespace OpenTK.Rewrite
static bool dllimport;
void Rewrite(string file, string keyfile, IEnumerable<string> options)
void Rewrite(string file, string keyfile, List<string> options)
{
dllimport = options.Contains("-dllimport");
@ -80,6 +80,7 @@ namespace OpenTK.Rewrite
{
provider = new Mono.Cecil.Mdb.MdbReaderProvider();
}
read_params.SymbolReaderProvider = provider;
read_params.ReadSymbols = true;
read_params.ReadWrite = true;
@ -154,7 +155,7 @@ namespace OpenTK.Rewrite
}
}
void Rewrite(TypeDefinition type, IEnumerable<string> options)
void Rewrite(TypeDefinition type, List<string> options)
{
var entry_points = type.Fields.FirstOrDefault(f => f.Name == "EntryPoints");
if (entry_points != null)
@ -196,7 +197,7 @@ namespace OpenTK.Rewrite
}
void Rewrite(TypeDefinition type, FieldDefinition entry_points,
List<MethodDefinition> entry_signatures, IEnumerable<string> options)
List<MethodDefinition> entry_signatures, List<string> options)
{
// Rewrite all wrapper methods
var wrapper_signatures = new List<MethodDefinition>();
@ -206,8 +207,8 @@ namespace OpenTK.Rewrite
foreach (var wrapper in wrapper_signatures)
{
var autogenerated = wrapper.CustomAttributes
.Where(a => a.AttributeType.Name == "AutoGeneratedAttribute");
if (autogenerated.Count() > 0)
.Where(a => a.AttributeType.Name == "AutoGeneratedAttribute").ToList();
if (autogenerated.Any())
{
var signature_name = (string)autogenerated.First()
.Fields.First(f => f.Name == "EntryPoint").Argument.Value;
@ -258,7 +259,7 @@ namespace OpenTK.Rewrite
// Create body for method
static void ProcessMethod(MethodDefinition wrapper, MethodDefinition native, int slot,
FieldDefinition entry_points, IEnumerable<string> options)
FieldDefinition entry_points, List<string> options)
{
var body = wrapper.Body;
var il = body.GetILProcessor();