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