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
This commit is contained in:
Tim Mayberry 2007-09-04 05:26:24 +00:00
parent bf69e8f09a
commit 078e867f3c
2 changed files with 53 additions and 0 deletions

View File

@ -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

View 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