#include <limits>
#include <stdlib.h>
-namespace WebCore {
+namespace blink {
-#ifdef NDEBUG
+#if !ERROR_DISABLED
#define REPORT_OVERFLOW(doesOverflow) ((void)0)
return (m_value + kFixedPointDenominator - 1) / kFixedPointDenominator;
return toInt();
}
- int round() const
+ ALWAYS_INLINE int round() const
{
return saturatedAddition(rawValue(), kFixedPointDenominator / 2) >> kLayoutUnitFractionalBits;
}
return ::fabs(value) <= std::numeric_limits<int>::max() / kFixedPointDenominator;
}
- inline void setValue(int value)
+ ALWAYS_INLINE void setValue(int value)
{
- if (value > intMaxForLayoutUnit)
- m_value = std::numeric_limits<int>::max();
- else if (value < intMinForLayoutUnit)
- m_value = std::numeric_limits<int>::min();
- else
- m_value = value * kFixedPointDenominator;
+ m_value = saturatedSet(value, kLayoutUnitFractionalBits);
}
+
inline void setValue(unsigned value)
{
- if (value >= static_cast<unsigned>(intMaxForLayoutUnit))
- m_value = std::numeric_limits<int>::max();
- else
- m_value = value * kFixedPointDenominator;
+ m_value = saturatedSet(value, kLayoutUnitFractionalBits);
}
int m_value;
return LayoutUnit(a) / b;
}
-inline LayoutUnit operator+(const LayoutUnit& a, const LayoutUnit& b)
+ALWAYS_INLINE LayoutUnit operator+(const LayoutUnit& a, const LayoutUnit& b)
{
LayoutUnit returnVal;
returnVal.setRawValue(saturatedAddition(a.rawValue(), b.rawValue()));
return a + b.toDouble();
}
-inline LayoutUnit operator-(const LayoutUnit& a, const LayoutUnit& b)
+ALWAYS_INLINE LayoutUnit operator-(const LayoutUnit& a, const LayoutUnit& b)
{
LayoutUnit returnVal;
returnVal.setRawValue(saturatedSubtraction(a.rawValue(), b.rawValue()));
return value;
}
-} // namespace WebCore
+} // namespace blink
#endif // LayoutUnit_h