public static List <VarConversion> Get(PascalEnvironment writer, bool unwrap, params IVariable[] vars) { var ret = new List <VarConversion>(); foreach (var v in vars) { ret.Add(Get(v, writer, unwrap)); } return(ret); }
public static VarConversion Get(IVariable v, PascalEnvironment writer, bool unwrap) { string conv; if (v == null) { return(null); } if (v.IsVoid) { return(null); } conv = GenerateConverter(v, v.Context, unwrap); if (conv == null) { if (unwrap) { if (v.IsArray) { if (v.Type.IsPrimitive || v.Type.IsString) { conv = PrimitiveArrayCBConverters[(int)v.Context]; } else if (v.Type.IsStruct) { if (CsRender.RequiresABITranslation(v)) { conv = StructArrayCBConverters[(int)v.Context]; } else { conv = BlittableStructArrayCBConverters[(int)v.Context]; } } else if (v.Type.IsObject) { conv = ObjectArrayCBConverters[(int)v.Context]; } else if (v.Type.IsDelegate) { conv = DelegateArrayCBConverters[(int)v.Context]; } else { return(null); } } else if (!CsRender.RequiresABITranslation(v)) { conv = PrimitiveCBConverters[(int)v.Context]; } else if (v.Type.IsStruct) { conv = StructCBConverters[(int)v.Context]; } else if (v.Type.IsObject) { conv = ObjectCBConverters[(int)v.Context]; } else if (v.Type.IsString) { conv = StringCBConverters[(int)v.Context]; } else if (v.Type.IsDelegate) { conv = DelegateCBConverters[(int)v.Context]; } else { return(null); } } else { if (v.IsArray) { if (v.Type.IsPrimitive || v.Type.IsString) { conv = PrimitiveArrayConverters[(int)v.Context]; } else if (v.Type.IsStruct) { if (CsRender.RequiresABITranslation(v)) { conv = StructArrayConverters[(int)v.Context]; } else { conv = BlittableStructArrayConverters[(int)v.Context]; } } else if (v.Type.IsObject) { conv = ObjectArrayConverters[(int)v.Context]; } else if (v.Type.IsDelegate) { conv = DelegateArrayConverters[(int)v.Context]; } else { return(null); } } else if (!CsRender.RequiresABITranslation(v)) { conv = PrimitiveConverters[(int)v.Context]; } else if (v.Type.IsStruct) { conv = StructConverters[(int)v.Context]; } else if (v.Type.IsObject) { conv = ObjectConverters[(int)v.Context]; } else if (v.Type.IsString) { conv = StringConverters[(int)v.Context]; } else if (v.Type.IsDelegate) { conv = DelegateConverters[(int)v.Context]; } else { return(null); } } } return(new VarConversion(conv, v.Name, writer.TypeName(v.Morph(null, null, null, false), false), writer.TypeName(v.Morph(null, null, null, false), true), v.Type.ShortId)); }