public QilNode ConvertToNumber(QilNode n)
{
switch (n.XmlType.TypeCode)
{
case XmlTypeCode.Boolean:
return (
n.NodeType == QilNodeType.True ? (QilNode)Double(1) :
n.NodeType == QilNodeType.False ? (QilNode)Double(0) :
/*default: */ (QilNode)Conditional(n, Double(1), Double(0))
);
case XmlTypeCode.Double:
return n;
case XmlTypeCode.String:
return XsltConvert(n, T.DoubleX);
default:
if (n.XmlType.IsNode)
{
return XsltConvert(XPathNodeValue(SafeDocOrderDistinct(n)), T.DoubleX);
}
ExpectAny(n);
return XsltConvert(n, T.DoubleX);
}
}