summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2007-09-04 05:26:24 +0000
committerTim Mayberry <mojofunk@gmail.com>2007-09-04 05:26:24 +0000
commit078e867f3cd51ac0f940d12ea90f11c3d5af9cae (patch)
tree0bb2440e3e6f10582b2eabd61996478465471ec1 /libs/ardour
parentbf69e8f09a374c96583ba4c6bcabb636d780ef01 (diff)
Add ARDOUR::get_state_files_in_directory and ARDOUR::get_file_names_no_extension to ardour/session_state_utils.h/cc
git-svn-id: svn://localhost/ardour2/trunk@2386 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/session_state_utils.h25
-rw-r--r--libs/ardour/session_state_utils.cc28
2 files changed, 53 insertions, 0 deletions
diff --git a/libs/ardour/ardour/session_state_utils.h b/libs/ardour/ardour/session_state_utils.h
index 170dffe17c..8825b041f3 100644
--- a/libs/ardour/ardour/session_state_utils.h
+++ b/libs/ardour/ardour/session_state_utils.h
@@ -19,10 +19,15 @@
#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
diff --git a/libs/ardour/session_state_utils.cc b/libs/ardour/session_state_utils.cc
index 1ce61954a4..b6bd6a9581 100644
--- a/libs/ardour/session_state_utils.cc
+++ b/libs/ardour/session_state_utils.cc
@@ -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