public static List <JavaClass> Import(List <TypeDefinition> cilTypes) { if (_Where != null) { throw new InvalidOperationException(); } _Where = new JavaException.Where(); JavaClasses = new List <JavaClass>(); GenericStack = new GenericStack(); foreach (var cilType in cilTypes) { if (cilType.HasCustomAttribute("Discard")) { continue; // if decorated with [java.attr.Discard], don't export to java } if (cilType.FullName == "<PrivateImplementationDetails>") { continue; // discard the private class for array initializers } Where.Push($"assembly {cilType.Module.FileName}"); TypeBuilder.BuildJavaClass(cilType, null); Where.Pop(); } _Where = null; return(JavaClasses); }
public DotNetImporter(ModuleDefinition _module) { module = _module; typeMap = new Dictionary <string, TypeReference>(); typeUse = new HashSet <TypeReference>(); funcIfcNames = new HashSet <string>(); funcIfcTypes = new HashSet <TypeDefinition>(); var typeSystem = module.TypeSystem; typeMap["./" + TypeCode.Empty] = typeSystem.Void; typeMap["./" + TypeCode.Boolean] = typeSystem.Boolean; typeMap["./" + TypeCode.Byte] = typeSystem.Byte; typeMap["./" + TypeCode.SByte] = typeSystem.SByte; typeMap["./" + TypeCode.Char] = typeSystem.Char; typeMap["./" + TypeCode.Int16] = typeSystem.Int16; typeMap["./" + TypeCode.Int32] = typeSystem.Int32; typeMap["./" + TypeCode.Int64] = typeSystem.Int64; typeMap["./" + TypeCode.UInt16] = typeSystem.UInt16; typeMap["./" + TypeCode.UInt32] = typeSystem.UInt32; typeMap["./" + TypeCode.UInt64] = typeSystem.UInt64; typeMap["./" + TypeCode.Single] = typeSystem.Single; typeMap["./" + TypeCode.Double] = typeSystem.Double; typeMap["java.lang.Object"] = typeSystem.Object; typeMap["java.lang.String"] = typeSystem.String; systemException = new TypeReference( "System", "Exception", module, typeSystem.CoreLibrary); methodRefNotImplementedException = new MethodReference( ".ctor", typeSystem.Void, new TypeReference( "System", "NotImplementedException", module, typeSystem.CoreLibrary)); methodRefNotImplementedException.HasThis = true; Where = new JavaException.Where(); Where.Push($"assembly '{module.Assembly.Name.Name}'"); ImportCilTypes(module.Types); }