diff options
Diffstat (limited to 'src/plugins/boost')
| -rw-r--r-- | src/plugins/boost/FileLocator.cpp | 91 | ||||
| -rw-r--r-- | src/plugins/boost/FileLocator.hpp | 92 | 
2 files changed, 0 insertions, 183 deletions
diff --git a/src/plugins/boost/FileLocator.cpp b/src/plugins/boost/FileLocator.cpp deleted file mode 100644 index 9ab398e..0000000 --- a/src/plugins/boost/FileLocator.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* -    Ousía -    Copyright (C) 2014, 2015  Benjamin Paaßen, Andreas Stöckel - -    This program is free software: you can redistribute it and/or modify -    it under the terms of the GNU General Public License as published by -    the Free Software Foundation, either version 3 of the License, or -    (at your option) any later version. - -    This program is distributed in the hope that it will be useful, -    but WITHOUT ANY WARRANTY; without even the implied warranty of -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -    GNU General Public License for more details. - -    You should have received a copy of the GNU General Public License -    along with this program.  If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "FileLocator.hpp" - -#include <boost/filesystem.hpp> - -#include <fstream> - -namespace ousia { - -void FileLocator::addSearchPath(const std::string &path, -                                std::set<ResourceType> types) -{ -	// Canonicalize the given path -	std::string canonicalPath = -	    boost::filesystem::canonical(path).generic_string(); - -	// Insert the path for all given types. -	for (auto &type : types) { -		auto it = searchPaths.find(type); -		if (it != searchPaths.end()) { -			it->second.push_back(canonicalPath); -		} else { -			searchPaths.insert({type, {canonicalPath}}); -		} -	} -} - -bool FileLocator::doLocate(Resource &resource, const std::string &path, -                           const ResourceType type, -                           const std::string &relativeTo) const -{ -	boost::filesystem::path base(relativeTo); -	if (boost::filesystem::exists(base)) { -		// Look if 'relativeTo' is a directory already. -		if (!boost::filesystem::is_directory(base)) { -			// If not we use the parent directory. -			base = base.parent_path(); -		} - -		// Use the / operator to append the path. -		base /= path; - -		// If we already found a fitting resource there, use that. -		if (boost::filesystem::exists(base)) { -			std::string location = -			    boost::filesystem::canonical(base).generic_string(); -			resource = Resource(true, *this, type, location); -			return true; -		} -	} - -	// Otherwise look in the search paths. -	auto it = searchPaths.find(type); -	if (it != searchPaths.end()) { -		for (boost::filesystem::path p : it->second) { -			p /= path; -			if (boost::filesystem::exists(p)) { -				std::string location = -				    boost::filesystem::canonical(p).generic_string(); -				resource = Resource(true, *this, type, location); -				return true; -			} -		} -	} -	return false; -} - -std::unique_ptr<std::istream> FileLocator::doStream( -    const std::string &location) const -{ -	std::unique_ptr<std::istream> ifs{new std::ifstream(location)}; -	return std::move(ifs); -} -} diff --git a/src/plugins/boost/FileLocator.hpp b/src/plugins/boost/FileLocator.hpp deleted file mode 100644 index ffe5c8f..0000000 --- a/src/plugins/boost/FileLocator.hpp +++ /dev/null @@ -1,92 +0,0 @@ -/* -    Ousía -    Copyright (C) 2014, 2015  Benjamin Paaßen, Andreas Stöckel - -    This program is free software: you can redistribute it and/or modify -    it under the terms of the GNU General Public License as published by -    the Free Software Foundation, either version 3 of the License, or -    (at your option) any later version. - -    This program is distributed in the hope that it will be useful, -    but WITHOUT ANY WARRANTY; without even the implied warranty of -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -    GNU General Public License for more details. - -    You should have received a copy of the GNU General Public License -    along with this program.  If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_FILE_LOCATOR_HPP_ -#define _OUSIA_FILE_LOCATOR_HPP_ - -#include <core/resource/Resource.hpp> -#include <core/resource/ResourceLocator.hpp> - -#include <map> -#include <set> -#include <vector> - -namespace ousia { - -/** - * A ResourceLocator is a class able to locate resources in some way, usually - * on the hard drive. - * - * We specify this as an abstract superclass to have an interface layer between - * the program core and possible future extensions in terms of resource - * locations (e.g. online resources, .zip files, etc.). - */ -class FileLocator : public ResourceLocator { -public: -	/** -	 * Type alias representing a Res -	 */ -	using SearchPaths = std::map<ResourceType, std::vector<std::string>>; - -private: -	/** -	 * Internal variable containing all stored search paths. -	 */ -	SearchPaths searchPaths; - -protected: -	bool doLocate(Resource &resource, const std::string &path, -	              const ResourceType type, -	              const std::string &relativeTo) const override; - -	std::unique_ptr<std::istream> doStream( -	    const std::string &location) const override; - -public: -	FileLocator() : searchPaths() {} - -	/** -	 * Adds a search paths for the given types. -	 * -	 * @param path is a fully qualified/canonical path to a directory. -	 * @param types is a set of Resource Types. The FileLocator will look for -	 *              resources of the specified types at the given path in the -	 *              future. -	 */ -	void addSearchPath(const std::string &path, std::set<ResourceType> types); - -	/** -	 * Adds a search path. Implicitly adds the search path for the "unknown" -	 * -	 * @param path is a fully qualified/canonical path to a directory. -	 * @param types is a set of Resource Types. The FileLocator will look for -	 *              resources of the specified types at the given path in the -	 *              future. -	 */ -	void addSearchPath(const std::string &path); - -	/** -	 * Returns the backing map containing all search paths for a given type. -	 * This is read-only. -	 */ -	const SearchPaths &getSearchPaths() const { return searchPaths; } -}; -} - -#endif /* _OUSIA_FILE_LOCATOR_HPP_ */ -  | 
