Remote Call Framework 3.3
StdFileSystem.hpp
1
2
//******************************************************************************
3
// RCF - Remote Call Framework
4
//
5
// Copyright (c) 2005 - 2022, Delta V Software. All rights reserved.
6
// https://www.deltavsoft.com
7
//
8
// RCF is distributed under dual licenses - closed source or GPL.
9
// Consult your particular license for conditions of use.
10
//
11
// If you have not purchased a commercial license, you are using RCF under GPL terms.
12
//
13
// Version: 3.3
14
// Contact: support <at> deltavsoft.com
15
//
16
//******************************************************************************
17
18
#ifndef INCLUDE_RCF_STDFILESYSTEM_HPP
19
#define INCLUDE_RCF_STDFILESYSTEM_HPP
20
21
// This header allows us to pull in either <filesystem> or <experimental/filesystem>
22
// , depending on what the compiler supports.
23
24
#if defined(_MSC_VER) && _MSC_VER < 1920
25
// VS 2017 and older - always use std::experimental::filesystem.
26
# define INCLUDE_STD_FILESYSTEM_EXPERIMENTAL 1
27
#elif defined(__cpp_lib_filesystem)
28
# define INCLUDE_STD_FILESYSTEM_EXPERIMENTAL 0
29
#elif defined(__cpp_lib_experimental_filesystem)
30
# define INCLUDE_STD_FILESYSTEM_EXPERIMENTAL 1
31
#elif !defined(__has_include)
32
# define INCLUDE_STD_FILESYSTEM_EXPERIMENTAL 1
33
#elif __has_include(<filesystem>)
34
# ifdef _MSC_VER
35
// Visual C++
36
# if __has_include(<yvals_core.h>)
37
# include <yvals_core.h>
38
# if defined(_HAS_CXX17) && _HAS_CXX17
39
# define INCLUDE_STD_FILESYSTEM_EXPERIMENTAL 0
40
# endif
41
# endif
42
# ifndef INCLUDE_STD_FILESYSTEM_EXPERIMENTAL
43
# define INCLUDE_STD_FILESYSTEM_EXPERIMENTAL 1
44
# endif
45
# else
46
// non-Visual C++
47
# define INCLUDE_STD_FILESYSTEM_EXPERIMENTAL 0
48
# endif
49
#elif __has_include(<experimental/filesystem>)
50
# define INCLUDE_STD_FILESYSTEM_EXPERIMENTAL 1
51
#else
52
# error Could not find system header "<filesystem>" or "<experimental/filesystem>"
53
#endif
54
55
// Now include the relevant header.
56
57
#if INCLUDE_STD_FILESYSTEM_EXPERIMENTAL
58
59
#include <experimental/filesystem>
60
namespace
RCF_FILESYSTEM_NS = std::experimental::filesystem;
61
62
#else
63
64
#include <filesystem>
65
namespace
RCF_FILESYSTEM_NS = std::filesystem;
66
67
#endif
68
69
70
71
#endif // ! INCLUDE_RCF_STDFILESYSTEM_HPP
Copyright (C)
Delta V Software
2022