Example #1
0
        public override VfpExpression Visit(VfpIsEmptyExpression expression)
        {
            Write(" NOT EXISTS (");
            expression.Argument.Accept(this);
            Write(")");

            return(expression);
        }
        private static bool GetInnerProjectionExpression(VfpProjectExpression expression, out VfpProjectExpression innerProjectionExpression, out bool hasNotExpression)
        {
            innerProjectionExpression = null;
            hasNotExpression          = false;

            if (!expression.Input.VariableName.StartsWith("SingleRowTable"))
            {
                return(false);
            }

            var newInstanceExpression = expression.Projection as VfpNewInstanceExpression;

            if (newInstanceExpression == null)
            {
                return(false);
            }

            var notExpression = newInstanceExpression.Arguments[0] as VfpNotExpression;
            VfpIsEmptyExpression isEmptyExpression = null;

            if (notExpression == null)
            {
                isEmptyExpression = newInstanceExpression.Arguments[0] as VfpIsEmptyExpression;
            }
            else
            {
                isEmptyExpression = notExpression.Argument as VfpIsEmptyExpression;
                hasNotExpression  = true;
            }

            if (isEmptyExpression == null)
            {
                return(false);
            }

            innerProjectionExpression = isEmptyExpression.Argument as VfpProjectExpression;

            return(innerProjectionExpression != null);
        }
 public virtual VfpExpression Visit(VfpIsEmptyExpression expression)
 {
     return(new VfpIsEmptyExpression(expression.ResultType, expression.Argument.Accept(this)));
 }