diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/xml/XPathParser.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/xml/XPathParser.h')
-rw-r--r-- | Source/WebCore/xml/XPathParser.h | 76 |
1 files changed, 35 insertions, 41 deletions
diff --git a/Source/WebCore/xml/XPathParser.h b/Source/WebCore/xml/XPathParser.h index 4e6f437e6..68289caa5 100644 --- a/Source/WebCore/xml/XPathParser.h +++ b/Source/WebCore/xml/XPathParser.h @@ -24,64 +24,58 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef XPathParser_h -#define XPathParser_h +#pragma once -#include "XPathStep.h" +#include "ExceptionOr.h" #include "XPathPredicate.h" union YYSTYPE; namespace WebCore { - typedef int ExceptionCode; +class XPathNSResolver; - class XPathNSResolver; +namespace XPath { - namespace XPath { +class Parser { + WTF_MAKE_NONCOPYABLE(Parser); +public: + static ExceptionOr<std::unique_ptr<Expression>> parseStatement(const String& statement, RefPtr<XPathNSResolver>&&); - class Parser { - WTF_MAKE_NONCOPYABLE(Parser); - public: - static std::unique_ptr<Expression> parseStatement(const String& statement, XPathNSResolver*, ExceptionCode&); + int lex(YYSTYPE&); + bool expandQualifiedName(const String& qualifiedName, String& localName, String& namespaceURI); + void setParseResult(std::unique_ptr<Expression>&& expression) { m_result = WTFMove(expression); } - int lex(YYSTYPE&); - bool expandQualifiedName(const String& qualifiedName, String& localName, String& namespaceURI); - void setParseResult(std::unique_ptr<Expression> expression) { m_result = std::move(expression); } +private: + Parser(const String&, RefPtr<XPathNSResolver>&&); - private: - Parser(const String&, XPathNSResolver*); + struct Token; - struct Token; + bool isBinaryOperatorContext() const; - bool isBinaryOperatorContext() const; + void skipWS(); + Token makeTokenAndAdvance(int type, int advance = 1); + Token makeTokenAndAdvance(int type, NumericOp::Opcode, int advance = 1); + Token makeTokenAndAdvance(int type, EqTestOp::Opcode, int advance = 1); + char peekAheadHelper(); + char peekCurHelper(); - void skipWS(); - Token makeTokenAndAdvance(int type, int advance = 1); - Token makeTokenAndAdvance(int type, NumericOp::Opcode, int advance = 1); - Token makeTokenAndAdvance(int type, EqTestOp::Opcode, int advance = 1); - char peekAheadHelper(); - char peekCurHelper(); + Token lexString(); + Token lexNumber(); + bool lexNCName(String&); + bool lexQName(String&); - Token lexString(); - Token lexNumber(); - bool lexNCName(String&); - bool lexQName(String&); + Token nextToken(); + Token nextTokenInternal(); - Token nextToken(); - Token nextTokenInternal(); + const String& m_data; + RefPtr<XPathNSResolver> m_resolver; - const String& m_data; - XPathNSResolver* m_resolver; + unsigned m_nextPos { 0 }; + int m_lastTokenType { 0 }; - unsigned m_nextPos; - int m_lastTokenType; + std::unique_ptr<Expression> m_result; + bool m_sawNamespaceError { false }; +}; - std::unique_ptr<Expression> m_result; - bool m_sawNamespaceError; - }; - - } -} - -#endif +} } |