System.Xml.Xsl.IlGen.XmlILVisitor.CachesResult C# (CSharp) Method

CachesResult() private method

Returns true if the specified QilExpression node type is *guaranteed* to cache its results in an XmlQuerySequence, where items in the cache are stored using the default storage type.
private CachesResult ( QilNode nd ) : bool
nd QilNode
return bool
        private bool CachesResult(QilNode nd) {
            OptimizerPatterns patt;

            switch (nd.NodeType) {
                case QilNodeType.Let:
                case QilNodeType.Parameter:
                case QilNodeType.Invoke:
                case QilNodeType.XsltInvokeLateBound:
                case QilNodeType.XsltInvokeEarlyBound:
                    return !nd.XmlType.IsSingleton;

                case QilNodeType.Filter:
                    // EqualityIndex pattern caches results
                    patt = OptimizerPatterns.Read(nd);
                    return patt.MatchesPattern(OptimizerPatternName.EqualityIndex);

                case QilNodeType.DocOrderDistinct:
                    if (nd.XmlType.IsSingleton)
                        return false;

                    // JoinAndDod and DodReverse patterns don't cache results
                    patt = OptimizerPatterns.Read(nd);
                    return !patt.MatchesPattern(OptimizerPatternName.JoinAndDod) && !patt.MatchesPattern(OptimizerPatternName.DodReverse);
            }

            return false;
        }
XmlILVisitor