From c5e8b33639ce37dffc19505fd78ce74e1b465a4d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 25 Mar 2009 00:44:25 +0000 Subject: [PATCH] compilation fixes for wxAnyStrPtr for VC6 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59824 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/anystr.h | 14 ++++++++++++++ include/wx/datetime.h | 19 ++++++++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/include/wx/anystr.h b/include/wx/anystr.h index f816745625..029e5095cf 100644 --- a/include/wx/anystr.h +++ b/include/wx/anystr.h @@ -61,6 +61,11 @@ public: // different conversions to pointers) operator bool() const { return m_str != NULL; } +#ifdef __VISUALC6__ + // FIXME-VC6: it also needs this one or it complains about ambiguity + bool operator!() const { return !((bool)*this); } +#endif // __VISUALC6__ + // and these are the conversions operator which allow to assign the result // of FuncReturningAnyStrPtr() to either char* or wxChar* (i.e. wchar_t*) @@ -132,5 +137,14 @@ private: wxDECLARE_NO_ASSIGN_CLASS(wxAnyStrPtr); }; +// FIXME-VC6: expressions involving logical operations are not compiled +// correctly without these operators +#ifdef __VISUALC6__ + inline bool operator||(const wxAnyStrPtr& p, bool v) { return (bool)p || v; } + inline bool operator||(bool v, const wxAnyStrPtr& p) { return v || (bool)p; } + inline bool operator&&(const wxAnyStrPtr& p, bool v) { return (bool)p && v; } + inline bool operator&&(bool v, const wxAnyStrPtr& p) { return v && (bool)p; } +#endif // __VISUALC6__ + #endif // _WX_ANYSTR_H_ diff --git a/include/wx/datetime.h b/include/wx/datetime.h index b7df66ae9b..5b26a830a0 100644 --- a/include/wx/datetime.h +++ b/include/wx/datetime.h @@ -1136,21 +1136,34 @@ public: // provide compatibility overloads for them bool ParseISODate(const wxString& date) { + // FIXME-VC6: notice that writing "return ParseFormat() && ..." crashes + // VC6 with internal compiler error so don't attempt to + // simplify this code like this + wxString::const_iterator end; - return ParseFormat(date, wxS("%Y-%m-%d"), &end) && end == date.end(); + if ( !ParseFormat(date, wxS("%Y-%m-%d"), &end) ) + return false; + + return end == date.end(); } bool ParseISOTime(const wxString& time) { wxString::const_iterator end; - return ParseFormat(time, wxS("%H:%M:%S"), &end) && end == time.end(); + if ( !ParseFormat(time, wxS("%H:%M:%S"), &end) ) + return false; + + return end == time.end(); } bool ParseISOCombined(const wxString& datetime, char sep = 'T') { wxString::const_iterator end; const wxString fmt = wxS("%Y-%m-%d") + wxString(sep) + wxS("%H:%M:%S"); - return ParseFormat(datetime, fmt, &end) && end == datetime.end(); + if ( !ParseFormat(datetime, fmt, &end) ) + return false; + + return end == datetime.end(); } // parse a string containing the date/time in "free" format, this -- 2.47.2