Changeset 253002 in webkit


Ignore:
Timestamp:
Dec 2, 2019 12:03:10 PM (4 years ago)
Author:
Simon Fraser
Message:

Remove the confusing Value struct used for calc results
https://bugs.webkit.org/show_bug.cgi?id=204751

Reviewed by Tim Horton.

Replace the Value* argument with a RefPtr<CSSCalcExpressionNode>&. Value just made things more
confusing.

  • css/CSSCalculationValue.cpp:

(WebCore::CSSCalcExpressionNodeParser::parseCalc):
(WebCore::CSSCalcExpressionNodeParser::parseValue):
(WebCore::CSSCalcExpressionNodeParser::parseValueTerm):
(WebCore::CSSCalcExpressionNodeParser::parseValueMultiplicativeExpression):
(WebCore::CSSCalcExpressionNodeParser::parseAdditiveValueExpression):
(WebCore::CSSCalcExpressionNodeParser::parseMinMaxExpression):
(WebCore::CSSCalcExpressionNodeParser::parseValueExpression):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r253001 r253002  
     12019-12-02  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Remove the confusing Value struct used for calc results
     4        https://bugs.webkit.org/show_bug.cgi?id=204751
     5
     6        Reviewed by Tim Horton.
     7
     8        Replace the Value* argument with a RefPtr<CSSCalcExpressionNode>&. Value just made things more
     9        confusing.
     10
     11        * css/CSSCalculationValue.cpp:
     12        (WebCore::CSSCalcExpressionNodeParser::parseCalc):
     13        (WebCore::CSSCalcExpressionNodeParser::parseValue):
     14        (WebCore::CSSCalcExpressionNodeParser::parseValueTerm):
     15        (WebCore::CSSCalcExpressionNodeParser::parseValueMultiplicativeExpression):
     16        (WebCore::CSSCalcExpressionNodeParser::parseAdditiveValueExpression):
     17        (WebCore::CSSCalcExpressionNodeParser::parseMinMaxExpression):
     18        (WebCore::CSSCalcExpressionNodeParser::parseValueExpression):
     19
    1202019-12-02  Zalan Bujtas  <zalan@apple.com>
    221
  • trunk/Source/WebCore/css/CSSCalculationValue.cpp

    r252983 r253002  
    755755   
    756756private:
    757     struct Value {
    758         RefPtr<CSSCalcExpressionNode> value;
    759     };
    760    
    761757    char operatorValue(const CSSParserToken& token)
    762758    {
     
    766762    }
    767763
    768     bool parseValue(CSSParserTokenRange&, Value* result);
    769     bool parseValueTerm(CSSParserTokenRange&, int depth, Value* result);
    770     bool parseValueMultiplicativeExpression(CSSParserTokenRange&, int depth, Value* result);
    771     bool parseAdditiveValueExpression(CSSParserTokenRange&, int depth, Value* result);
    772     bool parseMinMaxExpression(CSSParserTokenRange&, CSSValueID minMaxFunction, int depth, Value* result);
    773     bool parseValueExpression(CSSParserTokenRange&, int depth, Value* result);
     764    bool parseValue(CSSParserTokenRange&, RefPtr<CSSCalcExpressionNode>&);
     765    bool parseValueTerm(CSSParserTokenRange&, int depth, RefPtr<CSSCalcExpressionNode>&);
     766    bool parseValueMultiplicativeExpression(CSSParserTokenRange&, int depth, RefPtr<CSSCalcExpressionNode>&);
     767    bool parseAdditiveValueExpression(CSSParserTokenRange&, int depth, RefPtr<CSSCalcExpressionNode>&);
     768    bool parseMinMaxExpression(CSSParserTokenRange&, CSSValueID minMaxFunction, int depth, RefPtr<CSSCalcExpressionNode>&);
     769    bool parseValueExpression(CSSParserTokenRange&, int depth, RefPtr<CSSCalcExpressionNode>&);
    774770
    775771    CalculationCategory m_destinationCategory;
     
    779775RefPtr<CSSCalcExpressionNode> CSSCalcExpressionNodeParser::parseCalc(CSSParserTokenRange tokens, CSSValueID function)
    780776{
    781     Value result;
     777    RefPtr<CSSCalcExpressionNode> result;
    782778    tokens.consumeWhitespace();
    783779    bool ok = false;
    784780    if (function == CSSValueCalc || function == CSSValueWebkitCalc)
    785         ok = parseValueExpression(tokens, 0, &result);
     781        ok = parseValueExpression(tokens, 0, result);
    786782    else if (function == CSSValueMin || function == CSSValueMax)
    787         ok = parseMinMaxExpression(tokens, function, 0, &result);
     783        ok = parseMinMaxExpression(tokens, function, 0, result);
    788784    if (!ok || !tokens.atEnd())
    789785        return nullptr;
    790786
    791     LOG_WITH_STREAM(Calc, stream << "CSSCalcExpressionNodeParser::parseCalc " << prettyPrintNode(*result.value));
    792 
    793     return result.value;
    794 }
    795 
    796 bool CSSCalcExpressionNodeParser::parseValue(CSSParserTokenRange& tokens, Value* result)
     787    if (!result)
     788        return nullptr;
     789
     790    LOG_WITH_STREAM(Calc, stream << "CSSCalcExpressionNodeParser::parseCalc " << prettyPrintNode(*result));
     791
     792    return result;
     793}
     794
     795bool CSSCalcExpressionNodeParser::parseValue(CSSParserTokenRange& tokens, RefPtr<CSSCalcExpressionNode>& result)
    797796{
    798797    CSSParserToken token = tokens.consumeIncludingWhitespace();
     
    804803        return false;
    805804   
    806     result->value = CSSCalcPrimitiveValueNode::create(CSSPrimitiveValue::create(token.numericValue(), type));
    807    
     805    result = CSSCalcPrimitiveValueNode::create(CSSPrimitiveValue::create(token.numericValue(), type));
    808806    return true;
    809807}
     
    825823}
    826824
    827 bool CSSCalcExpressionNodeParser::parseValueTerm(CSSParserTokenRange& tokens, int depth, Value* result)
     825bool CSSCalcExpressionNodeParser::parseValueTerm(CSSParserTokenRange& tokens, int depth, RefPtr<CSSCalcExpressionNode>& result)
    828826{
    829827    if (checkDepthAndIndex(&depth, tokens) != OK)
     
    849847}
    850848
    851 bool CSSCalcExpressionNodeParser::parseValueMultiplicativeExpression(CSSParserTokenRange& tokens, int depth, Value* result)
     849bool CSSCalcExpressionNodeParser::parseValueMultiplicativeExpression(CSSParserTokenRange& tokens, int depth, RefPtr<CSSCalcExpressionNode>& result)
    852850{
    853851    if (checkDepthAndIndex(&depth, tokens) != OK)
     
    863861        tokens.consumeIncludingWhitespace();
    864862       
    865         Value rhs;
    866         if (!parseValueTerm(tokens, depth, &rhs))
     863        RefPtr<CSSCalcExpressionNode> rhs;
     864        if (!parseValueTerm(tokens, depth, rhs))
    867865            return false;
    868866       
    869         result->value = CSSCalcOperationNode::createSimplified(static_cast<CalcOperator>(operatorCharacter), WTFMove(result->value), WTFMove(rhs.value));
    870 
    871         if (!result->value)
     867        result = CSSCalcOperationNode::createSimplified(static_cast<CalcOperator>(operatorCharacter), WTFMove(result), WTFMove(rhs));
     868
     869        if (!result)
    872870            return false;
    873871    }
     
    876874}
    877875
    878 bool CSSCalcExpressionNodeParser::parseAdditiveValueExpression(CSSParserTokenRange& tokens, int depth, Value* result)
     876bool CSSCalcExpressionNodeParser::parseAdditiveValueExpression(CSSParserTokenRange& tokens, int depth, RefPtr<CSSCalcExpressionNode>& result)
    879877{
    880878    if (checkDepthAndIndex(&depth, tokens) != OK)
     
    895893        tokens.consumeIncludingWhitespace();
    896894       
    897         Value rhs;
    898         if (!parseValueMultiplicativeExpression(tokens, depth, &rhs))
     895        RefPtr<CSSCalcExpressionNode> rhs;
     896        if (!parseValueMultiplicativeExpression(tokens, depth, rhs))
    899897            return false;
    900898       
    901         result->value = CSSCalcOperationNode::createSimplified(static_cast<CalcOperator>(operatorCharacter), WTFMove(result->value), WTFMove(rhs.value));
    902         if (!result->value)
     899        result = CSSCalcOperationNode::createSimplified(static_cast<CalcOperator>(operatorCharacter), WTFMove(result), WTFMove(rhs));
     900        if (!result)
    903901            return false;
    904902    }
     
    907905}
    908906
    909 bool CSSCalcExpressionNodeParser::parseMinMaxExpression(CSSParserTokenRange& tokens, CSSValueID minMaxFunction, int depth, Value* result)
     907bool CSSCalcExpressionNodeParser::parseMinMaxExpression(CSSParserTokenRange& tokens, CSSValueID minMaxFunction, int depth, RefPtr<CSSCalcExpressionNode>& result)
    910908{
    911909    if (checkDepthAndIndex(&depth, tokens) != OK)
     
    914912    CalcOperator op = (minMaxFunction == CSSValueMin) ? CalcOperator::Min : CalcOperator::Max;
    915913
    916     Value value;
    917     if (!parseValueExpression(tokens, depth, &value))
     914    RefPtr<CSSCalcExpressionNode> value;
     915    if (!parseValueExpression(tokens, depth, value))
    918916        return false;
    919917
    920918    Vector<Ref<CSSCalcExpressionNode>> nodes;
    921     nodes.append(value.value.releaseNonNull());
     919    nodes.append(value.releaseNonNull());
    922920
    923921    while (!tokens.atEnd()) {
     
    927925        tokens.consumeWhitespace();
    928926
    929         if (!parseValueExpression(tokens, depth, &value))
     927        if (!parseValueExpression(tokens, depth, value))
    930928            return false;
    931929
    932         nodes.append(value.value.releaseNonNull());
    933     }
    934 
    935     result->value = CSSCalcOperationNode::createMinOrMax(op, WTFMove(nodes), m_destinationCategory);
    936     return result->value;
    937 }
    938 
    939 bool CSSCalcExpressionNodeParser::parseValueExpression(CSSParserTokenRange& tokens, int depth, Value* result)
     930        nodes.append(value.releaseNonNull());
     931    }
     932
     933    result = CSSCalcOperationNode::createMinOrMax(op, WTFMove(nodes), m_destinationCategory);
     934    return result;
     935}
     936
     937bool CSSCalcExpressionNodeParser::parseValueExpression(CSSParserTokenRange& tokens, int depth, RefPtr<CSSCalcExpressionNode>& result)
    940938{
    941939    return parseAdditiveValueExpression(tokens, depth, result);
Note: See TracChangeset for help on using the changeset viewer.