| diff --git a/mfbt/decimal/Decimal.h b/mfbt/decimal/Decimal.h |
| --- a/mfbt/decimal/Decimal.h |
| +++ b/mfbt/decimal/Decimal.h |
| @@ -26,16 +26,18 @@ |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #ifndef Decimal_h |
| #define Decimal_h |
| |
| +#include "mozilla/Types.h" |
| + |
| #include <stdint.h> |
| #include <wtf/Assertions.h> |
| #include <wtf/text/WTFString.h> |
| |
| namespace WebCore { |
| |
| namespace DecimalPrivate { |
| class SpecialValueHandler; |
| @@ -88,92 +90,92 @@ public: |
| FormatClass formatClass() const { return m_formatClass; } |
| |
| uint64_t m_coefficient; |
| int16_t m_exponent; |
| FormatClass m_formatClass; |
| Sign m_sign; |
| }; |
| |
| - Decimal(int32_t = 0); |
| - Decimal(Sign, int exponent, uint64_t coefficient); |
| - Decimal(const Decimal&); |
| + MFBT_API Decimal(int32_t = 0); |
| + MFBT_API Decimal(Sign, int exponent, uint64_t coefficient); |
| + MFBT_API Decimal(const Decimal&); |
| |
| - Decimal& operator=(const Decimal&); |
| - Decimal& operator+=(const Decimal&); |
| - Decimal& operator-=(const Decimal&); |
| - Decimal& operator*=(const Decimal&); |
| - Decimal& operator/=(const Decimal&); |
| + MFBT_API Decimal& operator=(const Decimal&); |
| + MFBT_API Decimal& operator+=(const Decimal&); |
| + MFBT_API Decimal& operator-=(const Decimal&); |
| + MFBT_API Decimal& operator*=(const Decimal&); |
| + MFBT_API Decimal& operator/=(const Decimal&); |
| |
| - Decimal operator-() const; |
| + MFBT_API Decimal operator-() const; |
| |
| - bool operator==(const Decimal&) const; |
| - bool operator!=(const Decimal&) const; |
| - bool operator<(const Decimal&) const; |
| - bool operator<=(const Decimal&) const; |
| - bool operator>(const Decimal&) const; |
| - bool operator>=(const Decimal&) const; |
| + MFBT_API bool operator==(const Decimal&) const; |
| + MFBT_API bool operator!=(const Decimal&) const; |
| + MFBT_API bool operator<(const Decimal&) const; |
| + MFBT_API bool operator<=(const Decimal&) const; |
| + MFBT_API bool operator>(const Decimal&) const; |
| + MFBT_API bool operator>=(const Decimal&) const; |
| |
| - Decimal operator+(const Decimal&) const; |
| - Decimal operator-(const Decimal&) const; |
| - Decimal operator*(const Decimal&) const; |
| - Decimal operator/(const Decimal&) const; |
| + MFBT_API Decimal operator+(const Decimal&) const; |
| + MFBT_API Decimal operator-(const Decimal&) const; |
| + MFBT_API Decimal operator*(const Decimal&) const; |
| + MFBT_API Decimal operator/(const Decimal&) const; |
| |
| int exponent() const |
| { |
| ASSERT(isFinite()); |
| return m_data.exponent(); |
| } |
| |
| bool isFinite() const { return m_data.isFinite(); } |
| bool isInfinity() const { return m_data.isInfinity(); } |
| bool isNaN() const { return m_data.isNaN(); } |
| bool isNegative() const { return sign() == Negative; } |
| bool isPositive() const { return sign() == Positive; } |
| bool isSpecial() const { return m_data.isSpecial(); } |
| bool isZero() const { return m_data.isZero(); } |
| |
| - Decimal abs() const; |
| - Decimal ceiling() const; |
| - Decimal floor() const; |
| - Decimal remainder(const Decimal&) const; |
| - Decimal round() const; |
| + MFBT_API Decimal abs() const; |
| + MFBT_API Decimal ceiling() const; |
| + MFBT_API Decimal floor() const; |
| + MFBT_API Decimal remainder(const Decimal&) const; |
| + MFBT_API Decimal round() const; |
| |
| - double toDouble() const; |
| + MFBT_API double toDouble() const; |
| // Note: toString method supports infinity and nan but fromString not. |
| - String toString() const; |
| + MFBT_API String toString() const; |
| |
| - static Decimal fromDouble(double); |
| + static MFBT_API Decimal fromDouble(double); |
| // fromString supports following syntax EBNF: |
| // number ::= sign? digit+ ('.' digit*) (exponent-marker sign? digit+)? |
| // | sign? '.' digit+ (exponent-marker sign? digit+)? |
| // sign ::= '+' | '-' |
| // exponent-marker ::= 'e' | 'E' |
| // digit ::= '0' | '1' | ... | '9' |
| // Note: fromString doesn't support "infinity" and "nan". |
| - static Decimal fromString(const String&); |
| - static Decimal infinity(Sign); |
| - static Decimal nan(); |
| - static Decimal zero(Sign); |
| + static MFBT_API Decimal fromString(const String&); |
| + static MFBT_API Decimal infinity(Sign); |
| + static MFBT_API Decimal nan(); |
| + static MFBT_API Decimal zero(Sign); |
| |
| // You should not use below methods. We expose them for unit testing. |
| - explicit Decimal(const EncodedData&); |
| + MFBT_API explicit Decimal(const EncodedData&); |
| const EncodedData& value() const { return m_data; } |
| |
| private: |
| struct AlignedOperands { |
| uint64_t lhsCoefficient; |
| uint64_t rhsCoefficient; |
| int exponent; |
| }; |
| |
| - Decimal(double); |
| - Decimal compareTo(const Decimal&) const; |
| + MFBT_API Decimal(double); |
| + MFBT_API Decimal compareTo(const Decimal&) const; |
| |
| - static AlignedOperands alignOperands(const Decimal& lhs, const Decimal& rhs); |
| + static MFBT_API AlignedOperands alignOperands(const Decimal& lhs, const Decimal& rhs); |
| static inline Sign invertSign(Sign sign) { return sign == Negative ? Positive : Negative; } |
| |
| Sign sign() const { return m_data.sign(); } |
| |
| EncodedData m_data; |
| }; |
| |
| } // namespace WebCore |