public void AddINamedTypeSymbol(Microsoft.CodeAnalysis.INamedTypeSymbol newValue)
        {
            var index     = MainComponentsLookup.INamedTypeSymbol;
            var component = (GenEntitas.INamedTypeSymbolComponent)CreateComponent(index, typeof(GenEntitas.INamedTypeSymbolComponent));

            component.Value = newValue;
            AddComponent(index, component);
        }
Пример #2
0
        static List <CGFDocument> ProcessDocuments(CGFParserReporter reporter, List <Microsoft.CodeAnalysis.Document> documents, Microsoft.CodeAnalysis.Project project)
        {
            using (reporter.CreateContextScope(CGFParserReporterContext.Type.Project, project.FilePath))
            {
                List <CGFDocument> documentsToProcess = new List <CGFDocument>();
                foreach (Microsoft.CodeAnalysis.Document document in documents)
                {
                    using (reporter.CreateContextScope(CGFParserReporterContext.Type.File, document.FilePath))
                    {
                        List <CGFTypeSymbol> typesToProcess = new List <CGFTypeSymbol>();

                        Microsoft.CodeAnalysis.SemanticModel semanticModel = document.GetSemanticModelAsync().Result;

                        Microsoft.CodeAnalysis.SyntaxTree syntaxTree = document.GetSyntaxTreeAsync().Result;
                        IEnumerable <Microsoft.CodeAnalysis.SyntaxNode> syntaxNodes = syntaxTree.GetRoot().DescendantNodes().Where(n => (n as ClassDeclarationSyntax) != null || (n as EnumDeclarationSyntax) != null);
                        foreach (Microsoft.CodeAnalysis.SyntaxNode node in syntaxNodes)
                        {
                            ClassDeclarationSyntax classSyntax = node as ClassDeclarationSyntax;
                            if (classSyntax != null)
                            {
                                Microsoft.CodeAnalysis.INamedTypeSymbol typeSymbol = semanticModel.GetDeclaredSymbol(classSyntax);
                                using (reporter.CreateContextScope(CGFParserReporterContext.Type.Type, typeSymbol.Name))
                                {
                                    CGFTypeSymbol cgfTypeSymbol = CGFTypeSymbol.Parse(reporter, typeSymbol);
                                    typesToProcess.Add(cgfTypeSymbol);
                                }
                            }
                            else
                            {
                                EnumDeclarationSyntax enumSyntax = node as EnumDeclarationSyntax;
                                Microsoft.CodeAnalysis.INamedTypeSymbol typeSymbol = semanticModel.GetDeclaredSymbol(enumSyntax);

                                using (reporter.CreateContextScope(CGFParserReporterContext.Type.Type, typeSymbol.Name))
                                {
                                    CGFTypeSymbol cgfTypeSymbol = CGFTypeSymbol.Parse(reporter, typeSymbol);
                                    typesToProcess.Add(cgfTypeSymbol);
                                }
                            }
                        }

                        if (typesToProcess.Count > 0)
                        {
                            CGFDocument cgfDocument = CGFDocument.Parse(reporter, document, typesToProcess);
                            documentsToProcess.Add(cgfDocument);
                        }
                    }
                }

                return(documentsToProcess);
            }
        }
Пример #3
0
        internal string Replace(Microsoft.CodeAnalysis.INamedTypeSymbol typeInfo)
        {
            if (ReplaceWith.StartsWith("{"))
            {
                var args = ReplaceWith.Substring(1, ReplaceWith.Length - 2).Split(' ');
                switch (args[0])
                {
                case "typeparameter":
                    return(TypeProcessor.ConvertType(typeInfo.TypeArguments.ElementAt(int.Parse(args[1]))));

                default:
                    throw new Exception("Invalid parameter: " + args[0]);
                }
            }
            else
            {
                return(this.ReplaceWith);
            }
        }
Пример #4
0
 public static MainEntity GetEntityWithINamedTypeSymbol(this MainContext context, Microsoft.CodeAnalysis.INamedTypeSymbol Value)
 {
     return(((Entitas.PrimaryEntityIndex <MainEntity, Microsoft.CodeAnalysis.INamedTypeSymbol>)context.GetEntityIndex(Contexts.INamedTypeSymbol)).GetEntity(Value));
 }