System.Xml.Xsl.Qil.QilXmlReader.Read C# (CSharp) Method

Read() public method

public Read ( ) : QilExpression
return QilExpression
        public QilExpression Read()
        {
            _stk = new Stack<QilList>();
            _inFwdDecls = false;
            _scope = new Dictionary<string, QilNode>();
            _fwdDecls = new Dictionary<string, QilNode>();

            _stk.Push(_f.Sequence());

            while (_r.Read())
            {
                switch (_r.NodeType)
                {
                    case XmlNodeType.Element:
                        bool emptyElem = _r.IsEmptyElement;

                        // XmlReader does not give an event for empty elements, so synthesize one
                        if (StartElement() && emptyElem)
                            EndElement();
                        break;

                    case XmlNodeType.EndElement:
                        EndElement();
                        break;

                    case XmlNodeType.Whitespace:
                    case XmlNodeType.SignificantWhitespace:
                    case XmlNodeType.XmlDeclaration:
                    case XmlNodeType.Comment:
                    case XmlNodeType.ProcessingInstruction:
                        break;

                    default:
                        Debug.Fail("Unexpected event " + _r.NodeType + ", value " + _r.Value);
                        break;
                }
            }

            Debug.Assert(_fwdDecls.Keys.Count == 0, "One or more forward declarations were never defined");
            Debug.Assert(_stk.Peek()[0].NodeType == QilNodeType.QilExpression, "Serialized qil tree did not contain a QilExpression node");
            return (QilExpression)_stk.Peek()[0];
        }