IDBKeyPathLexer::TokenType IDBKeyPathLexer::lexIdentifier(String& element) { const UChar* start = m_ptr; if (m_ptr < m_end && isIdentifierStartCharacter(*m_ptr)) ++m_ptr; else return TokenError; while (m_ptr < m_end && isIdentifierCharacter(*m_ptr)) ++m_ptr; element = String(start, m_ptr - start); return TokenIdentifier; }
IDBKeyPathLexer::TokenType IDBKeyPathLexer::lexIdentifier(String& element) { unsigned start = m_index; if (m_index < m_length && isIdentifierStartCharacter(m_string[m_index])) ++m_index; else return TokenError; while (m_index < m_length && isIdentifierCharacter(m_string[m_index])) ++m_index; element = m_string.substring(start, m_index - start); return TokenIdentifier; }
IDBKeyPathLexer::TokenType IDBKeyPathLexer::lexIdentifier(String& element) { StringView start = m_remainingText; if (!m_remainingText.isEmpty() && isIdentifierStartCharacter(m_remainingText[0])) m_remainingText = m_remainingText.substring(1); else return TokenError; while (!m_remainingText.isEmpty() && isIdentifierCharacter(m_remainingText[0])) m_remainingText = m_remainingText.substring(1); element = start.substring(0, start.length() - m_remainingText.length()).toString(); return TokenIdentifier; }