Native PalmOS wxLongLong. Introduction of wxULongLong_t due to 'unsigned' not working on internally typedefed wxLongLong_t (both unsigned wxLongLong_t and wxULongLong_t should work for other platforms). Improvements in wxDatePicker control on PalmOS.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32092 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Włodzimierz Skiba
2005-02-16 09:35:31 +00:00
parent b734b2cafa
commit 6058220154
6 changed files with 63 additions and 28 deletions

View 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

View 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
};

View 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)
};