]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/datetime.h
wxNotebook::HitTest() for wxMSW added (patch 748469)
[wxWidgets.git] / include / wx / datetime.h
index 9ea0f924b6e82bf9cc23aadebef3049580ed7356..c5cc70082697f5bf7dec8344faa4ec598274fe76 100644 (file)
@@ -7,7 +7,7 @@
 // Created:     10.02.99
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_DATETIME_H
@@ -26,9 +26,9 @@
 
 #include "wx/longlong.h"
 
-class WXDLLEXPORT wxDateTime;
-class WXDLLEXPORT wxTimeSpan;
-class WXDLLEXPORT wxDateSpan;
+class WXDLLIMPEXP_BASE wxDateTime;
+class WXDLLIMPEXP_BASE wxTimeSpan;
+class WXDLLIMPEXP_BASE wxDateSpan;
 
 // a hack: don't use inline functions in debug builds - we don't care about
 // performances and this only leads to increased rebuild time (because every
@@ -36,7 +36,7 @@ class WXDLLEXPORT wxDateSpan;
 // rebuilt)
 
 // For Mingw32, causes a link error. (VZ: why?)
-#if defined( __WXDEBUG__) && !defined(__MINGW32__) && !defined(_MSC_VER)
+#if defined( __WXDEBUG__) && !defined(__MINGW32__) && !(defined(_MSC_VER) && wxUSE_ACCESSIBILITY)
     #define wxDATETIME_DONT_INLINE
 
     #undef inline
@@ -50,15 +50,11 @@ class WXDLLEXPORT wxDateSpan;
 // set this to the corresponding value in seconds 1/1/1970 has on your
 // systems c-runtime
 
-#ifdef __WXMAC__
-#if __MSL__ < 0x6000
+#if defined(__WXMAC__) && !defined(__DARWIN__) && __MSL__ < 0x6000
     #define WX_TIME_BASE_OFFSET ( 2082844800L + 126144000L )
 #else
     #define WX_TIME_BASE_OFFSET 0
 #endif
-#else
-    #define WX_TIME_BASE_OFFSET 0
-#endif
 /*
  * TODO
  *
@@ -121,16 +117,16 @@ class WXDLLEXPORT wxDateSpan;
 // argument for arguments of type wxDateTime; it is also returned by all
 // functions returning wxDateTime on failure (this is why it is also called
 // wxInvalidDateTime)
-class WXDLLEXPORT wxDateTime;
+class WXDLLIMPEXP_BASE wxDateTime;
 
-WXDLLEXPORT_DATA(extern const wxDateTime) wxDefaultDateTime;
+extern WXDLLIMPEXP_DATA_BASE(const wxDateTime) wxDefaultDateTime;
 #define wxInvalidDateTime wxDefaultDateTime
 
 // ----------------------------------------------------------------------------
 // wxDateTime represents an absolute moment in the time
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDateTime
+class WXDLLIMPEXP_BASE wxDateTime
 {
 public:
     // types
@@ -402,7 +398,7 @@ public:
 
         // a class representing a time zone: basicly, this is just an offset
         // (in seconds) from GMT
-    class WXDLLEXPORT TimeZone
+    class WXDLLIMPEXP_BASE TimeZone
     {
     public:
         TimeZone(TZ tz);
@@ -422,7 +418,7 @@ public:
         // NB: this struct should always be kept normalized (i.e. mon should
         //     be < 12, 1 <= day <= 31 &c), so use AddMonths(), AddDays()
         //     instead of modifying the member fields directly!
-    struct WXDLLEXPORT Tm
+    struct WXDLLIMPEXP_BASE Tm
     {
         wxDateTime_t msec, sec, min, hour, mday;
         Month mon;
@@ -1009,7 +1005,7 @@ private:
 // objects of that class. See also wxDateSpan.
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxTimeSpan
+class WXDLLIMPEXP_BASE wxTimeSpan
 {
 public:
     // constructors
@@ -1189,7 +1185,7 @@ private:
 // associated with those.
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDateSpan
+class WXDLLIMPEXP_BASE wxDateSpan
 {
 public:
     // constructors
@@ -1291,7 +1287,7 @@ private:
 
 #include "wx/dynarray.h"
 
-WX_DECLARE_EXPORTED_OBJARRAY(wxDateTime, wxDateTimeArray);
+WX_DECLARE_USER_EXPORTED_OBJARRAY(wxDateTime, wxDateTimeArray, WXDLLIMPEXP_BASE);
 
 // ----------------------------------------------------------------------------
 // wxDateTimeHolidayAuthority: an object of this class will decide whether a
@@ -1302,11 +1298,13 @@ WX_DECLARE_EXPORTED_OBJARRAY(wxDateTime, wxDateTimeArray);
 //     virtual methods to work with the holidays they correspond to.
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDateTimeHolidayAuthority;
-WX_DEFINE_EXPORTED_ARRAY(wxDateTimeHolidayAuthority *, wxHolidayAuthoritiesArray);
+class WXDLLIMPEXP_BASE wxDateTimeHolidayAuthority;
+WX_DEFINE_USER_EXPORTED_ARRAY(wxDateTimeHolidayAuthority *,
+                              wxHolidayAuthoritiesArray,
+                              class WXDLLIMPEXP_BASE);
 
 class wxDateTimeHolidaysModule;
-class WXDLLEXPORT wxDateTimeHolidayAuthority
+class WXDLLIMPEXP_BASE wxDateTimeHolidayAuthority
 {
 friend class wxDateTimeHolidaysModule;
 public:
@@ -1326,6 +1324,9 @@ public:
     // wxDateTimeHolidayAuthority)
     static void AddAuthority(wxDateTimeHolidayAuthority *auth);
 
+    // the base class must have a virtual dtor
+    virtual ~wxDateTimeHolidayAuthority();
+
 protected:
     // this function is called to determine whether a given day is a holiday
     virtual bool DoIsHoliday(const wxDateTime& dt) const = 0;
@@ -1348,7 +1349,7 @@ private:
 };
 
 // the holidays for this class are all Saturdays and Sundays
-class WXDLLEXPORT wxDateTimeWorkDays : public wxDateTimeHolidayAuthority
+class WXDLLIMPEXP_BASE wxDateTimeWorkDays : public wxDateTimeHolidayAuthority
 {
 protected:
     virtual bool DoIsHoliday(const wxDateTime& dt) const;
@@ -1389,31 +1390,31 @@ protected:
 
 // no need to check for validity - the member functions we call will do it
 
-inline wxDateTime WXDLLEXPORT operator+(const wxDateTime& dt,
+inline wxDateTime WXDLLIMPEXP_BASE operator+(const wxDateTime& dt,
                                         const wxTimeSpan& ts)
 {
     return dt.Add(ts);
 }
 
-inline wxDateTime WXDLLEXPORT operator-(const wxDateTime& dt,
+inline wxDateTime WXDLLIMPEXP_BASE operator-(const wxDateTime& dt,
                                         const wxTimeSpan& ts)
 {
     return dt.Subtract(ts);
 }
 
-inline wxDateTime WXDLLEXPORT operator+(const wxDateTime& dt,
+inline wxDateTime WXDLLIMPEXP_BASE operator+(const wxDateTime& dt,
                                         const wxDateSpan& ds)
 {
     return dt.Add(ds);
 }
 
-inline wxDateTime WXDLLEXPORT operator-(const wxDateTime& dt,
+inline wxDateTime WXDLLIMPEXP_BASE operator-(const wxDateTime& dt,
                                         const wxDateSpan& ds)
 {
     return dt.Subtract(ds);
 }
 
-inline wxTimeSpan WXDLLEXPORT operator-(const wxDateTime& dt1,
+inline wxTimeSpan WXDLLIMPEXP_BASE operator-(const wxDateTime& dt1,
                                         const wxDateTime& dt2)
 {
     return dt1.Subtract(dt2);
@@ -1422,42 +1423,42 @@ inline wxTimeSpan WXDLLEXPORT operator-(const wxDateTime& dt1,
 // comparison
 // ----------
 
-inline bool WXDLLEXPORT operator<(const wxDateTime& t1, const wxDateTime& t2)
+inline bool WXDLLIMPEXP_BASE operator<(const wxDateTime& t1, const wxDateTime& t2)
 {
     wxASSERT_MSG( t1.IsValid() && t2.IsValid(), _T("invalid wxDateTime") );
 
     return t1.GetValue() < t2.GetValue();
 }
 
-inline bool WXDLLEXPORT operator<=(const wxDateTime& t1, const wxDateTime& t2)
+inline bool WXDLLIMPEXP_BASE operator<=(const wxDateTime& t1, const wxDateTime& t2)
 {
     wxASSERT_MSG( t1.IsValid() && t2.IsValid(), _T("invalid wxDateTime") );
 
     return t1.GetValue() <= t2.GetValue();
 }
 
-inline bool WXDLLEXPORT operator>(const wxDateTime& t1, const wxDateTime& t2)
+inline bool WXDLLIMPEXP_BASE operator>(const wxDateTime& t1, const wxDateTime& t2)
 {
     wxASSERT_MSG( t1.IsValid() && t2.IsValid(), _T("invalid wxDateTime") );
 
     return t1.GetValue() > t2.GetValue();
 }
 
-inline bool WXDLLEXPORT operator>=(const wxDateTime& t1, const wxDateTime& t2)
+inline bool WXDLLIMPEXP_BASE operator>=(const wxDateTime& t1, const wxDateTime& t2)
 {
     wxASSERT_MSG( t1.IsValid() && t2.IsValid(), _T("invalid wxDateTime") );
 
     return t1.GetValue() >= t2.GetValue();
 }
 
-inline bool WXDLLEXPORT operator==(const wxDateTime& t1, const wxDateTime& t2)
+inline bool WXDLLIMPEXP_BASE operator==(const wxDateTime& t1, const wxDateTime& t2)
 {
     wxASSERT_MSG( t1.IsValid() && t2.IsValid(), _T("invalid wxDateTime") );
 
     return t1.GetValue() == t2.GetValue();
 }
 
-inline bool WXDLLEXPORT operator!=(const wxDateTime& t1, const wxDateTime& t2)
+inline bool WXDLLIMPEXP_BASE operator!=(const wxDateTime& t1, const wxDateTime& t2)
 {
     wxASSERT_MSG( t1.IsValid() && t2.IsValid(), _T("invalid wxDateTime") );
 
@@ -1471,24 +1472,24 @@ inline bool WXDLLEXPORT operator!=(const wxDateTime& t1, const wxDateTime& t2)
 // arithmetics
 // -----------
 
-inline wxTimeSpan WXDLLEXPORT operator+(const wxTimeSpan& ts1,
+inline wxTimeSpan WXDLLIMPEXP_BASE operator+(const wxTimeSpan& ts1,
                                         const wxTimeSpan& ts2)
 {
     return wxTimeSpan(ts1.GetValue() + ts2.GetValue());
 }
 
-inline wxTimeSpan WXDLLEXPORT operator-(const wxTimeSpan& ts1,
+inline wxTimeSpan WXDLLIMPEXP_BASE operator-(const wxTimeSpan& ts1,
                                         const wxTimeSpan& ts2)
 {
     return wxTimeSpan(ts1.GetValue() - ts2.GetValue());
 }
 
-inline wxTimeSpan WXDLLEXPORT operator*(const wxTimeSpan& ts, int n)
+inline wxTimeSpan WXDLLIMPEXP_BASE operator*(const wxTimeSpan& ts, int n)
 {
     return wxTimeSpan(ts).Multiply(n);
 }
 
-inline wxTimeSpan WXDLLEXPORT operator*(int n, const wxTimeSpan& ts)
+inline wxTimeSpan WXDLLIMPEXP_BASE operator*(int n, const wxTimeSpan& ts)
 {
     return wxTimeSpan(ts).Multiply(n);
 }
@@ -1496,32 +1497,32 @@ inline wxTimeSpan WXDLLEXPORT operator*(int n, const wxTimeSpan& ts)
 // comparison
 // ----------
 
-inline bool WXDLLEXPORT operator<(const wxTimeSpan &t1, const wxTimeSpan &t2)
+inline bool WXDLLIMPEXP_BASE operator<(const wxTimeSpan &t1, const wxTimeSpan &t2)
 {
     return t1.GetValue() < t2.GetValue();
 }
 
-inline bool WXDLLEXPORT operator<=(const wxTimeSpan &t1, const wxTimeSpan &t2)
+inline bool WXDLLIMPEXP_BASE operator<=(const wxTimeSpan &t1, const wxTimeSpan &t2)
 {
     return t1.GetValue() <= t2.GetValue();
 }
 
-inline bool WXDLLEXPORT operator>(const wxTimeSpan &t1, const wxTimeSpan &t2)
+inline bool WXDLLIMPEXP_BASE operator>(const wxTimeSpan &t1, const wxTimeSpan &t2)
 {
     return t1.GetValue() > t2.GetValue();
 }
 
-inline bool WXDLLEXPORT operator>=(const wxTimeSpan &t1, const wxTimeSpan &t2)
+inline bool WXDLLIMPEXP_BASE operator>=(const wxTimeSpan &t1, const wxTimeSpan &t2)
 {
     return t1.GetValue() >= t2.GetValue();
 }
 
-inline bool WXDLLEXPORT operator==(const wxTimeSpan &t1, const wxTimeSpan &t2)
+inline bool WXDLLIMPEXP_BASE operator==(const wxTimeSpan &t1, const wxTimeSpan &t2)
 {
     return t1.GetValue() == t2.GetValue();
 }
 
-inline bool WXDLLEXPORT operator!=(const wxTimeSpan &t1, const wxTimeSpan &t2)
+inline bool WXDLLIMPEXP_BASE operator!=(const wxTimeSpan &t1, const wxTimeSpan &t2)
 {
     return t1.GetValue() != t2.GetValue();
 }
@@ -1534,7 +1535,7 @@ inline bool WXDLLEXPORT operator!=(const wxTimeSpan &t1, const wxTimeSpan &t2)
 // ----------
 
 // ds1 == d2 if and only if for every wxDateTime t t + ds1 == t + ds2
-inline WXDLLEXPORT bool operator==(const wxDateSpan& ds1,
+inline WXDLLIMPEXP_BASE bool operator==(const wxDateSpan& ds1,
                                    const wxDateSpan& ds2)
 {
     return ds1.GetYears() == ds2.GetYears() &&
@@ -1542,7 +1543,7 @@ inline WXDLLEXPORT bool operator==(const wxDateSpan& ds1,
            ds1.GetTotalDays() == ds2.GetTotalDays();
 }
 
-inline WXDLLEXPORT bool operator!=(const wxDateSpan& ds1,
+inline WXDLLIMPEXP_BASE bool operator!=(const wxDateSpan& ds1,
                                    const wxDateSpan& ds2)
 {
   return !(ds1 == ds2);
@@ -1551,7 +1552,7 @@ inline WXDLLEXPORT bool operator!=(const wxDateSpan& ds1,
 // arithmetics
 // -----------
 
-inline WXDLLEXPORT wxDateSpan operator+(const wxDateSpan& ds1,
+inline WXDLLIMPEXP_BASE wxDateSpan operator+(const wxDateSpan& ds1,
                                         const wxDateSpan& ds2)
 {
     return wxDateSpan(ds1.GetYears() + ds2.GetYears(),
@@ -1560,7 +1561,7 @@ inline WXDLLEXPORT wxDateSpan operator+(const wxDateSpan& ds1,
                       ds1.GetDays() + ds2.GetDays());
 }
 
-inline WXDLLEXPORT wxDateSpan operator-(const wxDateSpan& ds1,
+inline WXDLLIMPEXP_BASE wxDateSpan operator-(const wxDateSpan& ds1,
                                         const wxDateSpan& ds2)
 {
     return wxDateSpan(ds1.GetYears() - ds2.GetYears(),
@@ -1569,12 +1570,12 @@ inline WXDLLEXPORT wxDateSpan operator-(const wxDateSpan& ds1,
                       ds1.GetDays() - ds2.GetDays());
 }
 
-inline WXDLLEXPORT wxDateSpan operator*(const wxDateSpan& ds, int n)
+inline WXDLLIMPEXP_BASE wxDateSpan operator*(const wxDateSpan& ds, int n)
 {
     return wxDateSpan(ds).Multiply(n);
 }
 
-inline WXDLLEXPORT wxDateSpan operator*(int n, const wxDateSpan& ds)
+inline WXDLLIMPEXP_BASE wxDateSpan operator*(int n, const wxDateSpan& ds)
 {
     return wxDateSpan(ds).Multiply(n);
 }
@@ -1589,7 +1590,7 @@ inline WXDLLEXPORT wxDateSpan operator*(int n, const wxDateSpan& ds)
 //  for ( m = wxDateTime::Jan; m < wxDateTime::Inv_Month; wxNextMonth(m) )
 // ----------------------------------------------------------------------------
 
-inline WXDLLEXPORT void wxNextMonth(wxDateTime::Month& m)
+inline WXDLLIMPEXP_BASE void wxNextMonth(wxDateTime::Month& m)
 {
     wxASSERT_MSG( m < wxDateTime::Inv_Month, _T("invalid month") );
 
@@ -1597,7 +1598,7 @@ inline WXDLLEXPORT void wxNextMonth(wxDateTime::Month& m)
     m = (wxDateTime::Month)(m + 1);
 }
 
-inline WXDLLEXPORT void wxPrevMonth(wxDateTime::Month& m)
+inline WXDLLIMPEXP_BASE void wxPrevMonth(wxDateTime::Month& m)
 {
     wxASSERT_MSG( m < wxDateTime::Inv_Month, _T("invalid month") );
 
@@ -1605,7 +1606,7 @@ inline WXDLLEXPORT void wxPrevMonth(wxDateTime::Month& m)
                              : (wxDateTime::Month)(m - 1);
 }
 
-inline WXDLLEXPORT void wxNextWDay(wxDateTime::WeekDay& wd)
+inline WXDLLIMPEXP_BASE void wxNextWDay(wxDateTime::WeekDay& wd)
 {
     wxASSERT_MSG( wd < wxDateTime::Inv_WeekDay, _T("invalid week day") );
 
@@ -1613,7 +1614,7 @@ inline WXDLLEXPORT void wxNextWDay(wxDateTime::WeekDay& wd)
     wd = (wxDateTime::WeekDay)(wd + 1);
 }
 
-inline WXDLLEXPORT void wxPrevWDay(wxDateTime::WeekDay& wd)
+inline WXDLLIMPEXP_BASE void wxPrevWDay(wxDateTime::WeekDay& wd)
 {
     wxASSERT_MSG( wd < wxDateTime::Inv_WeekDay, _T("invalid week day") );