/// <summary> /// Factory method for class <see cref="BlockASTWalker"/>. /// </summary> /// <param name="node"><see cref="CSharpSyntaxNode"/> Used to initialize the walker.</param> /// <param name="context">The walking context.</param> /// <param name="semanticModel">The semantic model.</param> /// <returns></returns> public static BlockASTWalker Create(CSharpSyntaxNode node, ASTWalkerContext context = null, SemanticModel semanticModel = null) { // No helper needed for this walker var statementsGroup = StatementsGroupTranslationUnit.Create(); return(new BlockASTWalker(node, statementsGroup, semanticModel) { Context = context }); }
/// <summary> /// Initializes a new instance of the <see cref="BlockASTWalker"/> class. /// </summary> /// <param name="node"></param> /// <param name="statementsGroup"></param> /// <param name="semanticModel">The semantic model.</param> protected BlockASTWalker(CSharpSyntaxNode node, StatementsGroupTranslationUnit statementsGroup, SemanticModel semanticModel) : base(node, semanticModel) { var namespaceSyntaxNode = node as BlockSyntax; if (namespaceSyntaxNode == null) { throw new ArgumentException( string.Format("Specified node is not of type {0}", typeof(BlockSyntax).Name)); } if (statementsGroup == null) { throw new ArgumentNullException(nameof(statementsGroup)); } this.statementsGroup = statementsGroup; }
/// <summary> /// /// </summary> /// <param name="visibility"></param> /// <param name="returnType"></param> /// <param name="name"></param> /// <param name="getStatements"></param> /// <param name="setStatements"></param> /// <returns></returns> public static ITranslationUnit BuildPropertyTranslationUnit(ModifierTokens modifiers, string returnType, string name, ITranslationUnit[] getStatements = null, ITranslationUnit[] setStatements = null) { if (name == null) { throw new ArgumentNullException(nameof(name)); } if (returnType == null) { throw new ArgumentNullException(nameof(returnType)); } PropertyDeclarationTranslationUnit translationUnit = PropertyDeclarationTranslationUnit.Create( modifiers, TypeIdentifierTranslationUnit.Create(returnType), IdentifierTranslationUnit.Create(name), true, true); if (getStatements != null) { var statementsGroup = StatementsGroupTranslationUnit.Create(); foreach (ITranslationUnit statement in getStatements) { statementsGroup.AddStatement(statement); } translationUnit.SetGetAccessor(statementsGroup); } if (setStatements != null) { var statementsGroup = StatementsGroupTranslationUnit.Create(); foreach (ITranslationUnit statement in setStatements) { statementsGroup.AddStatement(statement); } translationUnit.SetSetAccessor(statementsGroup); } return(translationUnit); }
/// <summary> /// Copy initializes a new instance of the <see cref="BlockASTWalker"/> class. /// </summary> /// <param name="other"></param> public BlockASTWalker(BlockASTWalker other) : base(other) { this.statementsGroup = other.statementsGroup; }