X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/18c9aebecad12ff04a971d803acbeb291fbc4ea6..27c78e4552aaefac9a4db0d4453eff09cdfef2ad:/src/common/datetime.cpp diff --git a/src/common/datetime.cpp b/src/common/datetime.cpp index d3e20b66d5..282fde1bae 100644 --- a/src/common/datetime.cpp +++ b/src/common/datetime.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: wx/datetime.h +// Name: src/common/datetime.cpp // Purpose: implementation of time/date related classes // Author: Vadim Zeitlin // Modified by: @@ -56,10 +56,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "datetime.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -235,11 +231,14 @@ static const long MILLISECONDS_PER_DAY = 86400000l; // (i.e. JDN(Jan 1, 1970) = 2440587.5) static const long EPOCH_JDN = 2440587l; +// used only in asserts +#ifdef __WXDEBUG__ // the date of JDN -0.5 (as we don't work with fractional parts, this is the // reference date for us) is Nov 24, 4714BC static const int JDN_0_YEAR = -4713; static const int JDN_0_MONTH = wxDateTime::Nov; static const int JDN_0_DAY = 24; +#endif // __WXDEBUG__ // the constants used for JDN calculations static const long JDN_OFFSET = 32046l; @@ -393,9 +392,9 @@ static wxString CallStrftime(const wxChar *format, const tm* tm) #ifdef HAVE_STRPTIME -// glibc2 doesn't define this in the headers unless _XOPEN_SOURCE is defined -// which, unfortunately, wreaks havoc elsewhere -#if defined(__GLIBC__) && (__GLIBC__ == 2) +#if wxUSE_UNIX && !defined(HAVE_STRPTIME_DECL) + // configure detected that we had strptime() but not its declaration, + // provide it ourselves extern "C" char *strptime(const char *, const char *, struct tm *); #endif @@ -2374,23 +2373,23 @@ wxString wxDateTime::Format(const wxChar *format, const TimeZone& tz) const // find two strings not occurring in format (this is surely // not the optimal way of doing it... improvements welcome!) - wxString fmt = format; + wxString fmt2 = format; wxString replacement = (wxChar)-1; - while ( fmt.Find(replacement) != wxNOT_FOUND ) + while ( fmt2.Find(replacement) != wxNOT_FOUND ) { replacement << (wxChar)-1; } wxString replacement2 = (wxChar)-2; - while ( fmt.Find(replacement) != wxNOT_FOUND ) + while ( fmt2.Find(replacement) != wxNOT_FOUND ) { replacement << (wxChar)-2; } // replace all occurrences of year with it - bool wasReplaced = fmt.Replace(strYear, replacement) > 0; + bool wasReplaced = fmt2.Replace(strYear, replacement) > 0; if ( !wasReplaced ) - wasReplaced = fmt.Replace(strYear2, replacement2) > 0; + wasReplaced = fmt2.Replace(strYear2, replacement2) > 0; // use strftime() to format the same date but in supported // year @@ -2844,7 +2843,7 @@ const wxChar *wxDateTime::ParseRfc822Date(const wxChar* date) p += tz.length(); } - + // make it minutes offset *= MIN_PER_HOUR; } @@ -3693,12 +3692,12 @@ const wxChar *wxDateTime::ParseDate(const wxChar *date) for ( size_t n = 0; n < WXSIZEOF(literalDates); n++ ) { - wxString date = wxGetTranslation(literalDates[n].str); - size_t len = date.length(); + const wxString dateStr = wxGetTranslation(literalDates[n].str); + size_t len = dateStr.length(); if ( wxStrlen(p) >= len ) { wxString str(p, len); - if ( str.CmpNoCase(date) == 0 ) + if ( str.CmpNoCase(dateStr) == 0 ) { // nothing can follow this, so stop here p += len; @@ -4281,7 +4280,7 @@ wxString wxTimeSpan::Format(const wxChar *format) const #include "wx/arrimpl.cpp" -WX_DEFINE_OBJARRAY(wxDateTimeArray); +WX_DEFINE_OBJARRAY(wxDateTimeArray) static int wxCMPFUNC_CONV wxDateTimeCompareFunc(wxDateTime **first, wxDateTime **second) @@ -4323,8 +4322,8 @@ wxDateTimeHolidayAuthority::GetHolidaysInRange(const wxDateTime& dtStart, holidays.Clear(); - size_t count = ms_authorities.size(); - for ( size_t nAuth = 0; nAuth < count; nAuth++ ) + const size_t countAuth = ms_authorities.size(); + for ( size_t nAuth = 0; nAuth < countAuth; nAuth++ ) { ms_authorities[nAuth]->DoGetHolidaysInRange(dtStart, dtEnd, hol);