public override string ProduceNativeCallConversionCode(string expr, ITypeMember m) { switch (m.PassedByType) { case PassedByType.Reference: //Could be called from NativeClass producer case PassedByType.Value: return(expr); case PassedByType.Pointer: if (IsVoid) { return(expr); } if (m.HasAttribute <ArrayTypeAttribute>()) { int len = m.GetAttribute <ArrayTypeAttribute>().Length; return("GetValueArrayFromNativeArray<" + FullyQualifiedCLRName + ", " + FullyQualifiedNativeName + ">( " + expr + " , " + len + " )"); } return(expr); default: throw new Exception("Unexpected"); } }
public override string GetCLRTypeName(ITypeMember m) { switch (m.PassedByType) { case PassedByType.Value: return(Name); case PassedByType.Pointer: if (IsVoid) { return("void*"); } if (m.HasAttribute <ArrayTypeAttribute>()) { return("array<" + FullyQualifiedCLRName + ">^"); } string name = Name + "*"; if (m.IsConst) { name = "const " + name; } return(name); default: throw new Exception("Unexpected"); } }
public static bool IsExposed(this ITypeMember member) { if (member == null) { return(false); } var type = member as IType; if (type != null) { if (type.HasGenericParams()) { return(false); } if (type.IsTestFixture()) { return(true); } } var method = member as IMethod; if (method != null) { if (method.DeclaringType.IsTestFixture()) { if (method.IsConstructor) { return(true); } if (method.IsNUnitMethod()) { return(true); } } if (method.Association != null && method.Association.IsExposed()) { return(true); } } return(member.HasAttribute("ExposeAttribute")); }
public override string ProduceNativeCallConversionCode(string expr, ITypeMember m) { if (HasAttribute <NativeValueContainerAttribute>()) { switch (m.PassedByType) { case PassedByType.Pointer: return("reinterpret_cast<" + GetCLRTypeName(m) + ">(" + expr + ")"); } } switch (m.PassedByType) { case PassedByType.Pointer: if (IsValueType) { if (m.HasAttribute <ArrayTypeAttribute>()) { int len = m.GetAttribute <ArrayTypeAttribute>().Length; return("GetValueArrayFromNativeArray<" + FullyQualifiedCLRName + ", " + FullyQualifiedNativeName + ">( " + expr + " , " + len + " )"); } else if (HasWrapType(WrapTypes.NativePtrValueType)) { return(expr); } else { return("reinterpret_cast<" + GetCLRTypeName(m) + ">(" + expr + ")"); } } else { return(base.ProduceNativeCallConversionCode(expr, m)); } default: return(base.ProduceNativeCallConversionCode(expr, m)); } }
/// <summary> /// Indicates whether this member is ignored. /// </summary> public static bool IsIgnored(this ITypeMember m) { return(m.HasAttribute <IgnoreAttribute>()); }
private static bool IsImportedMember(ITypeMember Member) { return(Member.HasAttribute(PrimitiveAttributes.Instance.ImportAttribute.AttributeType)); }
public override string GetNativeCallConversion(string expr, ITypeMember m) { switch (m.PassedByType) { case PassedByType.Reference: //Could be called from NativeClass producer case PassedByType.Value: return expr; case PassedByType.Pointer: if (IsVoid) { return expr; } else if (m.HasAttribute<ArrayTypeAttribute>()) { int len = m.GetAttribute<ArrayTypeAttribute>().Length; return "GetValueArrayFromNativeArray<" + FullCLRName + ", " + FullNativeName + ">( " + expr + " , " + len + " )"; } else return expr; case PassedByType.PointerPointer: default: throw new Exception("Unexpected"); } }
public override string GetCLRTypeName(ITypeMember m) { switch (m.PassedByType) { case PassedByType.Value: return Name; case PassedByType.Pointer: if (IsVoid) { return "void*"; } else if (m.HasAttribute<ArrayTypeAttribute>()) { return "array<" + FullCLRName + ">^"; } else { string name = Name + "*"; if (m.IsConst) name = "const " + name; return name; } case PassedByType.Reference: case PassedByType.PointerPointer: default: throw new Exception("Unexpected"); } }
public override string GetCLRTypeName(ITypeMember m) { if (HasAttribute <NativeValueContainerAttribute>()) { switch (m.PassedByType) { case PassedByType.Pointer: //return "array<" + FullCLRName + "^>^"; string name = FullyQualifiedCLRName + "::NativeValue*"; if (m.IsConst) { name = "const " + name; } return(name); } } switch (m.PassedByType) { case PassedByType.Pointer: if (IsValueType) { if (m.HasAttribute <ArrayTypeAttribute>()) { return("array<" + FullyQualifiedCLRName + ">^"); } else if (HasWrapType(WrapTypes.NativePtrValueType)) { return(FullyQualifiedCLRName); } else { string name = FullyQualifiedCLRName + "*"; if (m.IsConst) { name = "const " + name; } return(name); } } else { return(FullyQualifiedCLRName + "^"); } case PassedByType.Reference: case PassedByType.Value: if (IsSharedPtr) { return(FullyQualifiedCLRName + "^"); } else if (IsValueType) { return(FullyQualifiedCLRName); } else { return(FullyQualifiedCLRName + "^"); } case PassedByType.PointerPointer: default: throw new Exception("Unexpected"); } }