/// <summary> /// Gets a class reference for the given type reference. /// </summary> internal static ClassReference GetClassReference(this JvmClassLib.TypeReference type, XTypeUsageFlags usageFlags, DexTargetPackage targetPackage, XModule module) { var classRef = type.GetReference(usageFlags, targetPackage, module) as ClassReference; if (classRef == null) throw new ArgumentException(string.Format("type {0} is not a class reference", type.ClassName)); return classRef; }
/// <summary> /// Gets a class reference for the given type reference. /// </summary> internal static TypeReference GetReference(this JvmClassLib.TypeReference type, XTypeUsageFlags usageFlags, DexTargetPackage targetPackage, XModule module) { if (type == null) throw new ArgumentNullException("type"); var xType = XBuilder.AsTypeReference(module, type, usageFlags); return xType.GetReference(targetPackage); }
/// <summary> /// Gets a class reference for the given type reference. /// </summary> internal static ClassReference GetClassReference(this JvmClassLib.TypeReference type, XTypeUsageFlags usageFlags, DexTargetPackage targetPackage, XModule module) { var classRef = type.GetReference(usageFlags, targetPackage, module) as ClassReference; if (classRef == null) { throw new ArgumentException(string.Format("type {0} is not a class reference", type.ClassName)); } return(classRef); }
/// <summary> /// Gets a class reference for the given type reference. /// </summary> internal static TypeReference GetReference(this JvmClassLib.TypeReference type, XTypeUsageFlags usageFlags, DexTargetPackage targetPackage, XModule module) { if (type == null) { throw new ArgumentNullException("type"); } var xType = XBuilder.AsTypeReference(module, type, usageFlags); return(xType.GetReference(targetPackage)); }
/// <summary> /// Make a xtype reference for a java class name. /// </summary> private XTypeReference AsTypeReference(string className, XTypeUsageFlags usageFlags) { return(XBuilder.AsTypeReference(module, className, usageFlags)); }
/// <summary> /// Make a .NET type reference for a java type reference. /// </summary> private XTypeReference AsTypeReference(JvmClassLib.TypeReference javaRef, XTypeUsageFlags usageFlags) { return(XBuilder.AsTypeReference(module, javaRef, usageFlags)); }
/// <summary> /// Make a .NET type reference for a java class file. /// </summary> private XTypeReference AsTypeReference(ClassFile classFile, XTypeUsageFlags usageFlags) { return(XBuilder.AsTypeReference(module, classFile, usageFlags)); }
/// <summary> /// Make a .NET type reference for a java type reference. /// </summary> private XTypeReference AsTypeReference(JvmClassLib.TypeReference javaRef, XTypeUsageFlags usageFlags) { return XBuilder.AsTypeReference(module, javaRef, usageFlags); }
/// <summary> /// Make a xtype reference for a java class name. /// </summary> private XTypeReference AsTypeReference(string className, XTypeUsageFlags usageFlags) { return XBuilder.AsTypeReference(module, className, usageFlags); }
/// <summary> /// Convert an Java type reference to an XTypeReference. /// </summary> public static XTypeReference AsTypeReference(XModule module, string className, XTypeUsageFlags usageFlags) { var objectType = new ObjectTypeReference(className, null); return AsTypeReference(module, objectType, usageFlags); }
/// <summary> /// Make a .NET type reference for a java class file. /// </summary> private XTypeReference AsTypeReference(ClassFile classFile, XTypeUsageFlags usageFlags) { return XBuilder.AsTypeReference(module, classFile, usageFlags); }
/// <summary> /// Convert an Java type reference to an XTypeReference. /// </summary> public static XTypeReference AsTypeReference(XModule module, TypeReference type, XTypeUsageFlags usageFlags) { if (type.IsArray) { var arrayType = (ArrayTypeReference)type; return new XArrayType(AsTypeReference(module, arrayType.ElementType, usageFlags)); } if (type.IsBaseType) { var baseType = (BaseTypeReference)type; var ts = module.TypeSystem; switch (baseType.Type) { case BaseTypes.Boolean: return ts.Bool; case BaseTypes.Byte: return ts.SByte; case BaseTypes.Char: return ts.Char; case BaseTypes.Short: return ts.Short; case BaseTypes.Int: return ts.Int; case BaseTypes.Long: return ts.Long; case BaseTypes.Float: return ts.Float; case BaseTypes.Double: return ts.Double; } throw new NotImplementedException("Unknown base type " + (int)baseType.Type); } if (type.IsVoid) { return module.TypeSystem.Void; } if (type.IsTypeVariable) { throw new NotImplementedException("Unknown type " + type); } { var objectType = (ObjectTypeReference) type; if ((usageFlags != XTypeUsageFlags.DeclaringType) && (usageFlags != XTypeUsageFlags.BaseType)) { switch (objectType.ClassName) { case "java/lang/Boolean": return CreateNullableT(module, module.TypeSystem.Bool); case "java/lang/Byte": return CreateNullableT(module, module.TypeSystem.Byte); case "java/lang/Character": return CreateNullableT(module, module.TypeSystem.Char); case "java/lang/Short": return CreateNullableT(module, module.TypeSystem.Short); case "java/lang/Integer": return CreateNullableT(module, module.TypeSystem.Int); case "java/lang/Long": return CreateNullableT(module, module.TypeSystem.Long); case "java/lang/Float": return CreateNullableT(module, module.TypeSystem.Float); case "java/lang/Double": return CreateNullableT(module, module.TypeSystem.Double); } } var typeRef = new JavaTypeReference(module, objectType, objectType.ClassName); return typeRef; } }
/// <summary> /// Convert an Java type reference to an XTypeReference. /// </summary> public static XTypeReference AsTypeReference(XModule module, ClassFile classFile, XTypeUsageFlags usageFlags) { if (classFile == null) return null; var objectType = new ObjectTypeReference(classFile.ClassName, null); return AsTypeReference(module, objectType, usageFlags); }
/// <summary> /// Convert an Java type reference to an XTypeReference. /// </summary> public static XTypeReference AsTypeReference(XModule module, TypeReference type, XTypeUsageFlags usageFlags) { if (type.IsArray) { var arrayType = (ArrayTypeReference)type; return(new XArrayType(AsTypeReference(module, arrayType.ElementType, usageFlags))); } if (type.IsBaseType) { var baseType = (BaseTypeReference)type; var ts = module.TypeSystem; switch (baseType.Type) { case BaseTypes.Boolean: return(ts.Bool); case BaseTypes.Byte: return(ts.SByte); case BaseTypes.Char: return(ts.Char); case BaseTypes.Short: return(ts.Short); case BaseTypes.Int: return(ts.Int); case BaseTypes.Long: return(ts.Long); case BaseTypes.Float: return(ts.Float); case BaseTypes.Double: return(ts.Double); } throw new NotImplementedException("Unknown base type " + (int)baseType.Type); } if (type.IsVoid) { return(module.TypeSystem.Void); } if (type.IsTypeVariable) { throw new NotImplementedException("Unknown type " + type); } { var objectType = (ObjectTypeReference)type; if ((usageFlags != XTypeUsageFlags.DeclaringType) && (usageFlags != XTypeUsageFlags.BaseType)) { switch (objectType.ClassName) { case "java/lang/Boolean": return(CreateNullableT(module, module.TypeSystem.Bool)); case "java/lang/Byte": return(CreateNullableT(module, module.TypeSystem.Byte)); case "java/lang/Character": return(CreateNullableT(module, module.TypeSystem.Char)); case "java/lang/Short": return(CreateNullableT(module, module.TypeSystem.Short)); case "java/lang/Integer": return(CreateNullableT(module, module.TypeSystem.Int)); case "java/lang/Long": return(CreateNullableT(module, module.TypeSystem.Long)); case "java/lang/Float": return(CreateNullableT(module, module.TypeSystem.Float)); case "java/lang/Double": return(CreateNullableT(module, module.TypeSystem.Double)); } } var typeRef = new JavaTypeReference(module, objectType, objectType.ClassName); return(typeRef); } }
/// <summary> /// Convert an Java type reference to an XTypeReference. /// </summary> public static XTypeReference AsTypeReference(XModule module, ClassFile classFile, XTypeUsageFlags usageFlags) { if (classFile == null) { return(null); } var objectType = new ObjectTypeReference(classFile.ClassName, null); return(AsTypeReference(module, objectType, usageFlags)); }
/// <summary> /// Convert an Java type reference to an XTypeReference. /// </summary> public static XTypeReference AsTypeReference(XModule module, string className, XTypeUsageFlags usageFlags) { var objectType = new ObjectTypeReference(className, null); return(AsTypeReference(module, objectType, usageFlags)); }