libsidplayfp 3.0.0
config.hpp
1#ifndef HASHLIB_ALL_IN_ONE
2#pragma once
3#ifdef __has_include
4#if __has_include(<version>)
5#include <version>
6#endif
7#endif
8#endif
9
10#define HASHLIB_VERSION "1.1.1"
11
12#ifdef _MSVC_LANG
13#define HASHLIB_CXX_STANDARD _MSVC_LANG
14#else
15#define HASHLIB_CXX_STANDARD __cplusplus
16#endif
17
18#define HASHLIB_CXX_STD98 199711L
19#define HASHLIB_CXX_STD11 201103L
20#define HASHLIB_CXX_STD14 201402L
21#define HASHLIB_CXX_STD17 201703L
22#define HASHLIB_CXX_STD20 202002L
23#define HASHLIB_CXX_STD23 202302L
24
25#if HASHLIB_CXX_STANDARD < HASHLIB_CXX_STD11
26#error "hashlib requires a C++11 compiler."
27#endif
28
29#ifdef __clang__
30#define HASHLIB_CXX_COMPILER_CLANG 1
31#define HASHLIB_CXX_COMPILER_GCC 0
32#define HASHLIB_CXX_COMPILER_MSVC 0
33#elif defined(__GNUC__)
34#define HASHLIB_CXX_COMPILER_CLANG 0
35#define HASHLIB_CXX_COMPILER_GCC 1
36#define HASHLIB_CXX_COMPILER_MSVC 0
37#elif defined(_MSC_VER)
38#define HASHLIB_CXX_COMPILER_CLANG 0
39#define HASHLIB_CXX_COMPILER_GCC 0
40#define HASHLIB_CXX_COMPILER_MSVC 1
41#else
42#error "hashlib requires the C++ compiler is clang, gcc or msvc."
43#endif
44
45#if HASHLIB_CXX_COMPILER_CLANG
46#define HASHLIB_ALWAYS_INLINE [[clang::always_inline]]
47#elif HASHLIB_CXX_COMPILER_GCC
48#define HASHLIB_ALWAYS_INLINE [[gnu::always_inline]]
49#elif HASHLIB_CXX_COMPILER_MSVC
50#define HASHLIB_ALWAYS_INLINE [[msvc::forceinline]]
51#endif
52
53#ifdef HASHLIB_BUILD_MODULE
54#define HASHLIB_MOD_EXPORT export
55#define HASHLIB_MOD_EXPORT_BEGIN export {
56#define HASHLIB_MOD_EXPORT_END }
57#else
58#define HASHLIB_MOD_EXPORT
59#define HASHLIB_MOD_EXPORT_BEGIN
60#define HASHLIB_MOD_EXPORT_END
61#endif
62
63#if HASHLIB_CXX_STANDARD >= HASHLIB_CXX_STD17
64#define HASHLIB_CXX17_CONSTEXPR constexpr
65#else
66#define HASHLIB_CXX17_CONSTEXPR
67#endif
68
69#if HASHLIB_CXX_STANDARD >= HASHLIB_CXX_STD20
70#define HASHLIB_CXX20_CONSTEXPR constexpr
71#else
72#define HASHLIB_CXX20_CONSTEXPR
73#endif
74
75#if HASHLIB_CXX_STANDARD >= HASHLIB_CXX_STD17
76#define HASHLIB_CXX17_INLINE inline
77#else
78#define HASHLIB_CXX17_INLINE
79#endif
80
81#ifdef __has_cpp_attribute
82#if __has_cpp_attribute(nodiscard)
83#define HASHLIB_NODISCARD [[nodiscard]]
84#else
85#define HASHLIB_NODISCARD
86#endif
87#else
88#define HASHLIB_NODISCARD
89#endif