}
#endif
+#ifdef __VISUALC6__
+double wxULongLongNative::ToDouble() const
+{
+ // Work around the problem of casting unsigned __int64 to double in VC6
+ // (which for unknown reasons only manifests itself in DLL builds, i.e.
+ // when using /MD).
+ static const __int64 int64_t_max = 9223372036854775807i64;
+ if ( m_ll <= int64_t_max )
+ return wx_truncate_cast(double, (wxLongLong_t)m_ll);
+
+ double d = wx_truncate_cast(double, int64_t_max);
+ d += (__int64)(m_ll - int64_t_max - 1); // The cast is safe because of -1
+ return d + 1;
+}
+#endif // __VISUALC6__
+
#endif // wxUSE_LONGLONG_NATIVE
// ============================================================================
while ( ll != 0 ) \
{ \
long digit = (ll % 10).ToLong(); \
- result.Prepend((wxChar)(_T('0') - digit)); \
+ result.Prepend((wxChar)(wxT('0') - digit)); \
ll /= 10; \
} \
} \
while ( ll != 0 ) \
{ \
long digit = (ll % 10).ToLong(); \
- result.Prepend((wxChar)(_T('0') + digit)); \
+ result.Prepend((wxChar)(wxT('0') + digit)); \
ll /= 10; \
} \
} \
\
if ( result.empty() ) \
- result = _T('0'); \
+ result = wxT('0'); \
else if ( neg ) \
- result.Prepend(_T('-')); \
+ result.Prepend(wxT('-')); \
\
return result; \
}
\
while ( ll != 0 ) \
{ \
- result.Prepend((wxChar)(_T('0') + (ll % 10).ToULong())); \
+ result.Prepend((wxChar)(wxT('0') + (ll % 10).ToULong())); \
ll /= 10; \
} \
\
if ( result.empty() ) \
- result = _T('0'); \
+ result = wxT('0'); \
\
return result; \
}
return o << ll.ToString();
}
-#define READ_STRING_CHAR(s, idx, len) ((wxChar) ((idx!=len) ? s[idx++] : 0))
+#define READ_STRING_CHAR(s, idx, len) ((idx!=len) ? (wxChar)s[idx++] : wxT('\0'))
WXDLLIMPEXP_BASE class wxTextInputStream &operator>>(class wxTextInputStream &o, wxULongLong &ll)
{