private static PropertyDeclarationSyntax CreatePropertyDeclaration_Group(GroupEntry group) { var type = group.Type; var identifier = group.Identifier; var comment = SyntaxFactoryUtils.Comment("// Group: {0}", group.Name); return(SyntaxFactoryUtils.PropertyDeclaration(type, identifier, SyntaxFactoryUtils.ObjectCreationExpression(type)).WithTrailingTrivia(comment)); }
private static PropertyDeclarationSyntax CreatePropertyDeclaration_Module(ModuleEntry module) { var type = module.Type; var identifier = module.Identifier; var comment = SyntaxFactoryUtils.Comment("// Module: {0}", module.Name); return(SyntaxFactoryUtils.PropertyDeclaration(type, identifier, SyntaxFactoryUtils.ObjectCreationExpression(type)).WithTrailingTrivia(comment)); }
private static PropertyDeclarationSyntax CreatePropertyDeclaration_Namespace(NamespaceEntry @namespace) { var type = @namespace.Type; var identifier = @namespace.Identifier; var comment = SyntaxFactoryUtils.Comment("// Namespace: {0}", @namespace.Name); return(SyntaxFactoryUtils.PropertyDeclaration(type, identifier, SyntaxFactoryUtils.ObjectCreationExpression(type)).WithTrailingTrivia(comment)); }
private static PropertyDeclarationSyntax CreatePropertyDeclaration_Type(TypeEntry type) { var type_ = type.Type; var identifier = type.Identifier; var comment = SyntaxFactoryUtils.Comment("// Type: {0}", type.Name); return(SyntaxFactoryUtils.PropertyDeclaration("TypeArchNode", identifier, SyntaxFactoryUtils.TypeOfExpression(type_)).WithTrailingTrivia(comment)); }
// Helpers/CreateSyntax private static CompilationUnitSyntax?CreateCompilationUnit(CompilationUnitSyntax unit) { var members = unit.Members.Select(CreateMemberDeclaration).OfType <MemberDeclarationSyntax>().ToArray(); if (!members.Any()) { return(null); } return(SyntaxFactoryUtils.CompilationUnit(unit).AddMembers(members)); }
private static NamespaceDeclarationSyntax?CreateNamespaceDeclaration(NamespaceDeclarationSyntax @namespace) { var members = @namespace.Members.Select(CreateMemberDeclaration).OfType <MemberDeclarationSyntax>().ToArray(); if (!members.Any()) { return(null); } return(SyntaxFactoryUtils.NamespaceDeclaration(@namespace).AddMembers(members)); }
private static ClassDeclarationSyntax CreateClassDeclaration_Group(GroupEntry group) { var comment = SyntaxFactoryUtils.Comment("// Group: {0}", group.Name); var name = CreatePropertyDeclaration_Name(group.Name); var properties = group.Types.Select(CreatePropertyDeclaration_Type).ToArray(); return (SyntaxFactoryUtils.ClassDeclaration(group.Type, "GroupArchNode") .WithLeadingTrivia(comment) .AddMembers(name) .AddMembers(properties)); }
// Project public static ClassDeclarationSyntax CreateClassDeclaration_Project(ClassDeclarationSyntax @class, ProjectInfo project) { var comment = SyntaxFactoryUtils.Comment("// Project: {0}", project.Name); var name = CreatePropertyDeclaration_Name(project.Name); var properties = project.Modules.Select(CreatePropertyDeclaration_Module).ToArray(); return (SyntaxFactoryUtils.ClassDeclaration(@class) .WithLeadingTrivia(SyntaxFactoryUtils.EndOfLine(), comment) .AddMembers(name) .AddMembers(properties)); }
private static ClassDeclarationSyntax CreateClassDeclaration_Namespace(NamespaceEntry @namespace) { var comment = SyntaxFactoryUtils.Comment("// Namespace: {0}", @namespace.Name); var name = CreatePropertyDeclaration_Name(@namespace.Name); var properties = @namespace.Groups.Select(CreatePropertyDeclaration_Group).ToArray(); var classes = @namespace.Groups.Select(CreateClassDeclaration_Group).ToArray(); return (SyntaxFactoryUtils.ClassDeclaration(@namespace.Type, "NamespaceArchNode") .WithLeadingTrivia(comment) .AddMembers(name) .AddMembers(properties) .AddMembers(classes)); }
// Module public static ClassDeclarationSyntax CreateClassDeclaration_Module(ClassDeclarationSyntax @class, ModuleInfo module) { var comment = SyntaxFactoryUtils.Comment("// Module: {0}", module.Name); var name = CreatePropertyDeclaration_Name(module.Name); var properties = module.Namespaces.Select(CreatePropertyDeclaration_Namespace).ToArray(); var classes = module.Namespaces.Select(CreateClassDeclaration_Namespace).ToArray(); return (SyntaxFactoryUtils.ClassDeclaration(@class) .WithLeadingTrivia(SyntaxFactoryUtils.EndOfLine(), comment) .AddMembers(name) .AddMembers(properties) .AddMembers(classes)); }
private (ExpressionSyntax, SimpleNameSyntax) BuildNewSyntax(string newName, SimpleNameSyntax access) { var nameParts = newName.Split('.'); Trace.Assert(nameParts.Length > 1); if (nameParts.Length == 2) { return(IdentifierName(nameParts[0]), access.WithIdentifier(Identifier(nameParts[1]))); } var first = nameParts.First(); // copy all but the first and last elements var middle = new string[nameParts.Length - 2]; Array.Copy(nameParts, 1, middle, 0, middle.Length); var last = nameParts.Last(); return(SyntaxFactoryUtils.MemberAccess(IdentifierName(first), middle), access.WithIdentifier(Identifier(last))); }
// Helpers/CreateSyntax private static PropertyDeclarationSyntax CreatePropertyDeclaration_Name(string name) { return(SyntaxFactoryUtils.PropertyDeclaration_Overriding("string", "Name", SyntaxFactoryUtils.StringLiteral(name))); }