Changeset 114404 in webkit


Ignore:
Timestamp:
Apr 17, 2012 11:51:50 AM (12 years ago)
Author:
eae@chromium.org
Message:

Add size_t versions of multiplication and division operators to FractionalLayoutUnit
https://bugs.webkit.org/show_bug.cgi?id=83848

Reviewed by Julien Chaffraix.

Add size_t versions of operator* and operator/ for platforms where there
is no ambiguity between unsigned int and size_t.

No new tests, no new functionality.

  • platform/FractionalLayoutUnit.h:

(FractionalLayoutUnit):
(WebCore::FractionalLayoutUnit::FractionalLayoutUnit):
(WebCore::FractionalLayoutUnit::isInBounds):
(WebCore):
(WebCore::operator*):
(WebCore::operator/):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r114401 r114404  
     12012-04-17  Emil A Eklund  <eae@chromium.org>
     2
     3        Add size_t versions of multiplication and division operators to FractionalLayoutUnit
     4        https://bugs.webkit.org/show_bug.cgi?id=83848
     5
     6        Reviewed by Julien Chaffraix.
     7
     8        Add size_t versions of operator* and operator/ for platforms where there
     9        is no ambiguity between unsigned int and size_t.
     10
     11        No new tests, no new functionality.
     12
     13        * platform/FractionalLayoutUnit.h:
     14        (FractionalLayoutUnit):
     15        (WebCore::FractionalLayoutUnit::FractionalLayoutUnit):
     16        (WebCore::FractionalLayoutUnit::isInBounds):
     17        (WebCore):
     18        (WebCore::operator*):
     19        (WebCore::operator/):
     20
    1212012-04-17  Kentaro Hara  <haraken@chromium.org>
    222
  • trunk/Source/WebCore/platform/FractionalLayoutUnit.h

    r113803 r114404  
    3737#include <stdlib.h>
    3838
     39#if PLATFORM(CHROMIUM) || PLATFORM(MAC)
     40#define ARE_SIZE_T_UNSIGNED_DIFFERENT_UNIT
     41#endif
     42
    3943namespace WebCore {
    4044
     
    5256    FractionalLayoutUnit(double value) { ASSERT(isInBounds(value)); m_value = value * kFixedPointDenominator; }
    5357    FractionalLayoutUnit(const FractionalLayoutUnit& value) { m_value = value.rawValue(); }
     58#ifdef ARE_SIZE_T_UNSIGNED_DIFFERENT_UNIT
     59    FractionalLayoutUnit(size_t value) { ASSERT(isInBounds(value)); m_value = static_cast<int>(value * kFixedPointDenominator); }
     60#endif
    5461
    5562    inline int toInt() const { return m_value / kFixedPointDenominator; }
     
    127134        return ::fabs(value) <= std::numeric_limits<int>::max() / kFixedPointDenominator;
    128135    }
     136#ifdef ARE_SIZE_T_UNSIGNED_DIFFERENT_UNIT
     137    inline bool isInBounds(size_t value)
     138    {
     139        return value <= static_cast<size_t>(std::numeric_limits<int>::max()) / kFixedPointDenominator;
     140    }
     141#endif
    129142
    130143    int m_value;
     
    332345}
    333346
     347#ifdef ARE_SIZE_T_UNSIGNED_DIFFERENT_UNIT
     348inline FractionalLayoutUnit operator*(const FractionalLayoutUnit& a, size_t b)
     349{
     350    return a * FractionalLayoutUnit(b);
     351}
     352#endif
     353
    334354inline FractionalLayoutUnit operator*(unsigned a, const FractionalLayoutUnit& b)
    335355{
     
    351371    return a * b.toDouble();
    352372}
     373
     374#ifdef ARE_SIZE_T_UNSIGNED_DIFFERENT_UNIT
     375inline FractionalLayoutUnit operator*(size_t a, const FractionalLayoutUnit& b)
     376{
     377    return FractionalLayoutUnit(a) * b;
     378}
     379#endif
    353380
    354381inline FractionalLayoutUnit operator/(const FractionalLayoutUnit& a, const FractionalLayoutUnit& b)
     
    380407}
    381408
     409#ifdef ARE_SIZE_T_UNSIGNED_DIFFERENT_UNIT
     410inline FractionalLayoutUnit operator/(const FractionalLayoutUnit& a, size_t b)
     411{
     412    return a / FractionalLayoutUnit(b);
     413}
     414#endif
     415
    382416inline float operator/(const float a, const FractionalLayoutUnit& b)
    383417{
     
    394428    return FractionalLayoutUnit(a) / b;
    395429}
     430
     431#ifdef ARE_SIZE_T_UNSIGNED_DIFFERENT_UNIT
     432inline FractionalLayoutUnit operator/(size_t a, const FractionalLayoutUnit& b)
     433{
     434    return FractionalLayoutUnit(a) / b;
     435}
     436#endif
    396437
    397438inline FractionalLayoutUnit operator+(const FractionalLayoutUnit& a, const FractionalLayoutUnit& b)
Note: See TracChangeset for help on using the changeset viewer.