Example #1
0
 public void ArrangeFrames(IServiceVariableSource services = null)
 {
     foreach (var method in _methods.Where(x => x.WillGenerate()))
     {
         method.ArrangeFrames(this, services);
     }
 }
Example #2
0
 public void ArrangeFrames(IServiceVariableSource services = null)
 {
     foreach (var method in _methods)
     {
         method.ArrangeFrames(this, services);
     }
 }
Example #3
0
        public void Compile(GeneratedAssembly generatedAssembly, IServiceVariableSource services = null)
        {
            var code = generatedAssembly.GenerateCode(services);

            var generator1 = new AssemblyGenerator();

            generator1.ReferenceAssembly(GetType().Assembly);
            generator1.ReferenceAssembly(typeof(Task).Assembly);

            foreach (var assembly1 in generatedAssembly.Generation.Assemblies)
            {
                generator1.ReferenceAssembly(assembly1);
            }

            foreach (var assembly2 in _assemblies)
            {
                generator1.ReferenceAssembly(assembly2);
            }

            var assemblies = generatedAssembly.GeneratedTypes
                             .SelectMany(x => x.AssemblyReferences())
                             .Distinct().ToArray();

            assemblies
            .Each(x => generator1.ReferenceAssembly(x));

            var generator = generator1;

            var assembly = generator.Generate(code);

            generatedAssembly.AttachAssembly(assembly);
        }
Example #4
0
        public string GenerateCode(IServiceVariableSource services = null)
        {
            foreach (var generatedType in GeneratedTypes)
            {
                services?.StartNewType();
                generatedType.ArrangeFrames(services);
            }

            var namespaces = AllReferencedNamespaces();

            using (var writer = new SourceWriter())
            {
                Header?.Write(writer);
                writer.WriteLine("// <auto-generated/>");

                // Disable all warnings per user request
                writer.WriteLine("#pragma warning disable");

                foreach (var ns in namespaces.OrderBy(x => x))
                {
                    writer.Write($"using {ns};");
                }

                writer.BlankLine();

                writer.Namespace(Namespace);

                foreach (var @class in GeneratedTypes)
                {
                    writer.WriteLine($"// START: {@class.TypeName}");
                    @class.Write(writer);
                    writer.WriteLine($"// END: {@class.TypeName}");

                    writer.WriteLine("");
                    writer.WriteLine("");
                }

                writer.FinishBlock();

                Footer?.Write(writer);


                var code = writer.Code();

                attachSourceCodeToTypes(ref code);

                return(code);
            }
        }
        public void CompileAll(IServiceVariableSource services = null)
        {
            var code = GenerateCode(services);

            var generator = buildGenerator(Generation);

            var assembly = generator.Generate(code);

            var generated = assembly.GetExportedTypes().ToArray();

            foreach (var generatedType in GeneratedTypes)
            {
                generatedType.FindType(generated);
            }
        }
        public string GenerateCode(IServiceVariableSource services = null)
        {
            foreach (var generatedType in GeneratedTypes)
            {
                services?.StartNewType();
                generatedType.ArrangeFrames(services);
            }

            var namespaces = GeneratedTypes
                             .SelectMany(x => x.AllInjectedFields)
                             .Select(x => x.ArgType.Namespace)
                             .Concat(new string[] { typeof(Task).Namespace })
                             .Distinct().ToList();

            var writer = new SourceWriter();

            foreach (var ns in namespaces.OrderBy(x => x))
            {
                writer.Write($"using {ns};");
            }

            writer.BlankLine();

            writer.Namespace(Generation.ApplicationNamespace);

            foreach (var @class in GeneratedTypes)
            {
                writer.WriteLine($"// START: {@class.TypeName}");
                @class.Write(writer);
                writer.WriteLine($"// END: {@class.TypeName}");

                writer.WriteLine("");
                writer.WriteLine("");
            }

            writer.FinishBlock();


            var code = writer.Code();

            attachSourceCodeToChains(code);


            return(code);
        }
Example #7
0
        public string GenerateCode(IServiceVariableSource services = null)
        {
            foreach (var generatedType in GeneratedTypes)
            {
                services?.StartNewType();
                generatedType.ArrangeFrames(services);
            }

            var namespaces = AllReferencedNamespaces();

            using (var writer = new SourceWriter())
            {
                foreach (var ns in namespaces.OrderBy(x => x))
                {
                    writer.Write($"using {ns};");
                }

                writer.BlankLine();

                writer.Namespace(Generation.ApplicationNamespace);

                foreach (var @class in GeneratedTypes)
                {
                    writer.WriteLine($"// START: {@class.TypeName}");
                    @class.Write(writer);
                    writer.WriteLine($"// END: {@class.TypeName}");

                    writer.WriteLine("");
                    writer.WriteLine("");
                }

                writer.FinishBlock();


                var code = writer.Code();

                attachSourceCodeToChains(ref code);

                return(code);
            }
        }
Example #8
0
 public MethodFrameArranger(IGeneratedMethod method, IGeneratedType type, IServiceVariableSource services) : this(method, type)
 {
     _services = services;
 }