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
3#ifndef TETL_CONFIG_BUILTIN_TYPES_HPP
4#define TETL_CONFIG_BUILTIN_TYPES_HPP
5
6#if defined(TETL_COMPILER_MSVC)
7 #define TETL_BUILTIN_INT8 signed __int8
8 #define TETL_BUILTIN_INT16 signed __int16
9 #define TETL_BUILTIN_INT32 signed __int32
10 #define TETL_BUILTIN_INT64 signed __int64
11 #define TETL_BUILTIN_UINT8 unsigned __int8
12 #define TETL_BUILTIN_UINT16 unsigned __int16
13 #define TETL_BUILTIN_UINT32 unsigned __int32
14 #define TETL_BUILTIN_UINT64 unsigned __int64
15
16 #define TETL_BUILTIN_INTPTR TETL_BUILTIN_INT64
17 #define TETL_BUILTIN_UINTPTR TETL_BUILTIN_UINT64
18 #define TETL_BUILTIN_INTMAX TETL_BUILTIN_INT64
19 #define TETL_BUILTIN_UINTMAX TETL_BUILTIN_UINT64
20 #define TETL_BUILTIN_SIZET decltype(sizeof(nullptr))
21 #define TETL_BUILTIN_PTRDIFF TETL_BUILTIN_INT64
22#else
23 #define TETL_BUILTIN_INT8 __INT8_TYPE__
24 #define TETL_BUILTIN_INT16 __INT16_TYPE__
25 #define TETL_BUILTIN_INT32 __INT32_TYPE__
26 #define TETL_BUILTIN_INT64 __INT64_TYPE__
27 #define TETL_BUILTIN_UINT8 __UINT8_TYPE__
28 #define TETL_BUILTIN_UINT16 __UINT16_TYPE__
29 #define TETL_BUILTIN_UINT32 __UINT32_TYPE__
30 #define TETL_BUILTIN_UINT64 __UINT64_TYPE__
31
32 #define TETL_BUILTIN_INTPTR __INTPTR_TYPE__
33 #define TETL_BUILTIN_UINTPTR __UINTPTR_TYPE__
34 #define TETL_BUILTIN_INTMAX __INTMAX_TYPE__
35 #define TETL_BUILTIN_UINTMAX __UINTMAX_TYPE__
36 #define TETL_BUILTIN_SIZET __SIZE_TYPE__
37 #define TETL_BUILTIN_PTRDIFF __PTRDIFF_TYPE__
38#endif
39
40#if !defined(TETL_WCHAR_MIN)
41 #if defined(__WCHAR_MIN__)
42 #define TETL_WCHAR_MIN __WCHAR_MIN__
43 #elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0)
44 #define TETL_WCHAR_MIN (0 + L'\0')
45 #else
46 #define TETL_WCHAR_MIN (-0x7fffffff - 1 + L'\0')
47 #endif
48#endif // TETL_WCHAR_MIN
49
50#if !defined(TETL_WCHAR_MAX)
51 #if defined(__WCHAR_MAX__)
52 #define TETL_WCHAR_MAX __WCHAR_MAX__
53 #elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0)
54 #define TETL_WCHAR_MAX (0xffffffffu + L'\0')
55 #else
56 #define TETL_WCHAR_MAX (0x7fffffff + L'\0')
57 #endif
58#endif // TETL_WCHAR_MAX
59
60#endif // TETL_CONFIG_BUILTIN_TYPES_HPP