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