Home | History | Annotate | Download | only in impl
      1 /*
      2  * Copyright 2014 Google Inc. All rights reserved.
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *     http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef FRUIT_CONFIG_BASE_H
     18 #define FRUIT_CONFIG_BASE_H
     19 
     20 // Needed for all Clang versions (as of January 2016), not needed for GCC.
     21 // This can also be defined for GCC, but it slightly slows down compile time of code using Fruit.
     22 #define FRUIT_HAS_CLANG_ARBITRARY_OVERLOAD_RESOLUTION_BUG 1
     23 
     24 // Whether the compiler defines std::max_align_t.
     25 #define FRUIT_HAS_STD_MAX_ALIGN_T 1
     26 
     27 // Whether the compiler defines ::max_align_t.
     28 // Ignored if FRUIT_HAS_STD_MAX_ALIGN_T is set.
     29 #define FRUIT_HAS_MAX_ALIGN_T 1
     30 
     31 // Whether the compiler defines std::is_trivially_copyable.
     32 #define FRUIT_HAS_STD_IS_TRIVIALLY_COPYABLE 1
     33 
     34 // Whether the compiler defines __has_trivial_copy.
     35 // Ignored if FRUIT_HAS_STD_IS_TRIVIALLY_COPYABLE is set.
     36 #define FRUIT_HAS_HAS_TRIVIAL_COPY 1
     37 
     38 // Whether the compiler defines __is_trivially_copyable.
     39 // Ignored if FRUIT_HAS_STD_IS_TRIVIALLY_COPYABLE is set.
     40 #define FRUIT_HAS_IS_TRIVIALLY_COPYABLE 1
     41 
     42 // Whether the compiler defines std::is_trivially_copy_constructible.
     43 #define FRUIT_HAS_STD_IS_TRIVIALLY_COPY_CONSTRUCTIBLE 1
     44 
     45 // Whether typeid() is available. Typically, it is unless RTTI is disabled.
     46 #define FRUIT_HAS_TYPEID 1
     47 
     48 // Whether typeid() is constexpr. Typically, it is except in MSVC.
     49 #define FRUIT_HAS_CONSTEXPR_TYPEID 1
     50 
     51 // Whether abi::__cxa_demangle() is available after including cxxabi.h.
     52 #define FRUIT_HAS_CXA_DEMANGLE 1
     53 
     54 #define FRUIT_USES_BOOST 1
     55 
     56 #define FRUIT_HAS_ALWAYS_INLINE_ATTRIBUTE 1
     57 
     58 #define FRUIT_HAS_FORCEINLINE 0
     59 
     60 #define FRUIT_HAS_ATTRIBUTE_DEPRECATED 0
     61 
     62 #define FRUIT_HAS_GCC_ATTRIBUTE_DEPRECATED 1
     63 
     64 #define FRUIT_HAS_DECLSPEC_DEPRECATED 0
     65 
     66 #define FRUIT_HAS_MSVC_ASSUME 0
     67 
     68 #define FRUIT_HAS_BUILTIN_UNREACHABLE 1
     69 
     70 #endif // FRUIT_CONFIG_BASE_H
     71