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 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)); } }
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"); } }