Beispiel #1
0
        /// <summary>
        /// Visits a <see cref="MonadAbstraction" /> node.
        /// </summary>
        /// <param name="node">Node to visit.</param>
        /// <returns>Result of visiting the node.</returns>
        protected internal override MonadMember VisitMonadAbstraction(MonadAbstraction node)
        {
            var inner = Visit(node.Inner);

            if (inner != node.Inner)
            {
                return(MakeMonadAbstraction(node, inner));
            }

            return(node);
        }
Beispiel #2
0
        /// <summary>
        /// Visits a <see cref="MonadAbstraction" /> node.
        /// </summary>
        /// <param name="node">Node to visit.</param>
        /// <returns>Result of visiting the node.</returns>
        protected internal override MonadMember VisitMonadAbstraction(MonadAbstraction node)
        {
            var elementType = VisitType(node.ElementType);
            var inner       = Visit(node.Inner);

            if (inner != node.Inner || elementType != node.ElementType)
            {
                return(MakeMonadAbstraction(node, elementType, inner));
            }

            return(node);
        }
Beispiel #3
0
 /// <summary>
 /// Makes a <see cref="MonadAbstraction" /> with the given children.
 /// </summary>
 /// <param name="node">Original query expression.</param>
 /// <param name="inner">Inner query expression.</param>
 /// <returns>Representation of the original query expression.</returns>
 protected sealed override MonadMember MakeMonadAbstraction(MonadAbstraction node, QueryTree inner)
 {
     return(DefaultQueryExpressionFactory.Instance.MonadAbstraction(node.ElementType, inner));
 }
Beispiel #4
0
 /// <summary>
 /// Creates a textual representation of the MonadAbstraction with the given children.
 /// </summary>
 /// <param name="node">Original query expression.</param>
 /// <param name="inner">Inner query expression.</param>
 /// <returns>Representation of the original query expression.</returns>
 protected override string MakeMonadAbstraction(MonadAbstraction node, string inner)
 {
     return(string.Format(CultureInfo.InvariantCulture, "@MonadAbstraction({0})", inner));
 }
Beispiel #5
0
 /// <summary>
 /// Makes a <see cref="MonadAbstraction" /> with the given children.
 /// </summary>
 /// <param name="node">Original query expression.</param>
 /// <param name="elementType">Element type for the resulting operator.</param>
 /// <param name="inner">Inner query expression.</param>
 /// <returns>Representation of the original query expression.</returns>
 protected virtual MonadMember MakeMonadAbstraction(MonadAbstraction node, Type elementType, QueryTree inner)
 {
     return(DefaultQueryExpressionFactory.Instance.MonadAbstraction(elementType, inner));
 }