| Index: Source/core/xml/XPathPredicate.h
|
| diff --git a/Source/core/xml/XPathPredicate.h b/Source/core/xml/XPathPredicate.h
|
| index 013f5bc6dbc42374946e778940dab6187db01bd5..9422316b3dbb14e517ffe216c5ea396b1efb24d3 100644
|
| --- a/Source/core/xml/XPathPredicate.h
|
| +++ b/Source/core/xml/XPathPredicate.h
|
| @@ -32,98 +32,100 @@
|
|
|
| namespace WebCore {
|
|
|
| - namespace XPath {
|
| -
|
| - class Number FINAL : public Expression {
|
| - public:
|
| - explicit Number(double);
|
| - virtual void trace(Visitor*) OVERRIDE;
|
| -
|
| - private:
|
| - virtual Value evaluate() const OVERRIDE;
|
| - virtual Value::Type resultType() const OVERRIDE { return Value::NumberValue; }
|
| -
|
| - Value m_value;
|
| - };
|
| -
|
| - class StringExpression FINAL : public Expression {
|
| - public:
|
| - explicit StringExpression(const String&);
|
| - virtual void trace(Visitor*) OVERRIDE;
|
| -
|
| - private:
|
| - virtual Value evaluate() const OVERRIDE;
|
| - virtual Value::Type resultType() const OVERRIDE { return Value::StringValue; }
|
| -
|
| - Value m_value;
|
| - };
|
| -
|
| - class Negative FINAL : public Expression {
|
| - private:
|
| - virtual Value evaluate() const OVERRIDE;
|
| - virtual Value::Type resultType() const OVERRIDE { return Value::NumberValue; }
|
| - };
|
| -
|
| - class NumericOp FINAL : public Expression {
|
| - public:
|
| - enum Opcode {
|
| - OP_Add, OP_Sub, OP_Mul, OP_Div, OP_Mod
|
| - };
|
| - NumericOp(Opcode, PassOwnPtrWillBeRawPtr<Expression> lhs, PassOwnPtrWillBeRawPtr<Expression> rhs);
|
| - private:
|
| - virtual Value evaluate() const OVERRIDE;
|
| - virtual Value::Type resultType() const OVERRIDE { return Value::NumberValue; }
|
| -
|
| - Opcode m_opcode;
|
| - };
|
| -
|
| - class EqTestOp FINAL : public Expression {
|
| - public:
|
| - enum Opcode { OP_EQ, OP_NE, OP_GT, OP_LT, OP_GE, OP_LE };
|
| - EqTestOp(Opcode, PassOwnPtrWillBeRawPtr<Expression> lhs, PassOwnPtrWillBeRawPtr<Expression> rhs);
|
| - virtual Value evaluate() const OVERRIDE;
|
| - private:
|
| - virtual Value::Type resultType() const OVERRIDE { return Value::BooleanValue; }
|
| - bool compare(const Value&, const Value&) const;
|
| -
|
| - Opcode m_opcode;
|
| - };
|
| -
|
| - class LogicalOp FINAL : public Expression {
|
| - public:
|
| - enum Opcode { OP_And, OP_Or };
|
| - LogicalOp(Opcode, PassOwnPtrWillBeRawPtr<Expression> lhs, PassOwnPtrWillBeRawPtr<Expression> rhs);
|
| - private:
|
| - virtual Value::Type resultType() const OVERRIDE { return Value::BooleanValue; }
|
| - bool shortCircuitOn() const;
|
| - virtual Value evaluate() const OVERRIDE;
|
| -
|
| - Opcode m_opcode;
|
| - };
|
| -
|
| - class Union FINAL : public Expression {
|
| - private:
|
| - virtual Value evaluate() const OVERRIDE;
|
| - virtual Value::Type resultType() const OVERRIDE { return Value::NodeSetValue; }
|
| - };
|
| -
|
| - class Predicate FINAL : public NoBaseWillBeGarbageCollected<Predicate> {
|
| - WTF_MAKE_NONCOPYABLE(Predicate); WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
|
| - DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(Predicate);
|
| - public:
|
| - explicit Predicate(PassOwnPtrWillBeRawPtr<Expression>);
|
| - void trace(Visitor*);
|
| - bool evaluate() const;
|
| -
|
| - bool isContextPositionSensitive() const { return m_expr->isContextPositionSensitive() || m_expr->resultType() == Value::NumberValue; }
|
| - bool isContextSizeSensitive() const { return m_expr->isContextSizeSensitive(); }
|
| -
|
| - private:
|
| - OwnPtrWillBeMember<Expression> m_expr;
|
| - };
|
| -
|
| - }
|
| +namespace XPath {
|
| +
|
| +class Number FINAL : public Expression {
|
| +public:
|
| + explicit Number(double);
|
| + virtual void trace(Visitor*) OVERRIDE;
|
| +
|
| +private:
|
| + virtual Value evaluate() const OVERRIDE;
|
| + virtual Value::Type resultType() const OVERRIDE { return Value::NumberValue; }
|
| +
|
| + Value m_value;
|
| +};
|
| +
|
| +class StringExpression FINAL : public Expression {
|
| +public:
|
| + explicit StringExpression(const String&);
|
| + virtual void trace(Visitor*) OVERRIDE;
|
| +
|
| +private:
|
| + virtual Value evaluate() const OVERRIDE;
|
| + virtual Value::Type resultType() const OVERRIDE { return Value::StringValue; }
|
| +
|
| + Value m_value;
|
| +};
|
| +
|
| +class Negative FINAL : public Expression {
|
| +private:
|
| + virtual Value evaluate() const OVERRIDE;
|
| + virtual Value::Type resultType() const OVERRIDE { return Value::NumberValue; }
|
| +};
|
| +
|
| +class NumericOp FINAL : public Expression {
|
| +public:
|
| + enum Opcode {
|
| + OP_Add, OP_Sub, OP_Mul, OP_Div, OP_Mod
|
| + };
|
| + NumericOp(Opcode, PassOwnPtrWillBeRawPtr<Expression> lhs, PassOwnPtrWillBeRawPtr<Expression> rhs);
|
| +
|
| +private:
|
| + virtual Value evaluate() const OVERRIDE;
|
| + virtual Value::Type resultType() const OVERRIDE { return Value::NumberValue; }
|
| +
|
| + Opcode m_opcode;
|
| +};
|
| +
|
| +class EqTestOp FINAL : public Expression {
|
| +public:
|
| + enum Opcode { OpcodeEqual, OpcodeNotEqual, OpcodeGreaterThan, OpcodeLessThan, OpcodeGreaterOrEqual, OpcodeLessOrEqual };
|
| + EqTestOp(Opcode, PassOwnPtrWillBeRawPtr<Expression> lhs, PassOwnPtrWillBeRawPtr<Expression> rhs);
|
| + virtual Value evaluate() const OVERRIDE;
|
| +
|
| +private:
|
| + virtual Value::Type resultType() const OVERRIDE { return Value::BooleanValue; }
|
| + bool compare(const Value&, const Value&) const;
|
| +
|
| + Opcode m_opcode;
|
| +};
|
| +
|
| +class LogicalOp FINAL : public Expression {
|
| +public:
|
| + enum Opcode { OP_And, OP_Or };
|
| + LogicalOp(Opcode, PassOwnPtrWillBeRawPtr<Expression> lhs, PassOwnPtrWillBeRawPtr<Expression> rhs);
|
| +
|
| +private:
|
| + virtual Value::Type resultType() const OVERRIDE { return Value::BooleanValue; }
|
| + bool shortCircuitOn() const;
|
| + virtual Value evaluate() const OVERRIDE;
|
| +
|
| + Opcode m_opcode;
|
| +};
|
| +
|
| +class Union FINAL : public Expression {
|
| +private:
|
| + virtual Value evaluate() const OVERRIDE;
|
| + virtual Value::Type resultType() const OVERRIDE { return Value::NodeSetValue; }
|
| +};
|
| +
|
| +class Predicate FINAL : public NoBaseWillBeGarbageCollected<Predicate> {
|
| + WTF_MAKE_NONCOPYABLE(Predicate); WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
|
| + DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(Predicate);
|
| +public:
|
| + explicit Predicate(PassOwnPtrWillBeRawPtr<Expression>);
|
| + void trace(Visitor*);
|
| +
|
| + bool evaluate() const;
|
| + bool isContextPositionSensitive() const { return m_expr->isContextPositionSensitive() || m_expr->resultType() == Value::NumberValue; }
|
| + bool isContextSizeSensitive() const { return m_expr->isContextSizeSensitive(); }
|
| +
|
| +private:
|
| + OwnPtrWillBeMember<Expression> m_expr;
|
| +};
|
|
|
| }
|
|
|
| +}
|
| #endif // XPathPredicate_h
|
|
|