Пример #1
0
        private void ValidateState(FIItemType itemType)
        {
            byte validState = StateTable[(byte)itemType, (byte)_state];

            if ((validState == 0) || _documentEnded)
            {
                FIState oldState = _state;
                _state = FIState.Error;
                throw new InvalidOperationException(string.Format("Invalid State [{0}]", oldState.ToString()));
            }
        }
Пример #2
0
        private void UpdateState(FIItemType itemType)
        {
            switch (itemType)
            {
            case FIItemType.StartDocument:
                _state = FIState.Prolog;
                break;

            case FIItemType.EndDocument:
                _state         = FIState.Start;
                _documentEnded = true;
                break;

            case FIItemType.StartElement:
                _state = FIState.Element;
                _depth++;
                break;

            case FIItemType.EndElement:
                _depth--;
                if (_depth == 0)
                {
                    _state = FIState.Epilog;
                }
                else
                {
                    _state = FIState.Content;
                }
                break;

            case FIItemType.StartAttribute:
                _state = FIState.Attribute;
                break;

            case FIItemType.EndAttribute:
                _state = FIState.Element;
                break;

            case FIItemType.Content:
            case FIItemType.EncodedContent:
                if ((_state == FIState.Attribute) || (_state == FIState.AttributeContent))
                {
                    _state = FIState.AttributeContent;
                }
                else
                {
                    _state = FIState.Content;
                }
                break;
            }
        }