using System.Linq; using System.Collections.Generic; using Microsoft.CodeAnalysis.CSharp.Syntax; namespace CTA.Rules.Models.Tokens { public class CsharpNodeToken : NodeToken { public CsharpNodeToken() { UsingActions = new List(); InvocationExpressionActions = new List>(); NamespaceActions = new List>(); IdentifierNameActions = new List>(); ObjectCreationExpressionActions = new List(); ElementAccessActions = new List(); AttributeActions = new List(); AttributeListActions = new List(); ClassDeclarationActions = new List(); MethodDeclarationActions = new List(); InterfaceDeclarationActions = new List(); } public List UsingActions { get; set; } public List> InvocationExpressionActions { get; set; } public List> NamespaceActions { get; set; } public List> IdentifierNameActions { get; set; } public List ObjectCreationExpressionActions{ get; set; } public List ElementAccessActions { get; set; } public List AttributeActions { get; set; } public List AttributeListActions { get; set; } public List ClassDeclarationActions { get; set; } public List InterfaceDeclarationActions { get; set; } public List MethodDeclarationActions { get; set; } public override CsharpNodeToken Clone() { CsharpNodeToken cloned = (CsharpNodeToken)base.Clone(); cloned.UsingActions = cloned.UsingActions.Select(action => action.Clone()).ToList(); cloned.IdentifierNameActions = cloned.IdentifierNameActions.Select(action => action.Clone>()).ToList(); cloned.InvocationExpressionActions = cloned.InvocationExpressionActions.Select(action => action.Clone>()).ToList(); cloned.NamespaceActions = cloned.NamespaceActions.Select(action => action.Clone>()).ToList(); cloned.ObjectCreationExpressionActions = cloned.ObjectCreationExpressionActions.Select(action => action.Clone()).ToList(); cloned.ElementAccessActions = cloned.ElementAccessActions.Select(action => action.Clone()).ToList(); cloned.AttributeActions = cloned.AttributeActions?.Select(action => action.Clone())?.ToList(); cloned.AttributeListActions = cloned.AttributeListActions?.Select(action => action.Clone())?.ToList(); cloned.ClassDeclarationActions = cloned.ClassDeclarationActions?.Select(action => action.Clone())?.ToList(); cloned.InterfaceDeclarationActions = cloned.InterfaceDeclarationActions.Select(action => action.Clone()).ToList(); cloned.MethodDeclarationActions = cloned.MethodDeclarationActions.Select(action => action.Clone()).ToList(); return cloned; } public override List AllActions { get { var allActions = new List(); allActions.AddRange(AttributeActions); allActions.AddRange(AttributeListActions); allActions.AddRange(InvocationExpressionActions); allActions.AddRange(UsingActions); allActions.AddRange(NamespaceActions); allActions.AddRange(IdentifierNameActions); allActions.AddRange(ObjectCreationExpressionActions); allActions.AddRange(ElementAccessActions); allActions.AddRange(MethodDeclarationActions); allActions.AddRange(ClassDeclarationActions); allActions.AddRange(InterfaceDeclarationActions); allActions.AddRange(base.AllActions); return allActions; } } } }