1190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// This file was GENERATED by a script. DO NOT EDIT BY HAND!!! 2190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 3190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// Copyright 2009 Google Inc. 4190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// All Rights Reserved. 5190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// 6190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// Redistribution and use in source and binary forms, with or without 7190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// modification, are permitted provided that the following conditions are 8190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// met: 9190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// 10190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// * Redistributions of source code must retain the above copyright 11190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// notice, this list of conditions and the following disclaimer. 12190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// * Redistributions in binary form must reproduce the above 13190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// copyright notice, this list of conditions and the following disclaimer 14190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// in the documentation and/or other materials provided with the 15190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// distribution. 16190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// * Neither the name of Google Inc. nor the names of its 17190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// contributors may be used to endorse or promote products derived from 18190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// this software without specific prior written permission. 19190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// 20190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// 32190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// Author: wan@google.com (Zhanyong Wan) 33190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 34190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// Implements a subset of TR1 tuple needed by Google Test and Google Mock. 35190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 36190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ 37190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ 38190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 39190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#include <utility> // For ::std::pair. 40190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 41190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// The compiler used in Symbian has a bug that prevents us from declaring the 42190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// tuple template as a friend (it complains that tuple is redefined). This 43190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// hack bypasses the bug by declaring the members that should otherwise be 44190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// private as public. 4557240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer// Sun Studio versions < 12 also have the above bug. 4657240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) 47b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: 48190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#else 49b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ 50190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_10_TYPENAMES_(U)> friend class tuple; \ 51190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer private: 52190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#endif 53190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 54190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// GTEST_n_TUPLE_(T) is the type of an n-tuple. 55190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_0_TUPLE_(T) tuple<> 56190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, \ 57190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer void, void, void> 58190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, \ 59190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer void, void, void> 60190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, \ 61190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer void, void, void> 62190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, \ 63190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer void, void, void> 64190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, \ 65190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer void, void, void> 66190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, \ 67190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer void, void, void> 68190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 69190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer void, void, void> 70190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 71190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T##7, void, void> 72190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 73190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T##7, T##8, void> 74190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 75190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T##7, T##8, T##9> 76190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 77190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// GTEST_n_TYPENAMES_(T) declares a list of n typenames. 78190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_0_TYPENAMES_(T) 79190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_1_TYPENAMES_(T) typename T##0 80190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1 81190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2 82190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 83190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T##3 84190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 85190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T##3, typename T##4 86190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 87190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T##3, typename T##4, typename T##5 88190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 89190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T##3, typename T##4, typename T##5, typename T##6 90190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 91190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T##3, typename T##4, typename T##5, typename T##6, typename T##7 92190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 93190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T##3, typename T##4, typename T##5, typename T##6, \ 94190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T##7, typename T##8 95190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 96190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T##3, typename T##4, typename T##5, typename T##6, \ 97190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T##7, typename T##8, typename T##9 98190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 99190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// In theory, defining stuff in the ::std namespace is undefined 100190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// behavior. We can do this as we are playing the role of a standard 101190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// library vendor. 102190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramernamespace std { 103190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramernamespace tr1 { 104190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 105190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <typename T0 = void, typename T1 = void, typename T2 = void, 106190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T3 = void, typename T4 = void, typename T5 = void, 107190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T6 = void, typename T7 = void, typename T8 = void, 108190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typename T9 = void> 109190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass tuple; 110190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 111190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// Anything in namespace gtest_internal is Google Test's INTERNAL 112190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code. 113190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramernamespace gtest_internal { 114190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 115190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// ByRef<T>::type is T if T is a reference; otherwise it's const T&. 116190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <typename T> 117190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct ByRef { typedef const T& type; }; // NOLINT 118190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <typename T> 119190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct ByRef<T&> { typedef T& type; }; // NOLINT 120190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 121190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// A handy wrapper for ByRef. 122190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type 123190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 124190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// AddRef<T>::type is T if T is a reference; otherwise it's T&. This 125190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// is the same as tr1::add_reference<T>::type. 126190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <typename T> 127190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct AddRef { typedef T& type; }; // NOLINT 128190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <typename T> 129190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct AddRef<T&> { typedef T& type; }; // NOLINT 130190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 131190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// A handy wrapper for AddRef. 132190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type 133190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 134190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// A helper for implementing get<k>(). 135190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <int k> class Get; 136190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 137190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// A helper for implementing tuple_element<k, T>. kIndexValid is true 138190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// iff k < the number of fields in tuple type T. 139190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <bool kIndexValid, int kIndex, class Tuple> 140190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct TupleElement; 141190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 142190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 143190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct TupleElement<true, 0, GTEST_10_TUPLE_(T)> { typedef T0 type; }; 144190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 145190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 146190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct TupleElement<true, 1, GTEST_10_TUPLE_(T)> { typedef T1 type; }; 147190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 148190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 149190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct TupleElement<true, 2, GTEST_10_TUPLE_(T)> { typedef T2 type; }; 150190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 151190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 152190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct TupleElement<true, 3, GTEST_10_TUPLE_(T)> { typedef T3 type; }; 153190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 154190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 155190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct TupleElement<true, 4, GTEST_10_TUPLE_(T)> { typedef T4 type; }; 156190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 157190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 158190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct TupleElement<true, 5, GTEST_10_TUPLE_(T)> { typedef T5 type; }; 159190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 160190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 161190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct TupleElement<true, 6, GTEST_10_TUPLE_(T)> { typedef T6 type; }; 162190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 163190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 164190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct TupleElement<true, 7, GTEST_10_TUPLE_(T)> { typedef T7 type; }; 165190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 166190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 167190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct TupleElement<true, 8, GTEST_10_TUPLE_(T)> { typedef T8 type; }; 168190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 169190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 170190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct TupleElement<true, 9, GTEST_10_TUPLE_(T)> { typedef T9 type; }; 171190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 172190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} // namespace gtest_internal 173190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 174190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 175190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass tuple<> { 176190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 177190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple() {} 178190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const tuple& /* t */) {} 179190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const tuple& /* t */) { return *this; } 180190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 181190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 182190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_1_TYPENAMES_(T)> 183190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass GTEST_1_TUPLE_(T) { 184190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 185190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <int k> friend class gtest_internal::Get; 186190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 18757240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer tuple() : f0_() {} 188190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 189190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {} 190190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 191190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const tuple& t) : f0_(t.f0_) {} 192190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 193190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_1_TYPENAMES_(U)> 194190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {} 195190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 196190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const tuple& t) { return CopyFrom(t); } 197190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 198190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_1_TYPENAMES_(U)> 199190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const GTEST_1_TUPLE_(U)& t) { 200190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return CopyFrom(t); 201190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 202190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 203190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_DECLARE_TUPLE_AS_FRIEND_ 204190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 205190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_1_TYPENAMES_(U)> 206190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) { 207190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f0_ = t.f0_; 208190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return *this; 209190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 210190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 211190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T0 f0_; 212190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 213190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 214190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_2_TYPENAMES_(T)> 215190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass GTEST_2_TUPLE_(T) { 216190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 217190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <int k> friend class gtest_internal::Get; 218190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 21957240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer tuple() : f0_(), f1_() {} 220190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 221190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0), 222190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f1_(f1) {} 223190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 224190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {} 225190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 226190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_2_TYPENAMES_(U)> 227190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {} 228190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <typename U0, typename U1> 229190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {} 230190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 231190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const tuple& t) { return CopyFrom(t); } 232190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 233190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_2_TYPENAMES_(U)> 234190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const GTEST_2_TUPLE_(U)& t) { 235190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return CopyFrom(t); 236190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 237190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <typename U0, typename U1> 238190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const ::std::pair<U0, U1>& p) { 239190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f0_ = p.first; 240190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f1_ = p.second; 241190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return *this; 242190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 243190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 244190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_DECLARE_TUPLE_AS_FRIEND_ 245190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 246190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_2_TYPENAMES_(U)> 247190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) { 248190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f0_ = t.f0_; 249190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f1_ = t.f1_; 250190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return *this; 251190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 252190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 253190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T0 f0_; 254190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T1 f1_; 255190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 256190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 257190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_3_TYPENAMES_(T)> 258190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass GTEST_3_TUPLE_(T) { 259190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 260190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <int k> friend class gtest_internal::Get; 261190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 26257240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer tuple() : f0_(), f1_(), f2_() {} 263190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 264190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 265190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {} 266190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 267190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} 268190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 269190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_3_TYPENAMES_(U)> 270190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} 271190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 272190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const tuple& t) { return CopyFrom(t); } 273190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 274190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_3_TYPENAMES_(U)> 275190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const GTEST_3_TUPLE_(U)& t) { 276190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return CopyFrom(t); 277190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 278190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 279190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_DECLARE_TUPLE_AS_FRIEND_ 280190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 281190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_3_TYPENAMES_(U)> 282190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) { 283190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f0_ = t.f0_; 284190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f1_ = t.f1_; 285190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f2_ = t.f2_; 286190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return *this; 287190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 288190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 289190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T0 f0_; 290190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T1 f1_; 291190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T2 f2_; 292190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 293190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 294190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_4_TYPENAMES_(T)> 295190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass GTEST_4_TUPLE_(T) { 296190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 297190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <int k> friend class gtest_internal::Get; 298190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 29957240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer tuple() : f0_(), f1_(), f2_(), f3_() {} 300190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 301190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 302190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2), 303190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_(f3) {} 304190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 305190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {} 306190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 307190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_4_TYPENAMES_(U)> 308190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 309190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_(t.f3_) {} 310190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 311190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const tuple& t) { return CopyFrom(t); } 312190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 313190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_4_TYPENAMES_(U)> 314190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const GTEST_4_TUPLE_(U)& t) { 315190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return CopyFrom(t); 316190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 317190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 318190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_DECLARE_TUPLE_AS_FRIEND_ 319190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 320190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_4_TYPENAMES_(U)> 321190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) { 322190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f0_ = t.f0_; 323190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f1_ = t.f1_; 324190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f2_ = t.f2_; 325190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_ = t.f3_; 326190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return *this; 327190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 328190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 329190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T0 f0_; 330190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T1 f1_; 331190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T2 f2_; 332190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T3 f3_; 333190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 334190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 335190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_5_TYPENAMES_(T)> 336190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass GTEST_5_TUPLE_(T) { 337190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 338190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <int k> friend class gtest_internal::Get; 339190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 34057240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {} 341190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 342190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 343190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, 344190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {} 345190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 346190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 347190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_(t.f4_) {} 348190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 349190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_5_TYPENAMES_(U)> 350190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 351190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_(t.f3_), f4_(t.f4_) {} 352190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 353190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const tuple& t) { return CopyFrom(t); } 354190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 355190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_5_TYPENAMES_(U)> 356190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const GTEST_5_TUPLE_(U)& t) { 357190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return CopyFrom(t); 358190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 359190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 360190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_DECLARE_TUPLE_AS_FRIEND_ 361190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 362190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_5_TYPENAMES_(U)> 363190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) { 364190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f0_ = t.f0_; 365190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f1_ = t.f1_; 366190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f2_ = t.f2_; 367190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_ = t.f3_; 368190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_ = t.f4_; 369190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return *this; 370190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 371190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 372190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T0 f0_; 373190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T1 f1_; 374190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T2 f2_; 375190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T3 f3_; 376190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T4 f4_; 377190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 378190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 379190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_6_TYPENAMES_(T)> 380190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass GTEST_6_TUPLE_(T) { 381190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 382190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <int k> friend class gtest_internal::Get; 383190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 38457240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {} 385190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 386190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 387190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 388190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), 389190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f5_(f5) {} 390190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 391190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 392190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_(t.f4_), f5_(t.f5_) {} 393190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 394190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_6_TYPENAMES_(U)> 395190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 396190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {} 397190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 398190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const tuple& t) { return CopyFrom(t); } 399190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 400190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_6_TYPENAMES_(U)> 401190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const GTEST_6_TUPLE_(U)& t) { 402190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return CopyFrom(t); 403190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 404190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 405190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_DECLARE_TUPLE_AS_FRIEND_ 406190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 407190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_6_TYPENAMES_(U)> 408190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) { 409190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f0_ = t.f0_; 410190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f1_ = t.f1_; 411190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f2_ = t.f2_; 412190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_ = t.f3_; 413190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_ = t.f4_; 414190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f5_ = t.f5_; 415190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return *this; 416190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 417190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 418190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T0 f0_; 419190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T1 f1_; 420190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T2 f2_; 421190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T3 f3_; 422190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T4 f4_; 423190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T5 f5_; 424190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 425190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 426190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_7_TYPENAMES_(T)> 427190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass GTEST_7_TUPLE_(T) { 428190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 429190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <int k> friend class gtest_internal::Get; 430190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 43157240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {} 432190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 433190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 434190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 435190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2), 436190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_(f3), f4_(f4), f5_(f5), f6_(f6) {} 437190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 438190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 439190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} 440190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 441190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_7_TYPENAMES_(U)> 442190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 443190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} 444190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 445190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const tuple& t) { return CopyFrom(t); } 446190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 447190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_7_TYPENAMES_(U)> 448190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const GTEST_7_TUPLE_(U)& t) { 449190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return CopyFrom(t); 450190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 451190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 452190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_DECLARE_TUPLE_AS_FRIEND_ 453190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 454190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_7_TYPENAMES_(U)> 455190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) { 456190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f0_ = t.f0_; 457190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f1_ = t.f1_; 458190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f2_ = t.f2_; 459190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_ = t.f3_; 460190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_ = t.f4_; 461190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f5_ = t.f5_; 462190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f6_ = t.f6_; 463190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return *this; 464190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 465190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 466190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T0 f0_; 467190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T1 f1_; 468190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T2 f2_; 469190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T3 f3_; 470190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T4 f4_; 471190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T5 f5_; 472190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T6 f6_; 473190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 474190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 475190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_8_TYPENAMES_(T)> 476190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass GTEST_8_TUPLE_(T) { 477190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 478190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <int k> friend class gtest_internal::Get; 479190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 48057240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {} 481190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 482190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 483190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 484190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, 485190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), 486190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f5_(f5), f6_(f6), f7_(f7) {} 487190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 488190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 489190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} 490190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 491190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_8_TYPENAMES_(U)> 492190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 493190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} 494190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 495190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const tuple& t) { return CopyFrom(t); } 496190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 497190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_8_TYPENAMES_(U)> 498190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const GTEST_8_TUPLE_(U)& t) { 499190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return CopyFrom(t); 500190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 501190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 502190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_DECLARE_TUPLE_AS_FRIEND_ 503190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 504190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_8_TYPENAMES_(U)> 505190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) { 506190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f0_ = t.f0_; 507190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f1_ = t.f1_; 508190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f2_ = t.f2_; 509190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_ = t.f3_; 510190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_ = t.f4_; 511190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f5_ = t.f5_; 512190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f6_ = t.f6_; 513190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f7_ = t.f7_; 514190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return *this; 515190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 516190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 517190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T0 f0_; 518190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T1 f1_; 519190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T2 f2_; 520190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T3 f3_; 521190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T4 f4_; 522190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T5 f5_; 523190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T6 f6_; 524190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T7 f7_; 525190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 526190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 527190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_9_TYPENAMES_(T)> 528190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass GTEST_9_TUPLE_(T) { 529190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 530190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <int k> friend class gtest_internal::Get; 531190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 53257240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {} 533190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 534190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 535190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 536190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, 537190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), 538190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f5_(f5), f6_(f6), f7_(f7), f8_(f8) {} 539190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 540190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 541190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} 542190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 543190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_9_TYPENAMES_(U)> 544190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 545190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} 546190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 547190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const tuple& t) { return CopyFrom(t); } 548190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 549190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_9_TYPENAMES_(U)> 550190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const GTEST_9_TUPLE_(U)& t) { 551190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return CopyFrom(t); 552190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 553190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 554190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_DECLARE_TUPLE_AS_FRIEND_ 555190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 556190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_9_TYPENAMES_(U)> 557190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) { 558190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f0_ = t.f0_; 559190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f1_ = t.f1_; 560190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f2_ = t.f2_; 561190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_ = t.f3_; 562190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_ = t.f4_; 563190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f5_ = t.f5_; 564190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f6_ = t.f6_; 565190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f7_ = t.f7_; 566190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f8_ = t.f8_; 567190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return *this; 568190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 569190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 570190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T0 f0_; 571190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T1 f1_; 572190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T2 f2_; 573190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T3 f3_; 574190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T4 f4_; 575190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T5 f5_; 576190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T6 f6_; 577190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T7 f7_; 578190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T8 f8_; 579190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 580190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 581190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 582190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass tuple { 583190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 584190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <int k> friend class gtest_internal::Get; 585190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 58657240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(), 58757240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer f9_() {} 588190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 589190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 590190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 591190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, 592190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2), 593190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {} 594190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 595190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 596190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {} 597190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 598190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_10_TYPENAMES_(U)> 599190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 600190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), 601190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f9_(t.f9_) {} 602190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 603190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const tuple& t) { return CopyFrom(t); } 604190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 605190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_10_TYPENAMES_(U)> 606190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& operator=(const GTEST_10_TUPLE_(U)& t) { 607190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return CopyFrom(t); 608190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 609190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 610190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer GTEST_DECLARE_TUPLE_AS_FRIEND_ 611190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 612190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <GTEST_10_TYPENAMES_(U)> 613190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) { 614190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f0_ = t.f0_; 615190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f1_ = t.f1_; 616190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f2_ = t.f2_; 617190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f3_ = t.f3_; 618190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f4_ = t.f4_; 619190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f5_ = t.f5_; 620190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f6_ = t.f6_; 621190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f7_ = t.f7_; 622190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f8_ = t.f8_; 623190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer f9_ = t.f9_; 624190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return *this; 625190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 626190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 627190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T0 f0_; 628190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T1 f1_; 629190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T2 f2_; 630190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T3 f3_; 631190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T4 f4_; 632190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T5 f5_; 633190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T6 f6_; 634190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T7 f7_; 635190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T8 f8_; 636190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer T9 f9_; 637190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 638190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 639190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// 6.1.3.2 Tuple creation functions. 640190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 641190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// Known limitations: we don't support passing an 642190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// std::tr1::reference_wrapper<T> to make_tuple(). And we don't 643190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// implement tie(). 644190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 645190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline tuple<> make_tuple() { return tuple<>(); } 646190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 647190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_1_TYPENAMES_(T)> 648190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) { 649190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return GTEST_1_TUPLE_(T)(f0); 650190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 651190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 652190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_2_TYPENAMES_(T)> 653190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) { 654190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return GTEST_2_TUPLE_(T)(f0, f1); 655190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 656190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 657190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_3_TYPENAMES_(T)> 658190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) { 659190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return GTEST_3_TUPLE_(T)(f0, f1, f2); 660190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 661190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 662190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_4_TYPENAMES_(T)> 663190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 664190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer const T3& f3) { 665190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return GTEST_4_TUPLE_(T)(f0, f1, f2, f3); 666190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 667190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 668190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_5_TYPENAMES_(T)> 669190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 670190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer const T3& f3, const T4& f4) { 671190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4); 672190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 673190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 674190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_6_TYPENAMES_(T)> 675190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 676190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer const T3& f3, const T4& f4, const T5& f5) { 677190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5); 678190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 679190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 680190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_7_TYPENAMES_(T)> 681190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 682190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer const T3& f3, const T4& f4, const T5& f5, const T6& f6) { 683190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6); 684190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 685190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 686190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_8_TYPENAMES_(T)> 687190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 688190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) { 689190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7); 690190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 691190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 692190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_9_TYPENAMES_(T)> 693190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 694190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, 695190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer const T8& f8) { 696190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8); 697190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 698190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 699190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 700190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 701190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, 702190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer const T8& f8, const T9& f9) { 703190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9); 704190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 705190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 706190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// 6.1.3.3 Tuple helper classes. 707190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 708190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <typename Tuple> struct tuple_size; 709190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 710190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_0_TYPENAMES_(T)> 711190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_size<GTEST_0_TUPLE_(T)> { static const int value = 0; }; 712190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 713190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_1_TYPENAMES_(T)> 714190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_size<GTEST_1_TUPLE_(T)> { static const int value = 1; }; 715190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 716190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_2_TYPENAMES_(T)> 717190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_size<GTEST_2_TUPLE_(T)> { static const int value = 2; }; 718190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 719190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_3_TYPENAMES_(T)> 720190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_size<GTEST_3_TUPLE_(T)> { static const int value = 3; }; 721190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 722190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_4_TYPENAMES_(T)> 723190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_size<GTEST_4_TUPLE_(T)> { static const int value = 4; }; 724190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 725190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_5_TYPENAMES_(T)> 726190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_size<GTEST_5_TUPLE_(T)> { static const int value = 5; }; 727190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 728190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_6_TYPENAMES_(T)> 729190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_size<GTEST_6_TUPLE_(T)> { static const int value = 6; }; 730190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 731190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_7_TYPENAMES_(T)> 732190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_size<GTEST_7_TUPLE_(T)> { static const int value = 7; }; 733190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 734190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_8_TYPENAMES_(T)> 735190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_size<GTEST_8_TUPLE_(T)> { static const int value = 8; }; 736190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 737190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_9_TYPENAMES_(T)> 738190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_size<GTEST_9_TUPLE_(T)> { static const int value = 9; }; 739190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 740190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T)> 741190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_size<GTEST_10_TUPLE_(T)> { static const int value = 10; }; 742190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 743190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <int k, class Tuple> 744190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct tuple_element { 745190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer typedef typename gtest_internal::TupleElement< 746190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer k < (tuple_size<Tuple>::value), k, Tuple>::type type; 747190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 748190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 749190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type 750190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 751190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// 6.1.3.4 Element access. 752190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 753190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramernamespace gtest_internal { 754190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 755190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 756190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass Get<0> { 757190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 758190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 759190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) 760190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer Field(Tuple& t) { return t.f0_; } // NOLINT 761190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 762190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 763190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) 764190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer ConstField(const Tuple& t) { return t.f0_; } 765190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 766190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 767190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 768190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass Get<1> { 769190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 770190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 771190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) 772190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer Field(Tuple& t) { return t.f1_; } // NOLINT 773190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 774190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 775190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) 776190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer ConstField(const Tuple& t) { return t.f1_; } 777190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 778190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 779190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 780190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass Get<2> { 781190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 782190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 783190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) 784190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer Field(Tuple& t) { return t.f2_; } // NOLINT 785190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 786190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 787190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) 788190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer ConstField(const Tuple& t) { return t.f2_; } 789190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 790190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 791190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 792190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass Get<3> { 793190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 794190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 795190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) 796190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer Field(Tuple& t) { return t.f3_; } // NOLINT 797190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 798190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 799190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) 800190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer ConstField(const Tuple& t) { return t.f3_; } 801190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 802190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 803190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 804190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass Get<4> { 805190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 806190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 807190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) 808190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer Field(Tuple& t) { return t.f4_; } // NOLINT 809190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 810190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 811190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) 812190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer ConstField(const Tuple& t) { return t.f4_; } 813190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 814190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 815190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 816190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass Get<5> { 817190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 818190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 819190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) 820190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer Field(Tuple& t) { return t.f5_; } // NOLINT 821190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 822190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 823190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) 824190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer ConstField(const Tuple& t) { return t.f5_; } 825190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 826190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 827190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 828190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass Get<6> { 829190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 830190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 831190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) 832190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer Field(Tuple& t) { return t.f6_; } // NOLINT 833190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 834190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 835190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) 836190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer ConstField(const Tuple& t) { return t.f6_; } 837190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 838190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 839190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 840190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass Get<7> { 841190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 842190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 843190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) 844190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer Field(Tuple& t) { return t.f7_; } // NOLINT 845190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 846190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 847190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) 848190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer ConstField(const Tuple& t) { return t.f7_; } 849190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 850190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 851190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 852190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass Get<8> { 853190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 854190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 855190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) 856190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer Field(Tuple& t) { return t.f8_; } // NOLINT 857190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 858190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 859190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) 860190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer ConstField(const Tuple& t) { return t.f8_; } 861190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 862190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 863190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 864190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerclass Get<9> { 865190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer public: 866190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 867190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) 868190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer Field(Tuple& t) { return t.f9_; } // NOLINT 869190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 870190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple> 871190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) 872190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer ConstField(const Tuple& t) { return t.f9_; } 873190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 874190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 875190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} // namespace gtest_internal 876190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 877190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <int k, GTEST_10_TYPENAMES_(T)> 878190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin KramerGTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) 879190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerget(GTEST_10_TUPLE_(T)& t) { 880190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return gtest_internal::Get<k>::Field(t); 881190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 882190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 883190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <int k, GTEST_10_TYPENAMES_(T)> 884190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin KramerGTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) 885190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerget(const GTEST_10_TUPLE_(T)& t) { 886190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return gtest_internal::Get<k>::ConstField(t); 887190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 888190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 889190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// 6.1.3.5 Relational operators 890190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 891190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// We only implement == and !=, as we don't have a need for the rest yet. 892190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 893190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramernamespace gtest_internal { 894190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 895190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the 896190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// first k fields of t1 equals the first k fields of t2. 897190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if 898190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// k1 != k2. 899190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <int kSize1, int kSize2> 900190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct SameSizeTuplePrefixComparator; 901190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 902190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <> 903190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct SameSizeTuplePrefixComparator<0, 0> { 904190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple1, class Tuple2> 905190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) { 906190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return true; 907190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 908190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 909190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 910190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <int k> 911190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerstruct SameSizeTuplePrefixComparator<k, k> { 912190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer template <class Tuple1, class Tuple2> 913190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer static bool Eq(const Tuple1& t1, const Tuple2& t2) { 914190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) && 915190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2); 916190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer } 917190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer}; 918190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 919190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} // namespace gtest_internal 920190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 921190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)> 922190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline bool operator==(const GTEST_10_TUPLE_(T)& t, 923190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer const GTEST_10_TUPLE_(U)& u) { 924190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer return gtest_internal::SameSizeTuplePrefixComparator< 925190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple_size<GTEST_10_TUPLE_(T)>::value, 926190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer tuple_size<GTEST_10_TUPLE_(U)>::value>::Eq(t, u); 927190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} 928190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 929190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramertemplate <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)> 930190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramerinline bool operator!=(const GTEST_10_TUPLE_(T)& t, 931190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer const GTEST_10_TUPLE_(U)& u) { return !(t == u); } 932190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 933190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// 6.1.4 Pairs. 934190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer// Unimplemented. 935190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 936190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} // namespace tr1 937190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer} // namespace std 938190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 939190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_0_TUPLE_ 940190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_1_TUPLE_ 941190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_2_TUPLE_ 942190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_3_TUPLE_ 943190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_4_TUPLE_ 944190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_5_TUPLE_ 945190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_6_TUPLE_ 946190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_7_TUPLE_ 947190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_8_TUPLE_ 948190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_9_TUPLE_ 949190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_10_TUPLE_ 950190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 951190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_0_TYPENAMES_ 952190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_1_TYPENAMES_ 953190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_2_TYPENAMES_ 954190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_3_TYPENAMES_ 955190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_4_TYPENAMES_ 956190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_5_TYPENAMES_ 957190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_6_TYPENAMES_ 958190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_7_TYPENAMES_ 959190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_8_TYPENAMES_ 960190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_9_TYPENAMES_ 961190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_10_TYPENAMES_ 962190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 963190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_DECLARE_TUPLE_AS_FRIEND_ 964190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_BY_REF_ 965190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_ADD_REF_ 966190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#undef GTEST_TUPLE_ELEMENT_ 967190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer 968190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ 969