Пример #1
0
        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);
        }
Пример #2
0
        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();
        }
Пример #3
0
        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)
            {
            }
        }