Changed uses of IEnumerable to List in order to prevent multiple enumerations.
authorJarl Gullberg <jarl.gullberg@gmail.com>
Mon, 29 May 2017 16:12:43 +0000 (18:12 +0200)
committerJarl Gullberg <jarl.gullberg@gmail.com>
Mon, 29 May 2017 16:12:43 +0000 (18:12 +0200)
src/Generator.Rewrite/Program.cs

index 1297759..621b610 100644 (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();