compilation fixes for wxAnyStrPtr for VC7; mention it in the change log

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59826 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-03-25 09:23:30 +00:00
parent 73799292ca
commit b7aadf25fa
2 changed files with 17 additions and 13 deletions

View File

@@ -33,6 +33,12 @@ changes:
wxString, in many cases code using it won't compile any more and NULL wxString, in many cases code using it won't compile any more and NULL
should be replaced with an empty string. should be replaced with an empty string.
- Functions returning "const wxChar *" were changed as well. Mostly they now
return wxString which is then transparently convertible to either "const char
*" or "const wchar_t *" but in some cases, notably wxDateTime::ParseXXX(),
the returned string could be NULL and so a separate helper class is used. If
you obtain compilation errors because of this, you can always correct them by
explicitly assigning the function return value to a variable of wanted type.
- Some structure fields which used to be of type "const wxChar *" (such as - Some structure fields which used to be of type "const wxChar *" (such as
wxCmdLineEntryDesc::shortName, longName and description fields) are now of wxCmdLineEntryDesc::shortName, longName and description fields) are now of

View File

@@ -61,10 +61,9 @@ public:
// different conversions to pointers) // different conversions to pointers)
operator bool() const { return m_str != NULL; } operator bool() const { return m_str != NULL; }
#ifdef __VISUALC6__ // at least VC6 and VC7 also need this one or they complain about ambiguity
// FIXME-VC6: it also needs this one or it complains about ambiguity // for !anystr expressions
bool operator!() const { return !((bool)*this); } bool operator!() const { return !((bool)*this); }
#endif // __VISUALC6__
// and these are the conversions operator which allow to assign the result // and these are the conversions operator which allow to assign the result
@@ -129,22 +128,21 @@ public:
// already works fine. // already works fine.
private: private:
// the original string and the offset in it we correspond to, if the string // the original string and the position in it we correspond to, if the
// is NULL this object is NULL pointer-like // string is NULL this object is NULL pointer-like
const wxString * const m_str; const wxString * const m_str;
const wxString::const_iterator m_iter; const wxString::const_iterator m_iter;
wxDECLARE_NO_ASSIGN_CLASS(wxAnyStrPtr); wxDECLARE_NO_ASSIGN_CLASS(wxAnyStrPtr);
}; };
// FIXME-VC6: expressions involving logical operations are not compiled // at least for VC6 and VC7 these operators are needed too, otherwise boolean
// correctly without these operators // expressions involving wxAnyStrPtr don't compile because of ambiguity between
#ifdef __VISUALC6__ // built-in overloads of these operators for (bool, bool/char*/wchar_t*)
inline bool operator||(const wxAnyStrPtr& p, bool v) { return (bool)p || v; } 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||(bool v, const wxAnyStrPtr& p) { return v || (bool)p; }
inline bool operator&&(const wxAnyStrPtr& p, bool v) { return (bool)p && v; } 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&&(bool v, const wxAnyStrPtr& p) { return v && (bool)p; }
#endif // __VISUALC6__
#endif // _WX_ANYSTR_H_ #endif // _WX_ANYSTR_H_