test/fmw/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h
author mbaesken
Wed, 06 Nov 2019 14:04:07 +0100
changeset 58959 b7b170ba3ba9
parent 55049 4853b1ceb3d6
permissions -rw-r--r--
8233328: fix minimal VM build on Linux s390x Reviewed-by: lucy, mdoerr
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
55049
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
     1
// This file was GENERATED by command:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
     2
//     pump.py gmock-generated-function-mockers.h.pump
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
     3
// DO NOT EDIT BY HAND!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
     4
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
     5
// Copyright 2007, Google Inc.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
     6
// All rights reserved.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
     7
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
     8
// Redistribution and use in source and binary forms, with or without
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
     9
// modification, are permitted provided that the following conditions are
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    10
// met:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    11
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    12
//     * Redistributions of source code must retain the above copyright
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    13
// notice, this list of conditions and the following disclaimer.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    14
//     * Redistributions in binary form must reproduce the above
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    15
// copyright notice, this list of conditions and the following disclaimer
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    16
// in the documentation and/or other materials provided with the
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    17
// distribution.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    18
//     * Neither the name of Google Inc. nor the names of its
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    19
// contributors may be used to endorse or promote products derived from
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    20
// this software without specific prior written permission.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    21
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    22
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    23
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    24
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    25
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    26
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    27
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    28
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    29
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    30
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    31
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    32
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    33
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    34
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    35
// Google Mock - a framework for writing C++ mock classes.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    36
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    37
// This file implements function mockers of various arities.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    38
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    39
// GOOGLETEST_CM0002 DO NOT DELETE
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    40
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    41
#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    42
#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    43
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    44
#include "gmock/gmock-spec-builders.h"
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    45
#include "gmock/internal/gmock-internal-utils.h"
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    46
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    47
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    48
# include <functional>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    49
#endif
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    50
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    51
namespace testing {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    52
namespace internal {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    53
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    54
template <typename F>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    55
class FunctionMockerBase;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    56
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    57
// Note: class FunctionMocker really belongs to the ::testing
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    58
// namespace.  However if we define it in ::testing, MSVC will
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    59
// complain when classes in ::testing::internal declare it as a
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    60
// friend class template.  To workaround this compiler bug, we define
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    61
// FunctionMocker in ::testing::internal and import it into ::testing.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    62
template <typename F>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    63
class FunctionMocker;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    64
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    65
template <typename R>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    66
class FunctionMocker<R()> : public
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    67
    internal::FunctionMockerBase<R()> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    68
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    69
  typedef R F();
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    70
  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    71
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    72
  MockSpec<F> With() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    73
    return MockSpec<F>(this, ::testing::make_tuple());
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    74
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    75
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    76
  R Invoke() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    77
    // Even though gcc and MSVC don't enforce it, 'this->' is required
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    78
    // by the C++ standard [14.6.4] here, as the base class type is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    79
    // dependent on the template argument (and thus shouldn't be
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    80
    // looked into when resolving InvokeWith).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    81
    return this->InvokeWith(ArgumentTuple());
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    82
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    83
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    84
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    85
template <typename R, typename A1>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    86
class FunctionMocker<R(A1)> : public
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    87
    internal::FunctionMockerBase<R(A1)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    88
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    89
  typedef R F(A1);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    90
  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    91
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    92
  MockSpec<F> With(const Matcher<A1>& m1) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    93
    return MockSpec<F>(this, ::testing::make_tuple(m1));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    94
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    95
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    96
  R Invoke(A1 a1) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    97
    // Even though gcc and MSVC don't enforce it, 'this->' is required
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    98
    // by the C++ standard [14.6.4] here, as the base class type is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
    99
    // dependent on the template argument (and thus shouldn't be
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   100
    // looked into when resolving InvokeWith).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   101
    return this->InvokeWith(ArgumentTuple(internal::forward<A1>(a1)));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   102
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   103
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   104
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   105
template <typename R, typename A1, typename A2>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   106
class FunctionMocker<R(A1, A2)> : public
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   107
    internal::FunctionMockerBase<R(A1, A2)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   108
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   109
  typedef R F(A1, A2);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   110
  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   111
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   112
  MockSpec<F> With(const Matcher<A1>& m1, const Matcher<A2>& m2) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   113
    return MockSpec<F>(this, ::testing::make_tuple(m1, m2));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   114
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   115
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   116
  R Invoke(A1 a1, A2 a2) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   117
    // Even though gcc and MSVC don't enforce it, 'this->' is required
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   118
    // by the C++ standard [14.6.4] here, as the base class type is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   119
    // dependent on the template argument (and thus shouldn't be
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   120
    // looked into when resolving InvokeWith).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   121
    return this->InvokeWith(ArgumentTuple(internal::forward<A1>(a1),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   122
        internal::forward<A2>(a2)));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   123
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   124
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   125
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   126
template <typename R, typename A1, typename A2, typename A3>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   127
class FunctionMocker<R(A1, A2, A3)> : public
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   128
    internal::FunctionMockerBase<R(A1, A2, A3)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   129
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   130
  typedef R F(A1, A2, A3);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   131
  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   132
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   133
  MockSpec<F> With(const Matcher<A1>& m1, const Matcher<A2>& m2,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   134
      const Matcher<A3>& m3) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   135
    return MockSpec<F>(this, ::testing::make_tuple(m1, m2, m3));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   136
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   137
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   138
  R Invoke(A1 a1, A2 a2, A3 a3) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   139
    // Even though gcc and MSVC don't enforce it, 'this->' is required
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   140
    // by the C++ standard [14.6.4] here, as the base class type is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   141
    // dependent on the template argument (and thus shouldn't be
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   142
    // looked into when resolving InvokeWith).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   143
    return this->InvokeWith(ArgumentTuple(internal::forward<A1>(a1),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   144
        internal::forward<A2>(a2), internal::forward<A3>(a3)));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   145
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   146
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   147
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   148
template <typename R, typename A1, typename A2, typename A3, typename A4>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   149
class FunctionMocker<R(A1, A2, A3, A4)> : public
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   150
    internal::FunctionMockerBase<R(A1, A2, A3, A4)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   151
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   152
  typedef R F(A1, A2, A3, A4);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   153
  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   154
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   155
  MockSpec<F> With(const Matcher<A1>& m1, const Matcher<A2>& m2,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   156
      const Matcher<A3>& m3, const Matcher<A4>& m4) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   157
    return MockSpec<F>(this, ::testing::make_tuple(m1, m2, m3, m4));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   158
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   159
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   160
  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   161
    // Even though gcc and MSVC don't enforce it, 'this->' is required
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   162
    // by the C++ standard [14.6.4] here, as the base class type is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   163
    // dependent on the template argument (and thus shouldn't be
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   164
    // looked into when resolving InvokeWith).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   165
    return this->InvokeWith(ArgumentTuple(internal::forward<A1>(a1),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   166
        internal::forward<A2>(a2), internal::forward<A3>(a3),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   167
        internal::forward<A4>(a4)));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   168
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   169
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   170
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   171
template <typename R, typename A1, typename A2, typename A3, typename A4,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   172
    typename A5>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   173
class FunctionMocker<R(A1, A2, A3, A4, A5)> : public
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   174
    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   175
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   176
  typedef R F(A1, A2, A3, A4, A5);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   177
  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   178
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   179
  MockSpec<F> With(const Matcher<A1>& m1, const Matcher<A2>& m2,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   180
      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   181
    return MockSpec<F>(this, ::testing::make_tuple(m1, m2, m3, m4, m5));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   182
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   183
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   184
  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   185
    // Even though gcc and MSVC don't enforce it, 'this->' is required
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   186
    // by the C++ standard [14.6.4] here, as the base class type is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   187
    // dependent on the template argument (and thus shouldn't be
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   188
    // looked into when resolving InvokeWith).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   189
    return this->InvokeWith(ArgumentTuple(internal::forward<A1>(a1),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   190
        internal::forward<A2>(a2), internal::forward<A3>(a3),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   191
        internal::forward<A4>(a4), internal::forward<A5>(a5)));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   192
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   193
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   194
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   195
template <typename R, typename A1, typename A2, typename A3, typename A4,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   196
    typename A5, typename A6>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   197
class FunctionMocker<R(A1, A2, A3, A4, A5, A6)> : public
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   198
    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   199
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   200
  typedef R F(A1, A2, A3, A4, A5, A6);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   201
  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   202
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   203
  MockSpec<F> With(const Matcher<A1>& m1, const Matcher<A2>& m2,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   204
      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   205
      const Matcher<A6>& m6) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   206
    return MockSpec<F>(this, ::testing::make_tuple(m1, m2, m3, m4, m5, m6));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   207
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   208
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   209
  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   210
    // Even though gcc and MSVC don't enforce it, 'this->' is required
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   211
    // by the C++ standard [14.6.4] here, as the base class type is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   212
    // dependent on the template argument (and thus shouldn't be
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   213
    // looked into when resolving InvokeWith).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   214
    return this->InvokeWith(ArgumentTuple(internal::forward<A1>(a1),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   215
        internal::forward<A2>(a2), internal::forward<A3>(a3),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   216
        internal::forward<A4>(a4), internal::forward<A5>(a5),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   217
        internal::forward<A6>(a6)));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   218
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   219
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   220
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   221
template <typename R, typename A1, typename A2, typename A3, typename A4,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   222
    typename A5, typename A6, typename A7>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   223
class FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7)> : public
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   224
    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   225
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   226
  typedef R F(A1, A2, A3, A4, A5, A6, A7);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   227
  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   228
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   229
  MockSpec<F> With(const Matcher<A1>& m1, const Matcher<A2>& m2,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   230
      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   231
      const Matcher<A6>& m6, const Matcher<A7>& m7) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   232
    return MockSpec<F>(this, ::testing::make_tuple(m1, m2, m3, m4, m5, m6, m7));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   233
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   234
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   235
  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   236
    // Even though gcc and MSVC don't enforce it, 'this->' is required
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   237
    // by the C++ standard [14.6.4] here, as the base class type is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   238
    // dependent on the template argument (and thus shouldn't be
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   239
    // looked into when resolving InvokeWith).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   240
    return this->InvokeWith(ArgumentTuple(internal::forward<A1>(a1),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   241
        internal::forward<A2>(a2), internal::forward<A3>(a3),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   242
        internal::forward<A4>(a4), internal::forward<A5>(a5),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   243
        internal::forward<A6>(a6), internal::forward<A7>(a7)));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   244
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   245
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   246
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   247
template <typename R, typename A1, typename A2, typename A3, typename A4,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   248
    typename A5, typename A6, typename A7, typename A8>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   249
class FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7, A8)> : public
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   250
    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7, A8)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   251
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   252
  typedef R F(A1, A2, A3, A4, A5, A6, A7, A8);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   253
  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   254
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   255
  MockSpec<F> With(const Matcher<A1>& m1, const Matcher<A2>& m2,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   256
      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   257
      const Matcher<A6>& m6, const Matcher<A7>& m7, const Matcher<A8>& m8) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   258
    return MockSpec<F>(this, ::testing::make_tuple(m1, m2, m3, m4, m5, m6, m7,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   259
        m8));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   260
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   261
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   262
  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   263
    // Even though gcc and MSVC don't enforce it, 'this->' is required
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   264
    // by the C++ standard [14.6.4] here, as the base class type is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   265
    // dependent on the template argument (and thus shouldn't be
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   266
    // looked into when resolving InvokeWith).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   267
    return this->InvokeWith(ArgumentTuple(internal::forward<A1>(a1),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   268
        internal::forward<A2>(a2), internal::forward<A3>(a3),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   269
        internal::forward<A4>(a4), internal::forward<A5>(a5),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   270
        internal::forward<A6>(a6), internal::forward<A7>(a7),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   271
        internal::forward<A8>(a8)));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   272
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   273
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   274
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   275
template <typename R, typename A1, typename A2, typename A3, typename A4,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   276
    typename A5, typename A6, typename A7, typename A8, typename A9>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   277
class FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)> : public
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   278
    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   279
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   280
  typedef R F(A1, A2, A3, A4, A5, A6, A7, A8, A9);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   281
  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   282
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   283
  MockSpec<F> With(const Matcher<A1>& m1, const Matcher<A2>& m2,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   284
      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   285
      const Matcher<A6>& m6, const Matcher<A7>& m7, const Matcher<A8>& m8,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   286
      const Matcher<A9>& m9) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   287
    return MockSpec<F>(this, ::testing::make_tuple(m1, m2, m3, m4, m5, m6, m7,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   288
        m8, m9));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   289
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   290
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   291
  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   292
    // Even though gcc and MSVC don't enforce it, 'this->' is required
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   293
    // by the C++ standard [14.6.4] here, as the base class type is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   294
    // dependent on the template argument (and thus shouldn't be
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   295
    // looked into when resolving InvokeWith).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   296
    return this->InvokeWith(ArgumentTuple(internal::forward<A1>(a1),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   297
        internal::forward<A2>(a2), internal::forward<A3>(a3),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   298
        internal::forward<A4>(a4), internal::forward<A5>(a5),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   299
        internal::forward<A6>(a6), internal::forward<A7>(a7),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   300
        internal::forward<A8>(a8), internal::forward<A9>(a9)));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   301
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   302
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   303
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   304
template <typename R, typename A1, typename A2, typename A3, typename A4,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   305
    typename A5, typename A6, typename A7, typename A8, typename A9,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   306
    typename A10>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   307
class FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> : public
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   308
    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   309
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   310
  typedef R F(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   311
  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   312
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   313
  MockSpec<F> With(const Matcher<A1>& m1, const Matcher<A2>& m2,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   314
      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   315
      const Matcher<A6>& m6, const Matcher<A7>& m7, const Matcher<A8>& m8,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   316
      const Matcher<A9>& m9, const Matcher<A10>& m10) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   317
    return MockSpec<F>(this, ::testing::make_tuple(m1, m2, m3, m4, m5, m6, m7,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   318
        m8, m9, m10));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   319
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   320
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   321
  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   322
      A10 a10) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   323
    // Even though gcc and MSVC don't enforce it, 'this->' is required
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   324
    // by the C++ standard [14.6.4] here, as the base class type is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   325
    // dependent on the template argument (and thus shouldn't be
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   326
    // looked into when resolving InvokeWith).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   327
    return this->InvokeWith(ArgumentTuple(internal::forward<A1>(a1),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   328
        internal::forward<A2>(a2), internal::forward<A3>(a3),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   329
        internal::forward<A4>(a4), internal::forward<A5>(a5),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   330
        internal::forward<A6>(a6), internal::forward<A7>(a7),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   331
        internal::forward<A8>(a8), internal::forward<A9>(a9),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   332
        internal::forward<A10>(a10)));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   333
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   334
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   335
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   336
// Removes the given pointer; this is a helper for the expectation setter method
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   337
// for parameterless matchers.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   338
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   339
// We want to make sure that the user cannot set a parameterless expectation on
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   340
// overloaded methods, including methods which are overloaded on const. Example:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   341
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   342
//   class MockClass {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   343
//     MOCK_METHOD0(GetName, string&());
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   344
//     MOCK_CONST_METHOD0(GetName, const string&());
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   345
//   };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   346
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   347
//   TEST() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   348
//     // This should be an error, as it's not clear which overload is expected.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   349
//     EXPECT_CALL(mock, GetName).WillOnce(ReturnRef(value));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   350
//   }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   351
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   352
// Here are the generated expectation-setter methods:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   353
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   354
//   class MockClass {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   355
//     // Overload 1
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   356
//     MockSpec<string&()> gmock_GetName() { ... }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   357
//     // Overload 2. Declared const so that the compiler will generate an
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   358
//     // error when trying to resolve between this and overload 4 in
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   359
//     // 'gmock_GetName(WithoutMatchers(), nullptr)'.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   360
//     MockSpec<string&()> gmock_GetName(
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   361
//         const WithoutMatchers&, const Function<string&()>*) const {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   362
//       // Removes const from this, calls overload 1
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   363
//       return AdjustConstness_(this)->gmock_GetName();
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   364
//     }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   365
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   366
//     // Overload 3
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   367
//     const string& gmock_GetName() const { ... }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   368
//     // Overload 4
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   369
//     MockSpec<const string&()> gmock_GetName(
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   370
//         const WithoutMatchers&, const Function<const string&()>*) const {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   371
//       // Does not remove const, calls overload 3
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   372
//       return AdjustConstness_const(this)->gmock_GetName();
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   373
//     }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   374
//   }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   375
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   376
template <typename MockType>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   377
const MockType* AdjustConstness_const(const MockType* mock) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   378
  return mock;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   379
}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   380
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   381
// Removes const from and returns the given pointer; this is a helper for the
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   382
// expectation setter method for parameterless matchers.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   383
template <typename MockType>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   384
MockType* AdjustConstness_(const MockType* mock) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   385
  return const_cast<MockType*>(mock);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   386
}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   387
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   388
}  // namespace internal
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   389
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   390
// The style guide prohibits "using" statements in a namespace scope
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   391
// inside a header file.  However, the FunctionMocker class template
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   392
// is meant to be defined in the ::testing namespace.  The following
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   393
// line is just a trick for working around a bug in MSVC 8.0, which
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   394
// cannot handle it if we define FunctionMocker in ::testing.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   395
using internal::FunctionMocker;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   396
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   397
// GMOCK_RESULT_(tn, F) expands to the result type of function type F.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   398
// We define this as a variadic macro in case F contains unprotected
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   399
// commas (the same reason that we use variadic macros in other places
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   400
// in this file).
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   401
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   402
#define GMOCK_RESULT_(tn, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   403
    tn ::testing::internal::Function<__VA_ARGS__>::Result
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   404
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   405
// The type of argument N of the given function type.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   406
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   407
#define GMOCK_ARG_(tn, N, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   408
    tn ::testing::internal::Function<__VA_ARGS__>::Argument##N
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   409
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   410
// The matcher type for argument N of the given function type.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   411
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   412
#define GMOCK_MATCHER_(tn, N, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   413
    const ::testing::Matcher<GMOCK_ARG_(tn, N, __VA_ARGS__)>&
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   414
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   415
// The variable for mocking the given method.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   416
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   417
#define GMOCK_MOCKER_(arity, constness, Method) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   418
    GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   419
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   420
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   421
#define GMOCK_METHOD0_(tn, constness, ct, Method, ...)                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   422
  GMOCK_RESULT_(tn, __VA_ARGS__) ct Method() constness {                     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   423
    GTEST_COMPILE_ASSERT_(                                                   \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   424
        (::testing::tuple_size<tn ::testing::internal::Function<             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   425
             __VA_ARGS__>::ArgumentTuple>::value == 0),                      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   426
        this_method_does_not_take_0_arguments);                              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   427
    GMOCK_MOCKER_(0, constness, Method).SetOwnerAndName(this, #Method);      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   428
    return GMOCK_MOCKER_(0, constness, Method).Invoke();                     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   429
  }                                                                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   430
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method() constness {              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   431
    GMOCK_MOCKER_(0, constness, Method).RegisterOwner(this);                 \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   432
    return GMOCK_MOCKER_(0, constness, Method).With();                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   433
  }                                                                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   434
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   435
      const ::testing::internal::WithoutMatchers&,                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   436
      constness ::testing::internal::Function<__VA_ARGS__>*) const {         \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   437
    return ::testing::internal::AdjustConstness_##constness(this)            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   438
        ->gmock_##Method();                                                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   439
  }                                                                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   440
  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(0, constness, \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   441
                                                               Method)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   442
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   443
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   444
#define GMOCK_METHOD1_(tn, constness, ct, Method, ...)                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   445
  GMOCK_RESULT_(tn, __VA_ARGS__)                                              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   446
  ct Method(GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1) constness {              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   447
    GTEST_COMPILE_ASSERT_(                                                    \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   448
        (::testing::tuple_size<tn ::testing::internal::Function<              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   449
             __VA_ARGS__>::ArgumentTuple>::value == 1),                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   450
        this_method_does_not_take_1_argument);                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   451
    GMOCK_MOCKER_(1, constness, Method).SetOwnerAndName(this, #Method);       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   452
    return GMOCK_MOCKER_(1, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   453
        .Invoke(::testing::internal::forward<GMOCK_ARG_(tn, 1, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   454
            gmock_a1));                                                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   455
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   456
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   457
      GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1) constness {                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   458
    GMOCK_MOCKER_(1, constness, Method).RegisterOwner(this);                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   459
    return GMOCK_MOCKER_(1, constness, Method).With(gmock_a1);                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   460
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   461
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   462
      const ::testing::internal::WithoutMatchers&,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   463
      constness ::testing::internal::Function<__VA_ARGS__>*) const {          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   464
    return ::testing::internal::AdjustConstness_##constness(this)             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   465
        ->gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>());     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   466
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   467
  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(1, constness,  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   468
                                                               Method)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   469
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   470
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   471
#define GMOCK_METHOD2_(tn, constness, ct, Method, ...)                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   472
  GMOCK_RESULT_(tn, __VA_ARGS__)                                              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   473
  ct Method(GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   474
            GMOCK_ARG_(tn, 2, __VA_ARGS__) gmock_a2) constness {              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   475
    GTEST_COMPILE_ASSERT_(                                                    \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   476
        (::testing::tuple_size<tn ::testing::internal::Function<              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   477
             __VA_ARGS__>::ArgumentTuple>::value == 2),                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   478
        this_method_does_not_take_2_arguments);                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   479
    GMOCK_MOCKER_(2, constness, Method).SetOwnerAndName(this, #Method);       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   480
    return GMOCK_MOCKER_(2, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   481
        .Invoke(::testing::internal::forward<GMOCK_ARG_(tn, 1, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   482
                    gmock_a1),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   483
                ::testing::internal::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   484
                    gmock_a2));                                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   485
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   486
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   487
      GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   488
      GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2) constness {                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   489
    GMOCK_MOCKER_(2, constness, Method).RegisterOwner(this);                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   490
    return GMOCK_MOCKER_(2, constness, Method).With(gmock_a1, gmock_a2);      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   491
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   492
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   493
      const ::testing::internal::WithoutMatchers&,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   494
      constness ::testing::internal::Function<__VA_ARGS__>*) const {          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   495
    return ::testing::internal::AdjustConstness_##constness(this)             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   496
        ->gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   497
                         ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>());     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   498
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   499
  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(2, constness,  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   500
                                                               Method)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   501
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   502
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   503
#define GMOCK_METHOD3_(tn, constness, ct, Method, ...)                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   504
  GMOCK_RESULT_(tn, __VA_ARGS__)                                              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   505
  ct Method(GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   506
            GMOCK_ARG_(tn, 2, __VA_ARGS__) gmock_a2,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   507
            GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3) constness {              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   508
    GTEST_COMPILE_ASSERT_(                                                    \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   509
        (::testing::tuple_size<tn ::testing::internal::Function<              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   510
             __VA_ARGS__>::ArgumentTuple>::value == 3),                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   511
        this_method_does_not_take_3_arguments);                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   512
    GMOCK_MOCKER_(3, constness, Method).SetOwnerAndName(this, #Method);       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   513
    return GMOCK_MOCKER_(3, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   514
        .Invoke(::testing::internal::forward<GMOCK_ARG_(tn, 1, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   515
                    gmock_a1),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   516
                ::testing::internal::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   517
                    gmock_a2),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   518
                ::testing::internal::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   519
                    gmock_a3));                                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   520
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   521
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   522
      GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   523
      GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   524
      GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3) constness {                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   525
    GMOCK_MOCKER_(3, constness, Method).RegisterOwner(this);                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   526
    return GMOCK_MOCKER_(3, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   527
        .With(gmock_a1, gmock_a2, gmock_a3);                                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   528
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   529
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   530
      const ::testing::internal::WithoutMatchers&,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   531
      constness ::testing::internal::Function<__VA_ARGS__>*) const {          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   532
    return ::testing::internal::AdjustConstness_##constness(this)             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   533
        ->gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   534
                         ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   535
                         ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>());     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   536
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   537
  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(3, constness,  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   538
                                                               Method)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   539
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   540
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   541
#define GMOCK_METHOD4_(tn, constness, ct, Method, ...)                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   542
  GMOCK_RESULT_(tn, __VA_ARGS__)                                              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   543
  ct Method(GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   544
            GMOCK_ARG_(tn, 2, __VA_ARGS__) gmock_a2,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   545
            GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   546
            GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4) constness {              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   547
    GTEST_COMPILE_ASSERT_(                                                    \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   548
        (::testing::tuple_size<tn ::testing::internal::Function<              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   549
             __VA_ARGS__>::ArgumentTuple>::value == 4),                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   550
        this_method_does_not_take_4_arguments);                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   551
    GMOCK_MOCKER_(4, constness, Method).SetOwnerAndName(this, #Method);       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   552
    return GMOCK_MOCKER_(4, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   553
        .Invoke(::testing::internal::forward<GMOCK_ARG_(tn, 1, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   554
                    gmock_a1),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   555
                ::testing::internal::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   556
                    gmock_a2),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   557
                ::testing::internal::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   558
                    gmock_a3),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   559
                ::testing::internal::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   560
                    gmock_a4));                                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   561
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   562
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   563
      GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   564
      GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   565
      GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   566
      GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4) constness {                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   567
    GMOCK_MOCKER_(4, constness, Method).RegisterOwner(this);                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   568
    return GMOCK_MOCKER_(4, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   569
        .With(gmock_a1, gmock_a2, gmock_a3, gmock_a4);                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   570
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   571
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   572
      const ::testing::internal::WithoutMatchers&,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   573
      constness ::testing::internal::Function<__VA_ARGS__>*) const {          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   574
    return ::testing::internal::AdjustConstness_##constness(this)             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   575
        ->gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   576
                         ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   577
                         ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   578
                         ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>());     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   579
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   580
  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(4, constness,  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   581
                                                               Method)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   582
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   583
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   584
#define GMOCK_METHOD5_(tn, constness, ct, Method, ...)                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   585
  GMOCK_RESULT_(tn, __VA_ARGS__)                                              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   586
  ct Method(GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   587
            GMOCK_ARG_(tn, 2, __VA_ARGS__) gmock_a2,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   588
            GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   589
            GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   590
            GMOCK_ARG_(tn, 5, __VA_ARGS__) gmock_a5) constness {              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   591
    GTEST_COMPILE_ASSERT_(                                                    \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   592
        (::testing::tuple_size<tn ::testing::internal::Function<              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   593
             __VA_ARGS__>::ArgumentTuple>::value == 5),                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   594
        this_method_does_not_take_5_arguments);                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   595
    GMOCK_MOCKER_(5, constness, Method).SetOwnerAndName(this, #Method);       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   596
    return GMOCK_MOCKER_(5, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   597
        .Invoke(::testing::internal::forward<GMOCK_ARG_(tn, 1, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   598
                    gmock_a1),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   599
                ::testing::internal::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   600
                    gmock_a2),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   601
                ::testing::internal::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   602
                    gmock_a3),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   603
                ::testing::internal::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   604
                    gmock_a4),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   605
                ::testing::internal::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   606
                    gmock_a5));                                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   607
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   608
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   609
      GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   610
      GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   611
      GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   612
      GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   613
      GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5) constness {                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   614
    GMOCK_MOCKER_(5, constness, Method).RegisterOwner(this);                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   615
    return GMOCK_MOCKER_(5, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   616
        .With(gmock_a1, gmock_a2, gmock_a3, gmock_a4, gmock_a5);              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   617
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   618
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   619
      const ::testing::internal::WithoutMatchers&,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   620
      constness ::testing::internal::Function<__VA_ARGS__>*) const {          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   621
    return ::testing::internal::AdjustConstness_##constness(this)             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   622
        ->gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   623
                         ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   624
                         ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   625
                         ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   626
                         ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>());     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   627
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   628
  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(5, constness,  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   629
                                                               Method)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   630
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   631
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   632
#define GMOCK_METHOD6_(tn, constness, ct, Method, ...)                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   633
  GMOCK_RESULT_(tn, __VA_ARGS__)                                              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   634
  ct Method(GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   635
            GMOCK_ARG_(tn, 2, __VA_ARGS__) gmock_a2,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   636
            GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   637
            GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   638
            GMOCK_ARG_(tn, 5, __VA_ARGS__) gmock_a5,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   639
            GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6) constness {              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   640
    GTEST_COMPILE_ASSERT_(                                                    \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   641
        (::testing::tuple_size<tn ::testing::internal::Function<              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   642
             __VA_ARGS__>::ArgumentTuple>::value == 6),                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   643
        this_method_does_not_take_6_arguments);                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   644
    GMOCK_MOCKER_(6, constness, Method).SetOwnerAndName(this, #Method);       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   645
    return GMOCK_MOCKER_(6, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   646
        .Invoke(::testing::internal::forward<GMOCK_ARG_(tn, 1, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   647
                    gmock_a1),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   648
                ::testing::internal::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   649
                    gmock_a2),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   650
                ::testing::internal::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   651
                    gmock_a3),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   652
                ::testing::internal::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   653
                    gmock_a4),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   654
                ::testing::internal::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   655
                    gmock_a5),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   656
                ::testing::internal::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   657
                    gmock_a6));                                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   658
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   659
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   660
      GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   661
      GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   662
      GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   663
      GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   664
      GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   665
      GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6) constness {                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   666
    GMOCK_MOCKER_(6, constness, Method).RegisterOwner(this);                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   667
    return GMOCK_MOCKER_(6, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   668
        .With(gmock_a1, gmock_a2, gmock_a3, gmock_a4, gmock_a5, gmock_a6);    \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   669
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   670
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   671
      const ::testing::internal::WithoutMatchers&,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   672
      constness ::testing::internal::Function<__VA_ARGS__>*) const {          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   673
    return ::testing::internal::AdjustConstness_##constness(this)             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   674
        ->gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   675
                         ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   676
                         ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   677
                         ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   678
                         ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   679
                         ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>());     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   680
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   681
  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(6, constness,  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   682
                                                               Method)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   683
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   684
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   685
#define GMOCK_METHOD7_(tn, constness, ct, Method, ...)                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   686
  GMOCK_RESULT_(tn, __VA_ARGS__)                                              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   687
  ct Method(GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   688
            GMOCK_ARG_(tn, 2, __VA_ARGS__) gmock_a2,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   689
            GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   690
            GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   691
            GMOCK_ARG_(tn, 5, __VA_ARGS__) gmock_a5,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   692
            GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   693
            GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7) constness {              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   694
    GTEST_COMPILE_ASSERT_(                                                    \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   695
        (::testing::tuple_size<tn ::testing::internal::Function<              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   696
             __VA_ARGS__>::ArgumentTuple>::value == 7),                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   697
        this_method_does_not_take_7_arguments);                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   698
    GMOCK_MOCKER_(7, constness, Method).SetOwnerAndName(this, #Method);       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   699
    return GMOCK_MOCKER_(7, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   700
        .Invoke(::testing::internal::forward<GMOCK_ARG_(tn, 1, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   701
                    gmock_a1),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   702
                ::testing::internal::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   703
                    gmock_a2),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   704
                ::testing::internal::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   705
                    gmock_a3),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   706
                ::testing::internal::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   707
                    gmock_a4),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   708
                ::testing::internal::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   709
                    gmock_a5),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   710
                ::testing::internal::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   711
                    gmock_a6),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   712
                ::testing::internal::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   713
                    gmock_a7));                                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   714
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   715
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   716
      GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   717
      GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   718
      GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   719
      GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   720
      GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   721
      GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   722
      GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7) constness {                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   723
    GMOCK_MOCKER_(7, constness, Method).RegisterOwner(this);                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   724
    return GMOCK_MOCKER_(7, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   725
        .With(gmock_a1, gmock_a2, gmock_a3, gmock_a4, gmock_a5, gmock_a6,     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   726
              gmock_a7);                                                      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   727
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   728
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   729
      const ::testing::internal::WithoutMatchers&,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   730
      constness ::testing::internal::Function<__VA_ARGS__>*) const {          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   731
    return ::testing::internal::AdjustConstness_##constness(this)             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   732
        ->gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   733
                         ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   734
                         ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   735
                         ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   736
                         ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   737
                         ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   738
                         ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>());     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   739
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   740
  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(7, constness,  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   741
                                                               Method)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   742
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   743
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   744
#define GMOCK_METHOD8_(tn, constness, ct, Method, ...)                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   745
  GMOCK_RESULT_(tn, __VA_ARGS__)                                              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   746
  ct Method(GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   747
            GMOCK_ARG_(tn, 2, __VA_ARGS__) gmock_a2,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   748
            GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   749
            GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   750
            GMOCK_ARG_(tn, 5, __VA_ARGS__) gmock_a5,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   751
            GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   752
            GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   753
            GMOCK_ARG_(tn, 8, __VA_ARGS__) gmock_a8) constness {              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   754
    GTEST_COMPILE_ASSERT_(                                                    \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   755
        (::testing::tuple_size<tn ::testing::internal::Function<              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   756
             __VA_ARGS__>::ArgumentTuple>::value == 8),                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   757
        this_method_does_not_take_8_arguments);                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   758
    GMOCK_MOCKER_(8, constness, Method).SetOwnerAndName(this, #Method);       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   759
    return GMOCK_MOCKER_(8, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   760
        .Invoke(::testing::internal::forward<GMOCK_ARG_(tn, 1, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   761
                    gmock_a1),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   762
                ::testing::internal::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   763
                    gmock_a2),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   764
                ::testing::internal::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   765
                    gmock_a3),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   766
                ::testing::internal::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   767
                    gmock_a4),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   768
                ::testing::internal::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   769
                    gmock_a5),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   770
                ::testing::internal::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   771
                    gmock_a6),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   772
                ::testing::internal::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   773
                    gmock_a7),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   774
                ::testing::internal::forward<GMOCK_ARG_(tn, 8, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   775
                    gmock_a8));                                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   776
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   777
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   778
      GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   779
      GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   780
      GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   781
      GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   782
      GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   783
      GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   784
      GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   785
      GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8) constness {                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   786
    GMOCK_MOCKER_(8, constness, Method).RegisterOwner(this);                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   787
    return GMOCK_MOCKER_(8, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   788
        .With(gmock_a1, gmock_a2, gmock_a3, gmock_a4, gmock_a5, gmock_a6,     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   789
              gmock_a7, gmock_a8);                                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   790
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   791
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   792
      const ::testing::internal::WithoutMatchers&,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   793
      constness ::testing::internal::Function<__VA_ARGS__>*) const {          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   794
    return ::testing::internal::AdjustConstness_##constness(this)             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   795
        ->gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   796
                         ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   797
                         ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   798
                         ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   799
                         ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   800
                         ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   801
                         ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   802
                         ::testing::A<GMOCK_ARG_(tn, 8, __VA_ARGS__)>());     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   803
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   804
  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(8, constness,  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   805
                                                               Method)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   806
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   807
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   808
#define GMOCK_METHOD9_(tn, constness, ct, Method, ...)                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   809
  GMOCK_RESULT_(tn, __VA_ARGS__)                                              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   810
  ct Method(GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   811
            GMOCK_ARG_(tn, 2, __VA_ARGS__) gmock_a2,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   812
            GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   813
            GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   814
            GMOCK_ARG_(tn, 5, __VA_ARGS__) gmock_a5,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   815
            GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   816
            GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   817
            GMOCK_ARG_(tn, 8, __VA_ARGS__) gmock_a8,                          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   818
            GMOCK_ARG_(tn, 9, __VA_ARGS__) gmock_a9) constness {              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   819
    GTEST_COMPILE_ASSERT_(                                                    \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   820
        (::testing::tuple_size<tn ::testing::internal::Function<              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   821
             __VA_ARGS__>::ArgumentTuple>::value == 9),                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   822
        this_method_does_not_take_9_arguments);                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   823
    GMOCK_MOCKER_(9, constness, Method).SetOwnerAndName(this, #Method);       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   824
    return GMOCK_MOCKER_(9, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   825
        .Invoke(::testing::internal::forward<GMOCK_ARG_(tn, 1, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   826
                    gmock_a1),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   827
                ::testing::internal::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   828
                    gmock_a2),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   829
                ::testing::internal::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   830
                    gmock_a3),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   831
                ::testing::internal::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   832
                    gmock_a4),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   833
                ::testing::internal::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   834
                    gmock_a5),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   835
                ::testing::internal::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   836
                    gmock_a6),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   837
                ::testing::internal::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   838
                    gmock_a7),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   839
                ::testing::internal::forward<GMOCK_ARG_(tn, 8, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   840
                    gmock_a8),                                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   841
                ::testing::internal::forward<GMOCK_ARG_(tn, 9, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   842
                    gmock_a9));                                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   843
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   844
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   845
      GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   846
      GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   847
      GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   848
      GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   849
      GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   850
      GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   851
      GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   852
      GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   853
      GMOCK_MATCHER_(tn, 9, __VA_ARGS__) gmock_a9) constness {                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   854
    GMOCK_MOCKER_(9, constness, Method).RegisterOwner(this);                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   855
    return GMOCK_MOCKER_(9, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   856
        .With(gmock_a1, gmock_a2, gmock_a3, gmock_a4, gmock_a5, gmock_a6,     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   857
              gmock_a7, gmock_a8, gmock_a9);                                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   858
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   859
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   860
      const ::testing::internal::WithoutMatchers&,                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   861
      constness ::testing::internal::Function<__VA_ARGS__>*) const {          \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   862
    return ::testing::internal::AdjustConstness_##constness(this)             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   863
        ->gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   864
                         ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   865
                         ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   866
                         ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   867
                         ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   868
                         ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   869
                         ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   870
                         ::testing::A<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(),      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   871
                         ::testing::A<GMOCK_ARG_(tn, 9, __VA_ARGS__)>());     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   872
  }                                                                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   873
  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(9, constness,  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   874
                                                               Method)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   875
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   876
// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   877
#define GMOCK_METHOD10_(tn, constness, ct, Method, ...)                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   878
  GMOCK_RESULT_(tn, __VA_ARGS__)                                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   879
  ct Method(GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1,                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   880
            GMOCK_ARG_(tn, 2, __VA_ARGS__) gmock_a2,                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   881
            GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3,                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   882
            GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4,                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   883
            GMOCK_ARG_(tn, 5, __VA_ARGS__) gmock_a5,                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   884
            GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6,                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   885
            GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7,                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   886
            GMOCK_ARG_(tn, 8, __VA_ARGS__) gmock_a8,                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   887
            GMOCK_ARG_(tn, 9, __VA_ARGS__) gmock_a9,                           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   888
            GMOCK_ARG_(tn, 10, __VA_ARGS__) gmock_a10) constness {             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   889
    GTEST_COMPILE_ASSERT_(                                                     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   890
        (::testing::tuple_size<tn ::testing::internal::Function<               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   891
             __VA_ARGS__>::ArgumentTuple>::value == 10),                       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   892
        this_method_does_not_take_10_arguments);                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   893
    GMOCK_MOCKER_(10, constness, Method).SetOwnerAndName(this, #Method);       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   894
    return GMOCK_MOCKER_(10, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   895
        .Invoke(::testing::internal::forward<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   896
                    gmock_a1),                                                 \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   897
                ::testing::internal::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   898
                    gmock_a2),                                                 \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   899
                ::testing::internal::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   900
                    gmock_a3),                                                 \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   901
                ::testing::internal::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   902
                    gmock_a4),                                                 \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   903
                ::testing::internal::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   904
                    gmock_a5),                                                 \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   905
                ::testing::internal::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   906
                    gmock_a6),                                                 \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   907
                ::testing::internal::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   908
                    gmock_a7),                                                 \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   909
                ::testing::internal::forward<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   910
                    gmock_a8),                                                 \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   911
                ::testing::internal::forward<GMOCK_ARG_(tn, 9, __VA_ARGS__)>(  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   912
                    gmock_a9),                                                 \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   913
                ::testing::internal::forward<GMOCK_ARG_(tn, 10, __VA_ARGS__)>( \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   914
                    gmock_a10));                                               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   915
  }                                                                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   916
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   917
      GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1,                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   918
      GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2,                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   919
      GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3,                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   920
      GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4,                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   921
      GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5,                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   922
      GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6,                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   923
      GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7,                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   924
      GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8,                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   925
      GMOCK_MATCHER_(tn, 9, __VA_ARGS__) gmock_a9,                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   926
      GMOCK_MATCHER_(tn, 10, __VA_ARGS__) gmock_a10) constness {               \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   927
    GMOCK_MOCKER_(10, constness, Method).RegisterOwner(this);                  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   928
    return GMOCK_MOCKER_(10, constness, Method)                                \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   929
        .With(gmock_a1, gmock_a2, gmock_a3, gmock_a4, gmock_a5, gmock_a6,      \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   930
              gmock_a7, gmock_a8, gmock_a9, gmock_a10);                        \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   931
  }                                                                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   932
  ::testing::MockSpec<__VA_ARGS__> gmock_##Method(                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   933
      const ::testing::internal::WithoutMatchers&,                             \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   934
      constness ::testing::internal::Function<__VA_ARGS__>*) const {           \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   935
    return ::testing::internal::AdjustConstness_##constness(this)              \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   936
        ->gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(),       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   937
                         ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(),       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   938
                         ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(),       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   939
                         ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(),       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   940
                         ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(),       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   941
                         ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(),       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   942
                         ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(),       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   943
                         ::testing::A<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(),       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   944
                         ::testing::A<GMOCK_ARG_(tn, 9, __VA_ARGS__)>(),       \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   945
                         ::testing::A<GMOCK_ARG_(tn, 10, __VA_ARGS__)>());     \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   946
  }                                                                            \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   947
  mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(10, constness,  \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   948
                                                               Method)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   949
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   950
#define MOCK_METHOD0(m, ...) GMOCK_METHOD0_(, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   951
#define MOCK_METHOD1(m, ...) GMOCK_METHOD1_(, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   952
#define MOCK_METHOD2(m, ...) GMOCK_METHOD2_(, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   953
#define MOCK_METHOD3(m, ...) GMOCK_METHOD3_(, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   954
#define MOCK_METHOD4(m, ...) GMOCK_METHOD4_(, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   955
#define MOCK_METHOD5(m, ...) GMOCK_METHOD5_(, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   956
#define MOCK_METHOD6(m, ...) GMOCK_METHOD6_(, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   957
#define MOCK_METHOD7(m, ...) GMOCK_METHOD7_(, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   958
#define MOCK_METHOD8(m, ...) GMOCK_METHOD8_(, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   959
#define MOCK_METHOD9(m, ...) GMOCK_METHOD9_(, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   960
#define MOCK_METHOD10(m, ...) GMOCK_METHOD10_(, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   961
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   962
#define MOCK_CONST_METHOD0(m, ...) GMOCK_METHOD0_(, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   963
#define MOCK_CONST_METHOD1(m, ...) GMOCK_METHOD1_(, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   964
#define MOCK_CONST_METHOD2(m, ...) GMOCK_METHOD2_(, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   965
#define MOCK_CONST_METHOD3(m, ...) GMOCK_METHOD3_(, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   966
#define MOCK_CONST_METHOD4(m, ...) GMOCK_METHOD4_(, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   967
#define MOCK_CONST_METHOD5(m, ...) GMOCK_METHOD5_(, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   968
#define MOCK_CONST_METHOD6(m, ...) GMOCK_METHOD6_(, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   969
#define MOCK_CONST_METHOD7(m, ...) GMOCK_METHOD7_(, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   970
#define MOCK_CONST_METHOD8(m, ...) GMOCK_METHOD8_(, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   971
#define MOCK_CONST_METHOD9(m, ...) GMOCK_METHOD9_(, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   972
#define MOCK_CONST_METHOD10(m, ...) GMOCK_METHOD10_(, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   973
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   974
#define MOCK_METHOD0_T(m, ...) GMOCK_METHOD0_(typename, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   975
#define MOCK_METHOD1_T(m, ...) GMOCK_METHOD1_(typename, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   976
#define MOCK_METHOD2_T(m, ...) GMOCK_METHOD2_(typename, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   977
#define MOCK_METHOD3_T(m, ...) GMOCK_METHOD3_(typename, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   978
#define MOCK_METHOD4_T(m, ...) GMOCK_METHOD4_(typename, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   979
#define MOCK_METHOD5_T(m, ...) GMOCK_METHOD5_(typename, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   980
#define MOCK_METHOD6_T(m, ...) GMOCK_METHOD6_(typename, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   981
#define MOCK_METHOD7_T(m, ...) GMOCK_METHOD7_(typename, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   982
#define MOCK_METHOD8_T(m, ...) GMOCK_METHOD8_(typename, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   983
#define MOCK_METHOD9_T(m, ...) GMOCK_METHOD9_(typename, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   984
#define MOCK_METHOD10_T(m, ...) GMOCK_METHOD10_(typename, , , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   985
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   986
#define MOCK_CONST_METHOD0_T(m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   987
    GMOCK_METHOD0_(typename, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   988
#define MOCK_CONST_METHOD1_T(m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   989
    GMOCK_METHOD1_(typename, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   990
#define MOCK_CONST_METHOD2_T(m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   991
    GMOCK_METHOD2_(typename, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   992
#define MOCK_CONST_METHOD3_T(m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   993
    GMOCK_METHOD3_(typename, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   994
#define MOCK_CONST_METHOD4_T(m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   995
    GMOCK_METHOD4_(typename, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   996
#define MOCK_CONST_METHOD5_T(m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   997
    GMOCK_METHOD5_(typename, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   998
#define MOCK_CONST_METHOD6_T(m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
   999
    GMOCK_METHOD6_(typename, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1000
#define MOCK_CONST_METHOD7_T(m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1001
    GMOCK_METHOD7_(typename, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1002
#define MOCK_CONST_METHOD8_T(m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1003
    GMOCK_METHOD8_(typename, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1004
#define MOCK_CONST_METHOD9_T(m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1005
    GMOCK_METHOD9_(typename, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1006
#define MOCK_CONST_METHOD10_T(m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1007
    GMOCK_METHOD10_(typename, const, , m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1008
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1009
#define MOCK_METHOD0_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1010
    GMOCK_METHOD0_(, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1011
#define MOCK_METHOD1_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1012
    GMOCK_METHOD1_(, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1013
#define MOCK_METHOD2_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1014
    GMOCK_METHOD2_(, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1015
#define MOCK_METHOD3_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1016
    GMOCK_METHOD3_(, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1017
#define MOCK_METHOD4_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1018
    GMOCK_METHOD4_(, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1019
#define MOCK_METHOD5_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1020
    GMOCK_METHOD5_(, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1021
#define MOCK_METHOD6_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1022
    GMOCK_METHOD6_(, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1023
#define MOCK_METHOD7_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1024
    GMOCK_METHOD7_(, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1025
#define MOCK_METHOD8_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1026
    GMOCK_METHOD8_(, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1027
#define MOCK_METHOD9_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1028
    GMOCK_METHOD9_(, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1029
#define MOCK_METHOD10_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1030
    GMOCK_METHOD10_(, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1031
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1032
#define MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1033
    GMOCK_METHOD0_(, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1034
#define MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1035
    GMOCK_METHOD1_(, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1036
#define MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1037
    GMOCK_METHOD2_(, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1038
#define MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1039
    GMOCK_METHOD3_(, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1040
#define MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1041
    GMOCK_METHOD4_(, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1042
#define MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1043
    GMOCK_METHOD5_(, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1044
#define MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1045
    GMOCK_METHOD6_(, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1046
#define MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1047
    GMOCK_METHOD7_(, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1048
#define MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1049
    GMOCK_METHOD8_(, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1050
#define MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1051
    GMOCK_METHOD9_(, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1052
#define MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1053
    GMOCK_METHOD10_(, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1054
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1055
#define MOCK_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1056
    GMOCK_METHOD0_(typename, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1057
#define MOCK_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1058
    GMOCK_METHOD1_(typename, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1059
#define MOCK_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1060
    GMOCK_METHOD2_(typename, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1061
#define MOCK_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1062
    GMOCK_METHOD3_(typename, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1063
#define MOCK_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1064
    GMOCK_METHOD4_(typename, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1065
#define MOCK_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1066
    GMOCK_METHOD5_(typename, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1067
#define MOCK_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1068
    GMOCK_METHOD6_(typename, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1069
#define MOCK_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1070
    GMOCK_METHOD7_(typename, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1071
#define MOCK_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1072
    GMOCK_METHOD8_(typename, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1073
#define MOCK_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1074
    GMOCK_METHOD9_(typename, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1075
#define MOCK_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1076
    GMOCK_METHOD10_(typename, , ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1077
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1078
#define MOCK_CONST_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1079
    GMOCK_METHOD0_(typename, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1080
#define MOCK_CONST_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1081
    GMOCK_METHOD1_(typename, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1082
#define MOCK_CONST_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1083
    GMOCK_METHOD2_(typename, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1084
#define MOCK_CONST_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1085
    GMOCK_METHOD3_(typename, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1086
#define MOCK_CONST_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1087
    GMOCK_METHOD4_(typename, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1088
#define MOCK_CONST_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1089
    GMOCK_METHOD5_(typename, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1090
#define MOCK_CONST_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1091
    GMOCK_METHOD6_(typename, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1092
#define MOCK_CONST_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1093
    GMOCK_METHOD7_(typename, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1094
#define MOCK_CONST_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1095
    GMOCK_METHOD8_(typename, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1096
#define MOCK_CONST_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1097
    GMOCK_METHOD9_(typename, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1098
#define MOCK_CONST_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1099
    GMOCK_METHOD10_(typename, const, ct, m, __VA_ARGS__)
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1100
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1101
// A MockFunction<F> class has one mock method whose type is F.  It is
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1102
// useful when you just want your test code to emit some messages and
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1103
// have Google Mock verify the right messages are sent (and perhaps at
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1104
// the right times).  For example, if you are exercising code:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1105
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1106
//   Foo(1);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1107
//   Foo(2);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1108
//   Foo(3);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1109
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1110
// and want to verify that Foo(1) and Foo(3) both invoke
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1111
// mock.Bar("a"), but Foo(2) doesn't invoke anything, you can write:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1112
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1113
// TEST(FooTest, InvokesBarCorrectly) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1114
//   MyMock mock;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1115
//   MockFunction<void(string check_point_name)> check;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1116
//   {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1117
//     InSequence s;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1118
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1119
//     EXPECT_CALL(mock, Bar("a"));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1120
//     EXPECT_CALL(check, Call("1"));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1121
//     EXPECT_CALL(check, Call("2"));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1122
//     EXPECT_CALL(mock, Bar("a"));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1123
//   }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1124
//   Foo(1);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1125
//   check.Call("1");
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1126
//   Foo(2);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1127
//   check.Call("2");
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1128
//   Foo(3);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1129
// }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1130
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1131
// The expectation spec says that the first Bar("a") must happen
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1132
// before check point "1", the second Bar("a") must happen after check
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1133
// point "2", and nothing should happen between the two check
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1134
// points. The explicit check points make it easy to tell which
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1135
// Bar("a") is called by which call to Foo().
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1136
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1137
// MockFunction<F> can also be used to exercise code that accepts
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1138
// std::function<F> callbacks. To do so, use AsStdFunction() method
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1139
// to create std::function proxy forwarding to original object's Call.
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1140
// Example:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1141
//
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1142
// TEST(FooTest, RunsCallbackWithBarArgument) {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1143
//   MockFunction<int(string)> callback;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1144
//   EXPECT_CALL(callback, Call("bar")).WillOnce(Return(1));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1145
//   Foo(callback.AsStdFunction());
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1146
// }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1147
template <typename F>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1148
class MockFunction;
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1149
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1150
template <typename R>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1151
class MockFunction<R()> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1152
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1153
  MockFunction() {}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1154
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1155
  MOCK_METHOD0_T(Call, R());
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1156
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1157
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1158
  ::std::function<R()> AsStdFunction() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1159
    return [this]() -> R {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1160
      return this->Call();
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1161
    };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1162
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1163
#endif  // GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1164
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1165
 private:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1166
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1167
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1168
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1169
template <typename R, typename A0>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1170
class MockFunction<R(A0)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1171
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1172
  MockFunction() {}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1173
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1174
  MOCK_METHOD1_T(Call, R(A0));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1175
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1176
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1177
  ::std::function<R(A0)> AsStdFunction() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1178
    return [this](A0 a0) -> R {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1179
      return this->Call(::std::move(a0));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1180
    };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1181
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1182
#endif  // GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1183
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1184
 private:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1185
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1186
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1187
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1188
template <typename R, typename A0, typename A1>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1189
class MockFunction<R(A0, A1)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1190
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1191
  MockFunction() {}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1192
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1193
  MOCK_METHOD2_T(Call, R(A0, A1));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1194
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1195
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1196
  ::std::function<R(A0, A1)> AsStdFunction() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1197
    return [this](A0 a0, A1 a1) -> R {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1198
      return this->Call(::std::move(a0), ::std::move(a1));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1199
    };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1200
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1201
#endif  // GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1202
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1203
 private:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1204
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1205
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1206
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1207
template <typename R, typename A0, typename A1, typename A2>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1208
class MockFunction<R(A0, A1, A2)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1209
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1210
  MockFunction() {}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1211
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1212
  MOCK_METHOD3_T(Call, R(A0, A1, A2));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1213
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1214
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1215
  ::std::function<R(A0, A1, A2)> AsStdFunction() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1216
    return [this](A0 a0, A1 a1, A2 a2) -> R {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1217
      return this->Call(::std::move(a0), ::std::move(a1), ::std::move(a2));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1218
    };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1219
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1220
#endif  // GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1221
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1222
 private:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1223
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1224
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1225
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1226
template <typename R, typename A0, typename A1, typename A2, typename A3>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1227
class MockFunction<R(A0, A1, A2, A3)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1228
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1229
  MockFunction() {}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1230
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1231
  MOCK_METHOD4_T(Call, R(A0, A1, A2, A3));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1232
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1233
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1234
  ::std::function<R(A0, A1, A2, A3)> AsStdFunction() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1235
    return [this](A0 a0, A1 a1, A2 a2, A3 a3) -> R {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1236
      return this->Call(::std::move(a0), ::std::move(a1), ::std::move(a2),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1237
          ::std::move(a3));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1238
    };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1239
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1240
#endif  // GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1241
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1242
 private:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1243
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1244
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1245
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1246
template <typename R, typename A0, typename A1, typename A2, typename A3,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1247
    typename A4>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1248
class MockFunction<R(A0, A1, A2, A3, A4)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1249
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1250
  MockFunction() {}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1251
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1252
  MOCK_METHOD5_T(Call, R(A0, A1, A2, A3, A4));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1253
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1254
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1255
  ::std::function<R(A0, A1, A2, A3, A4)> AsStdFunction() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1256
    return [this](A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) -> R {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1257
      return this->Call(::std::move(a0), ::std::move(a1), ::std::move(a2),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1258
          ::std::move(a3), ::std::move(a4));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1259
    };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1260
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1261
#endif  // GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1262
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1263
 private:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1264
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1265
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1266
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1267
template <typename R, typename A0, typename A1, typename A2, typename A3,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1268
    typename A4, typename A5>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1269
class MockFunction<R(A0, A1, A2, A3, A4, A5)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1270
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1271
  MockFunction() {}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1272
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1273
  MOCK_METHOD6_T(Call, R(A0, A1, A2, A3, A4, A5));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1274
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1275
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1276
  ::std::function<R(A0, A1, A2, A3, A4, A5)> AsStdFunction() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1277
    return [this](A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) -> R {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1278
      return this->Call(::std::move(a0), ::std::move(a1), ::std::move(a2),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1279
          ::std::move(a3), ::std::move(a4), ::std::move(a5));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1280
    };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1281
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1282
#endif  // GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1283
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1284
 private:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1285
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1286
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1287
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1288
template <typename R, typename A0, typename A1, typename A2, typename A3,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1289
    typename A4, typename A5, typename A6>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1290
class MockFunction<R(A0, A1, A2, A3, A4, A5, A6)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1291
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1292
  MockFunction() {}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1293
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1294
  MOCK_METHOD7_T(Call, R(A0, A1, A2, A3, A4, A5, A6));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1295
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1296
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1297
  ::std::function<R(A0, A1, A2, A3, A4, A5, A6)> AsStdFunction() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1298
    return [this](A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) -> R {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1299
      return this->Call(::std::move(a0), ::std::move(a1), ::std::move(a2),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1300
          ::std::move(a3), ::std::move(a4), ::std::move(a5), ::std::move(a6));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1301
    };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1302
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1303
#endif  // GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1304
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1305
 private:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1306
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1307
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1308
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1309
template <typename R, typename A0, typename A1, typename A2, typename A3,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1310
    typename A4, typename A5, typename A6, typename A7>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1311
class MockFunction<R(A0, A1, A2, A3, A4, A5, A6, A7)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1312
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1313
  MockFunction() {}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1314
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1315
  MOCK_METHOD8_T(Call, R(A0, A1, A2, A3, A4, A5, A6, A7));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1316
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1317
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1318
  ::std::function<R(A0, A1, A2, A3, A4, A5, A6, A7)> AsStdFunction() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1319
    return [this](A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) -> R {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1320
      return this->Call(::std::move(a0), ::std::move(a1), ::std::move(a2),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1321
          ::std::move(a3), ::std::move(a4), ::std::move(a5), ::std::move(a6),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1322
          ::std::move(a7));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1323
    };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1324
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1325
#endif  // GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1326
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1327
 private:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1328
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1329
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1330
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1331
template <typename R, typename A0, typename A1, typename A2, typename A3,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1332
    typename A4, typename A5, typename A6, typename A7, typename A8>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1333
class MockFunction<R(A0, A1, A2, A3, A4, A5, A6, A7, A8)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1334
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1335
  MockFunction() {}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1336
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1337
  MOCK_METHOD9_T(Call, R(A0, A1, A2, A3, A4, A5, A6, A7, A8));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1338
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1339
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1340
  ::std::function<R(A0, A1, A2, A3, A4, A5, A6, A7, A8)> AsStdFunction() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1341
    return [this](A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1342
        A8 a8) -> R {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1343
      return this->Call(::std::move(a0), ::std::move(a1), ::std::move(a2),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1344
          ::std::move(a3), ::std::move(a4), ::std::move(a5), ::std::move(a6),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1345
          ::std::move(a7), ::std::move(a8));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1346
    };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1347
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1348
#endif  // GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1349
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1350
 private:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1351
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1352
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1353
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1354
template <typename R, typename A0, typename A1, typename A2, typename A3,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1355
    typename A4, typename A5, typename A6, typename A7, typename A8,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1356
    typename A9>
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1357
class MockFunction<R(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1358
 public:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1359
  MockFunction() {}
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1360
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1361
  MOCK_METHOD10_T(Call, R(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1362
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1363
#if GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1364
  ::std::function<R(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)> AsStdFunction() {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1365
    return [this](A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7,
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1366
        A8 a8, A9 a9) -> R {
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1367
      return this->Call(::std::move(a0), ::std::move(a1), ::std::move(a2),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1368
          ::std::move(a3), ::std::move(a4), ::std::move(a5), ::std::move(a6),
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1369
          ::std::move(a7), ::std::move(a8), ::std::move(a9));
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1370
    };
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1371
  }
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1372
#endif  // GTEST_HAS_STD_FUNCTION_
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1373
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1374
 private:
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1375
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1376
};
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1377
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1378
}  // namespace testing
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1379
4853b1ceb3d6 8222414: bring googlemock v1.8.1
iignatyev
parents:
diff changeset
  1380
#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_