12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #ifndef BOOST_COMPUTE_DETAIL_PATH_HPP
- #define BOOST_COMPUTE_DETAIL_PATH_HPP
- #include <boost/filesystem/path.hpp>
- #include <boost/filesystem/operations.hpp>
- #include <boost/compute/detail/getenv.hpp>
- namespace boost {
- namespace compute {
- namespace detail {
- static const std::string& path_delim()
- {
- static const std::string delim =
- boost::filesystem::path("/").make_preferred().string();
- return delim;
- }
- inline const std::string& appdata_path()
- {
- #ifdef WIN32
- static const std::string appdata = detail::getenv("APPDATA")
- + path_delim() + "boost_compute";
- #else
- static const std::string appdata = detail::getenv("HOME")
- + path_delim() + ".boost_compute";
- #endif
- return appdata;
- }
- inline std::string program_binary_path(const std::string &hash, bool create = false)
- {
- std::string dir = detail::appdata_path() + path_delim()
- + hash.substr(0, 2) + path_delim()
- + hash.substr(2);
- if(create && !boost::filesystem::exists(dir)){
- boost::filesystem::create_directories(dir);
- }
- return dir + path_delim();
- }
- inline std::string parameter_cache_path(bool create = false)
- {
- const static std::string dir = appdata_path() + path_delim() + "tune";
- if(create && !boost::filesystem::exists(dir)){
- boost::filesystem::create_directories(dir);
- }
- return dir + path_delim();
- }
- }
- }
- }
- #endif
|