Added implementation for wxLocaltime_r/wxGmtime_r.

Improved handling of windows compilers.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36438 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Neis 2005-12-18 19:24:11 +00:00
parent f107837e78
commit cf44a61c24
2 changed files with 36 additions and 0 deletions

View File

@ -57,15 +57,21 @@ class WXDLLIMPEXP_BASE wxDateSpan;
#define wxLocaltime_r localtime_r
#else
struct tm *wxLocaltime_r(const time_t*, struct tm*);
#if !defined(__WINDOWS__)
// On Windows, localtime _is_ threadsafe!
#warning using pseudo thread-safe wrapper for localtime to emulate localtime_r
#endif
#endif
#ifdef HAVE_GMTIME_R
#define wxGmtime_r gmtime_r
#else
struct tm *wxGmtime_r(const time_t*, struct tm*);
#if !defined(__WINDOWS__)
// On Windows, gmtime _is_ threadsafe!
#warning using pseudo thread-safe wrapper for gmtime to emulate gmtime_r
#endif
#endif
/*
The three (main) classes declared in this header represent:

View File

@ -169,6 +169,36 @@ wxCUSTOM_TYPE_INFO(wxDateTime, wxToStringConverter<wxDateTime> , wxFromStringCon
#endif
#endif // !WX_TIMEZONE && !WX_GMTOFF_IN_TM
#if wxUSE_THREADS
static wxMutex timeLock;
#endif
#ifndef HAVE_LOCALTIME_R
struct tm *wxLocaltime_r(const time_t* ticks, struct tm* temp)
{
#if wxUSE_THREADS && !defined(__WINDOWS__)
// No need to waste time with a mutex on windows since it's using
// thread local storage for localtime anyway.
wxMutexLocker(timeLock);
#endif
memcpy(temp, localtime(ticks), sizeof(struct tm));
return temp;
}
#endif
#ifndef HAVE_GMTIME_R
struct tm *wxGmtime_r(const time_t* ticks, struct tm* temp)
{
#if wxUSE_THREADS && !defined(__WINDOWS__)
// No need to waste time with a mutex on windows since it's
// using thread local storage for gmtime anyway.
wxMutexLocker(timeLock);
#endif
memcpy(temp, gmtime(ticks), sizeof(struct tm));
return temp;
}
#endif
// ----------------------------------------------------------------------------
// macros
// ----------------------------------------------------------------------------