1fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// This file was GENERATED by a script. DO NOT EDIT BY HAND!!! 2fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Copyright 2009 Google Inc. 4fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// All Rights Reserved. 5fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 6fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Redistribution and use in source and binary forms, with or without 7fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// modification, are permitted provided that the following conditions are 8fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// met: 9fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 10fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// * Redistributions of source code must retain the above copyright 11fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// notice, this list of conditions and the following disclaimer. 12fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// * Redistributions in binary form must reproduce the above 13fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// copyright notice, this list of conditions and the following disclaimer 14fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// in the documentation and/or other materials provided with the 15fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// distribution. 16fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// * Neither the name of Google Inc. nor the names of its 17fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// contributors may be used to endorse or promote products derived from 18fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// this software without specific prior written permission. 19fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 20fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 32fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Author: wan@google.com (Zhanyong Wan) 33fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 34fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Implements a subset of TR1 tuple needed by Google Test and Google Mock. 35fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 36fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ 37fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ 38fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 39fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <utility> // For ::std::pair. 40fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 41fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// The compiler used in Symbian has a bug that prevents us from declaring the 42fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// tuple template as a friend (it complains that tuple is redefined). This 43fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// hack bypasses the bug by declaring the members that should otherwise be 44fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// private as public. 450ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson// Sun Studio versions < 12 also have the above bug. 460ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) 47fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: 48fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else 49fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ 50fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_10_TYPENAMES_(U)> friend class tuple; \ 51fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville private: 52fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 53fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 54fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// GTEST_n_TUPLE_(T) is the type of an n-tuple. 55fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_0_TUPLE_(T) tuple<> 56fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, \ 57fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville void, void, void> 58fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, \ 59fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville void, void, void> 60fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, \ 61fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville void, void, void> 62fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, \ 63fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville void, void, void> 64fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, \ 65fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville void, void, void> 66fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, \ 67fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville void, void, void> 68fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 69fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville void, void, void> 70fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 71fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T##7, void, void> 72fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 73fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T##7, T##8, void> 74fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ 75fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T##7, T##8, T##9> 76fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 77fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// GTEST_n_TYPENAMES_(T) declares a list of n typenames. 78fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_0_TYPENAMES_(T) 79fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_1_TYPENAMES_(T) typename T##0 80fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1 81fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2 82fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 83fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T##3 84fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 85fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T##3, typename T##4 86fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 87fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T##3, typename T##4, typename T##5 88fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 89fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T##3, typename T##4, typename T##5, typename T##6 90fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 91fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T##3, typename T##4, typename T##5, typename T##6, typename T##7 92fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 93fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T##3, typename T##4, typename T##5, typename T##6, \ 94fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T##7, typename T##8 95fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ 96fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T##3, typename T##4, typename T##5, typename T##6, \ 97fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T##7, typename T##8, typename T##9 98fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 99fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// In theory, defining stuff in the ::std namespace is undefined 100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// behavior. We can do this as we are playing the role of a standard 101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// library vendor. 102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenamespace std { 103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenamespace tr1 { 104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <typename T0 = void, typename T1 = void, typename T2 = void, 106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T3 = void, typename T4 = void, typename T5 = void, 107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T6 = void, typename T7 = void, typename T8 = void, 108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typename T9 = void> 109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass tuple; 110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Anything in namespace gtest_internal is Google Test's INTERNAL 112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code. 113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenamespace gtest_internal { 114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// ByRef<T>::type is T if T is a reference; otherwise it's const T&. 116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <typename T> 117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct ByRef { typedef const T& type; }; // NOLINT 118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <typename T> 119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct ByRef<T&> { typedef T& type; }; // NOLINT 120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// A handy wrapper for ByRef. 122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type 123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// AddRef<T>::type is T if T is a reference; otherwise it's T&. This 125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// is the same as tr1::add_reference<T>::type. 126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <typename T> 127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct AddRef { typedef T& type; }; // NOLINT 128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <typename T> 129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct AddRef<T&> { typedef T& type; }; // NOLINT 130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// A handy wrapper for AddRef. 132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type 133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// A helper for implementing get<k>(). 135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <int k> class Get; 136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// A helper for implementing tuple_element<k, T>. kIndexValid is true 138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// iff k < the number of fields in tuple type T. 139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <bool kIndexValid, int kIndex, class Tuple> 140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct TupleElement; 141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct TupleElement<true, 0, GTEST_10_TUPLE_(T)> { typedef T0 type; }; 144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct TupleElement<true, 1, GTEST_10_TUPLE_(T)> { typedef T1 type; }; 147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct TupleElement<true, 2, GTEST_10_TUPLE_(T)> { typedef T2 type; }; 150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct TupleElement<true, 3, GTEST_10_TUPLE_(T)> { typedef T3 type; }; 153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct TupleElement<true, 4, GTEST_10_TUPLE_(T)> { typedef T4 type; }; 156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct TupleElement<true, 5, GTEST_10_TUPLE_(T)> { typedef T5 type; }; 159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct TupleElement<true, 6, GTEST_10_TUPLE_(T)> { typedef T6 type; }; 162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct TupleElement<true, 7, GTEST_10_TUPLE_(T)> { typedef T7 type; }; 165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct TupleElement<true, 8, GTEST_10_TUPLE_(T)> { typedef T8 type; }; 168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct TupleElement<true, 9, GTEST_10_TUPLE_(T)> { typedef T9 type; }; 171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} // namespace gtest_internal 173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass tuple<> { 176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple() {} 178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const tuple& /* t */) {} 179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const tuple& /* t */) { return *this; } 180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_1_TYPENAMES_(T)> 183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass GTEST_1_TUPLE_(T) { 184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <int k> friend class gtest_internal::Get; 186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1870ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson tuple() : f0_() {} 188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {} 190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const tuple& t) : f0_(t.f0_) {} 192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_1_TYPENAMES_(U)> 194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {} 195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const tuple& t) { return CopyFrom(t); } 197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_1_TYPENAMES_(U)> 199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const GTEST_1_TUPLE_(U)& t) { 200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return CopyFrom(t); 201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_DECLARE_TUPLE_AS_FRIEND_ 204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_1_TYPENAMES_(U)> 206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) { 207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f0_ = t.f0_; 208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return *this; 209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T0 f0_; 212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_2_TYPENAMES_(T)> 215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass GTEST_2_TUPLE_(T) { 216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <int k> friend class gtest_internal::Get; 218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2190ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson tuple() : f0_(), f1_() {} 220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0), 222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f1_(f1) {} 223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {} 225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_2_TYPENAMES_(U)> 227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {} 228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <typename U0, typename U1> 229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {} 230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const tuple& t) { return CopyFrom(t); } 232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_2_TYPENAMES_(U)> 234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const GTEST_2_TUPLE_(U)& t) { 235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return CopyFrom(t); 236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <typename U0, typename U1> 238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const ::std::pair<U0, U1>& p) { 239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f0_ = p.first; 240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f1_ = p.second; 241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return *this; 242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_DECLARE_TUPLE_AS_FRIEND_ 245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_2_TYPENAMES_(U)> 247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) { 248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f0_ = t.f0_; 249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f1_ = t.f1_; 250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return *this; 251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T0 f0_; 254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T1 f1_; 255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_3_TYPENAMES_(T)> 258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass GTEST_3_TUPLE_(T) { 259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <int k> friend class gtest_internal::Get; 261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2620ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson tuple() : f0_(), f1_(), f2_() {} 263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {} 266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} 268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_3_TYPENAMES_(U)> 270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} 271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const tuple& t) { return CopyFrom(t); } 273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_3_TYPENAMES_(U)> 275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const GTEST_3_TUPLE_(U)& t) { 276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return CopyFrom(t); 277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_DECLARE_TUPLE_AS_FRIEND_ 280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_3_TYPENAMES_(U)> 282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) { 283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f0_ = t.f0_; 284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f1_ = t.f1_; 285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f2_ = t.f2_; 286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return *this; 287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T0 f0_; 290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T1 f1_; 291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T2 f2_; 292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_4_TYPENAMES_(T)> 295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass GTEST_4_TUPLE_(T) { 296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <int k> friend class gtest_internal::Get; 298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2990ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson tuple() : f0_(), f1_(), f2_(), f3_() {} 300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2), 303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_(f3) {} 304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {} 306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_4_TYPENAMES_(U)> 308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_(t.f3_) {} 310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const tuple& t) { return CopyFrom(t); } 312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_4_TYPENAMES_(U)> 314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const GTEST_4_TUPLE_(U)& t) { 315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return CopyFrom(t); 316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_DECLARE_TUPLE_AS_FRIEND_ 319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_4_TYPENAMES_(U)> 321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) { 322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f0_ = t.f0_; 323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f1_ = t.f1_; 324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f2_ = t.f2_; 325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_ = t.f3_; 326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return *this; 327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T0 f0_; 330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T1 f1_; 331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T2 f2_; 332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T3 f3_; 333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_5_TYPENAMES_(T)> 336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass GTEST_5_TUPLE_(T) { 337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <int k> friend class gtest_internal::Get; 339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3400ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {} 341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, 344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {} 345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_(t.f4_) {} 348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_5_TYPENAMES_(U)> 350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_(t.f3_), f4_(t.f4_) {} 352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const tuple& t) { return CopyFrom(t); } 354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_5_TYPENAMES_(U)> 356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const GTEST_5_TUPLE_(U)& t) { 357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return CopyFrom(t); 358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_DECLARE_TUPLE_AS_FRIEND_ 361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_5_TYPENAMES_(U)> 363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) { 364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f0_ = t.f0_; 365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f1_ = t.f1_; 366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f2_ = t.f2_; 367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_ = t.f3_; 368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_ = t.f4_; 369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return *this; 370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T0 f0_; 373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T1 f1_; 374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T2 f2_; 375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T3 f3_; 376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T4 f4_; 377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_6_TYPENAMES_(T)> 380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass GTEST_6_TUPLE_(T) { 381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <int k> friend class gtest_internal::Get; 383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3840ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {} 385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), 389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f5_(f5) {} 390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_(t.f4_), f5_(t.f5_) {} 393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_6_TYPENAMES_(U)> 395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {} 397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const tuple& t) { return CopyFrom(t); } 399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_6_TYPENAMES_(U)> 401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const GTEST_6_TUPLE_(U)& t) { 402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return CopyFrom(t); 403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_DECLARE_TUPLE_AS_FRIEND_ 406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_6_TYPENAMES_(U)> 408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) { 409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f0_ = t.f0_; 410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f1_ = t.f1_; 411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f2_ = t.f2_; 412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_ = t.f3_; 413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_ = t.f4_; 414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f5_ = t.f5_; 415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return *this; 416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T0 f0_; 419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T1 f1_; 420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T2 f2_; 421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T3 f3_; 422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T4 f4_; 423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T5 f5_; 424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_7_TYPENAMES_(T)> 427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass GTEST_7_TUPLE_(T) { 428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <int k> friend class gtest_internal::Get; 430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4310ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {} 432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2), 436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_(f3), f4_(f4), f5_(f5), f6_(f6) {} 437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} 440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_7_TYPENAMES_(U)> 442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} 444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const tuple& t) { return CopyFrom(t); } 446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_7_TYPENAMES_(U)> 448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const GTEST_7_TUPLE_(U)& t) { 449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return CopyFrom(t); 450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_DECLARE_TUPLE_AS_FRIEND_ 453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_7_TYPENAMES_(U)> 455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) { 456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f0_ = t.f0_; 457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f1_ = t.f1_; 458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f2_ = t.f2_; 459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_ = t.f3_; 460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_ = t.f4_; 461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f5_ = t.f5_; 462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f6_ = t.f6_; 463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return *this; 464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T0 f0_; 467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T1 f1_; 468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T2 f2_; 469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T3 f3_; 470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T4 f4_; 471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T5 f5_; 472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T6 f6_; 473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_8_TYPENAMES_(T)> 476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass GTEST_8_TUPLE_(T) { 477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <int k> friend class gtest_internal::Get; 479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4800ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {} 481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, 485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), 486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f5_(f5), f6_(f6), f7_(f7) {} 487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} 490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_8_TYPENAMES_(U)> 492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} 494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const tuple& t) { return CopyFrom(t); } 496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_8_TYPENAMES_(U)> 498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const GTEST_8_TUPLE_(U)& t) { 499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return CopyFrom(t); 500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_DECLARE_TUPLE_AS_FRIEND_ 503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_8_TYPENAMES_(U)> 505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) { 506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f0_ = t.f0_; 507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f1_ = t.f1_; 508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f2_ = t.f2_; 509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_ = t.f3_; 510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_ = t.f4_; 511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f5_ = t.f5_; 512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f6_ = t.f6_; 513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f7_ = t.f7_; 514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return *this; 515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T0 f0_; 518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T1 f1_; 519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T2 f2_; 520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T3 f3_; 521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T4 f4_; 522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T5 f5_; 523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T6 f6_; 524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T7 f7_; 525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_9_TYPENAMES_(T)> 528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass GTEST_9_TUPLE_(T) { 529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <int k> friend class gtest_internal::Get; 531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5320ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {} 533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, 537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), 538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f5_(f5), f6_(f6), f7_(f7), f8_(f8) {} 539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} 542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_9_TYPENAMES_(U)> 544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} 546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const tuple& t) { return CopyFrom(t); } 548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_9_TYPENAMES_(U)> 550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const GTEST_9_TUPLE_(U)& t) { 551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return CopyFrom(t); 552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_DECLARE_TUPLE_AS_FRIEND_ 555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_9_TYPENAMES_(U)> 557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) { 558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f0_ = t.f0_; 559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f1_ = t.f1_; 560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f2_ = t.f2_; 561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_ = t.f3_; 562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_ = t.f4_; 563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f5_ = t.f5_; 564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f6_ = t.f6_; 565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f7_ = t.f7_; 566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f8_ = t.f8_; 567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return *this; 568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T0 f0_; 571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T1 f1_; 572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T2 f2_; 573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T3 f3_; 574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T4 f4_; 575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T5 f5_; 576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T6 f6_; 577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T7 f7_; 578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T8 f8_; 579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass tuple { 583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <int k> friend class gtest_internal::Get; 585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5860ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(), 5870ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson f9_() {} 588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, 590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, 591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, 592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2), 593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {} 594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), 596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {} 597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_10_TYPENAMES_(U)> 599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), 600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), 601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f9_(t.f9_) {} 602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const tuple& t) { return CopyFrom(t); } 604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_10_TYPENAMES_(U)> 606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& operator=(const GTEST_10_TUPLE_(U)& t) { 607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return CopyFrom(t); 608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville GTEST_DECLARE_TUPLE_AS_FRIEND_ 611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <GTEST_10_TYPENAMES_(U)> 613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) { 614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f0_ = t.f0_; 615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f1_ = t.f1_; 616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f2_ = t.f2_; 617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f3_ = t.f3_; 618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f4_ = t.f4_; 619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f5_ = t.f5_; 620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f6_ = t.f6_; 621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f7_ = t.f7_; 622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f8_ = t.f8_; 623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f9_ = t.f9_; 624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return *this; 625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T0 f0_; 628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T1 f1_; 629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T2 f2_; 630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T3 f3_; 631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T4 f4_; 632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T5 f5_; 633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T6 f6_; 634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T7 f7_; 635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T8 f8_; 636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville T9 f9_; 637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 6.1.3.2 Tuple creation functions. 640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Known limitations: we don't support passing an 642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// std::tr1::reference_wrapper<T> to make_tuple(). And we don't 643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// implement tie(). 644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline tuple<> make_tuple() { return tuple<>(); } 646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_1_TYPENAMES_(T)> 648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) { 649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return GTEST_1_TUPLE_(T)(f0); 650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_2_TYPENAMES_(T)> 653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) { 654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return GTEST_2_TUPLE_(T)(f0, f1); 655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_3_TYPENAMES_(T)> 658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) { 659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return GTEST_3_TUPLE_(T)(f0, f1, f2); 660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_4_TYPENAMES_(T)> 663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const T3& f3) { 665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return GTEST_4_TUPLE_(T)(f0, f1, f2, f3); 666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_5_TYPENAMES_(T)> 669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const T3& f3, const T4& f4) { 671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4); 672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_6_TYPENAMES_(T)> 675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const T3& f3, const T4& f4, const T5& f5) { 677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5); 678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_7_TYPENAMES_(T)> 681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const T3& f3, const T4& f4, const T5& f5, const T6& f6) { 683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6); 684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_8_TYPENAMES_(T)> 687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) { 689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7); 690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_9_TYPENAMES_(T)> 693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, 695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const T8& f8) { 696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8); 697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, 701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, 702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const T8& f8, const T9& f9) { 703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9); 704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 6.1.3.3 Tuple helper classes. 707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <typename Tuple> struct tuple_size; 709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_0_TYPENAMES_(T)> 711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_size<GTEST_0_TUPLE_(T)> { static const int value = 0; }; 712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_1_TYPENAMES_(T)> 714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_size<GTEST_1_TUPLE_(T)> { static const int value = 1; }; 715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_2_TYPENAMES_(T)> 717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_size<GTEST_2_TUPLE_(T)> { static const int value = 2; }; 718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_3_TYPENAMES_(T)> 720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_size<GTEST_3_TUPLE_(T)> { static const int value = 3; }; 721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_4_TYPENAMES_(T)> 723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_size<GTEST_4_TUPLE_(T)> { static const int value = 4; }; 724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_5_TYPENAMES_(T)> 726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_size<GTEST_5_TUPLE_(T)> { static const int value = 5; }; 727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_6_TYPENAMES_(T)> 729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_size<GTEST_6_TUPLE_(T)> { static const int value = 6; }; 730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_7_TYPENAMES_(T)> 732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_size<GTEST_7_TUPLE_(T)> { static const int value = 7; }; 733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_8_TYPENAMES_(T)> 735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_size<GTEST_8_TUPLE_(T)> { static const int value = 8; }; 736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_9_TYPENAMES_(T)> 738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_size<GTEST_9_TUPLE_(T)> { static const int value = 9; }; 739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T)> 741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_size<GTEST_10_TUPLE_(T)> { static const int value = 10; }; 742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <int k, class Tuple> 744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct tuple_element { 745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville typedef typename gtest_internal::TupleElement< 746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville k < (tuple_size<Tuple>::value), k, Tuple>::type type; 747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type 750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 6.1.3.4 Element access. 752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenamespace gtest_internal { 754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass Get<0> { 757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) 760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Field(Tuple& t) { return t.f0_; } // NOLINT 761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) 764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ConstField(const Tuple& t) { return t.f0_; } 765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass Get<1> { 769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) 772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Field(Tuple& t) { return t.f1_; } // NOLINT 773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) 776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ConstField(const Tuple& t) { return t.f1_; } 777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass Get<2> { 781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) 784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Field(Tuple& t) { return t.f2_; } // NOLINT 785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) 788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ConstField(const Tuple& t) { return t.f2_; } 789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass Get<3> { 793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) 796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Field(Tuple& t) { return t.f3_; } // NOLINT 797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) 800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ConstField(const Tuple& t) { return t.f3_; } 801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass Get<4> { 805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) 808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Field(Tuple& t) { return t.f4_; } // NOLINT 809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) 812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ConstField(const Tuple& t) { return t.f4_; } 813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass Get<5> { 817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) 820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Field(Tuple& t) { return t.f5_; } // NOLINT 821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) 824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ConstField(const Tuple& t) { return t.f5_; } 825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass Get<6> { 829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) 832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Field(Tuple& t) { return t.f6_; } // NOLINT 833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) 836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ConstField(const Tuple& t) { return t.f6_; } 837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass Get<7> { 841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) 844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Field(Tuple& t) { return t.f7_; } // NOLINT 845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) 848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ConstField(const Tuple& t) { return t.f7_; } 849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass Get<8> { 853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) 856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Field(Tuple& t) { return t.f8_; } // NOLINT 857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) 860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ConstField(const Tuple& t) { return t.f8_; } 861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass Get<9> { 865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) 868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Field(Tuple& t) { return t.f9_; } // NOLINT 869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple> 871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) 872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ConstField(const Tuple& t) { return t.f9_; } 873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} // namespace gtest_internal 876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <int k, GTEST_10_TYPENAMES_(T)> 878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleGTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) 879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleget(GTEST_10_TUPLE_(T)& t) { 880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return gtest_internal::Get<k>::Field(t); 881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <int k, GTEST_10_TYPENAMES_(T)> 884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleGTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) 885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleget(const GTEST_10_TUPLE_(T)& t) { 886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return gtest_internal::Get<k>::ConstField(t); 887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 6.1.3.5 Relational operators 890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// We only implement == and !=, as we don't have a need for the rest yet. 892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenamespace gtest_internal { 894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the 896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// first k fields of t1 equals the first k fields of t2. 897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if 898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// k1 != k2. 899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <int kSize1, int kSize2> 900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct SameSizeTuplePrefixComparator; 901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <> 903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct SameSizeTuplePrefixComparator<0, 0> { 904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple1, class Tuple2> 905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) { 906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return true; 907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <int k> 911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct SameSizeTuplePrefixComparator<k, k> { 912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville template <class Tuple1, class Tuple2> 913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static bool Eq(const Tuple1& t1, const Tuple2& t2) { 914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) && 915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2); 916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} // namespace gtest_internal 920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)> 922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline bool operator==(const GTEST_10_TUPLE_(T)& t, 923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const GTEST_10_TUPLE_(U)& u) { 924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return gtest_internal::SameSizeTuplePrefixComparator< 925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple_size<GTEST_10_TUPLE_(T)>::value, 926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tuple_size<GTEST_10_TUPLE_(U)>::value>::Eq(t, u); 927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)> 930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinline bool operator!=(const GTEST_10_TUPLE_(T)& t, 931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const GTEST_10_TUPLE_(U)& u) { return !(t == u); } 932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 6.1.4 Pairs. 934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Unimplemented. 935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} // namespace tr1 937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} // namespace std 938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_0_TUPLE_ 940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_1_TUPLE_ 941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_2_TUPLE_ 942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_3_TUPLE_ 943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_4_TUPLE_ 944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_5_TUPLE_ 945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_6_TUPLE_ 946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_7_TUPLE_ 947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_8_TUPLE_ 948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_9_TUPLE_ 949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_10_TUPLE_ 950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_0_TYPENAMES_ 952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_1_TYPENAMES_ 953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_2_TYPENAMES_ 954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_3_TYPENAMES_ 955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_4_TYPENAMES_ 956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_5_TYPENAMES_ 957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_6_TYPENAMES_ 958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_7_TYPENAMES_ 959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_8_TYPENAMES_ 960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_9_TYPENAMES_ 961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_10_TYPENAMES_ 962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_DECLARE_TUPLE_AS_FRIEND_ 964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_BY_REF_ 965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_ADD_REF_ 966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef GTEST_TUPLE_ELEMENT_ 967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ 969