| $$ This is a pump file for generating file templates.  Pump is a python | 
 | $$ script that is part of the Google Test suite of utilities.  Description | 
 | $$ can be found here: | 
 | $$ | 
 | $$ http://code.google.com/p/googletest/wiki/PumpManual | 
 | $$ | 
 |  | 
 | $$ See comment for MAX_ARITY in base/bind.h.pump. | 
 | $var MAX_ARITY = 7 | 
 | $range ARITY 0..MAX_ARITY | 
 |  | 
 | // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef BASE_BIND_INTERNAL_FUNCTOR_H_ | 
 | #define BASE_BIND_INTERNAL_FUNCTOR_H_ | 
 |  | 
 | namespace base { | 
 | namespace internal { | 
 |  | 
 | // The RunnableAdapterFunctor<> template is used in a template specialization | 
 | // for RunnableAdapter<> which enables support for functor objects, including | 
 | // C++11 lambdas. The functor signature is deduced from the type of the | 
 | // operator() method using decltype(). | 
 | // | 
 | // All supported functors are assumed to have a const qualifier in their | 
 | // operator() method. | 
 |  | 
 | template <typename Functor> | 
 | class RunnableAdapter; | 
 |  | 
 | template <typename Functor, typename Sig> | 
 | class RunnableAdapterFunctor; | 
 |  | 
 | template <typename Functor> | 
 | class RunnableAdapter | 
 |     : public RunnableAdapterFunctor<Functor, decltype(&Functor::operator())> { | 
 |  public: | 
 |   typedef RunnableAdapterFunctor<Functor, | 
 |       decltype(&Functor::operator())> BaseType; | 
 |  | 
 |   explicit RunnableAdapter(Functor functor) | 
 |       : BaseType(functor) {} | 
 | }; | 
 |  | 
 | $for ARITY [[ | 
 | $range ARG 1..ARITY | 
 |  | 
 | // Functor: Arity $(ARITY). | 
 | template <typename F, typename T, typename R[[]] | 
 | $if ARITY > 0[[, ]] $for ARG , [[typename A$(ARG)]]> | 
 | class RunnableAdapterFunctor<F, R(T::*)($for ARG , [[A$(ARG)]]) const> { | 
 |  public: | 
 |   typedef R (RunType)($for ARG , [[A$(ARG)]]); | 
 |  | 
 |   explicit RunnableAdapterFunctor(F functor) | 
 |       : functor_(functor) { | 
 |   } | 
 |  | 
 |   R Run($for ARG , [[typename CallbackParamTraits<A$(ARG)>::ForwardType a$(ARG)]]) { | 
 |     return functor_($for ARG , [[CallbackForward(a$(ARG))]]); | 
 |   } | 
 |  | 
 |  private: | 
 |   F functor_; | 
 | }; | 
 |  | 
 | ]]  $$ for ARITY | 
 |  | 
 | }  // namespace internal | 
 | }  // namespace base | 
 |  | 
 | #endif  // BASE_BIND_INTERNAL_FUNCTOR_H_ |