Microsoft.CSharp.RuntimeBinder.Semantics.ExprFactory.CreateUserLogOp C# (CSharp) Method

CreateUserLogOp() public method

public CreateUserLogOp ( CType pType, EXPR pCallTF, Microsoft.CSharp.RuntimeBinder.Semantics.EXPRCALL pCallOp ) : Microsoft.CSharp.RuntimeBinder.Semantics.EXPRUSERLOGOP
pType CType
pCallTF EXPR
pCallOp Microsoft.CSharp.RuntimeBinder.Semantics.EXPRCALL
return Microsoft.CSharp.RuntimeBinder.Semantics.EXPRUSERLOGOP
        public EXPRUSERLOGOP CreateUserLogOp(CType pType, EXPR pCallTF, EXPRCALL pCallOp)
        {
            Debug.Assert(pCallTF != null);
            Debug.Assert(pCallOp != null);
            Debug.Assert(pCallOp.GetOptionalArguments() != null);
            Debug.Assert(pCallOp.GetOptionalArguments().isLIST());
            Debug.Assert(pCallOp.GetOptionalArguments().asLIST().GetOptionalElement() != null);
            EXPRUSERLOGOP rval = new EXPRUSERLOGOP();
            EXPR leftChild = pCallOp.GetOptionalArguments().asLIST().GetOptionalElement();
            Debug.Assert(leftChild != null);
            if (leftChild.isWRAP())
            {
                // In the EE case, we don't create WRAPEXPRs.
                leftChild = leftChild.asWRAP().GetOptionalExpression();
                Debug.Assert(leftChild != null);
            }
            rval.kind = ExpressionKind.EK_USERLOGOP;
            rval.type = pType;
            rval.flags = EXPRFLAG.EXF_ASSGOP;
            rval.TrueFalseCall = pCallTF;
            rval.OperatorCall = pCallOp;
            rval.FirstOperandToExamine = leftChild;
            Debug.Assert(rval != null);
            return (rval);
        }