internal LoadedDocumentWithCodeAnalysis(DocumentWithCodeAnalysis document, CompilationUnitSyntax syntax) { this.document = document; node = new Node <LoadedDocumentWithCodeAnalysis, CompilationUnitSyntax>(this, syntax); attributes = new AttributeListWrapper <LoadedDocumentWithCodeAnalysis, CompilationUnitSyntax>( node, parentSyntax => parentSyntax.AttributeLists, (parentSyntax, childSyntax) => parentSyntax.WithAttributeLists(childSyntax)); assemblyAttributes = new FilteredAttributeList(attributes, attribute => attribute.Syntax.Target.Identifier.Text == "assembly"); classes = new ClassCollectionWithCodeAnalysis(this); delegates = new LoadedDocumentMemberListWrapper <DelegateWithCodeAnalysis, DelegateDeclarationSyntax>( node, () => new DelegateWithCodeAnalysis(document)); enums = new LoadedDocumentMemberListWrapper <EnumWithCodeAnalysis, EnumDeclarationSyntax>( node, () => new EnumWithCodeAnalysis(document)); interfaces = new LoadedDocumentMemberListWrapper <InterfaceWithCodeAnalysis, InterfaceDeclarationSyntax>( node, () => new InterfaceWithCodeAnalysis(document)); moduleAttributes = new FilteredAttributeList(attributes, attribute => attribute.Syntax.Target.Identifier.Text == "module"); namespaces = new LoadedDocumentMemberListWrapper <NamespaceWithCodeAnalysis, NamespaceDeclarationSyntax>( node, () => new NamespaceWithCodeAnalysis(document)); structs = new StructCollectionWithCodeAnalysis(this); usingDirectives = new SyntaxNodeList <LoadedDocumentWithCodeAnalysis, CompilationUnitSyntax, UsingDirectiveWithCodeAnalysis, UsingDirectiveSyntax>( node, currentSyntax => currentSyntax.Usings, (parentSyntax, childSyntax) => parentSyntax.WithUsings(childSyntax), () => new UsingDirectiveWithCodeAnalysis()); members = new MemberList <LoadedDocumentWithCodeAnalysis, CompilationUnitSyntax>( node, (parentSyntax, childSyntax) => parentSyntax.WithMembers(childSyntax)) { { nameof(classes.Classes), () => classes.Classes.Select(item => item.Syntax) }, { nameof(classes.AbstractClasses), () => classes.AbstractClasses.Select(item => item.Syntax) }, { nameof(classes.SealedClasses), () => classes.SealedClasses.Select(item => item.Syntax) }, { nameof(classes.StaticClasses), () => classes.StaticClasses.Select(item => item.Syntax) }, { nameof(Delegates), () => delegates.Select(item => item.Syntax) }, { nameof(Enums), () => enums.Select(item => item.Syntax) }, { nameof(Interfaces), () => interfaces.Select(item => item.Syntax) }, { nameof(Namespaces), () => namespaces.Select(item => item.Syntax) }, { nameof(structs.Structs), () => structs.Structs.Select(item => item.Syntax) } }; }
internal NamespaceWithCodeAnalysis(DocumentWithCodeAnalysis document) { node = new Node <NamespaceWithCodeAnalysis, NamespaceDeclarationSyntax>(this); this.document = document; classes = new ClassCollectionWithCodeAnalysis(this); delegates = new NamespaceMemberListWrapper <DelegateWithCodeAnalysis, DelegateDeclarationSyntax>( node, () => new DelegateWithCodeAnalysis(document)); enums = new NamespaceMemberListWrapper <EnumWithCodeAnalysis, EnumDeclarationSyntax>( node, () => new EnumWithCodeAnalysis(document)); interfaces = new NamespaceMemberListWrapper <InterfaceWithCodeAnalysis, InterfaceDeclarationSyntax>( node, () => new InterfaceWithCodeAnalysis(document)); namespaces = new NamespaceMemberListWrapper <NamespaceWithCodeAnalysis, NamespaceDeclarationSyntax>( node, () => new NamespaceWithCodeAnalysis(document)); structs = new StructCollectionWithCodeAnalysis(this); usingDirectives = new SyntaxNodeList <NamespaceWithCodeAnalysis, NamespaceDeclarationSyntax, UsingDirectiveWithCodeAnalysis, UsingDirectiveSyntax>( node, syntax => syntax.Usings, (parentSyntax, childSyntax) => parentSyntax.WithUsings(childSyntax), () => new UsingDirectiveWithCodeAnalysis()); members = new MemberList <NamespaceWithCodeAnalysis, NamespaceDeclarationSyntax>( node, (parentSyntax, childSyntax) => parentSyntax.WithMembers(childSyntax)) { { nameof(classes.Classes), () => classes.Classes.Select(item => item.Syntax) }, { nameof(classes.AbstractClasses), () => classes.AbstractClasses.Select(item => item.Syntax) }, { nameof(classes.SealedClasses), () => classes.SealedClasses.Select(item => item.Syntax) }, { nameof(classes.StaticClasses), () => classes.StaticClasses.Select(item => item.Syntax) }, { nameof(Delegates), () => delegates.Select(item => item.Syntax) }, { nameof(Enums), () => enums.Select(item => item.Syntax) }, { nameof(Interfaces), () => interfaces.Select(item => item.Syntax) }, { nameof(Namespaces), () => namespaces.Select(item => item.Syntax) }, { nameof(structs.Structs), () => structs.Structs.Select(item => item.Syntax) }, { nameof(structs.PartialStructs), () => structs.PartialStructs.Select(item => item.Syntax) } }; }
private StatementListWrapper(SyntaxNodeList <TParent, TParentSyntax, IInternalStatement, StatementSyntax> list) : base(list, parent => parent, child => child as IInternalStatement) { this.list = list; }