31#ifndef ETL_DETERMINE_BUILTIN_SUPPORT_H_INCLUDED
32#define ETL_DETERMINE_BUILTIN_SUPPORT_H_INCLUDED
34#if defined(ETL_USE_TYPE_TRAITS_BUILTINS)
36 #if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE)
37 #define ETL_USING_BUILTIN_IS_ASSIGNABLE 1
40 #if !defined(ETL_USING_BUILTIN_IS_CONSTRUCTIBLE)
41 #define ETL_USING_BUILTIN_IS_CONSTRUCTIBLE 1
44 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE)
45 #define ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE 1
48 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE)
49 #define ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE 1
52 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE)
53 #define ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE 1
56 #if !defined(ETL_USING_BUILTIN_UNDERLYING_TYPE)
57 #define ETL_USING_BUILTIN_UNDERLYING_TYPE 1
60 #if !defined(ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED)
61 #define ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED 1
64 #if !defined(ETL_USING_BUILTIN_MEMCPY)
65 #define ETL_USING_BUILTIN_MEMCPY 1
68 #if !defined(ETL_USING_BUILTIN_MEMMOVE)
69 #define ETL_USING_BUILTIN_MEMMOVE 1
72 #if !defined(ETL_USING_BUILTIN_MEMSET)
73 #define ETL_USING_BUILTIN_MEMSET 1
76 #if !defined(ETL_USING_BUILTIN_MEMCMP)
77 #define ETL_USING_BUILTIN_MEMCMP 1
80 #if !defined(ETL_USING_BUILTIN_MEMCHR)
81 #define ETL_USING_BUILTIN_MEMCHR 1
85#if defined(__has_builtin) && !defined(ETL_COMPILER_MICROSOFT)
88 #if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE)
89 #define ETL_USING_BUILTIN_IS_ASSIGNABLE __has_builtin(__is_assignable)
92 #if !defined(ETL_USING_BUILTIN_IS_CONSTRUCTIBLE)
93 #define ETL_USING_BUILTIN_IS_CONSTRUCTIBLE __has_builtin(__is_constructible)
96 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE)
97 #define ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE (__has_builtin(__has_trivial_constructor) || __has_builtin(__is_trivially_constructible))
100 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE)
101 #define ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE (__has_builtin(__has_trivial_destructor) || __has_builtin(__is_trivially_destructible))
104 #if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE)
105 #define ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE (__has_builtin(__has_trivial_copy) || __has_builtin(__is_trivially_copyable))
108 #if !defined(ETL_USING_BUILTIN_UNDERLYING_TYPE)
109 #define ETL_USING_BUILTIN_UNDERLYING_TYPE __has_builtin(__underlying_type)
112 #if !defined(ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED)
113 #define ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED __has_builtin(__builtin_is_constant_evaluated)
116 #if !defined(ETL_USING_BUILTIN_MEMCPY)
117 #define ETL_USING_BUILTIN_MEMCPY __has_builtin(__builtin_memcpy)
120 #if !defined(ETL_USING_BUILTIN_MEMMOVE)
121 #define ETL_USING_BUILTIN_MEMMOVE __has_builtin(__builtin_memmove)
124 #if !defined(ETL_USING_BUILTIN_MEMSET)
125 #define ETL_USING_BUILTIN_MEMSET __has_builtin(__builtin_memset)
128 #if !defined(ETL_USING_BUILTIN_MEMCMP)
129 #define ETL_USING_BUILTIN_MEMCMP __has_builtin(__builtin_memcmp)
132 #if !defined(ETL_USING_BUILTIN_MEMCHR)
133 #define ETL_USING_BUILTIN_MEMCHR __has_builtin(__builtin_memchr)
138#if !defined(ETL_USING_BUILTIN_IS_ASSIGNABLE)
139 #define ETL_USING_BUILTIN_IS_ASSIGNABLE 0
142#if !defined(ETL_USING_BUILTIN_IS_CONSTRUCTIBLE)
143 #define ETL_USING_BUILTIN_IS_CONSTRUCTIBLE 0
146#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE)
147 #define ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE 0
150#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE)
151 #define ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE 0
154#if !defined(ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE)
155 #define ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE 0
158#if !defined(ETL_USING_BUILTIN_UNDERLYING_TYPE)
159 #define ETL_USING_BUILTIN_UNDERLYING_TYPE 0
162#if !defined(ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED)
163 #define ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED 0
166#if !defined(ETL_USING_BUILTIN_MEMCPY)
167 #define ETL_USING_BUILTIN_MEMCPY 0
170#if !defined(ETL_USING_BUILTIN_MEMMOVE)
171 #define ETL_USING_BUILTIN_MEMMOVE 0
174#if !defined(ETL_USING_BUILTIN_MEMSET)
175 #define ETL_USING_BUILTIN_MEMSET 0
178#if !defined(ETL_USING_BUILTIN_MEMCMP)
179 #define ETL_USING_BUILTIN_MEMCMP 0
182#if !defined(ETL_USING_BUILTIN_MEMCHR)
183 #define ETL_USING_BUILTIN_MEMCHR 0
192 static ETL_CONSTANT
bool using_builtin_is_assignable = (ETL_USING_BUILTIN_IS_ASSIGNABLE == 1);
193 static ETL_CONSTANT
bool using_builtin_is_constructible = (ETL_USING_BUILTIN_IS_CONSTRUCTIBLE == 1);
194 static ETL_CONSTANT
bool using_builtin_is_trivially_constructible = (ETL_USING_BUILTIN_IS_TRIVIALLY_CONSTRUCTIBLE == 1);
195 static ETL_CONSTANT
bool using_builtin_is_trivially_destructible = (ETL_USING_BUILTIN_IS_TRIVIALLY_DESTRUCTIBLE == 1);
196 static ETL_CONSTANT
bool using_builtin_is_trivially_copyable = (ETL_USING_BUILTIN_IS_TRIVIALLY_COPYABLE == 1);
197 static ETL_CONSTANT
bool using_builtin_underlying_type = (ETL_USING_BUILTIN_UNDERLYING_TYPE == 1);
198 static ETL_CONSTANT
bool using_builtin_is_constant_evaluated = (ETL_USING_BUILTIN_IS_CONSTANT_EVALUATED == 1);
199 static ETL_CONSTANT
bool using_builtin_memcpy = (ETL_USING_BUILTIN_MEMCPY == 1);
200 static ETL_CONSTANT
bool using_builtin_memmove = (ETL_USING_BUILTIN_MEMMOVE == 1);
201 static ETL_CONSTANT
bool using_builtin_memset = (ETL_USING_BUILTIN_MEMSET == 1);
202 static ETL_CONSTANT
bool using_builtin_memcmp = (ETL_USING_BUILTIN_MEMCMP == 1);
203 static ETL_CONSTANT
bool using_builtin_memchr = (ETL_USING_BUILTIN_MEMCHR == 1);
bitset_ext
Definition absolute.h:40