Replace WTF::move with WTFMove
[WebKit-https.git] / Source / WebCore / xml / XPathExpressionNode.h
index 4b5baa8..c636410 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2005 Frerich Raabe <raabe@kde.org>
- * Copyright (C) 2006, 2009 Apple Inc.
+ * Copyright (C) 2006, 2009, 2013 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
 #ifndef XPathExpressionNode_h
 #define XPathExpressionNode_h
 
-#if ENABLE(XPATH)
-
-#include "Node.h"
 #include "XPathValue.h"
-#include <wtf/HashMap.h>
-#include <wtf/Vector.h>
-#include <wtf/text/StringHash.h>
 
 namespace WebCore {
+namespace XPath {
+
+struct EvaluationContext {
+    RefPtr<Node> node;
+    unsigned size;
+    unsigned position;
+    HashMap<String, String> variableBindings;
+
+    bool hadTypeConversionError;
+};
+
+class Expression {
+    WTF_MAKE_NONCOPYABLE(Expression); WTF_MAKE_FAST_ALLOCATED;
+public:
+    static EvaluationContext& evaluationContext();
+
+    virtual ~Expression() { }
 
-    namespace XPath {
-        
-        struct EvaluationContext {
-            WTF_MAKE_FAST_ALLOCATED;
-        public:
-            RefPtr<Node> node;
-            unsigned long size;
-            unsigned long position;
-            HashMap<String, String> variableBindings;
-
-            bool hadTypeConversionError;
-        };
-
-        class ParseNode {
-        public:
-            virtual ~ParseNode() { }
-        };
-
-        class Expression : public ParseNode {
-            WTF_MAKE_NONCOPYABLE(Expression); WTF_MAKE_FAST_ALLOCATED;
-        public:
-            static EvaluationContext& evaluationContext();
-
-            Expression();
-            virtual ~Expression();
-
-            virtual Value evaluate() const = 0;
-
-            void addSubExpression(Expression* expr)
-            {
-                m_subExpressions.append(expr);
-                m_isContextNodeSensitive |= expr->m_isContextNodeSensitive;
-                m_isContextPositionSensitive |= expr->m_isContextPositionSensitive;
-                m_isContextSizeSensitive |= expr->m_isContextSizeSensitive;
-            }
-
-            bool isContextNodeSensitive() const { return m_isContextNodeSensitive; }
-            bool isContextPositionSensitive() const { return m_isContextPositionSensitive; }
-            bool isContextSizeSensitive() const { return m_isContextSizeSensitive; }
-            void setIsContextNodeSensitive(bool value) { m_isContextNodeSensitive = value; }
-            void setIsContextPositionSensitive(bool value) { m_isContextPositionSensitive = value; }
-            void setIsContextSizeSensitive(bool value) { m_isContextSizeSensitive = value; }
-
-            virtual Value::Type resultType() const = 0;
-
-        protected:
-            unsigned subExprCount() const { return m_subExpressions.size(); }
-            Expression* subExpr(unsigned i) { return m_subExpressions[i]; }
-            const Expression* subExpr(unsigned i) const { return m_subExpressions[i]; }
-
-        private:
-            Vector<Expression*> m_subExpressions;
-
-            // Evaluation details that can be used for optimization.
-            bool m_isContextNodeSensitive;
-            bool m_isContextPositionSensitive;
-            bool m_isContextSizeSensitive;
-        };
+    virtual Value evaluate() const = 0;
+    virtual Value::Type resultType() const = 0;
 
+    bool isContextNodeSensitive() const { return m_isContextNodeSensitive; }
+    bool isContextPositionSensitive() const { return m_isContextPositionSensitive; }
+    bool isContextSizeSensitive() const { return m_isContextSizeSensitive; }
+
+protected:
+    Expression();
+
+    unsigned subexpressionCount() const { return m_subexpressions.size(); }
+    const Expression& subexpression(unsigned i) const { return *m_subexpressions[i]; }
+
+    void addSubexpression(std::unique_ptr<Expression> expression)
+    {
+        m_isContextNodeSensitive |= expression->m_isContextNodeSensitive;
+        m_isContextPositionSensitive |= expression->m_isContextPositionSensitive;
+        m_isContextSizeSensitive |= expression->m_isContextSizeSensitive;
+        m_subexpressions.append(WTFMove(expression));
     }
 
-}
+    void setSubexpressions(Vector<std::unique_ptr<Expression>>);
+
+    void setIsContextNodeSensitive(bool value) { m_isContextNodeSensitive = value; }
+    void setIsContextPositionSensitive(bool value) { m_isContextPositionSensitive = value; }
+    void setIsContextSizeSensitive(bool value) { m_isContextSizeSensitive = value; }
+
+private:
+    Vector<std::unique_ptr<Expression>> m_subexpressions;
 
-#endif // ENABLE(XPATH)
+    // Evaluation details that can be used for optimization.
+    bool m_isContextNodeSensitive;
+    bool m_isContextPositionSensitive;
+    bool m_isContextSizeSensitive;
+};
 
-#endif // EXPRESSION_H
+} // namespace XPath
+} // namespace WebCore
 
+#endif // XPathExpressionNode_h