EndEvent() private method

private EndEvent ( int state, XPathNodeType nodeType ) : Processor.OutputResult
state int
nodeType XPathNodeType
return Processor.OutputResult
Ejemplo n.º 1
0
        internal bool EndEvent(XPathNodeType nodeType)
        {
            Debug.Assert(_xsm != null);

            if (_ignoreLevel > 0)
            {
                _ignoreLevel--;
                return(true);
            }

            int stateOutlook = _xsm.EndOutlook(nodeType);

            switch (_builder.EndEvent(stateOutlook, nodeType))
            {
            case OutputResult.Continue:
                _xsm.End(nodeType);
                Debug.Assert(StateMachine.StateOnly(stateOutlook) == _xsm.State);
                return(true);

            case OutputResult.Interrupt:
                _xsm.End(nodeType);
                Debug.Assert(StateMachine.StateOnly(stateOutlook) == _xsm.State,
                             "StateMachine.StateOnly(stateOutlook) == this.xsm.State");
                ExecutionResult = ExecResult.Interrupt;
                return(true);

            case OutputResult.Overflow:
                ExecutionResult = ExecResult.Interrupt;
                return(false);

            case OutputResult.Error:
            case OutputResult.Ignore:
            default:
                Debug.Fail("Unexpected result of RecordBuilder.TextEvent()");
                return(true);
            }
        }