Add ARDOUR::get_state_files_in_directory and ARDOUR::get_file_names_no_extension...
authorTim Mayberry <mojofunk@gmail.com>
Tue, 4 Sep 2007 05:26:24 +0000 (05:26 +0000)
committerTim Mayberry <mojofunk@gmail.com>
Tue, 4 Sep 2007 05:26:24 +0000 (05:26 +0000)
git-svn-id: svn://localhost/ardour2/trunk@2386 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/session_state_utils.h
libs/ardour/session_state_utils.cc

index 170dffe17c7ea77604a74b47d50d40a159c7e84d..8825b041f3cf8255d67279489cecde05ffb19204 100644 (file)
 #ifndef ARDOUR_SESSION_STATE_UTILS_INCLUDED
 #define ARDOUR_SESSION_STATE_UTILS_INCLUDED
 
+#include <vector>
+#include <string>
+
 #include <pbd/filesystem.h>
 
 namespace ARDOUR {
 
+using std::string;
+using std::vector;
 using namespace PBD;
 
 /**
@@ -35,6 +40,26 @@ using namespace PBD;
  */
 bool create_backup_file (const sys::path & file_path);
 
+/**
+ * Get the absolute paths to all state files in the directory 
+ * at path directory_path.
+ *
+ * @param directory_path The absolute path to a directory.
+ * @param result vector to contain resulting state files.
+ */
+void get_state_files_in_directory (const sys::path & directory_path,
+               vector<sys::path>& result);
+
+/**
+ * Given a vector of paths to files, return a vector containing
+ * the filenames without any extension.
+ *
+ * @param file_paths a vector containing the file paths
+ * @return a vector containing a list of file names without any 
+ * filename extension.
+ */
+vector<string> get_file_names_no_extension (const vector<sys::path> & file_paths);
+
 } // namespace ARDOUR
 
 #endif
index 1ce61954a425230fa7724552780d2247209c7980..b6bd6a958176dfe3c213a7f11606ce8c725e4a03 100644 (file)
@@ -17,7 +17,9 @@
 */
 
 #include <pbd/compose.h>
+#include <pbd/basename.h>
 #include <pbd/error.h>
+#include <pbd/file_utils.h>
 
 #include <ardour/session_state_utils.h>
 #include <ardour/filename_extensions.h>
@@ -47,4 +49,30 @@ create_backup_file (const sys::path & file_path)
        return true;
 }
 
+void
+get_state_files_in_directory (const sys::path & directory_path,
+               vector<sys::path> & result)
+{
+       Glib::PatternSpec state_file_pattern('*' + string(statefile_suffix));
+       
+       find_matching_files_in_directory (directory_path, state_file_pattern,
+                       result);
+}
+
+vector<string>
+get_file_names_no_extension (const vector<sys::path> & file_paths)
+{
+       vector<string> result;
+
+       for (vector<sys::path>::const_iterator i = file_paths.begin();
+                       i != file_paths.end(); ++i)
+       {
+               result.push_back (basename_nosuffix((*i).to_string()));
+       }
+
+       sort (result.begin(), result.end(), std::less<string>());
+
+       return result;
+}
+
 } // namespace ARDOUR