// 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*)
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_
// 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