From 078e867f3cd51ac0f940d12ea90f11c3d5af9cae Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Tue, 4 Sep 2007 05:26:24 +0000 Subject: 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 --- libs/ardour/ardour/session_state_utils.h | 25 +++++++++++++++++++++++++ libs/ardour/session_state_utils.cc | 28 ++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) 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 +#include + #include 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& 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 get_file_names_no_extension (const vector & 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 +#include #include +#include #include #include @@ -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 & result) +{ + Glib::PatternSpec state_file_pattern('*' + string(statefile_suffix)); + + find_matching_files_in_directory (directory_path, state_file_pattern, + result); +} + +vector +get_file_names_no_extension (const vector & file_paths) +{ + vector result; + + for (vector::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()); + + return result; +} + } // namespace ARDOUR -- cgit v1.2.3