public void WriteSuffix(PascalTreeWriter writer) { if (Suffix != null) { writer.Line(Suffix); } }
public void WritePrefix(PascalTreeWriter writer) { if (Prefix != null) { writer.Line(Prefix); } }
public void WriteItem(PascalTreeWriter writer) { if (Item != null) { writer.ListItem(Item); } }
private void Render(PascalTreeWriter treeWriter, string path) { var writer = new CsRender(); treeWriter.InsertUsings(); treeWriter.Tree.Resolve(writer); writer.Write(path); OutputFiles.Add(path); }
public static List <VarConversion> Get(PascalTreeWriter 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 PascalTreeWriter Clone() { var ret = new PascalTreeWriter(Tree); ret.Index = Index; ret.Target = Target; foreach (var node in _ancestors) { ret._ancestors.Add(node); } return(ret); }
public void InsertUsings() { var block = Tree.ForwardTraversal.OfType <UsingsBlock>().FirstOrDefault(); if (block == null) { return; } var cursor = new PascalTreeWriter(block); var allTypeRefs = Tree.ForwardTraversal.OfType <ITypedNode>().SelectMany(t => t.ReferencedTypes).Distinct(); var allNamespaces = allTypeRefs.Select(t => t.Namespace).Distinct().Where(ns => !ns.IsGlobal && ns != BasicTypes.SystemNamespace); foreach (var ns in allNamespaces) { cursor.Use(ns); } }
public static VarConversion Get(IVariable v, PascalTreeWriter 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.TypeRef(v.Morph(null, null, null, false), false), writer.TypeRef(v.Morph(null, null, null, false), true), v.Type.ShortId)); }