filesystem.hpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // Copyright 2022 Mateusz Loskot <mateusz at loskot dot net>
  3. //
  4. // Distributed under the Boost Software License, Version 1.0
  5. // See accompanying file LICENSE_1_0.txt or copy at
  6. // http://www.boost.org/LICENSE_1_0.txt
  7. //
  8. #ifndef BOOST_GIL_IO_DETAIL_FILESYSTEM_HPP
  9. #define BOOST_GIL_IO_DETAIL_FILESYSTEM_HPP
  10. #include <boost/config.hpp>
  11. #if !defined(BOOST_GIL_IO_USE_BOOST_FILESYSTEM) && !defined(BOOST_NO_CXX17_HDR_FILESYSTEM)
  12. #if defined(__cpp_lib_filesystem)
  13. #include <filesystem>
  14. #define BOOST_GIL_IO_USE_STD_FILESYSTEM
  15. #elif defined(__cpp_lib_experimental_filesystem)
  16. #include <experimental/filesystem>
  17. #define BOOST_GIL_IO_USE_STD_FILESYSTEM
  18. #define BOOST_GIL_IO_USE_STD_EXPERIMENTAL_FILESYSTEM
  19. #endif
  20. #endif // !BOOST_GIL_IO_USE_BOOST_FILESYSTEM && !BOOST_NO_CXX17_HDR_FILESYSTEM
  21. #if !defined(BOOST_GIL_IO_USE_STD_FILESYSTEM)
  22. // Disable warning: conversion to 'std::atomic<int>::__integral_type {aka int}' from 'long int' may alter its value
  23. #if defined(BOOST_CLANG)
  24. #pragma clang diagnostic push
  25. #pragma clang diagnostic ignored "-Wshorten-64-to-32"
  26. #endif
  27. #if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
  28. #pragma GCC diagnostic push
  29. #pragma GCC diagnostic ignored "-Wconversion"
  30. #endif
  31. #define BOOST_FILESYSTEM_VERSION 3
  32. #include <boost/filesystem.hpp>
  33. #define BOOST_GIL_IO_USE_BOOST_FILESYSTEM
  34. #if defined(BOOST_CLANG)
  35. #pragma clang diagnostic pop
  36. #endif
  37. #if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
  38. #pragma GCC diagnostic pop
  39. #endif
  40. #endif
  41. namespace boost { namespace gil { namespace detail {
  42. #if defined(BOOST_GIL_IO_USE_STD_EXPERIMENTAL_FILESYSTEM)
  43. namespace filesystem = std::experimental::filesystem;
  44. #elif defined(BOOST_GIL_IO_USE_STD_FILESYSTEM)
  45. namespace filesystem = std::filesystem;
  46. #else
  47. #if !defined(BOOST_GIL_IO_USE_BOOST_FILESYSTEM)
  48. #error "Boost.Filesystem is required if C++17 <filesystem> is not available"
  49. #endif
  50. namespace filesystem = boost::filesystem;
  51. #endif
  52. }}} // namespace boost::gil::detail
  53. #endif