]> git.saurik.com Git - wxWidgets.git/commitdiff
Native PalmOS wxLongLong. Introduction of wxULongLong_t due to 'unsigned' not working...
authorWłodzimierz Skiba <abx@abx.art.pl>
Wed, 16 Feb 2005 09:35:31 +0000 (09:35 +0000)
committerWłodzimierz Skiba <abx@abx.art.pl>
Wed, 16 Feb 2005 09:35:31 +0000 (09:35 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32092 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/defs.h
include/wx/longlong.h
include/wx/palmos/datectrl.h
src/common/longlong.cpp
src/common/stopwatch.cpp
src/palmos/datectrl.cpp

index 71ec108a5391f77b342a70b5a0d626d0f9fb4ea6..5200bf4e44b3e34e433c3161a5a767a89a06e783 100644 (file)
@@ -849,10 +849,11 @@ inline void *wxUIntToPtr(wxUIntPtr p)
 
 /*  64 bit */
 
-/*  NB: we #define and not typedef wxLongLong_t because we want to be able to */
-/*      use 'unsigned wxLongLong_t' as well and because we use "#ifdef */
+/*  NB: we #define and not typedef wxLongLong_t because we use "#ifdef */
 /*      wxLongLong_t" in wx/longlong.h */
 
+/*      wxULongLong_t is set later (usually to unsigned wxLongLong_t) */
+
 /*  to avoid compilation problems on 64bit machines with ambiguous method calls */
 /*  we will need to define this */
 #undef wxLongLongIsLong
@@ -864,6 +865,10 @@ inline void *wxUIntToPtr(wxUIntPtr p)
     #define wxLongLongSuffix l
     #define wxLongLongFmtSpec _T("l")
     #define wxLongLongIsLong
+#elif defined(__WXPALMOS__)
+    #define wxLongLong_t int64_t
+    #define wxLongLongSuffix ll
+    #define wxLongLongFmtSpec _T("ll")
 #elif (defined(__VISUALC__) && defined(__WIN32__))
     #define wxLongLong_t __int64
     #define wxLongLongSuffix i64
@@ -904,12 +909,19 @@ inline void *wxUIntToPtr(wxUIntPtr p)
 
 
 #ifdef wxLongLong_t
+
+    #ifdef __WXPALMOS__
+        #define wxULongLong_t uint64_t
+    #else
+        #define wxULongLong_t unsigned wxLongLong_t
+    #endif
+
     /*  these macros allow to definea 64 bit constants in a portable way */
     #define wxLL(x) wxCONCAT(x, wxLongLongSuffix)
     #define wxULL(x) wxCONCAT(x, wxCONCAT(u, wxLongLongSuffix))
 
     typedef wxLongLong_t wxInt64;
-    typedef unsigned wxLongLong_t wxUint64;
+    typedef wxULongLong_t wxUint64;
 #endif
 
 
index 62d28c53c327ee3bdabb254f5ee8387bc02e1198..5670a66fab343e250545fa229a55ba15ef407759 100644 (file)
@@ -320,13 +320,13 @@ public:
         // default ctor initializes to 0
     wxULongLongNative() : m_ll(0) { }
         // from long long
-    wxULongLongNative(unsigned wxLongLong_t ll) : m_ll(ll) { }
+    wxULongLongNative(wxULongLong_t ll) : m_ll(ll) { }
         // from 2 longs
     wxULongLongNative(unsigned long hi, unsigned long lo) : m_ll(0)
     {
         // assign first to avoid precision loss!
-        m_ll = ((unsigned wxLongLong_t) hi) << 32;
-        m_ll |= (unsigned wxLongLong_t) lo;
+        m_ll = ((wxULongLong_t) hi) << 32;
+        m_ll |= (wxULongLong_t) lo;
     }
 
     // default copy ctor is ok
@@ -335,7 +335,7 @@ public:
 
     // assignment operators
         // from native 64 bit integer
-    wxULongLongNative& operator=(unsigned wxLongLong_t ll)
+    wxULongLongNative& operator=(wxULongLong_t ll)
         { m_ll = ll; return *this; }
 
     // assignment operators from wxULongLongNative is ok
@@ -349,7 +349,7 @@ public:
         { return (unsigned long)m_ll; }
 
         // convert to native ulong long
-    unsigned wxLongLong_t GetValue() const { return m_ll; }
+    wxULongLong_t GetValue() const { return m_ll; }
 
         // convert to ulong with range checking in the debug mode (only!)
     unsigned long ToULong() const
@@ -367,9 +367,9 @@ public:
     wxULongLongNative& operator+=(const wxULongLongNative& ll)
         { m_ll += ll.m_ll; return *this; }
 
-    wxULongLongNative operator+(const unsigned wxLongLong_t ll) const
+    wxULongLongNative operator+(const wxULongLong_t ll) const
         { return wxULongLongNative(m_ll + ll); }
-    wxULongLongNative& operator+=(const unsigned wxLongLong_t ll)
+    wxULongLongNative& operator+=(const wxULongLong_t ll)
         { m_ll += ll; return *this; }
 
         // pre increment
@@ -386,9 +386,9 @@ public:
     wxULongLongNative& operator-=(const wxULongLongNative& ll)
         { m_ll -= ll.m_ll; return *this; }
 
-    wxULongLongNative operator-(const unsigned wxLongLong_t ll) const
+    wxULongLongNative operator-(const wxULongLong_t ll) const
         { return wxULongLongNative(m_ll - ll); }
-    wxULongLongNative& operator-=(const unsigned wxLongLong_t ll)
+    wxULongLongNative& operator-=(const wxULongLong_t ll)
         { m_ll -= ll; return *this; }
 
         // pre decrement
@@ -496,7 +496,7 @@ public:
     wxString& operator<<(wxString&, const wxULongLongNative&);
 
 private:
-    unsigned wxLongLong_t  m_ll;
+    wxULongLong_t  m_ll;
 };
 
 #endif // wxUSE_LONGLONG_NATIVE
@@ -889,7 +889,7 @@ private:
         wxASSERT( (m_ll >> 32) == m_hi && (unsigned long)m_ll == m_lo );
     }
 
-    unsigned wxLongLong_t m_ll;
+    wxULongLong_t m_ll;
 #endif // wxLONGLONG_TEST_MODE
 };
 
index cac08bbaabca095c5285b330626afdf4f7b0d120..d6e935fe350d0ae171da4f44548f861c63170e26 100644 (file)
@@ -20,7 +20,7 @@ class WXDLLIMPEXP_ADV wxDatePickerCtrl : public wxDatePickerCtrlBase
 {
 public:
     // ctors
-    wxDatePickerCtrl() { }
+    wxDatePickerCtrl() { Init(); }
 
     wxDatePickerCtrl(wxWindow *parent,
                      wxWindowID id,
@@ -31,6 +31,7 @@ public:
                      const wxValidator& validator = wxDefaultValidator,
                      const wxString& name = wxDatePickerCtrlNameStr)
     {
+        Init();
         Create(parent, id, dt, pos, size, style, validator, name);
     }
 
@@ -59,6 +60,11 @@ public:
 protected:
     virtual wxSize DoGetBestSize() const;
 
+private:
+    wxDateTime m_dt;
+
+    void Init() { m_dt = wxDateTime::Today(); }
+
     DECLARE_NO_COPY_CLASS(wxDatePickerCtrl)
 };
 
index 80fc379374a5decf177810884518f3d0e0f35679..62afbf79a4dc92e3a00d6218d025376015cb2762 100644 (file)
@@ -751,7 +751,7 @@ wxULongLongWx& wxULongLongWx::operator*=(const wxULongLongWx& ll)
     m_hi = m_lo = 0;
 
 #ifdef wxLONGLONG_TEST_MODE
-    unsigned wxLongLong_t llOld = m_ll;
+    wxULongLong_t llOld = m_ll;
     m_ll = 0;
 #endif // wxLONGLONG_TEST_MODE
 
index ddf2f994a1b90fadff6034c1acec5bd6bce5e50b..236dc5aa67b766cc46426e54cf4a06c23d4194d3 100644 (file)
@@ -240,7 +240,19 @@ wxLongLong wxGetLocalTimeMillis()
     // If possible, use a function which avoids conversions from
     // broken-up time structures to milliseconds
 
-#if defined(__WXMSW__) && (defined(__WINE__) || defined(__MWERKS__))
+#if defined(__WXPALMOS__)
+    DateTimeType thenst;
+    thenst.second  = 0;
+    thenst.minute  = 0;
+    thenst.hour    = 0;
+    thenst.day     = 1;
+    thenst.month   = 1;
+    thenst.year    = 1970;
+    thenst.weekDay = 5;
+    uint32_t now = TimGetSeconds();
+    uint32_t then = TimDateTimeToSeconds (&thenst);
+    return SysTimeToMilliSecs(SysTimeInSecs(now - then));
+#elif defined(__WXMSW__) && (defined(__WINE__) || defined(__MWERKS__))
     // This should probably be the way all WXMSW compilers should do it
     // Go direct to the OS for time
 
index c453c8ac61a93d559d6671dcd8b7a7c7d174ccdc..d64848becafded6e0b60a875557e6060bd211bde 100644 (file)
@@ -59,7 +59,10 @@ bool wxDatePickerCtrl::Create(wxWindow *parent,
     wxString label;
 
     if ( dt.IsValid() )
+    {
         label = dt.FormatDate();
+        m_dt = dt;
+    }
 
     if(!wxControl::PalmCreateControl(selectorTriggerCtl, label, pos, size))
         return false;
@@ -83,16 +86,14 @@ wxSize wxDatePickerCtrl::DoGetBestSize() const
 void wxDatePickerCtrl::SetValue(const wxDateTime& dt)
 {
     if ( dt.IsValid() )
-        SetLabel(dt.FormatDate());
-    else
-        SetLabel(wxEmptyString);
+        m_dt = dt;
+
+    SetLabel(m_dt.FormatDate());
 }
 
 wxDateTime wxDatePickerCtrl::GetValue() const
 {
-    wxDateTime dt;
-    // TODO
-    return dt;
+    return m_dt;
 }
 
 void wxDatePickerCtrl::SetRange(const wxDateTime& dt1, const wxDateTime& dt2)
@@ -112,12 +113,16 @@ bool wxDatePickerCtrl::GetRange(wxDateTime *dt1, wxDateTime *dt2) const
 
 bool wxDatePickerCtrl::SendClickEvent()
 {
-    wxDateTime dt(wxDateTime::Today());
-    int16_t month = dt.GetMonth();
-    int16_t day = dt.GetDay();
-    int16_t year = dt.GetYear();
+    int16_t month = m_dt.GetMonth();
+    int16_t day = m_dt.GetDay();
+    int16_t year = m_dt.GetYear();
 
-    if(SelectDay(selectDayByMonth,&month,&day,&year,_T("Pick date")));
+    if(!SelectDay(selectDayByDay,&month,&day,&year,_T("Pick date")))
+        return false;
+    wxDateTime dt(m_dt);
+    dt.Set((wxDateTime::wxDateTime_t)day, (wxDateTime::Month)month, (int)year);
+    SetValue(dt);
+    return true;
 }
 
 #endif // wxUSE_DATEPICKCTRL