//
using System;
+using System.Collections;
using Mono.Linker;
using Mono.Linker.Steps;
using Mono.Cecil;
namespace Mono.Tuner {
-
+
public class PrintStatus : BaseStep {
+ static string display_internalized = "display_internalized";
+
protected override void ProcessAssembly (AssemblyDefinition assembly)
{
- Console.WriteLine ("Assembly `{0}' ({1}) tuned", assembly.Name, assembly.MainModule.Image.FileInformation);
+ if (Annotations.GetAction (assembly) != AssemblyAction.Link)
+ return;
+
+ Console.WriteLine ("Assembly `{0}' ({1}) tuned", assembly.Name, assembly.MainModule.FullyQualifiedName);
+
+ if (!DisplayInternalized ())
+ return;
+
+ foreach (TypeDefinition type in assembly.MainModule.Types)
+ ProcessType (type);
+ }
+
+ bool DisplayInternalized ()
+ {
+ try {
+ return bool.Parse (Context.GetParameter (display_internalized));
+ } catch {
+ return false;
+ }
+ }
+
+ void ProcessType (TypeDefinition type)
+ {
+ ProcessCollection (type.Fields);
+ ProcessCollection (type.Methods);
+ }
+
+ void ProcessCollection (ICollection collection)
+ {
+ foreach (IMetadataTokenProvider provider in collection)
+ ProcessProvider (provider);
+ }
+
+ void ProcessProvider (IMetadataTokenProvider provider)
+ {
+ if (!TunerAnnotations.IsInternalized (Context, provider))
+ return;
+
+ Console.WriteLine ("[internalized] {0}", provider);
}
}
}