1 #ifndef _DEMETA_HPP 2 #define _DEMETA_HPP 3 /*------------------------------------------------------------------------- 4 * drawElements C++ Base Library 5 * ----------------------------- 6 * 7 * Copyright 2015 The Android Open Source Project 8 * 9 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * you may not use this file except in compliance with the License. 11 * You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 * 21 *//*! 22 * \file 23 * \brief Metaprogramming tools 24 *//*--------------------------------------------------------------------*/ 25 26 #include "deDefs.hpp" 27 28 namespace de 29 { 30 namespace meta 31 { 32 33 template <typename T, bool Cond> 34 struct EnableIf 35 { 36 }; 37 38 template <typename T> 39 struct EnableIf<T, true> 40 { 41 typedef T Type; 42 }; 43 44 template <bool Cond> 45 struct Not 46 { 47 enum 48 { 49 Value = !Cond 50 }; 51 }; 52 53 template <typename A, typename B> 54 struct TypesSame 55 { 56 enum 57 { 58 Value = false 59 }; 60 }; 61 62 template <typename A> 63 struct TypesSame<A, A> 64 { 65 enum 66 { 67 Value = true 68 }; 69 }; 70 71 } // namespace meta 72 } // namespace de 73 74 #endif // _DEMETA_HPP 75