#define wxUSE_LONGLONG_NATIVE 0
#endif
- class WXDLLIMPEXP_BASE wxLongLongWx;
- class WXDLLIMPEXP_BASE wxULongLongWx;
+ class WXDLLIMPEXP_FWD_BASE wxLongLongWx;
+ class WXDLLIMPEXP_FWD_BASE wxULongLongWx;
#if defined(__VISUALC__) && !defined(__WIN32__)
#define wxLongLong wxLongLongWx
#define wxULongLong wxULongLongWx
#ifndef wxUSE_LONGLONG_WX
#define wxUSE_LONGLONG_WX 0
- class WXDLLIMPEXP_BASE wxLongLongNative;
- class WXDLLIMPEXP_BASE wxULongLongNative;
+ class WXDLLIMPEXP_FWD_BASE wxLongLongNative;
+ class WXDLLIMPEXP_FWD_BASE wxULongLongNative;
typedef wxLongLongNative wxLongLong;
typedef wxULongLongNative wxULongLong;
#endif
// from long long
wxLongLongNative(wxLongLong_t ll) : m_ll(ll) { }
// from 2 longs
- wxLongLongNative(long hi, unsigned long lo) : m_ll(0)
+ wxLongLongNative(wxInt32 hi, wxUint32 lo)
{
- // assign first to avoid precision loss!
+ // cast to wxLongLong_t first to avoid precision loss!
m_ll = ((wxLongLong_t) hi) << 32;
m_ll |= (wxLongLong_t) lo;
}
{ m_ll = l; return *this; }
wxLongLongNative& operator=(long l)
{ m_ll = l; return *this; }
+ wxLongLongNative& operator=(unsigned int l)
+ { m_ll = l; return *this; }
wxLongLongNative& operator=(unsigned long l)
{ m_ll = l; return *this; }
#if wxUSE_LONGLONG_WX
// accessors
// get high part
- long GetHi() const
- { return wx_truncate_cast(long, m_ll >> 32); }
+ wxInt32 GetHi() const
+ { return wx_truncate_cast(wxInt32, m_ll >> 32); }
// get low part
- unsigned long GetLo() const
- { return wx_truncate_cast(unsigned long, m_ll); }
+ wxUint32 GetLo() const
+ { return wx_truncate_cast(wxUint32, m_ll); }
// get absolute value
wxLongLongNative Abs() const { return wxLongLongNative(*this).Abs(); }
long ToLong() const
{
wxASSERT_MSG( (m_ll >= LONG_MIN) && (m_ll <= LONG_MAX),
- _T("wxLongLong to long conversion loss of precision") );
+ wxT("wxLongLong to long conversion loss of precision") );
return wx_truncate_cast(long, m_ll);
}
// from long long
wxULongLongNative(wxULongLong_t ll) : m_ll(ll) { }
// from 2 longs
- wxULongLongNative(unsigned long hi, unsigned long lo) : m_ll(0)
+ wxULongLongNative(wxUint32 hi, wxUint32 lo) : m_ll(0)
{
- // assign first to avoid precision loss!
+ // cast to wxLongLong_t first to avoid precision loss!
m_ll = ((wxULongLong_t) hi) << 32;
m_ll |= (wxULongLong_t) lo;
}
{ m_ll = l; return *this; }
wxULongLongNative& operator=(long l)
{ m_ll = l; return *this; }
+ wxULongLongNative& operator=(unsigned int l)
+ { m_ll = l; return *this; }
wxULongLongNative& operator=(unsigned long l)
{ m_ll = l; return *this; }
wxULongLongNative& operator=(const wxLongLongNative &ll)
// accessors
// get high part
- unsigned long GetHi() const
- { return wx_truncate_cast(unsigned long, m_ll >> 32); }
+ wxUint32 GetHi() const
+ { return wx_truncate_cast(wxUint32, m_ll >> 32); }
// get low part
- unsigned long GetLo() const
- { return wx_truncate_cast(unsigned long, m_ll); }
+ wxUint32 GetLo() const
+ { return wx_truncate_cast(wxUint32, m_ll); }
// convert to native ulong long
wxULongLong_t GetValue() const { return m_ll; }
unsigned long ToULong() const
{
wxASSERT_MSG( m_ll <= LONG_MAX,
- _T("wxULongLong to long conversion loss of precision") );
+ wxT("wxULongLong to long conversion loss of precision") );
return wx_truncate_cast(unsigned long, m_ll);
}
+ // convert to double
+#ifdef _MSC_VER
+ double ToDouble() const { return wx_truncate_cast(double, (__int64) m_ll); }
+#else
+ double ToDouble() const { return wx_truncate_cast(double, m_ll); }
+#endif
+
// operations
// addition
wxULongLongNative operator+(const wxULongLongNative& ll) const
return *this;
}
+
+ wxLongLongWx& operator=(unsigned int l)
+ {
+ return operator=((unsigned long)l);
+ }
+
wxLongLongWx& operator=(const class wxULongLongWx &ll);
// from double
long ToLong() const
{
wxASSERT_MSG( (m_hi == 0l) || (m_hi == -1l),
- _T("wxLongLong to long conversion loss of precision") );
+ wxT("wxLongLong to long conversion loss of precision") );
return (long)m_lo;
}
unsigned long ToULong() const
{
wxASSERT_MSG( m_hi == 0ul,
- _T("wxULongLong to long conversion loss of precision") );
+ wxT("wxULongLong to long conversion loss of precision") );
return (unsigned long)m_lo;
}
+ // convert to double
+ double ToDouble() const;
+
// operations
// addition
wxULongLongWx operator+(const wxULongLongWx& ll) const;