]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/cmdargs.h
define constants for the number of items in the tree at each level and number of...
[wxWidgets.git] / include / wx / cmdargs.h
index 57b22b42e54260266391c968ad1071b2d5c49ade..3f99cb50eb783363f404dade28fc834866535e6b 100644 (file)
@@ -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,14 +80,31 @@ 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];
     }
 
-    // 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
+    // we must provide this overload for g++ 3.4 which can't choose between
+    // our operator[](size_t) and ::operator[](char**, int) otherwise
+    wxString operator[](int n) const
+    {
+        return m_args[n];
+    }
+
+
+    // 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()
@@ -119,9 +136,16 @@ private:
     mutable char **m_argsA;
     mutable wchar_t **m_argsW;
 
-    DECLARE_NO_COPY_CLASS(wxCmdLineArgsArray)
+    wxDECLARE_NO_COPY_CLASS(wxCmdLineArgsArray);
 };
 
+// provide global operator overload for compatibility with the existing code
+// doing things like "if ( condition && argv )"
+inline bool operator&&(bool cond, const wxCmdLineArgsArray& array)
+{
+    return cond && !array.IsEmpty();
+}
+
 #endif // wxUSE_UNICODE
 
 #endif // _WX_CMDARGS_H_