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); }
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); } }
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); } }
public static MainEntity GetEntityWithINamedTypeSymbol(this MainContext context, Microsoft.CodeAnalysis.INamedTypeSymbol Value) { return(((Entitas.PrimaryEntityIndex <MainEntity, Microsoft.CodeAnalysis.INamedTypeSymbol>)context.GetEntityIndex(Contexts.INamedTypeSymbol)).GetEntity(Value)); }