diff --git a/Java.Interop.sln b/Java.Interop.sln index 361ef409b..ec2765077 100644 --- a/Java.Interop.sln +++ b/Java.Interop.sln @@ -87,8 +87,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Java.Interop.Tools.Cecil", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Java.Interop.Tools.Diagnostics", "src\Java.Interop.Tools.Diagnostics\Java.Interop.Tools.Diagnostics.csproj", "{64CC4E44-CE3A-4319-BF3F-6CF8BD513870}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Java.Interop.Tools.TypeNameMappings", "src\Java.Interop.Tools.TypeNameMappings\Java.Interop.Tools.TypeNameMappings.shproj", "{E706B6F2-5562-4765-8F07-8CF84A797B30}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "jcw-gen", "tools\jcw-gen\jcw-gen.csproj", "{52C7D9B6-E8C8-47D0-9471-652D278D7D77}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Java.Interop.Tools.JavaCallableWrappers-Tests", "src\Java.Interop.Tools.JavaCallableWrappers\Test\Java.Interop.Tools.JavaCallableWrappers-Tests.csproj", "{58B564A1-570D-4DA2-B02D-25BDDB1A9F4F}" @@ -378,7 +376,6 @@ Global {D18FCF91-8876-48A0-A693-2DC1E7D3D80A} = {0998E45F-8BCE-4791-A944-962CD54E2D80} {D48EE8D0-0A0A-4493-AEF5-DAF5F8CF86AD} = {0998E45F-8BCE-4791-A944-962CD54E2D80} {64CC4E44-CE3A-4319-BF3F-6CF8BD513870} = {0998E45F-8BCE-4791-A944-962CD54E2D80} - {E706B6F2-5562-4765-8F07-8CF84A797B30} = {0998E45F-8BCE-4791-A944-962CD54E2D80} {52C7D9B6-E8C8-47D0-9471-652D278D7D77} = {C8F58966-94BF-407F-914A-8654F8B8AE3B} {58B564A1-570D-4DA2-B02D-25BDDB1A9F4F} = {271C9F30-F679-4793-942B-0D9527CB3E2F} {15945D4B-FF56-4BCC-B598-2718D199DD08} = {C8F58966-94BF-407F-914A-8654F8B8AE3B} diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj index ef263cae8..eb2972633 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj @@ -38,9 +38,10 @@ + + JavaNativeTypeManager.cs + - - {64CC4E44-CE3A-4319-BF3F-6CF8BD513870} @@ -63,5 +64,6 @@ MonoRuntimeProvider.Shared.java + diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj b/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj index 4d585ce8e..3af043685 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj @@ -64,7 +64,6 @@ - diff --git a/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings/JavaNativeTypeManager.cs b/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings/JavaNativeTypeManager.cs index 9ef1c74ed..b1b67a794 100644 --- a/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings/JavaNativeTypeManager.cs +++ b/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings/JavaNativeTypeManager.cs @@ -10,25 +10,33 @@ using Mono.Cecil; using Java.Interop.Tools.Cecil; using Android.Runtime; -#if !GENERATOR using Java.Interop.Tools.JavaCallableWrappers; -#endif // !GENERATOR #endif // HAVE_CECIL -namespace Java.Interop.Tools.TypeNameMappings { +namespace Java.Interop.Tools.TypeNameMappings +{ +#if HAVE_CECIL + public +#endif enum PackageNamingPolicy { LowercaseHash, Lowercase, LowercaseWithAssemblyName, } - public class JniTypeName +#if HAVE_CECIL + public +#endif + class JniTypeName { public string Type { get; internal set; } public bool IsKeyword { get; internal set; } } +#if HAVE_CECIL + public +#endif static class JavaNativeTypeManager { public static PackageNamingPolicy PackageNamingPolicy { get; set; } @@ -143,7 +151,7 @@ public static string ToJniName (Type type) "java/lang/Object"; } - public static string ToJniName (Type type, ExportParameterKind exportKind) + static string ToJniName (Type type, ExportParameterKind exportKind) { if (type == null) throw new ArgumentNullException ("type"); @@ -159,12 +167,8 @@ public static string ToJniName (Type type, ExportParameterKind exportKind) return GetSpecialExportJniType (type.FullName, exportKind); return ToJniName (type, t => t.DeclaringType, t => t.Name, GetPackageName, t => { -#if !GEN_JAVA_STUBS && !GENERATOR && !JAVADOC_TO_MDOC return ToJniNameFromAttributes (t); -#else - return null; -#endif - }); + }, _ => false); } public static string ToJniName (string jniType, int rank) @@ -255,7 +259,6 @@ static string GetSpecialExportJniType (string typeName, ExportParameterKind expo return null; } -#if !GEN_JAVA_STUBS && !JAVADOC_TO_MDOC // Keep in sync with ToJniNameFromAttributes(TypeDefinition) public static string ToJniNameFromAttributes (Type type) { @@ -347,7 +350,7 @@ static string GetJniTypeName (TR typeRef, ExportParameterKind exportKind, return rank == 0 && pJniName.Length > 1 ? "L" + pJniName + ";" : ToJniName (pJniName, rank); } - public static ExportParameterKind GetExportKind (System.Reflection.ICustomAttributeProvider p) + static ExportParameterKind GetExportKind (System.Reflection.ICustomAttributeProvider p) { foreach (ExportParameterAttribute a in p.GetCustomAttributes (typeof (ExportParameterAttribute), false)) return a.Kind; @@ -370,7 +373,7 @@ public static string GetJniTypeName (Type typeRef) return GetJniTypeName (typeRef, ExportParameterKind.Unspecified); } - public static string GetJniTypeName (Type typeRef, ExportParameterKind exportKind) + internal static string GetJniTypeName (Type typeRef, ExportParameterKind exportKind) { return GetJniTypeName (typeRef, exportKind, t => t, t => { Type etype; @@ -385,7 +388,6 @@ static string ToJniNameWhichShouldReplaceExistingToJniName (Type type, ExportPar var ret = ToJniNameFromAttributes (type); return ret ?? ToJniName (type, exportKind); } -#endif #if HAVE_CECIL @@ -401,12 +403,12 @@ internal static ExportParameterAttribute ToExportParameterAttribute (CustomAttri return new ExportParameterAttribute ((ExportParameterKind)attr.ConstructorArguments [0].Value); } - internal static bool IsApplication (TypeDefinition type) + public static bool IsApplication (TypeDefinition type) { return type.GetBaseTypes ().Any (b => b.FullName == "Android.App.Application"); } - internal static bool IsInstrumentation (TypeDefinition type) + public static bool IsInstrumentation (TypeDefinition type) { return type.GetBaseTypes ().Any (b => b.FullName == "Android.App.Instrumentation"); } @@ -430,7 +432,7 @@ public static string GetJniTypeName (TypeReference typeRef) return GetJniTypeName (typeRef, ExportParameterKind.Unspecified); } - public static string GetJniTypeName (TypeReference typeRef, ExportParameterKind exportKind) + internal static string GetJniTypeName (TypeReference typeRef, ExportParameterKind exportKind) { return GetJniTypeName (typeRef, exportKind, t => t.Resolve (), t => { TypeReference etype; @@ -441,7 +443,7 @@ public static string GetJniTypeName (TypeReference typeRef, ExportParameterKind public static string ToCompatJniName (Mono.Cecil.TypeDefinition type) { - return ToJniName (type, t => t.DeclaringType, t => t.Name, ToCompatPackageName, ToJniNameFromAttributes); + return ToJniName (type, t => t.DeclaringType, t => t.Name, ToCompatPackageName, ToJniNameFromAttributes, t => IsNonStaticInnerClass (t as TypeDefinition)); } static string ToCompatPackageName (Mono.Cecil.TypeDefinition type) @@ -456,7 +458,7 @@ public static string ToJniName (Mono.Cecil.TypeDefinition type) "java/lang/Object"; } - public static string ToJniName (TypeDefinition type, ExportParameterKind exportKind) + static string ToJniName (TypeDefinition type, ExportParameterKind exportKind) { if (type == null) throw new ArgumentNullException ("type"); @@ -471,7 +473,7 @@ public static string ToJniName (TypeDefinition type, ExportParameterKind exportK return GetSpecialExportJniType (type.FullName, exportKind); } - return ToJniName (type, t => t.DeclaringType, t => t.Name, GetPackageName, ToJniNameFromAttributes); + return ToJniName (type, t => t.DeclaringType, t => t.Name, GetPackageName, ToJniNameFromAttributes, t => IsNonStaticInnerClass (t as TypeDefinition)); } static string ToJniNameFromAttributes (TypeDefinition type) @@ -562,7 +564,7 @@ public static string GetPackageName (TypeDefinition type) } #endif - static string ToJniName (T type, Func decl, Func name, Func ns, Func overrideName) + static string ToJniName (T type, Func decl, Func name, Func ns, Func overrideName, Func shouldUpdateName) where T : class { var nameParts = new List (); @@ -576,12 +578,9 @@ static string ToJniName (T type, Func decl, Func name, Func< break; } var n = name (declType).Replace ('`', '_'); -#if HAVE_CECIL - var td = declType as TypeDefinition; - if (IsNonStaticInnerClass (td)) { + if (shouldUpdateName (declType)) { n = "$" + name (decl (declType)) + "_" + n; } -#endif nameParts.Add (n); } diff --git a/tools/generator/generator.csproj b/tools/generator/generator.csproj index 957eb4009..5ab46b18f 100644 --- a/tools/generator/generator.csproj +++ b/tools/generator/generator.csproj @@ -112,8 +112,6 @@ - - @@ -136,6 +134,10 @@ {15945D4B-FF56-4BCC-B598-2718D199DD08} Xamarin.Android.Cecil + + {D18FCF91-8876-48A0-A693-2DC1E7D3D80A} + Java.Interop.Tools.JavaCallableWrappers +