Remove PathScanner::run_scan and use PathScanner::run_scan_internal directly
[ardour.git] / libs / pbd / pbd / pathscanner.h
index d62203c008c2c13c67d214f2eb82540fffc0548d..d97cbb769327b95281ff66f50b4af30cde2db11c 100644 (file)
@@ -34,65 +34,57 @@ class LIBPBD_API PathScanner
 
 {
   public:
-       std::vector<std::string *> *operator() (const std::string &dirpath,
-                                               bool (*filter)(const std::string &, void *arg),
-                                               void *arg, 
-                                               bool match_fullpath = true,
-                                               bool return_fullpath = true,
-                                               long limit = -1,
-                                               bool recurse = false) {
-               return run_scan (dirpath,
-                                (bool (PathScanner::*)(const std::string &)) 0, 
-                                filter, 
-                                arg,
-                                match_fullpath,
-                                return_fullpath, 
-                                limit, recurse);
+       std::vector<std::string> operator() (const std::string &dirpath,
+                                            bool (*filter)(const std::string &, void *arg),
+                                            void *arg,
+                                            bool match_fullpath = true,
+                                            bool return_fullpath = true,
+                                            long limit = -1,
+                                            bool recurse = false) {
+               std::vector<std::string> result;
+               run_scan_internal (result, dirpath,
+                                  filter, arg,
+                                  match_fullpath, return_fullpath,
+                                  limit, recurse);
+               return result;
        }
 
-       std::vector<std::string *> *operator() (const std::string &dirpath,
-                                               const std::string &regexp,
-                                               bool match_fullpath = true,
-                                               bool return_fullpath = true,
-                                               long limit = -1,
-                                               bool recurse = false);
+       std::vector<std::stringoperator() (const std::string &dirpath,
+                                            const std::string &regexp,
+                                            bool match_fullpath = true,
+                                            bool return_fullpath = true,
+                                            long limit = -1,
+                                            bool recurse = false);
        
-       std::string *find_first (const std::string &dirpath,
-                                const std::string &regexp,
-                                bool match_fullpath = true,
-                                bool return_fullpath = true);
+       std::string find_first (const std::string &dirpath,
+                               const std::string &regexp,
+                               bool match_fullpath = true,
+                               bool return_fullpath = true);
        
-       std::string *find_first (const std::string &dirpath,
-                                bool (*filter)(const std::string &, void *),
-                                void *arg,
-                                bool match_fullpath = true,
-                                bool return_fullpath = true);
+       std::string find_first (const std::string &dirpath,
+                               bool (*filter)(const std::string &, void *),
+                               void *arg,
+                               bool match_fullpath = true,
+                               bool return_fullpath = true);
        
   private:
-       regex_t compiled_pattern;
-       
-       bool regexp_filter (const std::string &str) {
-               return regexec (&compiled_pattern, str.c_str(), 0, 0, 0) == 0;
-       }
-       
-       std::vector<std::string *> *run_scan (const std::string &dirpath,
-                                             bool (PathScanner::*mfilter) (const std::string &),
-                                             bool (*filter)(const std::string &, void *),
-                                             void *arg,
-                                             bool match_fullpath,
-                                             bool return_fullpath,
-                                             long limit,
-                                             bool recurse = false);
 
-       std::vector<std::string *> *run_scan_internal (std::vector<std::string*>*, 
-                                                      const std::string &dirpath,
-                                                      bool (PathScanner::*mfilter) (const std::string &),
-                                                      bool (*filter)(const std::string &, void *),
-                                                      void *arg,
-                                                      bool match_fullpath,
-                                                      bool return_fullpath,
-                                                      long limit,
-                                                      bool recurse = false);
+       void find_files_matching_regex (std::vector<std::string>& results,
+                       const std::string& dirpath,
+                       const std::string& regexp,
+                       bool match_fullpath,
+                       bool return_fullpath,
+                       long limit,
+                       bool recurse = false);
+
+       void run_scan_internal (std::vector<std::string>&,
+                               const std::string &dirpath,
+                               bool (*filter)(const std::string &, void *),
+                               void *arg,
+                               bool match_fullpath,
+                               bool return_fullpath,
+                               long limit,
+                               bool recurse = false);
 };
 
 #endif // __libmisc_pathscanner_h__