Exemplo n.º 1
0
        /// <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
            });
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 4
0
 /// <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;
 }