4 #ifndef GUARD_CK_FILESYSTEM_HPP_ 
    5 #define GUARD_CK_FILESYSTEM_HPP_ 
   12   #define CK_HAS_FILESYSTEM 1 
   13   #define CK_HAS_FILESYSTEM_TS 1 
   16     #define CK_HAS_FILESYSTEM 1 
   17     #define CK_HAS_FILESYSTEM_TS 0 
   18   #elif _MSC_VER >= 1900 
   19     #define CK_HAS_FILESYSTEM 0 
   20     #define CK_HAS_FILESYSTEM_TS 1 
   22     #define CK_HAS_FILESYSTEM 0 
   23     #define CK_HAS_FILESYSTEM_TS 0 
   25 #elif defined(__has_include) 
   26   #if __has_include(<filesystem>) && __cplusplus >= 201703L 
   27     #define CK_HAS_FILESYSTEM 1 
   29     #define CK_HAS_FILESYSTEM 0 
   31   #if __has_include(<experimental/filesystem>) && __cplusplus >= 201103L 
   32     #define CK_HAS_FILESYSTEM_TS 1 
   34     #define CK_HAS_FILESYSTEM_TS 0 
   37   #define CK_HAS_FILESYSTEM 0 
   38   #define CK_HAS_FILESYSTEM_TS 0 
   44 #elif CK_HAS_FILESYSTEM_TS 
   45 #include <experimental/filesystem> 
   47 #error "No filesystem include available" 
   53 namespace fs = ::std::filesystem;
 
   54 #elif CK_HAS_FILESYSTEM_TS 
   55 namespace fs = ::std::experimental::filesystem;
 
   60 inline std::string 
operator+(
const std::string_view s, 
const CK::fs::path& path)
 
   62     return path.string().insert(0, s);
 
   65 inline std::string 
operator+(
const CK::fs::path& path, 
const std::string_view s)
 
   67     return path.string().append(s);
 
   70 #define FS_ENUM_PERMS_ALL fs::perms::all 
   72 #if CK_HAS_FILESYSTEM_TS 
   74 #include <linux/limits.h> 
   78     std::string result(PATH_MAX, 
'\0');
 
   79     std::string p{path.is_relative() ? (fs::current_path() / path).
string() : path.string()};
 
   80     char* retval = realpath(p.c_str(), &result[0]);
 
   81     return (retval == 
nullptr) ? path : fs::path{result};
 
   85 #error "Not implmeneted!" 
  131     std::size_t 
operator()(
const fs::path& path)
 const { 
return fs::hash_value(path); }
 
std::string operator+(const std::string_view s, const CK::fs::path &path)
Definition: filesystem.hpp:60
 
Definition: filesystem.hpp:50
 
constexpr std::string_view library_prefix
Definition: filesystem.hpp:103
 
fs::path make_object_file_name(const fs::path &path)
Definition: filesystem.hpp:119
 
constexpr std::string_view static_library_postfix
Definition: filesystem.hpp:105
 
fs::path weakly_canonical(const fs::path &path)
Definition: filesystem.hpp:89
 
constexpr std::string_view executable_postfix
Definition: filesystem.hpp:102
 
constexpr std::string_view object_file_postfix
Definition: filesystem.hpp:106
 
fs::path make_dynamic_library_name(const fs::path &path)
Definition: filesystem.hpp:114
 
constexpr std::string_view dynamic_library_postfix
Definition: filesystem.hpp:104
 
fs::path make_static_library_name(const fs::path &path)
Definition: filesystem.hpp:124
 
fs::path make_executable_name(const fs::path &path)
Definition: filesystem.hpp:109
 
Definition: filesystem.hpp:130
 
std::size_t operator()(const fs::path &path) const
Definition: filesystem.hpp:131