projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
applied patch 1376506 - remove unneeded member variable from GTK wxRadioButton
[wxWidgets.git]
/
include
/
wx
/
longlong.h
diff --git
a/include/wx/longlong.h
b/include/wx/longlong.h
index 163a98abc1c23407f03a581902b4f1fdaea28e41..0fdf22973ab25d62e6c88932c991ac2043e4dcd5 100644
(file)
--- a/
include/wx/longlong.h
+++ b/
include/wx/longlong.h
@@
-7,16
+7,12
@@
// Created: 10.02.99
// RCS-ID: $Id$
// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
// Created: 10.02.99
// RCS-ID: $Id$
// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence: wxWi
dget
s licence
+// Licence: wxWi
ndow
s licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_LONGLONG_H
#define _WX_LONGLONG_H
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_LONGLONG_H
#define _WX_LONGLONG_H
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma interface "longlong.h"
-#endif
-
#include "wx/defs.h"
#include "wx/string.h"
#include "wx/defs.h"
#include "wx/string.h"
@@
-115,6
+111,9
@@
public:
m_ll = ((wxLongLong_t) hi) << 32;
m_ll |= (wxLongLong_t) lo;
}
m_ll = ((wxLongLong_t) hi) << 32;
m_ll |= (wxLongLong_t) lo;
}
+#if wxUSE_LONGLONG_WX
+ wxLongLongNative(wxLongLongWx ll);
+#endif
// default copy ctor is ok
// default copy ctor is ok
@@
-124,6
+123,10
@@
public:
// from native 64 bit integer
wxLongLongNative& operator=(wxLongLong_t ll)
{ m_ll = ll; return *this; }
// from native 64 bit integer
wxLongLongNative& operator=(wxLongLong_t ll)
{ m_ll = ll; return *this; }
+#if wxUSE_LONGLONG_WX
+ wxLongLongNative& operator=(wxLongLongWx ll);
+#endif
+
// from double: this one has an explicit name because otherwise we
// would have ambiguity with "ll = int" and also because we don't want
// from double: this one has an explicit name because otherwise we
// would have ambiguity with "ll = int" and also because we don't want
@@
-136,10
+139,10
@@
public:
// accessors
// get high part
long GetHi() const
// accessors
// get high part
long GetHi() const
- { return
(long)(
m_ll >> 32); }
+ { return
wx_truncate_cast(long,
m_ll >> 32); }
// get low part
unsigned long GetLo() const
// get low part
unsigned long GetLo() const
- { return
(unsigned long)m_ll
; }
+ { return
wx_truncate_cast(unsigned long, m_ll)
; }
// get absolute value
wxLongLongNative Abs() const { return wxLongLongNative(*this).Abs(); }
// get absolute value
wxLongLongNative Abs() const { return wxLongLongNative(*this).Abs(); }
@@
-148,15
+151,18
@@
public:
// convert to native long long
wxLongLong_t GetValue() const { return m_ll; }
// convert to native long long
wxLongLong_t GetValue() const { return m_ll; }
- // convert to long with range checking in
the
debug mode (only!)
+ // convert to long with range checking in debug mode (only!)
long ToLong() const
{
wxASSERT_MSG( (m_ll >= LONG_MIN) && (m_ll <= LONG_MAX),
_T("wxLongLong to long conversion loss of precision") );
long ToLong() const
{
wxASSERT_MSG( (m_ll >= LONG_MIN) && (m_ll <= LONG_MAX),
_T("wxLongLong to long conversion loss of precision") );
- return
(long)m_ll
;
+ return
wx_truncate_cast(long, m_ll)
;
}
}
+ // convert to double
+ double ToDouble() const { return wx_truncate_cast(double, m_ll); }
+
// don't provide implicit conversion to wxLongLong_t or we will have an
// ambiguity for all arithmetic operations
//operator wxLongLong_t() const { return m_ll; }
// don't provide implicit conversion to wxLongLong_t or we will have an
// ambiguity for all arithmetic operations
//operator wxLongLong_t() const { return m_ll; }
@@
-208,13
+214,13
@@
public:
// shifts
// left shift
wxLongLongNative operator<<(int shift) const
// shifts
// left shift
wxLongLongNative operator<<(int shift) const
- { return wxLongLongNative(m_ll << shift);
;
}
+ { return wxLongLongNative(m_ll << shift); }
wxLongLongNative& operator<<=(int shift)
{ m_ll <<= shift; return *this; }
// right shift
wxLongLongNative operator>>(int shift) const
wxLongLongNative& operator<<=(int shift)
{ m_ll <<= shift; return *this; }
// right shift
wxLongLongNative operator>>(int shift) const
- { return wxLongLongNative(m_ll >> shift);
;
}
+ { return wxLongLongNative(m_ll >> shift); }
wxLongLongNative& operator>>=(int shift)
{ m_ll >>= shift; return *this; }
wxLongLongNative& operator>>=(int shift)
{ m_ll >>= shift; return *this; }
@@
-294,9
+300,13
@@
public:
#if wxUSE_STD_IOSTREAM
// input/output
#if wxUSE_STD_IOSTREAM
// input/output
- friend wxSTD ostream& operator<<(wxSTD ostream&, const wxLongLongNative&);
+ friend WXDLLIMPEXP_BASE
+ wxSTD ostream& operator<<(wxSTD ostream&, const wxLongLongNative&);
#endif
#endif
+ friend WXDLLIMPEXP_BASE
+ wxString& operator<<(wxString&, const wxLongLongNative&);
+
private:
wxLongLong_t m_ll;
};
private:
wxLongLong_t m_ll;
};
@@
-309,13
+319,13
@@
public:
// default ctor initializes to 0
wxULongLongNative() : m_ll(0) { }
// from long long
// default ctor initializes to 0
wxULongLongNative() : m_ll(0) { }
// from long long
- wxULongLongNative(
unsigned wx
LongLong_t ll) : m_ll(ll) { }
+ wxULongLongNative(
wxU
LongLong_t ll) : m_ll(ll) { }
// from 2 longs
wxULongLongNative(unsigned long hi, unsigned long lo) : m_ll(0)
{
// assign first to avoid precision loss!
// from 2 longs
wxULongLongNative(unsigned long hi, unsigned long lo) : m_ll(0)
{
// assign first to avoid precision loss!
- m_ll = ((
unsigned wx
LongLong_t) hi) << 32;
- m_ll |= (
unsigned wx
LongLong_t) lo;
+ m_ll = ((
wxU
LongLong_t) hi) << 32;
+ m_ll |= (
wxU
LongLong_t) lo;
}
// default copy ctor is ok
}
// default copy ctor is ok
@@
-324,7
+334,7
@@
public:
// assignment operators
// from native 64 bit integer
// assignment operators
// from native 64 bit integer
- wxULongLongNative& operator=(
unsigned wx
LongLong_t ll)
+ wxULongLongNative& operator=(
wxU
LongLong_t ll)
{ m_ll = ll; return *this; }
// assignment operators from wxULongLongNative is ok
{ m_ll = ll; return *this; }
// assignment operators from wxULongLongNative is ok
@@
-332,21
+342,21
@@
public:
// accessors
// get high part
unsigned long GetHi() const
// accessors
// get high part
unsigned long GetHi() const
- { return
(unsigned long)(
m_ll >> 32); }
+ { return
wx_truncate_cast(unsigned long,
m_ll >> 32); }
// get low part
unsigned long GetLo() const
// get low part
unsigned long GetLo() const
- { return
(unsigned long)m_ll
; }
+ { return
wx_truncate_cast(unsigned long, m_ll)
; }
// convert to native ulong long
// convert to native ulong long
-
unsigned wx
LongLong_t GetValue() const { return m_ll; }
+
wxU
LongLong_t GetValue() const { return m_ll; }
- // convert to ulong with range checking in
the
debug mode (only!)
+ // convert to ulong with range checking in debug mode (only!)
unsigned long ToULong() const
{
wxASSERT_MSG( m_ll <= LONG_MAX,
_T("wxULongLong to long conversion loss of precision") );
unsigned long ToULong() const
{
wxASSERT_MSG( m_ll <= LONG_MAX,
_T("wxULongLong to long conversion loss of precision") );
- return
(unsigned long)m_ll
;
+ return
wx_truncate_cast(unsigned long, m_ll)
;
}
// operations
}
// operations
@@
-356,9
+366,9
@@
public:
wxULongLongNative& operator+=(const wxULongLongNative& ll)
{ m_ll += ll.m_ll; return *this; }
wxULongLongNative& operator+=(const wxULongLongNative& ll)
{ m_ll += ll.m_ll; return *this; }
- wxULongLongNative operator+(const
unsigned wx
LongLong_t ll) const
+ wxULongLongNative operator+(const
wxU
LongLong_t ll) const
{ return wxULongLongNative(m_ll + ll); }
{ return wxULongLongNative(m_ll + ll); }
- wxULongLongNative& operator+=(const
unsigned wx
LongLong_t ll)
+ wxULongLongNative& operator+=(const
wxU
LongLong_t ll)
{ m_ll += ll; return *this; }
// pre increment
{ m_ll += ll; return *this; }
// pre increment
@@
-375,9
+385,9
@@
public:
wxULongLongNative& operator-=(const wxULongLongNative& ll)
{ m_ll -= ll.m_ll; return *this; }
wxULongLongNative& operator-=(const wxULongLongNative& ll)
{ m_ll -= ll.m_ll; return *this; }
- wxULongLongNative operator-(const
unsigned wx
LongLong_t ll) const
+ wxULongLongNative operator-(const
wxU
LongLong_t ll) const
{ return wxULongLongNative(m_ll - ll); }
{ return wxULongLongNative(m_ll - ll); }
- wxULongLongNative& operator-=(const
unsigned wx
LongLong_t ll)
+ wxULongLongNative& operator-=(const
wxU
LongLong_t ll)
{ m_ll -= ll; return *this; }
// pre decrement
{ m_ll -= ll; return *this; }
// pre decrement
@@
-391,13
+401,13
@@
public:
// shifts
// left shift
wxULongLongNative operator<<(int shift) const
// shifts
// left shift
wxULongLongNative operator<<(int shift) const
- { return wxULongLongNative(m_ll << shift);
;
}
+ { return wxULongLongNative(m_ll << shift); }
wxULongLongNative& operator<<=(int shift)
{ m_ll <<= shift; return *this; }
// right shift
wxULongLongNative operator>>(int shift) const
wxULongLongNative& operator<<=(int shift)
{ m_ll <<= shift; return *this; }
// right shift
wxULongLongNative operator>>(int shift) const
- { return wxULongLongNative(m_ll >> shift);
;
}
+ { return wxULongLongNative(m_ll >> shift); }
wxULongLongNative& operator>>=(int shift)
{ m_ll >>= shift; return *this; }
wxULongLongNative& operator>>=(int shift)
{ m_ll >>= shift; return *this; }
@@
-477,11
+487,15
@@
public:
#if wxUSE_STD_IOSTREAM
// input/output
#if wxUSE_STD_IOSTREAM
// input/output
- friend wxSTD ostream& operator<<(wxSTD ostream&, const wxULongLongNative&);
+ friend WXDLLIMPEXP_BASE
+ wxSTD ostream& operator<<(wxSTD ostream&, const wxULongLongNative&);
#endif
#endif
+ friend WXDLLIMPEXP_BASE
+ wxString& operator<<(wxString&, const wxULongLongNative&);
+
private:
private:
-
unsigned wx
LongLong_t m_ll;
+
wxU
LongLong_t m_ll;
};
#endif // wxUSE_LONGLONG_NATIVE
};
#endif // wxUSE_LONGLONG_NATIVE
@@
-566,7
+580,7
@@
public:
return *this;
}
return *this;
}
- // convert to long with range checking in
the
debug mode (only!)
+ // convert to long with range checking in debug mode (only!)
long ToLong() const
{
wxASSERT_MSG( (m_hi == 0l) || (m_hi == -1l),
long ToLong() const
{
wxASSERT_MSG( (m_hi == 0l) || (m_hi == -1l),
@@
-575,6
+589,9
@@
public:
return (long)m_lo;
}
return (long)m_lo;
}
+ // convert to double
+ double ToDouble() const;
+
// operations
// addition
wxLongLongWx operator+(const wxLongLongWx& ll) const;
// operations
// addition
wxLongLongWx operator+(const wxLongLongWx& ll) const;
@@
-623,6
+640,10
@@
public:
// comparison
bool operator==(const wxLongLongWx& ll) const
{ return m_lo == ll.m_lo && m_hi == ll.m_hi; }
// comparison
bool operator==(const wxLongLongWx& ll) const
{ return m_lo == ll.m_lo && m_hi == ll.m_hi; }
+#if wxUSE_LONGLONG_NATIVE
+ bool operator==(const wxLongLongNative& ll) const
+ { return m_lo == ll.GetLo() && m_hi == ll.GetHi(); }
+#endif
bool operator!=(const wxLongLongWx& ll) const
{ return !(*this == ll); }
bool operator<(const wxLongLongWx& ll) const;
bool operator!=(const wxLongLongWx& ll) const
{ return !(*this == ll); }
bool operator<(const wxLongLongWx& ll) const;
@@
-665,9
+686,13
@@
public:
void *asArray() const;
#if wxUSE_STD_IOSTREAM
void *asArray() const;
#if wxUSE_STD_IOSTREAM
- friend wxSTD ostream& operator<<(wxSTD ostream&, const wxLongLongWx&);
+ friend WXDLLIMPEXP_BASE
+ wxSTD ostream& operator<<(wxSTD ostream&, const wxLongLongWx&);
#endif // wxUSE_STD_IOSTREAM
#endif // wxUSE_STD_IOSTREAM
+ friend WXDLLIMPEXP_BASE
+ wxString& operator<<(wxString&, const wxLongLongWx&);
+
private:
// long is at least 32 bits, so represent our 64bit number as 2 longs
private:
// long is at least 32 bits, so represent our 64bit number as 2 longs
@@
-717,6
+742,14
@@
public:
#endif // wxLONGLONG_TEST_MODE
}
#endif // wxLONGLONG_TEST_MODE
}
+ // from signed to unsigned
+ wxULongLongWx(wxLongLongWx ll)
+ {
+ wxASSERT(ll.GetHi() >= 0);
+ m_hi = (unsigned long)ll.GetHi();
+ m_lo = ll.GetLo();
+ }
+
// default copy ctor is ok in both cases
// no dtor
// default copy ctor is ok in both cases
// no dtor
@@
-745,7
+778,7
@@
public:
// get low part
unsigned long GetLo() const { return m_lo; }
// get low part
unsigned long GetLo() const { return m_lo; }
- // convert to long with range checking in
the
debug mode (only!)
+ // convert to long with range checking in debug mode (only!)
unsigned long ToULong() const
{
wxASSERT_MSG( m_hi == 0ul,
unsigned long ToULong() const
{
wxASSERT_MSG( m_hi == 0ul,
@@
-767,8
+800,8
@@
public:
// post increment operator
wxULongLongWx& operator++(int) { return ++(*this); }
// post increment operator
wxULongLongWx& operator++(int) { return ++(*this); }
- // sub
raction (FIXME: should return wxLongLong)
- wx
U
LongLongWx operator-(const wxULongLongWx& ll) const;
+ // sub
traction
+ wxLongLongWx operator-(const wxULongLongWx& ll) const;
wxULongLongWx& operator-=(const wxULongLongWx& ll);
// pre decrement operator
wxULongLongWx& operator-=(const wxULongLongWx& ll);
// pre decrement operator
@@
-839,9
+872,13
@@
public:
void *asArray() const;
#if wxUSE_STD_IOSTREAM
void *asArray() const;
#if wxUSE_STD_IOSTREAM
- friend wxSTD ostream& operator<<(wxSTD ostream&, const wxULongLongWx&);
+ friend WXDLLIMPEXP_BASE
+ wxSTD ostream& operator<<(wxSTD ostream&, const wxULongLongWx&);
#endif // wxUSE_STD_IOSTREAM
#endif // wxUSE_STD_IOSTREAM
+ friend WXDLLIMPEXP_BASE
+ wxString& operator<<(wxString&, const wxULongLongWx&);
+
private:
// long is at least 32 bits, so represent our 64bit number as 2 longs
private:
// long is at least 32 bits, so represent our 64bit number as 2 longs
@@
-854,7
+891,7
@@
private:
wxASSERT( (m_ll >> 32) == m_hi && (unsigned long)m_ll == m_lo );
}
wxASSERT( (m_ll >> 32) == m_hi && (unsigned long)m_ll == m_lo );
}
-
unsigned wx
LongLong_t m_ll;
+
wxU
LongLong_t m_ll;
#endif // wxLONGLONG_TEST_MODE
};
#endif // wxLONGLONG_TEST_MODE
};
@@
-886,10
+923,10
@@
inline bool operator!=(unsigned long l, const wxULongLong& ull) { return ull !=
inline wxULongLong operator+(unsigned long l, const wxULongLong& ull) { return ull + l; }
inline wxULongLong operator+(unsigned long l, const wxULongLong& ull) { return ull + l; }
-// FIXME: this should return wxLongLong
-inline wxULongLong operator-(unsigned long l, const wxULongLong& ull)
+inline wxLongLong operator-(unsigned long l, const wxULongLong& ull)
{
{
- return wxULongLong(l) - ull;
+ wxULongLong ret = wxULongLong(l) - ull;
+ return wxLongLong((long)ret.GetHi(),ret.GetLo());
}
#endif // _WX_LONGLONG_H
}
#endif // _WX_LONGLONG_H