X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a353dc9852cc44fcffd339895ba3024d0eebbad7..169adfa9c4b781f737920bc808da91cd926c3e36:/include/wx/longlong.h diff --git a/include/wx/longlong.h b/include/wx/longlong.h index 62d28c53c3..a0f98934e0 100644 --- a/include/wx/longlong.h +++ b/include/wx/longlong.h @@ -13,10 +13,6 @@ #ifndef _WX_LONGLONG_H #define _WX_LONGLONG_H -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma interface "longlong.h" -#endif - #include "wx/defs.h" #include "wx/string.h" @@ -143,10 +139,10 @@ public: // accessors // get high part long GetHi() const - { return (long)(m_ll >> 32); } + { return wx_truncate_cast(long, m_ll >> 32); } // get low part unsigned long GetLo() const - { return (unsigned long)m_ll; } + { return wx_truncate_cast(unsigned long, m_ll); } // get absolute value wxLongLongNative Abs() const { return wxLongLongNative(*this).Abs(); } @@ -161,9 +157,12 @@ public: wxASSERT_MSG( (m_ll >= LONG_MIN) && (m_ll <= LONG_MAX), _T("wxLongLong to long conversion loss of precision") ); - return (long)m_ll; + return wx_truncate_cast(long, m_ll); } + // convert to double + double ToDouble() const { return wx_truncate_cast(double, m_ll); } + // don't provide implicit conversion to wxLongLong_t or we will have an // ambiguity for all arithmetic operations //operator wxLongLong_t() const { return m_ll; } @@ -215,13 +214,13 @@ public: // shifts // left shift wxLongLongNative operator<<(int shift) const - { return wxLongLongNative(m_ll << shift);; } + { return wxLongLongNative(m_ll << shift); } wxLongLongNative& operator<<=(int shift) { m_ll <<= shift; return *this; } // right shift wxLongLongNative operator>>(int shift) const - { return wxLongLongNative(m_ll >> shift);; } + { return wxLongLongNative(m_ll >> shift); } wxLongLongNative& operator>>=(int shift) { m_ll >>= shift; return *this; } @@ -320,13 +319,13 @@ public: // default ctor initializes to 0 wxULongLongNative() : m_ll(0) { } // from long long - wxULongLongNative(unsigned wxLongLong_t ll) : m_ll(ll) { } + wxULongLongNative(wxULongLong_t ll) : m_ll(ll) { } // from 2 longs wxULongLongNative(unsigned long hi, unsigned long lo) : m_ll(0) { // assign first to avoid precision loss! - m_ll = ((unsigned wxLongLong_t) hi) << 32; - m_ll |= (unsigned wxLongLong_t) lo; + m_ll = ((wxULongLong_t) hi) << 32; + m_ll |= (wxULongLong_t) lo; } // default copy ctor is ok @@ -335,7 +334,7 @@ public: // assignment operators // from native 64 bit integer - wxULongLongNative& operator=(unsigned wxLongLong_t ll) + wxULongLongNative& operator=(wxULongLong_t ll) { m_ll = ll; return *this; } // assignment operators from wxULongLongNative is ok @@ -343,13 +342,13 @@ public: // accessors // get high part unsigned long GetHi() const - { return (unsigned long)(m_ll >> 32); } + { return wx_truncate_cast(unsigned long, m_ll >> 32); } // get low part unsigned long GetLo() const - { return (unsigned long)m_ll; } + { return wx_truncate_cast(unsigned long, m_ll); } // convert to native ulong long - unsigned wxLongLong_t GetValue() const { return m_ll; } + wxULongLong_t GetValue() const { return m_ll; } // convert to ulong with range checking in the debug mode (only!) unsigned long ToULong() const @@ -357,7 +356,7 @@ public: wxASSERT_MSG( m_ll <= LONG_MAX, _T("wxULongLong to long conversion loss of precision") ); - return (unsigned long)m_ll; + return wx_truncate_cast(unsigned long, m_ll); } // operations @@ -367,9 +366,9 @@ public: wxULongLongNative& operator+=(const wxULongLongNative& ll) { m_ll += ll.m_ll; return *this; } - wxULongLongNative operator+(const unsigned wxLongLong_t ll) const + wxULongLongNative operator+(const wxULongLong_t ll) const { return wxULongLongNative(m_ll + ll); } - wxULongLongNative& operator+=(const unsigned wxLongLong_t ll) + wxULongLongNative& operator+=(const wxULongLong_t ll) { m_ll += ll; return *this; } // pre increment @@ -386,9 +385,9 @@ public: wxULongLongNative& operator-=(const wxULongLongNative& ll) { m_ll -= ll.m_ll; return *this; } - wxULongLongNative operator-(const unsigned wxLongLong_t ll) const + wxULongLongNative operator-(const wxULongLong_t ll) const { return wxULongLongNative(m_ll - ll); } - wxULongLongNative& operator-=(const unsigned wxLongLong_t ll) + wxULongLongNative& operator-=(const wxULongLong_t ll) { m_ll -= ll; return *this; } // pre decrement @@ -402,13 +401,13 @@ public: // shifts // left shift wxULongLongNative operator<<(int shift) const - { return wxULongLongNative(m_ll << shift);; } + { return wxULongLongNative(m_ll << shift); } wxULongLongNative& operator<<=(int shift) { m_ll <<= shift; return *this; } // right shift wxULongLongNative operator>>(int shift) const - { return wxULongLongNative(m_ll >> shift);; } + { return wxULongLongNative(m_ll >> shift); } wxULongLongNative& operator>>=(int shift) { m_ll >>= shift; return *this; } @@ -496,7 +495,7 @@ public: wxString& operator<<(wxString&, const wxULongLongNative&); private: - unsigned wxLongLong_t m_ll; + wxULongLong_t m_ll; }; #endif // wxUSE_LONGLONG_NATIVE @@ -590,6 +589,9 @@ public: return (long)m_lo; } + // convert to double + double ToDouble() const; + // operations // addition wxLongLongWx operator+(const wxLongLongWx& ll) const; @@ -798,7 +800,7 @@ public: // post increment operator wxULongLongWx& operator++(int) { return ++(*this); } - // substraction + // subtraction wxLongLongWx operator-(const wxULongLongWx& ll) const; wxULongLongWx& operator-=(const wxULongLongWx& ll); @@ -889,7 +891,7 @@ private: wxASSERT( (m_ll >> 32) == m_hi && (unsigned long)m_ll == m_lo ); } - unsigned wxLongLong_t m_ll; + wxULongLong_t m_ll; #endif // wxLONGLONG_TEST_MODE };