/// <summary>
        /// Reads a BSON regular expression from the reader.
        /// </summary>
        /// <returns>A BsonRegularExpression.</returns>
        public override BsonRegularExpression ReadRegularExpression()
        {
            if (Disposed)
            {
                ThrowObjectDisposedException();
            }
            VerifyBsonType("ReadRegularExpression", BsonType.RegularExpression);
            State = GetNextState();
            var pattern = _streamReader.ReadCString();
            var options = _streamReader.ReadCString();

            return(new BsonRegularExpression(pattern, options));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Reads the name of an element from the reader.
        /// </summary>
        /// <returns>The name of the element.</returns>
        public override string ReadName()
        {
            if (Disposed)
            {
                ThrowObjectDisposedException();
            }
            if (State == BsonReaderState.Type)
            {
                ReadBsonType();
            }
            if (State != BsonReaderState.Name)
            {
                ThrowInvalidState("ReadName", BsonReaderState.Name);
            }

            CurrentName = _streamReader.ReadCString();
            State       = BsonReaderState.Value;

            return(CurrentName);
        }
        // public methods
        /// <summary>
        /// Reads the name.
        /// </summary>
        /// <param name="streamReader">The stream reader.</param>
        /// <returns>
        /// The name.
        /// </returns>
        public string Decode(BsonStreamReader streamReader)
        {
            BsonTrieNode <TValue> node;

            if (_trie.TryGetNode(streamReader, out node))
            {
                if (node.HasValue)
                {
                    _found = true;
                    _value = node.Value;
                    return(node.ElementName);
                }
            }

            return(streamReader.ReadCString());
        }