internal static void GenerateOneSourceFile(HxlCompilerSession session, HxlTemplate template, TextWriter outputWriter) { // TODO Soft check here instead of casting IHxlEmittableTemplate t = (IHxlEmittableTemplate)template; t.GenerateSource(session, outputWriter); }
void IHxlEmittableTemplate.GenerateSource(HxlCompilerSession session, TextWriter output) { // Implicitly handle c: and hxl: _metrics.StartSourceGenerator(); var settings = session.Settings; using (UsingNamespaceResolver()) { // TODO Init emitter.SkipOptimizations from compiler settings CSharpCodeEmitter emitter = new CSharpCodeEmitter(output, this); emitter.WriteCode(_metrics); output.Flush(); session.ImplicitAssemblyReferences.AddMany(ImplicitAssemblyReferences); } _metrics.EndSourceGenerator(); _metrics.Dispose(); }
public void GenerateSource(TextWriter outputWriter, IEnumerable <HxlTemplate> templates) { if (outputWriter == null) { throw new ArgumentNullException("outputWriter"); } RequireTemplates(templates); var session = new HxlCompilerSession(Settings); foreach (var template in templates) { GenerateOneSourceFile(session, template, outputWriter); } // TODO Support template factory emit if (this.Settings.EmitTemplateFactory) { } }