2
3
4
5
6
7
8
9
10
11
12
13
14
15
17#ifndef IPADDRESS_CONFIG_HPP
18#define IPADDRESS_CONFIG_HPP
20#ifndef IPADDRESS_MODULE
37# include <type_traits>
40#ifndef IPADDRESS_NAMESPACE
41# define IPADDRESS_NAMESPACE ipaddress
44#ifndef IPADDRESS_MODULE
45# define IPADDRESS_EXPORT
47# define IPADDRESS_EXPORT export
50#if defined(_MSVC_LANG)
51# define IPADDRESS_CPLUSPLUS _MSVC_LANG
53# define IPADDRESS_CPLUSPLUS __cplusplus
57# define IPADDRESS_CPP_VERSION 20
59# define IPADDRESS_CPP_VERSION 17
61# define IPADDRESS_CPP_VERSION 14
62#elif 199711L
< IPADDRESS_CPLUSPLUS
63# define IPADDRESS_CPP_VERSION 11
65# error ipaddress needs at least C++ standard version 11
69# if __cpp_constexpr
>= 201304L
70# define IPADDRESS_CONSTEXPR constexpr
72# define IPADDRESS_CONSTEXPR
74# if __cpp_constexpr
>= 201603L
75# define IPADDRESS_CONSTEXPR_17 constexpr
77# define IPADDRESS_CONSTEXPR_17
80# error ipaddress needs at least C++ standard version 11
83#if defined(__cpp_consteval) && __cpp_consteval >= 201811L
84# define IPADDRESS_CONSTEVAL consteval
86# define IPADDRESS_CONSTEVAL IPADDRESS_CONSTEXPR
89#if defined(_MSC_VER) && (_MSC_VER <= 1800
)
90# define IPADDRESS_NOEXCEPT
92# define IPADDRESS_NOEXCEPT noexcept
93# ifdef IPADDRESS_NO_EXCEPTIONS
94# define IPADDRESS_NOEXCEPT_WHEN_NO_EXCEPTIONS noexcept
96# define IPADDRESS_NOEXCEPT_WHEN_NO_EXCEPTIONS
100#if (IPADDRESS_CPP_VERSION
>= 17
) && !defined(IPADDRESS_NO_NODISCARD)
101# define IPADDRESS_NODISCARD [[nodiscard]]
102# ifdef IPADDRESS_NO_EXCEPTIONS
103# define IPADDRESS_NODISCARD_WHEN_NO_EXCEPTIONS [[nodiscard]]
105# define IPADDRESS_NODISCARD_WHEN_NO_EXCEPTIONS
108# define IPADDRESS_NODISCARD
109# define IPADDRESS_NODISCARD_WHEN_NO_EXCEPTIONS
113# define IPADDRESS_FORCE_INLINE __forceinline
115# define IPADDRESS_FORCE_INLINE inline __attribute__((always_inline))
118#if !defined(IPADDRESS_NO_SPACESHIP_OPERATOR) && defined(__has_include
)
119# if (__cpp_lib_three_way_comparison >= 201907L
) && __has_include
(<compare>)
120# define IPADDRESS_HAS_SPACESHIP_OPERATOR
121# ifndef IPADDRESS_MODULE
127#if defined(__cpp_nontype_template_parameter_class)
128# define IPADDRESS_NONTYPE_TEMPLATE_PARAMETER
129#elif defined(__cpp_nontype_template_args)
130# if __cpp_nontype_template_args >= 201911L
131# define IPADDRESS_NONTYPE_TEMPLATE_PARAMETER
132# elif __cpp_nontype_template_args >= 201411L
&& IPADDRESS_CPP_VERSION >= 20
133# if defined(__apple_build_version__)
134# if defined(__clang_major__) && __clang_major__ >= 13
135# define IPADDRESS_NONTYPE_TEMPLATE_PARAMETER
137# elif defined(__clang_major__) && __clang_major__ >= 12
138# define IPADDRESS_NONTYPE_TEMPLATE_PARAMETER
143#if defined(__cpp_lib_is_constant_evaluated) && __cpp_lib_is_constant_evaluated >= 201811L
144# define IPADDRESS_IS_CONST_EVALUATED(x) std::is_constant_evaluated()
145#elif (defined(__GNUC__
) && !defined(__clang__
) && __GNUC__
>= 9
) ||
146 (defined(__clang__
) && !defined(__apple_build_version__) && __clang_major__
>= 9
) ||
147 (defined(__clang__
) && defined(__apple_build_version__) && __clang_major__
>= 11
) ||
148 (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1910
) ||
149 (defined(_MSC_VER) && _MSC_VER >= 1925
)
150# define IPADDRESS_IS_CONST_EVALUATED(x) __builtin_is_constant_evaluated()
151#elif defined(__GNUC__) || defined(__clang__)
152# define IPADDRESS_IS_CONST_EVALUATED(x) __builtin_constant_p(x)
154# define IPADDRESS_IS_CONST_EVALUATED(x) false
157#if IPADDRESS_CPP_VERSION
>= 17
&& !defined(IPADDRESS_MODULE)
158# include <string_view>
161#if defined(IPADDRESS_NO_IPV6_SCOPE)
162# undef IPADDRESS_IPV6_SCOPE_MAX_LENGTH
163# define IPADDRESS_IPV6_SCOPE_MAX_LENGTH 0
164#elif defined(IPADDRESS_IPV6_SCOPE_MAX_LENGTH)
165# if IPADDRESS_IPV6_SCOPE_MAX_LENGTH < 0
166# undef IPADDRESS_IPV6_SCOPE_MAX_LENGTH
167# define IPADDRESS_IPV6_SCOPE_MAX_LENGTH 0
168# elif IPADDRESS_IPV6_SCOPE_MAX_LENGTH > 64
169# undef IPADDRESS_IPV6_SCOPE_MAX_LENGTH
170# define IPADDRESS_IPV6_SCOPE_MAX_LENGTH 64
173# define IPADDRESS_IPV6_SCOPE_MAX_LENGTH 16
#define IPADDRESS_CPLUSPLUS
Definition config.hpp:53