?? gtest-type-util.h
字號:
// This file was GENERATED by a script. DO NOT EDIT BY HAND!!!// Copyright 2008 Google Inc.// All Rights Reserved.//// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are// met://// * Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.// * Redistributions in binary form must reproduce the above// copyright notice, this list of conditions and the following disclaimer// in the documentation and/or other materials provided with the// distribution.// * Neither the name of Google Inc. nor the names of its// contributors may be used to endorse or promote products derived from// this software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.//// Author: wan@google.com (Zhanyong Wan)// Type utilities needed for implementing typed and type-parameterized// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND!//// Currently we support at most 50 types in a list, and at most 50// type-parameterized tests in one type-parameterized test case.// Please contact googletestframework@googlegroups.com if you need// more.#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_#include <gtest/internal/gtest-port.h>#include <gtest/internal/gtest-string.h>#if defined(GTEST_HAS_TYPED_TEST) || defined(GTEST_HAS_TYPED_TEST_P)#ifdef __GNUC__#include <cxxabi.h>#endif // __GNUC__#include <typeinfo>namespace testing {namespace internal {// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same// type. This can be used as a compile-time assertion to ensure that// two types are equal.template <typename T1, typename T2>struct AssertTypeEq;template <typename T>struct AssertTypeEq<T, T> { typedef bool type;};// GetTypeName<T>() returns a human-readable name of type T.template <typename T>String GetTypeName() {#if GTEST_HAS_RTTI const char* const name = typeid(T).name();#ifdef __GNUC__ int status = 0; // gcc's implementation of typeid(T).name() mangles the type name, // so we have to demangle it. char* const readable_name = abi::__cxa_demangle(name, 0, 0, &status); const String name_str(status == 0 ? readable_name : name); free(readable_name); return name_str;#else return name;#endif // __GNUC__#else return "<type>";#endif // GTEST_HAS_RTTI}// A unique type used as the default value for the arguments of class// template Types. This allows us to simulate variadic templates// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't// support directly.struct None {};// The following family of struct and struct templates are used to// represent type lists. In particular, TypesN<T1, T2, ..., TN>// represents a type list with N types (T1, T2, ..., and TN) in it.// Except for Types0, every struct in the family has two member types:// Head for the first type in the list, and Tail for the rest of the// list.// The empty type list.struct Types0 {};// Type lists of length 1, 2, 3, and so on.template <typename T1>struct Types1 { typedef T1 Head; typedef Types0 Tail;};template <typename T1, typename T2>struct Types2 { typedef T1 Head; typedef Types1<T2> Tail;};template <typename T1, typename T2, typename T3>struct Types3 { typedef T1 Head; typedef Types2<T2, T3> Tail;};template <typename T1, typename T2, typename T3, typename T4>struct Types4 { typedef T1 Head; typedef Types3<T2, T3, T4> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5>struct Types5 { typedef T1 Head; typedef Types4<T2, T3, T4, T5> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>struct Types6 { typedef T1 Head; typedef Types5<T2, T3, T4, T5, T6> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>struct Types7 { typedef T1 Head; typedef Types6<T2, T3, T4, T5, T6, T7> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>struct Types8 { typedef T1 Head; typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>struct Types9 { typedef T1 Head; typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>struct Types10 { typedef T1 Head; typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>struct Types11 { typedef T1 Head; typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>struct Types12 { typedef T1 Head; typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>struct Types13 { typedef T1 Head; typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>struct Types14 { typedef T1 Head; typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15>struct Types15 { typedef T1 Head; typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16>struct Types16 { typedef T1 Head; typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17>struct Types17 { typedef T1 Head; typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18>struct Types18 { typedef T1 Head; typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Tail;};template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -