bool GetNext(wxString *filename) const;
 
     // return true if this directory has any files in it
-    bool HasFiles(const wxString& spec = wxEmptyString);
+    bool HasFiles(const wxString& spec = wxEmptyString) const;
 
     // return true if this directory has any subdirectories
-    bool HasSubDirs(const wxString& spec = wxEmptyString);
+    bool HasSubDirs(const wxString& spec = wxEmptyString) const;
 
     // enumerate all files in this directory and its subdirectories
     //
 
         @a filespec. If @a filespec is empty, look for any files at all. In any
         case, even hidden files are taken into account.
     */
-    bool HasFiles(const wxString& filespec = wxEmptyString);
+    bool HasFiles(const wxString& filespec = wxEmptyString) const;
 
     /**
         Returns @true if the directory contains any subdirectories (if a non
         empty @a filespec is given, only check for directories matching it).
         The hidden subdirectories are taken into account as well.
     */
-    bool HasSubDirs(const wxString& dirspec = wxEmptyString);
+    bool HasSubDirs(const wxString& dirspec = wxEmptyString) const;
 
     /**
         Returns @true if the directory was successfully opened by a previous
 
 
 // dumb generic implementation
 
-bool wxDir::HasFiles(const wxString& spec)
+bool wxDir::HasFiles(const wxString& spec) const
 {
     wxString s;
     return GetFirst(&s, spec, wxDIR_FILES | wxDIR_HIDDEN);
 // we have a (much) faster version for Unix
 #if (defined(__CYGWIN__) && defined(__WINDOWS__)) || !defined(__UNIX_LIKE__) || defined(__WXMAC__) || defined(__EMX__) || defined(__WINE__)
 
-bool wxDir::HasSubDirs(const wxString& spec)
+bool wxDir::HasSubDirs(const wxString& spec) const
 {
     wxString s;
     return GetFirst(&s, spec, wxDIR_DIRS | wxDIR_HIDDEN);
 
     return M_DIR->Read(filename);
 }
 
-bool wxDir::HasSubDirs(const wxString& spec)
+bool wxDir::HasSubDirs(const wxString& spec) const
 {
     wxCHECK_MSG( IsOpened(), false, _T("must wxDir::Open() first") );