wxLongLongWx::Assign(double) works - thanks Guillermo

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5299 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2000-01-08 14:26:40 +00:00
parent 64d8470859
commit 617ec45690
2 changed files with 10 additions and 16 deletions

View File

@ -27,8 +27,10 @@
// define this to compile wxLongLongWx in "test" mode: the results of all
// calculations will be compared with the real results taken from
// wxLongLongNative
#define wxLONGLONG_TEST_MODE
// wxLongLongNative -- this is extremely useful to find the bugs in
// wxLongLongWx class!
//#define wxLONGLONG_TEST_MODE
#ifdef wxLONGLONG_TEST_MODE
#define wxUSE_LONGLONG_WX 1

View File

@ -91,34 +91,26 @@ wxLongLongWx& wxLongLongWx::Assign(double d)
{
bool positive = d >= 0;
d = fabs(d);
if ( d <= LONG_MAX )
if ( d <= ULONG_MAX )
{
m_hi = 0;
m_lo = (long)d;
}
else
{
#if 0
m_lo = (long)d;
d -= m_lo;
d /= 0x1000;
d /= 0x1000;
d /= 0x100;
m_hi = (long)d;
#else
wxFAIL_MSG(_T("TODO"));
#endif
m_hi = (unsigned long)(d / (1.0 + (double)ULONG_MAX));
m_lo = (unsigned long)(d - ((double)m_hi * (1.0 + (double)ULONG_MAX)));
}
if ( !positive )
m_hi = -m_hi;
#ifdef wxLONGLONG_TEST_MODE
m_ll = (wxLongLong_t)d;
Check();
#endif // wxLONGLONG_TEST_MODE
if ( !positive )
Negate();
return *this;
}