tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
builtin_types.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2// SPDX-FileCopyrightText: Copyright (C) 2021 Tobias Hienzsch
3
4#ifndef TETL_CONFIG_BUILTIN_TYPES_HPP
5#define TETL_CONFIG_BUILTIN_TYPES_HPP
6
7#if defined(TETL_COMPILER_MSVC)
8 #define TETL_BUILTIN_INT8 signed __int8
9 #define TETL_BUILTIN_INT16 signed __int16
10 #define TETL_BUILTIN_INT32 signed __int32
11 #define TETL_BUILTIN_INT64 signed __int64
12 #define TETL_BUILTIN_UINT8 unsigned __int8
13 #define TETL_BUILTIN_UINT16 unsigned __int16
14 #define TETL_BUILTIN_UINT32 unsigned __int32
15 #define TETL_BUILTIN_UINT64 unsigned __int64
16
17 #define TETL_BUILTIN_INTPTR TETL_BUILTIN_INT64
18 #define TETL_BUILTIN_UINTPTR TETL_BUILTIN_UINT64
19 #define TETL_BUILTIN_INTMAX TETL_BUILTIN_INT64
20 #define TETL_BUILTIN_UINTMAX TETL_BUILTIN_UINT64
21 #define TETL_BUILTIN_SIZET decltype(sizeof(nullptr))
22 #define TETL_BUILTIN_PTRDIFF TETL_BUILTIN_INT64
23#else
24 #define TETL_BUILTIN_INT8 __INT8_TYPE__
25 #define TETL_BUILTIN_INT16 __INT16_TYPE__
26 #define TETL_BUILTIN_INT32 __INT32_TYPE__
27 #define TETL_BUILTIN_INT64 __INT64_TYPE__
28 #define TETL_BUILTIN_UINT8 __UINT8_TYPE__
29 #define TETL_BUILTIN_UINT16 __UINT16_TYPE__
30 #define TETL_BUILTIN_UINT32 __UINT32_TYPE__
31 #define TETL_BUILTIN_UINT64 __UINT64_TYPE__
32
33 #define TETL_BUILTIN_INTPTR __INTPTR_TYPE__
34 #define TETL_BUILTIN_UINTPTR __UINTPTR_TYPE__
35 #define TETL_BUILTIN_INTMAX __INTMAX_TYPE__
36 #define TETL_BUILTIN_UINTMAX __UINTMAX_TYPE__
37 #define TETL_BUILTIN_SIZET __SIZE_TYPE__
38 #define TETL_BUILTIN_PTRDIFF __PTRDIFF_TYPE__
39#endif
40
41#if !defined(TETL_WCHAR_MIN)
42 #if defined(__WCHAR_MIN__)
43 #define TETL_WCHAR_MIN __WCHAR_MIN__
44 #elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0)
45 #define TETL_WCHAR_MIN (0 + L'\0')
46 #else
47 #define TETL_WCHAR_MIN (-0x7fffffff - 1 + L'\0')
48 #endif
49#endif // TETL_WCHAR_MIN
50
51#if !defined(TETL_WCHAR_MAX)
52 #if defined(__WCHAR_MAX__)
53 #define TETL_WCHAR_MAX __WCHAR_MAX__
54 #elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0)
55 #define TETL_WCHAR_MAX (0xffffffffu + L'\0')
56 #else
57 #define TETL_WCHAR_MAX (0x7fffffff + L'\0')
58 #endif
59#endif // TETL_WCHAR_MAX
60
61#endif // TETL_CONFIG_BUILTIN_TYPES_HPP