Merge pull request #121 from LogosBible/processfixes
[mono.git] / mcs / tools / tuner / Mono.Tuner / RemoveResources.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4
5 using Mono.Linker;
6 using Mono.Linker.Steps;
7
8 using Mono.Cecil;
9
10 namespace Mono.Tuner {
11
12         public class RemoveResources : IStep {
13
14                 I18nAssemblies assemblies;
15
16                 public RemoveResources (I18nAssemblies assemblies)
17                 {
18                         this.assemblies = assemblies;
19                 }
20
21                 public void Process (LinkContext context)
22                 {
23                         AssemblyDefinition assembly;
24                         if (!context.TryGetLinkedAssembly ("mscorlib", out assembly))
25                                 return;
26
27                         var resources = assembly.MainModule.Resources;
28
29                         for (int i = 0; i < resources.Count; i++) {
30                                 var resource = resources [i] as EmbeddedResource;
31                                 if (resource == null)
32                                         continue;
33
34                                 switch (resource.Name) {
35                                 case "collation.core.bin":
36                                 case "collation.tailoring.bin":
37                                         continue;
38                                 default:
39                                         if (!resource.Name.Contains ("cjk"))
40                                                 continue;
41                                         if (IncludeCJK ())
42                                                 continue;
43
44                                         resources.RemoveAt (i--);
45                                         break;
46                                 }
47                         }
48                 }
49
50                 bool IncludeCJK ()
51                 {
52                         return (assemblies & I18nAssemblies.CJK) != 0;
53                 }
54         }
55 }