31#ifndef ETL_DETERMINE_BUILTIN_SUPPORT_H_INCLUDED
32#define ETL_DETERMINE_BUILTIN_SUPPORT_H_INCLUDED
34#if defined(ETL_USE_TYPE_TRAITS_BUILTINS)
35 #if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE)
36 #define ETL_USING_BUILTIN_IS_ASSIGNABLE 1
39 #if !defined(ETL_USING_BUILTIN_IS_CONSTRUCTIBLE)
40 #define ETL_USING_BUILTIN_IS_CONSTRUCTIBLE 1
43 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE)
44 #define ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE 1
47 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE)
48 #define ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE 1
51 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE)
52 #define ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE 1
55 #if !defined(ETL_USING_BUILTIN_UNDERLYING_TYPE)
56 #define ETL_USING_BUILTIN_UNDERLYING_TYPE 1
59 #if !defined(ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED)
60 #define ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED 1
63 #if !defined(ETL_USING_BUILTIN_MEMCPY)
64 #define ETL_USING_BUILTIN_MEMCPY 1
67 #if !defined(ETL_USING_BUILTIN_MEMMOVE)
68 #define ETL_USING_BUILTIN_MEMMOVE 1
71 #if !defined(ETL_USING_BUILTIN_MEMSET)
72 #define ETL_USING_BUILTIN_MEMSET 1
75 #if !defined(ETL_USING_BUILTIN_MEMCMP)
76 #define ETL_USING_BUILTIN_MEMCMP 1
79 #if !defined(ETL_USING_BUILTIN_MEMCHR)
80 #define ETL_USING_BUILTIN_MEMCHR 1
84#if defined(__has_builtin) && !defined(ETL_COMPILER_MICROSOFT)
85 #if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE)
86 #define ETL_USING_BUILTIN_IS_ASSIGNABLE __has_builtin(__is_assignable)
89 #if !defined(ETL_USING_BUILTIN_IS_CONSTRUCTIBLE)
90 #define ETL_USING_BUILTIN_IS_CONSTRUCTIBLE __has_builtin(__is_constructible)
93 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE)
94 #define ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE (__has_builtin(__has_trivial_constructor) || __has_builtin(__is_trivially_constructible))
97 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE)
98 #define ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE (__has_builtin(__has_trivial_destructor) || __has_builtin(__is_trivially_destructible))
101 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE)
102 #define ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE (__has_builtin(__has_trivial_copy) || __has_builtin(__is_trivially_copyable))
105 #if !defined(ETL_USING_BUILTIN_UNDERLYING_TYPE)
106 #define ETL_USING_BUILTIN_UNDERLYING_TYPE __has_builtin(__underlying_type)
109 #if !defined(ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED)
110 #define ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED __has_builtin(__builtin_is_constant_evaluated)
113 #if !defined(ETL_USING_BUILTIN_MEMCPY)
114 #define ETL_USING_BUILTIN_MEMCPY __has_builtin(__builtin_memcpy)
117 #if !defined(ETL_USING_BUILTIN_MEMMOVE)
118 #define ETL_USING_BUILTIN_MEMMOVE __has_builtin(__builtin_memmove)
121 #if !defined(ETL_USING_BUILTIN_MEMSET)
122 #define ETL_USING_BUILTIN_MEMSET __has_builtin(__builtin_memset)
125 #if !defined(ETL_USING_BUILTIN_MEMCMP)
126 #define ETL_USING_BUILTIN_MEMCMP __has_builtin(__builtin_memcmp)
129 #if !defined(ETL_USING_BUILTIN_MEMCHR)
130 #define ETL_USING_BUILTIN_MEMCHR __has_builtin(__builtin_memchr)
135#if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE)
136 #define ETL_USING_BUILTIN_IS_ASSIGNABLE 0
139#if !defined(ETL_USING_BUILTIN_IS_CONSTRUCTIBLE)
140 #define ETL_USING_BUILTIN_IS_CONSTRUCTIBLE 0
143#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE)
144 #define ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE 0
147#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE)
148 #define ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE 0
151#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE)
152 #define ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE 0
155#if !defined(ETL_USING_BUILTIN_UNDERLYING_TYPE)
156 #define ETL_USING_BUILTIN_UNDERLYING_TYPE 0
159#if !defined(ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED)
160 #define ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED 0
163#if !defined(ETL_USING_BUILTIN_MEMCPY)
164 #define ETL_USING_BUILTIN_MEMCPY 0
167#if !defined(ETL_USING_BUILTIN_MEMMOVE)
168 #define ETL_USING_BUILTIN_MEMMOVE 0
171#if !defined(ETL_USING_BUILTIN_MEMSET)
172 #define ETL_USING_BUILTIN_MEMSET 0
175#if !defined(ETL_USING_BUILTIN_MEMCMP)
176 #define ETL_USING_BUILTIN_MEMCMP 0
179#if !defined(ETL_USING_BUILTIN_MEMCHR)
180 #define ETL_USING_BUILTIN_MEMCHR 0
189 static ETL_CONSTANT
bool using_builtin_is_assignable = (ETL_USING_BUILTIN_IS_ASSIGNABLE == 1);
190 static ETL_CONSTANT
bool using_builtin_is_constructible = (ETL_USING_BUILTIN_IS_CONSTRUCTIBLE == 1);
191 static ETL_CONSTANT
bool using_builtin_is_trivially_constructible = (ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE == 1);
192 static ETL_CONSTANT
bool using_builtin_is_trivially_destructible = (ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE == 1);
193 static ETL_CONSTANT
bool using_builtin_is_trivially_copyable = (ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE == 1);
194 static ETL_CONSTANT
bool using_builtin_underlying_type = (ETL_USING_BUILTIN_UNDERLYING_TYPE == 1);
195 static ETL_CONSTANT
bool using_builtin_is_constant_evaluated = (ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED == 1);
196 static ETL_CONSTANT
bool using_builtin_memcpy = (ETL_USING_BUILTIN_MEMCPY == 1);
197 static ETL_CONSTANT
bool using_builtin_memmove = (ETL_USING_BUILTIN_MEMMOVE == 1);
198 static ETL_CONSTANT
bool using_builtin_memset = (ETL_USING_BUILTIN_MEMSET == 1);
199 static ETL_CONSTANT
bool using_builtin_memcmp = (ETL_USING_BUILTIN_MEMCMP == 1);
200 static ETL_CONSTANT
bool using_builtin_memchr = (ETL_USING_BUILTIN_MEMCHR == 1);
bitset_ext
Definition absolute.h:39