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// SPDX-FileCopyrightText: Copyright (C) 2019 Tobias Hienzsch
3
4#ifndef TETL_CONFIG_PREPROCESSOR_HPP
5#define TETL_CONFIG_PREPROCESSOR_HPP
6
7#ifndef __has_feature
8 #define __has_feature(x) 0
9#endif
10
11#ifndef __has_extension
12 #define __has_extension(x) 0
13#endif
14
15#ifndef __has_attribute
16 #define __has_attribute(x) 0
17#endif
18
19#ifndef __has_builtin
20 #define __has_builtin(x) 0
21#endif
22
23#ifndef __has_constexpr_builtin
24 #define __has_constexpr_builtin(x) 0
25#endif
26
27#define TETL_STRINGIFY_IMPL(str) #str
28#define TETL_STRINGIFY(str) TETL_STRINGIFY_IMPL(str)
29
30#define TETL_CONCAT_IMPL(lhs, rhs) lhs##rhs
31#define TETL_CONCAT(lhs, rhs) TETL_CONCAT_IMPL(lhs, rhs)
32
33#ifdef __COUNTER__
34 #define TETL_UNIQUE_NAME(prefix) TETL_CONCAT(prefix, __COUNTER__)
35#else
36 #define TETL_UNIQUE_NAME(prefix) TETL_CONCAT(prefix, __LINE__)
37#endif
38
39#if defined(__GNUC__) or defined(__clang__)
40 #define TETL_PP_FUNC_SIG __PRETTY_FUNCTION__
41#else
42 #define TETL_PP_FUNC_SIG __func__
43#endif
44
45#endif // TETL_CONFIG_PREPROCESSOR_HPP