*/
-#include <pbd/tokenizer.h>
-#include <pbd/search_path.h>
-#include <pbd/error.h>
+#include <glibmm/miscutils.h>
+
+#include "pbd/tokenizer.h"
+#include "pbd/search_path.h"
+#include "pbd/error.h"
+
+using namespace std;
namespace {
-#ifdef WIN32
+#ifdef PLATFORM_WINDOWS
const char * const path_delimiter = ";";
#else
const char * const path_delimiter = ":";
SearchPath::SearchPath (const string& path)
{
- vector<sys::path> tmp;
-
- if(!tokenize ( path, string(path_delimiter), std::back_inserter (tmp)))
- {
- // log warning(info perhaps?) that the path is empty
- warning << "SearchPath contains no tokens" << endmsg;
+ vector<std::string> tmp;
+ if (tokenize (path, string(path_delimiter), std::back_inserter (tmp))) {
+ add_directories (tmp);
}
-
- add_directories (tmp);
}
-SearchPath::SearchPath (const vector<sys::path>& paths)
+SearchPath::SearchPath (const vector<std::string>& paths)
{
add_directories (paths);
}
-SearchPath::SearchPath (const SearchPath& other)
- : m_dirs(other.m_dirs)
-{
-
-}
-
void
-SearchPath::add_directory (const sys::path& directory_path)
+SearchPath::add_directory (const std::string& directory_path)
{
- // test for existance and warn etc?
- m_dirs.push_back(directory_path);
+ if (!directory_path.empty()) {
+ push_back(directory_path);
+ }
}
void
-SearchPath::add_directories (const vector<sys::path>& paths)
+SearchPath::add_directories (const vector<std::string>& paths)
{
- for(vector<sys::path>::const_iterator i = paths.begin(); i != paths.end(); ++i) {
+ for(vector<std::string>::const_iterator i = paths.begin(); i != paths.end(); ++i) {
add_directory (*i);
}
}
const string
-SearchPath::get_string () const
+SearchPath::to_string () const
{
string path;
- for (vector<sys::path>::const_iterator i = m_dirs.begin(); i != m_dirs.end(); ++i) {
- path += (*i).to_string();
+ for (vector<std::string>::const_iterator i = begin(); i != end(); ++i) {
+ path += *i;
path += path_delimiter;
}
return path;
}
-SearchPath&
-SearchPath::operator= (const SearchPath& path)
-{
- m_dirs = path.m_dirs;
- return *this;
-}
-
SearchPath&
SearchPath::operator+= (const SearchPath& spath)
{
- m_dirs.insert(m_dirs.end(), spath.m_dirs.begin(), spath.m_dirs.end());
+ insert(end(), spath.begin(), spath.end());
return *this;
}
SearchPath&
-SearchPath::operator+= (const sys::path& directory_path)
+SearchPath::operator+= (const std::string& directory_path)
{
add_directory (directory_path);
return *this;
}
SearchPath&
-SearchPath::operator+ (const sys::path& directory_path)
+SearchPath::operator+ (const std::string& directory_path)
{
add_directory (directory_path);
return *this;
SearchPath::operator+ (const SearchPath& spath)
{
// concatenate paths into new SearchPath
- m_dirs.insert(m_dirs.end(), spath.m_dirs.begin(), spath.m_dirs.end());
+ insert(end(), spath.begin(), spath.end());
return *this;
}
SearchPath&
SearchPath::add_subdirectory_to_paths (const string& subdir)
{
- vector<sys::path> tmp;
- string directory_path;
-
- for (vector<sys::path>::iterator i = m_dirs.begin(); i != m_dirs.end(); ++i)
- {
+ for (vector<std::string>::iterator i = begin(); i != end(); ++i) {
// should these new paths just be added to the end of
// the search path rather than replace?
- *i /= subdir;
+ *i = Glib::build_filename (*i, subdir);
}
return *this;
}
-
-SearchPath&
-SearchPath::operator/= (const string& subdir)
-{
- return add_subdirectory_to_paths (subdir);
-}
} // namespace PBD