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
This commit is contained in:
@@ -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_
|
||||
|
@@ -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);
|
||||
|
@@ -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];
|
||||
|
Reference in New Issue
Block a user