From d154ab3d291c0c1463d77818f07fb8a5bfe6bfb0 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 13 Nov 2007 13:27:30 +0000 Subject: [PATCH] replace changes of r49890 by defining more compatibility operators in wxCmdLineArgsArray as we're interested in preserving as much compatibility with the existing code outside of the library as possible; also DLL-export the class to avoid VC6 DLL build warnings git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49902 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/cmdargs.h | 25 +++++++++++++++++++++---- src/common/appbase.cpp | 2 +- src/common/stdpbase.cpp | 2 +- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/include/wx/cmdargs.h b/include/wx/cmdargs.h index e3dbd16a36..e3d74c031a 100644 --- a/include/wx/cmdargs.h +++ b/include/wx/cmdargs.h @@ -26,7 +26,7 @@ // as it's used for compatibility, it tries to look as much as traditional // (char **) argv as possible, in particular it provides implicit conversions // to "char **" and also array-like operator[] -class wxCmdLineArgsArray +class WXDLLIMPEXP_BASE wxCmdLineArgsArray { public: wxCmdLineArgsArray() { m_argsA = NULL; m_argsW = NULL; } @@ -80,6 +80,12 @@ public: return !m_args.empty(); } + // and the same for "if ( !argv )" checks + bool operator!() const + { + return m_args.empty(); + } + wxString operator[](size_t n) const { return m_args[n]; @@ -92,9 +98,13 @@ public: return m_args[n]; } - // this is the only method of this class which doesn't exist solely for - // compatibility purposes: it allows to access the arguments as a - // convenient array of wxStrings + + // convenience methods, i.e. not existing only for backwards compatibility + + // do we have any arguments at all? + bool IsEmpty() const { return m_args.empty(); } + + // access the arguments as a convenient array of wxStrings const wxArrayString& GetArguments() const { return m_args; } ~wxCmdLineArgsArray() @@ -129,6 +139,13 @@ private: DECLARE_NO_COPY_CLASS(wxCmdLineArgsArray) }; +// provide global operator overload for compatibility with the existing code +// doing things like "if ( condition && argv )" +inline operator&&(bool cond, const wxCmdLineArgsArray& array) +{ + return cond && !array.IsEmpty(); +} + #endif // wxUSE_UNICODE #endif // _WX_CMDARGS_H_ diff --git a/src/common/appbase.cpp b/src/common/appbase.cpp index 27fa04d6b3..66297871a4 100644 --- a/src/common/appbase.cpp +++ b/src/common/appbase.cpp @@ -177,7 +177,7 @@ bool wxAppConsoleBase::Initialize(int& argcOrig, wxChar **argvOrig) #endif #ifndef __WXPALMOS__ - if ( m_appName.empty() && (bool) argv ) + if ( m_appName.empty() && argv ) { // the application name is, by default, the name of its executable file wxFileName::SplitPath(argv[0], NULL, &m_appName, NULL); diff --git a/src/common/stdpbase.cpp b/src/common/stdpbase.cpp index 198486075d..6d0609e118 100644 --- a/src/common/stdpbase.cpp +++ b/src/common/stdpbase.cpp @@ -53,7 +53,7 @@ wxStandardPathsBase& wxStandardPathsBase::Get() wxString wxStandardPathsBase::GetExecutablePath() const { - if ( !wxTheApp || ! (bool) wxTheApp->argv ) + if ( !wxTheApp || !wxTheApp->argv ) return wxEmptyString; wxString argv0 = wxTheApp->argv[0]; -- 2.45.2