tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
preprocessor.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2
3#ifndef TETL_CONFIG_PREPROCESSOR_HPP
4#define TETL_CONFIG_PREPROCESSOR_HPP
5
6#ifndef __has_feature
7 #define __has_feature(x) 0
8#endif
9
10#ifndef __has_extension
11 #define __has_extension(x) 0
12#endif
13
14#ifndef __has_attribute
15 #define __has_attribute(x) 0
16#endif
17
18#ifndef __has_builtin
19 #define __has_builtin(x) 0
20#endif
21
22#ifndef __has_constexpr_builtin
23 #define __has_constexpr_builtin(x) 0
24#endif
25
26#define TETL_STRINGIFY_IMPL(str) #str
27#define TETL_STRINGIFY(str) TETL_STRINGIFY_IMPL(str)
28
29#define TETL_CONCAT_IMPL(lhs, rhs) lhs##rhs
30#define TETL_CONCAT(lhs, rhs) TETL_CONCAT_IMPL(lhs, rhs)
31
32#ifdef __COUNTER__
33 #define TETL_UNIQUE_NAME(prefix) TETL_CONCAT(prefix, __COUNTER__)
34#else
35 #define TETL_UNIQUE_NAME(prefix) TETL_CONCAT(prefix, __LINE__)
36#endif
37
38#if defined(__GNUC__) or defined(__clang__)
39 #define TETL_PP_FUNC_SIG __PRETTY_FUNCTION__
40#else
41 #define TETL_PP_FUNC_SIG __func__
42#endif
43
44#endif // TETL_CONFIG_PREPROCESSOR_HPP