protected virtual QilNode VisitXsltCopy(QilBinary n) { return(VisitChildren(n)); }
public XmlQueryType CheckDeref(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtf); CheckXmlType(node.Right, XmlQueryTypeFactory.StringX); return XmlQueryTypeFactory.ElementS; }
public XmlQueryType CheckNamespaceDecl(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.StringX); CheckXmlType(node.Right, XmlQueryTypeFactory.StringX); return XmlQueryTypeFactory.Namespace; }
public XmlQueryType CheckStrParseQName(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.StringX); Check(node.Right.XmlType.IsSubtypeOf(XmlQueryTypeFactory.StringX) || node.Right.XmlType.IsSubtypeOf(XmlQueryTypeFactory.NamespaceS), node, "StrParseQName must take either a string or a list of namespace as its second argument"); return XmlQueryTypeFactory.QNameX; }
public XmlQueryType CheckAfter(QilBinary node) { return CheckIs(node); }
public XmlQueryType CheckUnion(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtfS); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtfS); return DistinctType(XmlQueryTypeFactory.Sequence(node.Left.XmlType, node.Right.XmlType)); }
public XmlQueryType CheckSubtract(QilBinary node) { return CheckAdd(node); }
public XmlQueryType CheckDifference(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtfS); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtfS); return(XmlQueryTypeFactory.AtMost(node.Left.XmlType, node.Left.XmlType.Cardinality)); }
public XmlQueryType CheckSubtract(QilBinary node) { return(CheckAdd(node)); }
public XmlQueryType CheckUnion(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtfS); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtfS); return(DistinctType(XmlQueryTypeFactory.Sequence(node.Left.XmlType, node.Right.XmlType))); }
public XmlQueryType CheckIntersection(QilBinary node) { return(CheckUnion(node)); }
public XmlQueryType CheckOr(QilBinary node) { return(CheckAnd(node)); }
private void CheckNotDisjoint(QilBinary node) { Check(node.Left.XmlType.IsSubtypeOf(node.Right.XmlType) || node.Right.XmlType.IsSubtypeOf(node.Left.XmlType), node, "Node must not have arguments with disjoint types " + node.Left.XmlType + " and " + node.Right.XmlType); }
public XmlQueryType CheckXsltCopy(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtf); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeS); return(XmlQueryTypeFactory.Choice(node.Left.XmlType, node.Right.XmlType)); }
protected virtual QilNode VisitRtfCtor(QilBinary n) { return VisitChildren(n); }
public XmlQueryType CheckMultiply(QilBinary node) { return(CheckAdd(node)); }
//----------------------------------------------- // boolean operators //----------------------------------------------- public XmlQueryType CheckAnd(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.BooleanX); CheckXmlType(node.Right, XmlQueryTypeFactory.BooleanX); return XmlQueryTypeFactory.BooleanX; }
public XmlQueryType CheckDivide(QilBinary node) { return(CheckAdd(node)); }
public XmlQueryType CheckDifference(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtfS); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtfS); return XmlQueryTypeFactory.AtMost(node.Left.XmlType, node.Left.XmlType.Cardinality); }
public XmlQueryType CheckModulo(QilBinary node) { return(CheckAdd(node)); }
public XmlQueryType CheckDivide(QilBinary node) { return CheckAdd(node); }
public XmlQueryType CheckLe(QilBinary node) { return(CheckNe(node)); }
public XmlQueryType CheckLe(QilBinary node) { return CheckNe(node); }
//----------------------------------------------- // node comparison operators //----------------------------------------------- public XmlQueryType CheckIs(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtf); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtf); return(XmlQueryTypeFactory.BooleanX); }
public XmlQueryType CheckAttribute(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtf); CheckXmlType(node.Right, XmlQueryTypeFactory.QNameX); return XmlQueryTypeFactory.AttributeQ; }
public XmlQueryType CheckAfter(QilBinary node) { return(CheckIs(node)); }
public XmlQueryType CheckAttributeCtor(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.QNameX); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtfS); return XmlQueryTypeFactory.UntypedAttribute; }
public XmlQueryType CheckBefore(QilBinary node) { return(CheckIs(node)); }
public XmlQueryType CheckXsltCopy(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtf); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeS); return XmlQueryTypeFactory.Choice(node.Left.XmlType, node.Right.XmlType); }
public XmlQueryType CheckAttribute(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtf); CheckXmlType(node.Right, XmlQueryTypeFactory.QNameX); return(XmlQueryTypeFactory.AttributeQ); }
protected virtual QilNode VisitNamespaceDecl(QilBinary n) { return VisitChildren(n); }
public XmlQueryType CheckNodeRange(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtf); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtf); return(XmlQueryTypeFactory.Choice(node.Left.XmlType, XmlQueryTypeFactory.ContentS, node.Right.XmlType)); }
protected virtual QilNode VisitXsltCopy(QilBinary n) { return VisitChildren(n); }
public XmlQueryType CheckDeref(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtf); CheckXmlType(node.Right, XmlQueryTypeFactory.StringX); return(XmlQueryTypeFactory.ElementS); }
public XmlQueryType CheckOr(QilBinary node) { return CheckAnd(node); }
//----------------------------------------------- // XML construction //----------------------------------------------- public XmlQueryType CheckElementCtor(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.QNameX); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtfS); return(XmlQueryTypeFactory.UntypedElement); }
public XmlQueryType CheckIntersection(QilBinary node) { return CheckUnion(node); }
public XmlQueryType CheckAttributeCtor(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.QNameX); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtfS); return(XmlQueryTypeFactory.UntypedAttribute); }
public XmlQueryType CheckAdd(QilBinary node) { CheckNumericX(node.Left); CheckNumericX(node.Right); CheckNotDisjoint(node); return node.Left.XmlType.TypeCode == XmlTypeCode.None ? node.Right.XmlType : node.Left.XmlType; }
public XmlQueryType CheckPICtor(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.StringX); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtfS); return(XmlQueryTypeFactory.PI); }
public XmlQueryType CheckMultiply(QilBinary node) { return CheckAdd(node); }
public XmlQueryType CheckNamespaceDecl(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.StringX); CheckXmlType(node.Right, XmlQueryTypeFactory.StringX); return(XmlQueryTypeFactory.Namespace); }
public XmlQueryType CheckModulo(QilBinary node) { return CheckAdd(node); }
public XmlQueryType CheckRtfCtor(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtfS); CheckClassAndNodeType(node.Right, typeof(QilLiteral), QilNodeType.LiteralString); return(XmlQueryTypeFactory.Node); }
//----------------------------------------------- // value comparison operators //----------------------------------------------- public XmlQueryType CheckNe(QilBinary node) { CheckAtomicX(node.Left); CheckAtomicX(node.Right); CheckNotDisjoint(node); return XmlQueryTypeFactory.BooleanX; }
protected override QilNode VisitElementCtor(QilBinary n) { return(NoReplace(n)); }
//----------------------------------------------- // node comparison operators //----------------------------------------------- public XmlQueryType CheckIs(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtf); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtf); return XmlQueryTypeFactory.BooleanX; }
protected override QilNode VisitAttributeCtor(QilBinary n) { return(NoReplace(n)); }
public XmlQueryType CheckBefore(QilBinary node) { return CheckIs(node); }
protected override QilNode VisitNamespaceDecl(QilBinary n) { return(NoReplace(n)); }
public XmlQueryType CheckNodeRange(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtf); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtf); return XmlQueryTypeFactory.Choice(node.Left.XmlType, XmlQueryTypeFactory.ContentS, node.Right.XmlType); }
protected override QilNode VisitIntersection(QilBinary n) { return(NoReplace(n)); }
//----------------------------------------------- // XML construction //----------------------------------------------- public XmlQueryType CheckElementCtor(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.QNameX); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtfS); return XmlQueryTypeFactory.UntypedElement; }
protected override QilNode VisitStrParseQName(QilBinary n) { return(NoReplace(n)); }
public XmlQueryType CheckPICtor(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.StringX); CheckXmlType(node.Right, XmlQueryTypeFactory.NodeNotRtfS); return XmlQueryTypeFactory.PI; }
protected override QilNode VisitGe(QilBinary n) { return(NoReplace(n)); }
public XmlQueryType CheckRtfCtor(QilBinary node) { CheckXmlType(node.Left, XmlQueryTypeFactory.NodeNotRtfS); CheckClassAndNodeType(node.Right, typeof(QilLiteral), QilNodeType.LiteralString); return XmlQueryTypeFactory.Node; }
protected virtual QilNode VisitAttributeCtor(QilBinary n) { return VisitChildren(n); }
private void CheckNotDisjoint(QilBinary node) { Check(node.Left.XmlType.IsSubtypeOf(node.Right.XmlType) || node.Right.XmlType.IsSubtypeOf(node.Left.XmlType), node, "Node must not have arguments with disjoint types " + node.Left.XmlType + " and " + node.Right.XmlType); }
protected virtual QilNode VisitRtfCtor(QilBinary n) { return(VisitChildren(n)); }