]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/longlong.cpp
dynamic event types actually work with these changes, also corrected more
[wxWidgets.git] / src / common / longlong.cpp
index 6a0cc8e315a4c91eddd175f102fe634fb649dfa3..4569d208af1d8fbcced754aeb5d947676f557122 100644 (file)
@@ -70,7 +70,7 @@ ostream& operator<< (ostream& o, const wxLongLongNative& ll)
 
     for (int i = 0; i < 64; i++)
     {
-        result[63 - i] = '0' + (char) ((ll.m_ll >> i) & 1);
+        result[63 - i] = '0' + (char) ((ll.GetValue() >> i) & 1);
     }
 
     return o << result;
@@ -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;
 }
 
@@ -599,7 +591,9 @@ wxLongLongWx& wxLongLongWx::operator/=(const wxLongLongWx& ll)
 
     Divide(ll, quotient, remainder);
 
-    return *this = quotient;
+    *this = quotient;
+    
+    return *this;
 }
 
 wxLongLongWx wxLongLongWx::operator%(const wxLongLongWx& ll) const