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