]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/datetime.cpp
at least partially implemented vswscanf() -- otherwise wx apps compiled against glibc...
[wxWidgets.git] / src / common / datetime.cpp
index c8f8b2aea594b0d27ea827801f36b7f6596b510d..270d1106342639ed4c1fc14a423fc0be097282dc 100644 (file)
@@ -536,10 +536,10 @@ wxDateTime::Tm::Tm(const struct tm& tm, const TimeZone& tz)
               : m_tz(tz)
 {
     msec = 0;
-    sec = tm.tm_sec;
-    min = tm.tm_min;
-    hour = tm.tm_hour;
-    mday = tm.tm_mday;
+    sec = (wxDateTime::wxDateTime_t)tm.tm_sec;
+    min = (wxDateTime::wxDateTime_t)tm.tm_min;
+    hour = (wxDateTime::wxDateTime_t)tm.tm_hour;
+    mday = (wxDateTime::wxDateTime_t)tm.tm_mday;
     mon = (wxDateTime::Month)tm.tm_mon;
     year = 1900 + tm.tm_year;
     wday = tm.tm_wday;
@@ -597,7 +597,7 @@ void wxDateTime::Tm::AddDays(int dayDiff)
         dayDiff += GetNumOfDaysInMonth(year, mon);
     }
 
-    mday += dayDiff;
+    mday = (wxDateTime::wxDateTime_t)( mday + dayDiff );
     while ( mday > GetNumOfDaysInMonth(year, mon) )
     {
         mday -= GetNumOfDaysInMonth(year, mon);
@@ -1873,7 +1873,7 @@ bool wxDateTime::SetToWeekDay(WeekDay weekday,
 static inline
 wxDateTime::wxDateTime_t GetDayOfYearFromTm(const wxDateTime::Tm& tm)
 {
-    return gs_cumulatedDays[wxDateTime::IsLeapYear(tm.year)][tm.mon] + tm.mday;
+    return (wxDateTime::wxDateTime_t)(gs_cumulatedDays[wxDateTime::IsLeapYear(tm.year)][tm.mon] + tm.mday);
 }
 
 wxDateTime::wxDateTime_t wxDateTime::GetDayOfYear(const TimeZone& tz) const
@@ -1941,7 +1941,7 @@ wxDateTime::GetWeekOfYear(wxDateTime::WeekFlags flags, const TimeZone& tz) const
         }
     }
 
-    return week;
+    return (wxDateTime::wxDateTime_t)week;
 }
 
 wxDateTime::wxDateTime_t wxDateTime::GetWeekOfMonth(wxDateTime::WeekFlags flags,
@@ -1974,7 +1974,7 @@ wxDateTime& wxDateTime::SetToYearDay(wxDateTime::wxDateTime_t yday)
         // yday lies in December then
         if ( (mon == Dec) || (yday <= gs_cumulatedDays[isLeap][mon + 1]) )
         {
-            Set(yday - gs_cumulatedDays[isLeap][mon], mon, year);
+            Set((wxDateTime::wxDateTime_t)(yday - gs_cumulatedDays[isLeap][mon]), mon, year);
 
             break;
         }
@@ -2467,11 +2467,11 @@ const wxChar *wxDateTime::ParseRfc822Date(const wxChar* date)
         return (wxChar *)NULL;
     }
 
-    wxDateTime_t day = *p++ - _T('0');
+    wxDateTime_t day = (wxDateTime_t)(*p++ - _T('0'));
     if ( wxIsdigit(*p) )
     {
         day *= 10;
-        day += *p++ - _T('0');
+        day = (wxDateTime_t)(day + (*p++ - _T('0')));
     }
 
     if ( *p++ != _T(' ') )
@@ -2565,7 +2565,7 @@ const wxChar *wxDateTime::ParseRfc822Date(const wxChar* date)
         return (wxChar *)NULL;
     }
 
-    wxDateTime_t hour = *p++ - _T('0');
+    wxDateTime_t hour = (wxDateTime_t)(*p++ - _T('0'));
 
     if ( !wxIsdigit(*p) )
     {
@@ -2573,7 +2573,7 @@ const wxChar *wxDateTime::ParseRfc822Date(const wxChar* date)
     }
 
     hour *= 10;
-    hour += *p++ - _T('0');
+    hour = (wxDateTime_t)(hour + (*p++ - _T('0')));
 
     if ( *p++ != _T(':') )
     {
@@ -2585,7 +2585,7 @@ const wxChar *wxDateTime::ParseRfc822Date(const wxChar* date)
         return (wxChar *)NULL;
     }
 
-    wxDateTime_t min = *p++ - _T('0');
+    wxDateTime_t min = (wxDateTime_t)(*p++ - _T('0'));
 
     if ( !wxIsdigit(*p) )
     {
@@ -2593,7 +2593,7 @@ const wxChar *wxDateTime::ParseRfc822Date(const wxChar* date)
     }
 
     min *= 10;
-    min += *p++ - _T('0');
+    min = (wxDateTime_t)(min + *p++ - _T('0'));
 
     wxDateTime_t sec = 0;
     if ( *p++ == _T(':') )
@@ -2603,7 +2603,7 @@ const wxChar *wxDateTime::ParseRfc822Date(const wxChar* date)
             return (wxChar *)NULL;
         }
 
-        sec = *p++ - _T('0');
+        sec = (wxDateTime_t)(*p++ - _T('0'));
 
         if ( !wxIsdigit(*p) )
         {
@@ -2611,7 +2611,7 @@ const wxChar *wxDateTime::ParseRfc822Date(const wxChar* date)
         }
 
         sec *= 10;
-        sec += *p++ - _T('0');
+        sec = (wxDateTime_t)(sec + *p++ - _T('0'));
     }
 
     if ( *p++ != _T(' ') )
@@ -3392,19 +3392,23 @@ const wxChar *wxDateTime::ParseDate(const wxChar *date)
     {
         wxString date = wxGetTranslation(literalDates[n].str);
         size_t len = date.length();
-        if ( wxStrlen(p) >= len && (wxString(p, len).CmpNoCase(date) == 0) )
+        if ( wxStrlen(p) >= len )
         {
-            // nothing can follow this, so stop here
-            p += len;
-
-            int dayDiffFromToday = literalDates[n].dayDiffFromToday;
-            *this = Today();
-            if ( dayDiffFromToday )
+            wxString str(p, len);
+            if ( str.CmpNoCase(date) == 0 )
             {
-                *this += wxDateSpan::Days(dayDiffFromToday);
-            }
+                // nothing can follow this, so stop here
+                p += len;
+
+                int dayDiffFromToday = literalDates[n].dayDiffFromToday;
+                *this = Today();
+                if ( dayDiffFromToday )
+                {
+                    *this += wxDateSpan::Days(dayDiffFromToday);
+                }
 
-            return p;
+                return p;
+            }
         }
     }
 
@@ -3459,9 +3463,11 @@ const wxChar *wxDateTime::ParseDate(const wxChar *date)
                 }
                 else // may be either day or year
                 {
-                    wxDateTime_t maxDays = haveMon
+                    wxDateTime_t maxDays = (wxDateTime_t)(
+                        haveMon
                         ? GetNumOfDaysInMonth(haveYear ? year : Inv_Year, mon)
-                        : 31;
+                        : 31
+                    );
 
                     // can it be day?
                     if ( (val == 0) || (val > (unsigned long)maxDays) )
@@ -3515,7 +3521,7 @@ const wxChar *wxDateTime::ParseDate(const wxChar *date)
                     {
                         // no need to check in month range as always < 12, but
                         // the days are counted from 1 unlike the months
-                        day = (wxDateTime_t)mon + 1;
+                        day = (wxDateTime_t)(mon + 1);
                         haveDay = true;
                     }
                     else
@@ -3637,7 +3643,7 @@ const wxChar *wxDateTime::ParseDate(const wxChar *date)
                 // we're in the current year then
                 if ( (year > 0) && (year <= (int)GetNumOfDaysInMonth(Inv_Year, mon)) )
                 {
-                    day = year;
+                    day = (wxDateTime_t)year;
 
                     haveMon = true;
                     haveYear = false;
@@ -4026,7 +4032,7 @@ void wxDateTimeHolidayAuthority::AddAuthority(wxDateTimeHolidayAuthority *auth)
 
 wxDateTimeHolidayAuthority::~wxDateTimeHolidayAuthority()
 {
-    // nothing to do here
+    // required here for Darwin
 }
 
 // ----------------------------------------------------------------------------