1f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// This file was GENERATED by command: 2f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// pump.py bind.h.pump 3f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// DO NOT EDIT BY HAND!!! 4f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 5f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org/* 6f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * Copyright 2012 The WebRTC Project Authors. All rights reserved. 7f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * 8f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * Use of this source code is governed by a BSD-style license 9f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * that can be found in the LICENSE file in the root of the source 10f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * tree. An additional intellectual property rights grant can be found 11f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * in the file PATENTS. All contributing project authors may 12f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * be found in the AUTHORS file in the root of the source tree. 13f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org */ 14f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 15f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// To generate bind.h from bind.h.pump, execute: 16f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// /home/build/google3/third_party/gtest/scripts/pump.py bind.h.pump 17f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 18f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// Bind() is an overloaded function that converts method calls into function 19d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// objects (aka functors). The method object is captured as a scoped_refptr<> if 20d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// possible, and as a raw pointer otherwise. Any arguments to the method are 21d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// captured by value. The return value of Bind is a stateful, nullary function 22d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// object. Care should be taken about the lifetime of objects captured by 23d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// Bind(); the returned functor knows nothing about the lifetime of a non 24d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// ref-counted method object or any arguments passed by pointer, and calling the 25d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// functor with a destroyed object will surely do bad things. 26f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// 27f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// Example usage: 28f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// struct Foo { 29f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// int Test1() { return 42; } 30f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// int Test2() const { return 52; } 31f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// int Test3(int x) { return x*x; } 32f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// float Test4(int x, float y) { return x + y; } 33f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// }; 34f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// 35f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// int main() { 36f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// Foo foo; 37f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// cout << rtc::Bind(&Foo::Test1, &foo)() << endl; 38f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// cout << rtc::Bind(&Foo::Test2, &foo)() << endl; 39f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// cout << rtc::Bind(&Foo::Test3, &foo, 3)() << endl; 40f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// cout << rtc::Bind(&Foo::Test4, &foo, 7, 8.5f)() << endl; 41f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// } 42d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// 43d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// Example usage of ref counted objects: 44d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// struct Bar { 45d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// int AddRef(); 46d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// int Release(); 47d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// 48d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// void Test() {} 49d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// void BindThis() { 50d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// // The functor passed to AsyncInvoke() will keep this object alive. 51d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// invoker.AsyncInvoke(rtc::Bind(&Bar::Test, this)); 52d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// } 53d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// }; 54d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// 55d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// int main() { 56d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// rtc::scoped_refptr<Bar> bar = new rtc::RefCountedObject<Bar>(); 57d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// auto functor = rtc::Bind(&Bar::Test, bar); 58d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// bar = nullptr; 59d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// // The functor stores an internal scoped_refptr<Bar>, so this is safe. 60d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// functor(); 61d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// } 62d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// 63f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 64f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#ifndef WEBRTC_BASE_BIND_H_ 65f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define WEBRTC_BASE_BIND_H_ 66f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 67d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#include "webrtc/base/scoped_ref_ptr.h" 685d9b92b53daf4db78fd090be4e210e07f786120dnoahric#include "webrtc/base/template_util.h" 69d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 70f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define NONAME 71f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 72f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgnamespace rtc { 73f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgnamespace detail { 74f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// This is needed because the template parameters in Bind can't be resolved 75f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// if they're used both as parameters of the function pointer type and as 76f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// parameters to Bind itself: the function pointer parameters are exact 77f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// matches to the function prototype, but the parameters to bind have 78f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// references stripped. This trick allows the compiler to dictate the Bind 79f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// parameter types rather than deduce them. 80f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class T> struct identity { typedef T type; }; 81d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 82d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// IsRefCounted<T>::value will be true for types that can be used in 83d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// rtc::scoped_refptr<T>, i.e. types that implements nullary functions AddRef() 84d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// and Release(), regardless of their return types. AddRef() and Release() can 85d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// be defined in T or any superclass of T. 86d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <typename T> 87d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvertclass IsRefCounted { 88d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert // This is a complex implementation detail done with SFINAE. 89d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 90d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert // Define types such that sizeof(Yes) != sizeof(No). 91d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert struct Yes { char dummy[1]; }; 92d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert struct No { char dummy[2]; }; 93d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert // Define two overloaded template functions with return types of different 94d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert // size. This way, we can use sizeof() on the return type to determine which 95d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert // function the compiler would have chosen. One function will be preferred 96d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert // over the other if it is possible to create it without compiler errors, 97d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert // otherwise the compiler will simply remove it, and default to the less 98d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert // preferred function. 99d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert template <typename R> 100d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert static Yes test(R* r, decltype(r->AddRef(), r->Release(), 42)); 101d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert template <typename C> static No test(...); 102d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 103d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvertpublic: 104d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert // Trick the compiler to tell if it's possible to call AddRef() and Release(). 105d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert static const bool value = sizeof(test<T>((T*)nullptr, 42)) == sizeof(Yes); 106d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert}; 107d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 108d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// TernaryTypeOperator is a helper class to select a type based on a static bool 109d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// value. 110d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <bool condition, typename IfTrueT, typename IfFalseT> 111d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvertstruct TernaryTypeOperator {}; 112d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 113d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <typename IfTrueT, typename IfFalseT> 114d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvertstruct TernaryTypeOperator<true, IfTrueT, IfFalseT> { 115d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typedef IfTrueT type; 116d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert}; 117d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 118d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <typename IfTrueT, typename IfFalseT> 119d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvertstruct TernaryTypeOperator<false, IfTrueT, IfFalseT> { 120d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typedef IfFalseT type; 121d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert}; 122d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 123d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// PointerType<T>::type will be scoped_refptr<T> for ref counted types, and T* 124d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert// otherwise. 125d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <class T> 126d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvertstruct PointerType { 127d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typedef typename TernaryTypeOperator<IsRefCounted<T>::value, 128d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert scoped_refptr<T>, 129d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert T*>::type type; 130d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert}; 131d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 132f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} // namespace detail 133f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 134f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class MethodT, class R> 135f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass MethodFunctor0 { 136f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 137f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodFunctor0(MethodT method, ObjectT* object) 138f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : method_(method), object_(object) {} 139f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 140f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return (object_->*method_)(); } 141f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 142f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodT method_; 143d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::PointerType<ObjectT>::type object_; 144f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 145f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 146f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class FunctorT, class R> 147f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass Functor0 { 148f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 149f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org explicit Functor0(const FunctorT& functor) 150f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : functor_(functor) {} 151f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 152f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return functor_(); } 153f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 154f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org FunctorT functor_; 155f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 156f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 157f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 158f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)() 159f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 160f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R> 161f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor0<ObjectT, FP_T(NONAME), R> 162f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), ObjectT* object) { 163f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor0<ObjectT, FP_T(NONAME), R>( 164f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object); 165f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 166f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 167f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 168f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)() const 169f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 170f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R> 171f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor0<const ObjectT, FP_T(NONAME), R> 172f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), const ObjectT* object) { 173f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor0<const ObjectT, FP_T(NONAME), R>( 174f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object); 175f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 176f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 177f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 178d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#define FP_T(x) R (ObjectT::*x)() 179d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 180d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <class ObjectT, class R> 181d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertMethodFunctor0<ObjectT, FP_T(NONAME), R> 182d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertBind(FP_T(method), const scoped_refptr<ObjectT>& object) { 183d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert return MethodFunctor0<ObjectT, FP_T(NONAME), R>( 184d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert method, object.get()); 185d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert} 186d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 187d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#undef FP_T 188f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (*x)() 189f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 190f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class R> 191f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgFunctor0<FP_T(NONAME), R> 192f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(function)) { 193f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return Functor0<FP_T(NONAME), R>( 194f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org function); 195f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 196f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 197f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 198f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 199f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class MethodT, class R, 200f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1> 201f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass MethodFunctor1 { 202f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 203f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodFunctor1(MethodT method, ObjectT* object, 204f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P1 p1) 205f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : method_(method), object_(object), 206f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p1_(p1) {} 207f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 208f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return (object_->*method_)(p1_); } 209f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 210f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodT method_; 211d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::PointerType<ObjectT>::type object_; 2125d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 213f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 214f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 215f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class FunctorT, class R, 216f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1> 217f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass Functor1 { 218f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 219f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org Functor1(const FunctorT& functor, P1 p1) 220f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : functor_(functor), 221f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p1_(p1) {} 222f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 223f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return functor_(p1_); } 224f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 225f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org FunctorT functor_; 2265d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 227f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 228f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 229f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 230f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)(P1) 231f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 232f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R, 233f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1> 234f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor1<ObjectT, FP_T(NONAME), R, P1> 235f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), ObjectT* object, 236f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1) { 237f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor1<ObjectT, FP_T(NONAME), R, P1>( 238f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object, p1); 239f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 240f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 241f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 242f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)(P1) const 243f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 244f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R, 245f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1> 246f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor1<const ObjectT, FP_T(NONAME), R, P1> 247f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), const ObjectT* object, 248f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1) { 249f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor1<const ObjectT, FP_T(NONAME), R, P1>( 250f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object, p1); 251f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 252f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 253f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 254d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#define FP_T(x) R (ObjectT::*x)(P1) 255d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 256d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <class ObjectT, class R, 257d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P1> 258d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertMethodFunctor1<ObjectT, FP_T(NONAME), R, P1> 259d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertBind(FP_T(method), const scoped_refptr<ObjectT>& object, 260d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P1>::type p1) { 261d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert return MethodFunctor1<ObjectT, FP_T(NONAME), R, P1>( 262d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert method, object.get(), p1); 263d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert} 264d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 265d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#undef FP_T 266f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (*x)(P1) 267f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 268f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class R, 269f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1> 270f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgFunctor1<FP_T(NONAME), R, P1> 271f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(function), 272f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1) { 273f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return Functor1<FP_T(NONAME), R, P1>( 274f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org function, p1); 275f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 276f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 277f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 278f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 279f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class MethodT, class R, 280f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 281f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2> 282f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass MethodFunctor2 { 283f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 284f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodFunctor2(MethodT method, ObjectT* object, 285f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P1 p1, 286f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P2 p2) 287f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : method_(method), object_(object), 288f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p1_(p1), 289f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p2_(p2) {} 290f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 291f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return (object_->*method_)(p1_, p2_); } 292f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 293f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodT method_; 294d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::PointerType<ObjectT>::type object_; 2955d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 2965d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 297f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 298f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 299f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class FunctorT, class R, 300f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 301f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2> 302f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass Functor2 { 303f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 304f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org Functor2(const FunctorT& functor, P1 p1, P2 p2) 305f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : functor_(functor), 306f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p1_(p1), 307f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p2_(p2) {} 308f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 309f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return functor_(p1_, p2_); } 310f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 311f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org FunctorT functor_; 3125d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 3135d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 314f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 315f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 316f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 317f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)(P1, P2) 318f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 319f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R, 320f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 321f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2> 322f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor2<ObjectT, FP_T(NONAME), R, P1, P2> 323f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), ObjectT* object, 324f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 325f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2) { 326f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor2<ObjectT, FP_T(NONAME), R, P1, P2>( 327f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object, p1, p2); 328f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 329f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 330f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 331f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)(P1, P2) const 332f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 333f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R, 334f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 335f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2> 336f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor2<const ObjectT, FP_T(NONAME), R, P1, P2> 337f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), const ObjectT* object, 338f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 339f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2) { 340f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor2<const ObjectT, FP_T(NONAME), R, P1, P2>( 341f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object, p1, p2); 342f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 343f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 344f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 345d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#define FP_T(x) R (ObjectT::*x)(P1, P2) 346d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 347d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <class ObjectT, class R, 348d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P1, 349d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P2> 350d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertMethodFunctor2<ObjectT, FP_T(NONAME), R, P1, P2> 351d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertBind(FP_T(method), const scoped_refptr<ObjectT>& object, 352d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P1>::type p1, 353d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P2>::type p2) { 354d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert return MethodFunctor2<ObjectT, FP_T(NONAME), R, P1, P2>( 355d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert method, object.get(), p1, p2); 356d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert} 357d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 358d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#undef FP_T 359f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (*x)(P1, P2) 360f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 361f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class R, 362f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 363f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2> 364f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgFunctor2<FP_T(NONAME), R, P1, P2> 365f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(function), 366f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 367f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2) { 368f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return Functor2<FP_T(NONAME), R, P1, P2>( 369f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org function, p1, p2); 370f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 371f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 372f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 373f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 374f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class MethodT, class R, 375f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 376f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 377f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3> 378f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass MethodFunctor3 { 379f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 380f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodFunctor3(MethodT method, ObjectT* object, 381f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P1 p1, 382f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P2 p2, 383f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P3 p3) 384f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : method_(method), object_(object), 385f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p1_(p1), 386f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p2_(p2), 387f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p3_(p3) {} 388f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 389f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return (object_->*method_)(p1_, p2_, p3_); } 390f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 391f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodT method_; 392d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::PointerType<ObjectT>::type object_; 3935d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 3945d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 3955d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 396f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 397f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 398f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class FunctorT, class R, 399f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 400f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 401f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3> 402f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass Functor3 { 403f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 404f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org Functor3(const FunctorT& functor, P1 p1, P2 p2, P3 p3) 405f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : functor_(functor), 406f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p1_(p1), 407f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p2_(p2), 408f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p3_(p3) {} 409f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 410f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return functor_(p1_, p2_, p3_); } 411f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 412f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org FunctorT functor_; 4135d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 4145d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 4155d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 416f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 417f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 418f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 419f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)(P1, P2, P3) 420f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 421f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R, 422f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 423f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 424f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3> 425f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor3<ObjectT, FP_T(NONAME), R, P1, P2, P3> 426f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), ObjectT* object, 427f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 428f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2, 429f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P3>::type p3) { 430f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor3<ObjectT, FP_T(NONAME), R, P1, P2, P3>( 431f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object, p1, p2, p3); 432f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 433f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 434f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 435f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)(P1, P2, P3) const 436f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 437f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R, 438f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 439f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 440f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3> 441f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor3<const ObjectT, FP_T(NONAME), R, P1, P2, P3> 442f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), const ObjectT* object, 443f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 444f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2, 445f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P3>::type p3) { 446f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor3<const ObjectT, FP_T(NONAME), R, P1, P2, P3>( 447f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object, p1, p2, p3); 448f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 449f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 450f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 451d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#define FP_T(x) R (ObjectT::*x)(P1, P2, P3) 452d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 453d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <class ObjectT, class R, 454d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P1, 455d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P2, 456d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P3> 457d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertMethodFunctor3<ObjectT, FP_T(NONAME), R, P1, P2, P3> 458d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertBind(FP_T(method), const scoped_refptr<ObjectT>& object, 459d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P1>::type p1, 460d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P2>::type p2, 461d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P3>::type p3) { 462d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert return MethodFunctor3<ObjectT, FP_T(NONAME), R, P1, P2, P3>( 463d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert method, object.get(), p1, p2, p3); 464d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert} 465d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 466d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#undef FP_T 467f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (*x)(P1, P2, P3) 468f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 469f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class R, 470f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 471f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 472f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3> 473f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgFunctor3<FP_T(NONAME), R, P1, P2, P3> 474f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(function), 475f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 476f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2, 477f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P3>::type p3) { 478f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return Functor3<FP_T(NONAME), R, P1, P2, P3>( 479f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org function, p1, p2, p3); 480f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 481f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 482f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 483f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 484f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class MethodT, class R, 485f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 486f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 487f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3, 488f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P4> 489f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass MethodFunctor4 { 490f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 491f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodFunctor4(MethodT method, ObjectT* object, 492f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P1 p1, 493f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P2 p2, 494f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P3 p3, 495f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P4 p4) 496f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : method_(method), object_(object), 497f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p1_(p1), 498f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p2_(p2), 499f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p3_(p3), 500f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p4_(p4) {} 501f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 502f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return (object_->*method_)(p1_, p2_, p3_, p4_); } 503f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 504f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodT method_; 505d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::PointerType<ObjectT>::type object_; 5065d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 5075d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 5085d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 5095d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 510f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 511f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 512f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class FunctorT, class R, 513f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 514f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 515f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3, 516f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P4> 517f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass Functor4 { 518f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 519f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org Functor4(const FunctorT& functor, P1 p1, P2 p2, P3 p3, P4 p4) 520f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : functor_(functor), 521f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p1_(p1), 522f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p2_(p2), 523f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p3_(p3), 524f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p4_(p4) {} 525f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 526f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return functor_(p1_, p2_, p3_, p4_); } 527f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 528f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org FunctorT functor_; 5295d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 5305d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 5315d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 5325d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 533f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 534f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 535f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 536f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4) 537f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 538f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R, 539f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 540f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 541f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3, 542f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P4> 543f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor4<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4> 544f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), ObjectT* object, 545f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 546f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2, 547f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P3>::type p3, 548f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P4>::type p4) { 549f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor4<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4>( 550f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object, p1, p2, p3, p4); 551f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 552f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 553f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 554f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4) const 555f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 556f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R, 557f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 558f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 559f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3, 560f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P4> 561f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor4<const ObjectT, FP_T(NONAME), R, P1, P2, P3, P4> 562f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), const ObjectT* object, 563f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 564f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2, 565f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P3>::type p3, 566f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P4>::type p4) { 567f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor4<const ObjectT, FP_T(NONAME), R, P1, P2, P3, P4>( 568f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object, p1, p2, p3, p4); 569f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 570f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 571f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 572d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4) 573d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 574d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <class ObjectT, class R, 575d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P1, 576d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P2, 577d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P3, 578d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P4> 579d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertMethodFunctor4<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4> 580d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertBind(FP_T(method), const scoped_refptr<ObjectT>& object, 581d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P1>::type p1, 582d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P2>::type p2, 583d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P3>::type p3, 584d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P4>::type p4) { 585d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert return MethodFunctor4<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4>( 586d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert method, object.get(), p1, p2, p3, p4); 587d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert} 588d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 589d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#undef FP_T 590f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (*x)(P1, P2, P3, P4) 591f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 592f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class R, 593f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 594f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 595f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3, 596f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P4> 597f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgFunctor4<FP_T(NONAME), R, P1, P2, P3, P4> 598f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(function), 599f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 600f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2, 601f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P3>::type p3, 602f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P4>::type p4) { 603f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return Functor4<FP_T(NONAME), R, P1, P2, P3, P4>( 604f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org function, p1, p2, p3, p4); 605f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 606f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 607f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 608f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 609f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class MethodT, class R, 610f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 611f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 612f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3, 613f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P4, 614f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P5> 615f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass MethodFunctor5 { 616f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 617f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodFunctor5(MethodT method, ObjectT* object, 618f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P1 p1, 619f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P2 p2, 620f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P3 p3, 621f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P4 p4, 622f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org P5 p5) 623f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : method_(method), object_(object), 624f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p1_(p1), 625f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p2_(p2), 626f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p3_(p3), 627f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p4_(p4), 628f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p5_(p5) {} 629f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 630f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return (object_->*method_)(p1_, p2_, p3_, p4_, p5_); } 631f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 632f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MethodT method_; 633d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::PointerType<ObjectT>::type object_; 6345d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 6355d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 6365d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 6375d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 6385d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P5>::type p5_; 639f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 640f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 641f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class FunctorT, class R, 642f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 643f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 644f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3, 645f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P4, 646f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P5> 647f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass Functor5 { 648f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org public: 649f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org Functor5(const FunctorT& functor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) 650f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org : functor_(functor), 651f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p1_(p1), 652f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p2_(p2), 653f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p3_(p3), 654f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p4_(p4), 655f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org p5_(p5) {} 656f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org R operator()() const { 657f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return functor_(p1_, p2_, p3_, p4_, p5_); } 658f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org private: 659f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org FunctorT functor_; 6605d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 6615d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 6625d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 6635d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 6645d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P5>::type p5_; 665f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 666f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 667f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 668f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5) 669f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 670f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R, 671f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 672f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 673f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3, 674f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P4, 675f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P5> 676f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor5<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5> 677f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), ObjectT* object, 678f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 679f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2, 680f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P3>::type p3, 681f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P4>::type p4, 682f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P5>::type p5) { 683f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor5<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5>( 684f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object, p1, p2, p3, p4, p5); 685f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 686f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 687f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 688f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5) const 689f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 690f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class ObjectT, class R, 691f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 692f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 693f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3, 694f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P4, 695f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P5> 696f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMethodFunctor5<const ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5> 697f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(method), const ObjectT* object, 698f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 699f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2, 700f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P3>::type p3, 701f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P4>::type p4, 702f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P5>::type p5) { 703f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return MethodFunctor5<const ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5>( 704f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org method, object, p1, p2, p3, p4, p5); 705f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 706f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 707f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 708d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5) 709d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 710d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <class ObjectT, class R, 711d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P1, 712d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P2, 713d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P3, 714d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P4, 715d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P5> 716d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertMethodFunctor5<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5> 717d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertBind(FP_T(method), const scoped_refptr<ObjectT>& object, 718d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P1>::type p1, 719d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P2>::type p2, 720d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P3>::type p3, 721d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P4>::type p4, 722d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P5>::type p5) { 723d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert return MethodFunctor5<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5>( 724d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert method, object.get(), p1, p2, p3, p4, p5); 725d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert} 726d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 727d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#undef FP_T 728f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define FP_T(x) R (*x)(P1, P2, P3, P4, P5) 729f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 730f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgtemplate <class R, 731f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P1, 732f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P2, 733f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P3, 734f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P4, 735f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org class P5> 736f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgFunctor5<FP_T(NONAME), R, P1, P2, P3, P4, P5> 737f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgBind(FP_T(function), 738f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P1>::type p1, 739f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P2>::type p2, 740f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P3>::type p3, 741f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P4>::type p4, 742f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org typename detail::identity<P5>::type p5) { 743f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return Functor5<FP_T(NONAME), R, P1, P2, P3, P4, P5>( 744f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org function, p1, p2, p3, p4, p5); 745f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 746f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 747f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef FP_T 748c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg 749c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenbergtemplate <class ObjectT, class MethodT, class R, 7505d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P1, 7515d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P2, 7525d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P3, 7535d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P4, 7545d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P5, 7555d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P6> 7565d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusicclass MethodFunctor6 { 7575d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic public: 758c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg MethodFunctor6(MethodT method, ObjectT* object, 7595d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic P1 p1, 7605d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic P2 p2, 7615d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic P3 p3, 7625d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic P4 p4, 7635d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic P5 p5, 7645d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic P6 p6) 765c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg : method_(method), object_(object), 766c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p1_(p1), 767c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p2_(p2), 768c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p3_(p3), 769c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p4_(p4), 770c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p5_(p5), 771c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p6_(p6) {} 7725d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic R operator()() const { 773c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg return (object_->*method_)(p1_, p2_, p3_, p4_, p5_, p6_); } 7745d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic private: 7755d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic MethodT method_; 776d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::PointerType<ObjectT>::type object_; 7775d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 7785d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 7795d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 7805d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 7815d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P5>::type p5_; 7825d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P6>::type p6_; 7835d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic}; 7845d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic 785c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenbergtemplate <class FunctorT, class R, 7865d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P1, 7875d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P2, 7885d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P3, 7895d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P4, 7905d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P5, 7915d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P6> 7925d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusicclass Functor6 { 7935d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic public: 7945d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic Functor6(const FunctorT& functor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) 7955d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic : functor_(functor), 796c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p1_(p1), 797c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p2_(p2), 798c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p3_(p3), 799c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p4_(p4), 800c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p5_(p5), 801c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg p6_(p6) {} 802c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg R operator()() const { 803c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg return functor_(p1_, p2_, p3_, p4_, p5_, p6_); } 8045d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic private: 8055d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic FunctorT functor_; 8065d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 8075d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 8085d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 8095d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 8105d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P5>::type p5_; 8115d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P6>::type p6_; 8125d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic}; 8135d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic 814c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg 8155d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6) 8165d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic 817c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenbergtemplate <class ObjectT, class R, 8185d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P1, 8195d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P2, 8205d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P3, 8215d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P4, 8225d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P5, 8235d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P6> 824c937139176027b75a3d0c3fbc9343c257b6244adFredrik SolenbergMethodFunctor6<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6> 825c937139176027b75a3d0c3fbc9343c257b6244adFredrik SolenbergBind(FP_T(method), ObjectT* object, 826c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P1>::type p1, 827c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P2>::type p2, 828c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P3>::type p3, 829c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P4>::type p4, 830c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P5>::type p5, 831c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P6>::type p6) { 8325d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic return MethodFunctor6<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6>( 8335d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic method, object, p1, p2, p3, p4, p5, p6); 8345d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic} 8355d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic 8365d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic#undef FP_T 8375d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6) const 8385d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic 839c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenbergtemplate <class ObjectT, class R, 8405d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P1, 8415d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P2, 8425d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P3, 8435d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P4, 8445d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P5, 8455d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic class P6> 846c937139176027b75a3d0c3fbc9343c257b6244adFredrik SolenbergMethodFunctor6<const ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6> 847c937139176027b75a3d0c3fbc9343c257b6244adFredrik SolenbergBind(FP_T(method), const ObjectT* object, 848c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P1>::type p1, 849c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P2>::type p2, 850c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P3>::type p3, 851c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P4>::type p4, 852c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P5>::type p5, 853c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P6>::type p6) { 8545d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic return MethodFunctor6<const ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6>( 8555d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic method, object, p1, p2, p3, p4, p5, p6); 8565d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic} 8575d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic 8585d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic#undef FP_T 859d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6) 860d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 861d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedverttemplate <class ObjectT, class R, 862d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P1, 863d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P2, 864d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P3, 865d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P4, 866d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P5, 867d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert class P6> 868d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertMethodFunctor6<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6> 869d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus JedvertBind(FP_T(method), const scoped_refptr<ObjectT>& object, 870d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P1>::type p1, 871d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P2>::type p2, 872d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P3>::type p3, 873d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P4>::type p4, 874d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P5>::type p5, 875d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert typename detail::identity<P6>::type p6) { 876d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert return MethodFunctor6<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6>( 877d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert method, object.get(), p1, p2, p3, p4, p5, p6); 878d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert} 879d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert 880d3de9c548d1121e7c4787a4b81fd66be714abc04Magnus Jedvert#undef FP_T 8815d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic#define FP_T(x) R (*x)(P1, P2, P3, P4, P5, P6) 8825d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic 883c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenbergtemplate <class R, 884c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg class P1, 885c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg class P2, 886c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg class P3, 887c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg class P4, 888c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg class P5, 889c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg class P6> 890c937139176027b75a3d0c3fbc9343c257b6244adFredrik SolenbergFunctor6<FP_T(NONAME), R, P1, P2, P3, P4, P5, P6> 891c937139176027b75a3d0c3fbc9343c257b6244adFredrik SolenbergBind(FP_T(function), 892c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P1>::type p1, 893c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P2>::type p2, 894c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P3>::type p3, 895c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P4>::type p4, 896c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P5>::type p5, 897c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg typename detail::identity<P6>::type p6) { 898c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg return Functor6<FP_T(NONAME), R, P1, P2, P3, P4, P5, P6>( 899c937139176027b75a3d0c3fbc9343c257b6244adFredrik Solenberg function, p1, p2, p3, p4, p5, p6); 9005d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic} 9015d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic 9025d6e58e76e7750a86eed2da8f0c2b62b58d8356bJelena Marusic#undef FP_T 903f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 9045d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 9055d9b92b53daf4db78fd090be4e210e07f786120dnoahric class MethodT, 9065d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 9075d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 9085d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 9095d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 9105d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 9115d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 9125d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 9135d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7> 9145d9b92b53daf4db78fd090be4e210e07f786120dnoahricclass MethodFunctor7 { 9155d9b92b53daf4db78fd090be4e210e07f786120dnoahric public: 9165d9b92b53daf4db78fd090be4e210e07f786120dnoahric MethodFunctor7(MethodT method, 9175d9b92b53daf4db78fd090be4e210e07f786120dnoahric ObjectT* object, 9185d9b92b53daf4db78fd090be4e210e07f786120dnoahric P1 p1, 9195d9b92b53daf4db78fd090be4e210e07f786120dnoahric P2 p2, 9205d9b92b53daf4db78fd090be4e210e07f786120dnoahric P3 p3, 9215d9b92b53daf4db78fd090be4e210e07f786120dnoahric P4 p4, 9225d9b92b53daf4db78fd090be4e210e07f786120dnoahric P5 p5, 9235d9b92b53daf4db78fd090be4e210e07f786120dnoahric P6 p6, 9245d9b92b53daf4db78fd090be4e210e07f786120dnoahric P7 p7) 9255d9b92b53daf4db78fd090be4e210e07f786120dnoahric : method_(method), 9265d9b92b53daf4db78fd090be4e210e07f786120dnoahric object_(object), 9275d9b92b53daf4db78fd090be4e210e07f786120dnoahric p1_(p1), 9285d9b92b53daf4db78fd090be4e210e07f786120dnoahric p2_(p2), 9295d9b92b53daf4db78fd090be4e210e07f786120dnoahric p3_(p3), 9305d9b92b53daf4db78fd090be4e210e07f786120dnoahric p4_(p4), 9315d9b92b53daf4db78fd090be4e210e07f786120dnoahric p5_(p5), 9325d9b92b53daf4db78fd090be4e210e07f786120dnoahric p6_(p6), 9335d9b92b53daf4db78fd090be4e210e07f786120dnoahric p7_(p7) {} 9345d9b92b53daf4db78fd090be4e210e07f786120dnoahric R operator()() const { 9355d9b92b53daf4db78fd090be4e210e07f786120dnoahric return (object_->*method_)(p1_, p2_, p3_, p4_, p5_, p6_, p7_); 9365d9b92b53daf4db78fd090be4e210e07f786120dnoahric } 9375d9b92b53daf4db78fd090be4e210e07f786120dnoahric 9385d9b92b53daf4db78fd090be4e210e07f786120dnoahric private: 9395d9b92b53daf4db78fd090be4e210e07f786120dnoahric MethodT method_; 9405d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::PointerType<ObjectT>::type object_; 9415d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 9425d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 9435d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 9445d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 9455d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P5>::type p5_; 9465d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P6>::type p6_; 9475d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P7>::type p7_; 9485d9b92b53daf4db78fd090be4e210e07f786120dnoahric}; 9495d9b92b53daf4db78fd090be4e210e07f786120dnoahric 9505d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class FunctorT, 9515d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 9525d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 9535d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 9545d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 9555d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 9565d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 9575d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 9585d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7> 9595d9b92b53daf4db78fd090be4e210e07f786120dnoahricclass Functor7 { 9605d9b92b53daf4db78fd090be4e210e07f786120dnoahric public: 9615d9b92b53daf4db78fd090be4e210e07f786120dnoahric Functor7(const FunctorT& functor, 9625d9b92b53daf4db78fd090be4e210e07f786120dnoahric P1 p1, 9635d9b92b53daf4db78fd090be4e210e07f786120dnoahric P2 p2, 9645d9b92b53daf4db78fd090be4e210e07f786120dnoahric P3 p3, 9655d9b92b53daf4db78fd090be4e210e07f786120dnoahric P4 p4, 9665d9b92b53daf4db78fd090be4e210e07f786120dnoahric P5 p5, 9675d9b92b53daf4db78fd090be4e210e07f786120dnoahric P6 p6, 9685d9b92b53daf4db78fd090be4e210e07f786120dnoahric P7 p7) 9695d9b92b53daf4db78fd090be4e210e07f786120dnoahric : functor_(functor), 9705d9b92b53daf4db78fd090be4e210e07f786120dnoahric p1_(p1), 9715d9b92b53daf4db78fd090be4e210e07f786120dnoahric p2_(p2), 9725d9b92b53daf4db78fd090be4e210e07f786120dnoahric p3_(p3), 9735d9b92b53daf4db78fd090be4e210e07f786120dnoahric p4_(p4), 9745d9b92b53daf4db78fd090be4e210e07f786120dnoahric p5_(p5), 9755d9b92b53daf4db78fd090be4e210e07f786120dnoahric p6_(p6), 9765d9b92b53daf4db78fd090be4e210e07f786120dnoahric p7_(p7) {} 9775d9b92b53daf4db78fd090be4e210e07f786120dnoahric R operator()() const { return functor_(p1_, p2_, p3_, p4_, p5_, p6_, p7_); } 9785d9b92b53daf4db78fd090be4e210e07f786120dnoahric 9795d9b92b53daf4db78fd090be4e210e07f786120dnoahric private: 9805d9b92b53daf4db78fd090be4e210e07f786120dnoahric FunctorT functor_; 9815d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 9825d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 9835d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 9845d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 9855d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P5>::type p5_; 9865d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P6>::type p6_; 9875d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P7>::type p7_; 9885d9b92b53daf4db78fd090be4e210e07f786120dnoahric}; 9895d9b92b53daf4db78fd090be4e210e07f786120dnoahric 9905d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6, P7) 9915d9b92b53daf4db78fd090be4e210e07f786120dnoahric 9925d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 9935d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 9945d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 9955d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 9965d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 9975d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 9985d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 9995d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 10005d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7> 10015d9b92b53daf4db78fd090be4e210e07f786120dnoahricMethodFunctor7<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7> Bind( 10025d9b92b53daf4db78fd090be4e210e07f786120dnoahric FP_T(method), 10035d9b92b53daf4db78fd090be4e210e07f786120dnoahric ObjectT* object, 10045d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 10055d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 10065d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 10075d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 10085d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 10095d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 10105d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7) { 10115d9b92b53daf4db78fd090be4e210e07f786120dnoahric return MethodFunctor7<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7>( 10125d9b92b53daf4db78fd090be4e210e07f786120dnoahric method, object, p1, p2, p3, p4, p5, p6, p7); 10135d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 10145d9b92b53daf4db78fd090be4e210e07f786120dnoahric 10155d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 10165d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6, P7) const 10175d9b92b53daf4db78fd090be4e210e07f786120dnoahric 10185d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 10195d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 10205d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 10215d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 10225d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 10235d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 10245d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 10255d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 10265d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7> 10275d9b92b53daf4db78fd090be4e210e07f786120dnoahricMethodFunctor7<const ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7> Bind( 10285d9b92b53daf4db78fd090be4e210e07f786120dnoahric FP_T(method), 10295d9b92b53daf4db78fd090be4e210e07f786120dnoahric const ObjectT* object, 10305d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 10315d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 10325d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 10335d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 10345d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 10355d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 10365d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7) { 10375d9b92b53daf4db78fd090be4e210e07f786120dnoahric return MethodFunctor7<const ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, 10385d9b92b53daf4db78fd090be4e210e07f786120dnoahric P7>(method, object, p1, p2, p3, p4, p5, p6, p7); 10395d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 10405d9b92b53daf4db78fd090be4e210e07f786120dnoahric 10415d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 10425d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6, P7) 10435d9b92b53daf4db78fd090be4e210e07f786120dnoahric 10445d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 10455d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 10465d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 10475d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 10485d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 10495d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 10505d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 10515d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 10525d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7> 10535d9b92b53daf4db78fd090be4e210e07f786120dnoahricMethodFunctor7<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7> Bind( 10545d9b92b53daf4db78fd090be4e210e07f786120dnoahric FP_T(method), 10555d9b92b53daf4db78fd090be4e210e07f786120dnoahric const scoped_refptr<ObjectT>& object, 10565d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 10575d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 10585d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 10595d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 10605d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 10615d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 10625d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7) { 10635d9b92b53daf4db78fd090be4e210e07f786120dnoahric return MethodFunctor7<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7>( 10645d9b92b53daf4db78fd090be4e210e07f786120dnoahric method, object.get(), p1, p2, p3, p4, p5, p6, p7); 10655d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 10665d9b92b53daf4db78fd090be4e210e07f786120dnoahric 10675d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 10685d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (*x)(P1, P2, P3, P4, P5, P6, P7) 10695d9b92b53daf4db78fd090be4e210e07f786120dnoahric 10705d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class R, 10715d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 10725d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 10735d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 10745d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 10755d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 10765d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 10775d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7> 10785d9b92b53daf4db78fd090be4e210e07f786120dnoahricFunctor7<FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7> Bind( 10795d9b92b53daf4db78fd090be4e210e07f786120dnoahric FP_T(function), 10805d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 10815d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 10825d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 10835d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 10845d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 10855d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 10865d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7) { 10875d9b92b53daf4db78fd090be4e210e07f786120dnoahric return Functor7<FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7>( 10885d9b92b53daf4db78fd090be4e210e07f786120dnoahric function, p1, p2, p3, p4, p5, p6, p7); 10895d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 10905d9b92b53daf4db78fd090be4e210e07f786120dnoahric 10915d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 10925d9b92b53daf4db78fd090be4e210e07f786120dnoahric 10935d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 10945d9b92b53daf4db78fd090be4e210e07f786120dnoahric class MethodT, 10955d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 10965d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 10975d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 10985d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 10995d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 11005d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 11015d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 11025d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 11035d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8> 11045d9b92b53daf4db78fd090be4e210e07f786120dnoahricclass MethodFunctor8 { 11055d9b92b53daf4db78fd090be4e210e07f786120dnoahric public: 11065d9b92b53daf4db78fd090be4e210e07f786120dnoahric MethodFunctor8(MethodT method, 11075d9b92b53daf4db78fd090be4e210e07f786120dnoahric ObjectT* object, 11085d9b92b53daf4db78fd090be4e210e07f786120dnoahric P1 p1, 11095d9b92b53daf4db78fd090be4e210e07f786120dnoahric P2 p2, 11105d9b92b53daf4db78fd090be4e210e07f786120dnoahric P3 p3, 11115d9b92b53daf4db78fd090be4e210e07f786120dnoahric P4 p4, 11125d9b92b53daf4db78fd090be4e210e07f786120dnoahric P5 p5, 11135d9b92b53daf4db78fd090be4e210e07f786120dnoahric P6 p6, 11145d9b92b53daf4db78fd090be4e210e07f786120dnoahric P7 p7, 11155d9b92b53daf4db78fd090be4e210e07f786120dnoahric P8 p8) 11165d9b92b53daf4db78fd090be4e210e07f786120dnoahric : method_(method), 11175d9b92b53daf4db78fd090be4e210e07f786120dnoahric object_(object), 11185d9b92b53daf4db78fd090be4e210e07f786120dnoahric p1_(p1), 11195d9b92b53daf4db78fd090be4e210e07f786120dnoahric p2_(p2), 11205d9b92b53daf4db78fd090be4e210e07f786120dnoahric p3_(p3), 11215d9b92b53daf4db78fd090be4e210e07f786120dnoahric p4_(p4), 11225d9b92b53daf4db78fd090be4e210e07f786120dnoahric p5_(p5), 11235d9b92b53daf4db78fd090be4e210e07f786120dnoahric p6_(p6), 11245d9b92b53daf4db78fd090be4e210e07f786120dnoahric p7_(p7), 11255d9b92b53daf4db78fd090be4e210e07f786120dnoahric p8_(p8) {} 11265d9b92b53daf4db78fd090be4e210e07f786120dnoahric R operator()() const { 11275d9b92b53daf4db78fd090be4e210e07f786120dnoahric return (object_->*method_)(p1_, p2_, p3_, p4_, p5_, p6_, p7_, p8_); 11285d9b92b53daf4db78fd090be4e210e07f786120dnoahric } 11295d9b92b53daf4db78fd090be4e210e07f786120dnoahric 11305d9b92b53daf4db78fd090be4e210e07f786120dnoahric private: 11315d9b92b53daf4db78fd090be4e210e07f786120dnoahric MethodT method_; 11325d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::PointerType<ObjectT>::type object_; 11335d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 11345d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 11355d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 11365d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 11375d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P5>::type p5_; 11385d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P6>::type p6_; 11395d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P7>::type p7_; 11405d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P8>::type p8_; 11415d9b92b53daf4db78fd090be4e210e07f786120dnoahric}; 11425d9b92b53daf4db78fd090be4e210e07f786120dnoahric 11435d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class FunctorT, 11445d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 11455d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 11465d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 11475d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 11485d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 11495d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 11505d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 11515d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 11525d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8> 11535d9b92b53daf4db78fd090be4e210e07f786120dnoahricclass Functor8 { 11545d9b92b53daf4db78fd090be4e210e07f786120dnoahric public: 11555d9b92b53daf4db78fd090be4e210e07f786120dnoahric Functor8(const FunctorT& functor, 11565d9b92b53daf4db78fd090be4e210e07f786120dnoahric P1 p1, 11575d9b92b53daf4db78fd090be4e210e07f786120dnoahric P2 p2, 11585d9b92b53daf4db78fd090be4e210e07f786120dnoahric P3 p3, 11595d9b92b53daf4db78fd090be4e210e07f786120dnoahric P4 p4, 11605d9b92b53daf4db78fd090be4e210e07f786120dnoahric P5 p5, 11615d9b92b53daf4db78fd090be4e210e07f786120dnoahric P6 p6, 11625d9b92b53daf4db78fd090be4e210e07f786120dnoahric P7 p7, 11635d9b92b53daf4db78fd090be4e210e07f786120dnoahric P8 p8) 11645d9b92b53daf4db78fd090be4e210e07f786120dnoahric : functor_(functor), 11655d9b92b53daf4db78fd090be4e210e07f786120dnoahric p1_(p1), 11665d9b92b53daf4db78fd090be4e210e07f786120dnoahric p2_(p2), 11675d9b92b53daf4db78fd090be4e210e07f786120dnoahric p3_(p3), 11685d9b92b53daf4db78fd090be4e210e07f786120dnoahric p4_(p4), 11695d9b92b53daf4db78fd090be4e210e07f786120dnoahric p5_(p5), 11705d9b92b53daf4db78fd090be4e210e07f786120dnoahric p6_(p6), 11715d9b92b53daf4db78fd090be4e210e07f786120dnoahric p7_(p7), 11725d9b92b53daf4db78fd090be4e210e07f786120dnoahric p8_(p8) {} 11735d9b92b53daf4db78fd090be4e210e07f786120dnoahric R operator()() const { 11745d9b92b53daf4db78fd090be4e210e07f786120dnoahric return functor_(p1_, p2_, p3_, p4_, p5_, p6_, p7_, p8_); 11755d9b92b53daf4db78fd090be4e210e07f786120dnoahric } 11765d9b92b53daf4db78fd090be4e210e07f786120dnoahric 11775d9b92b53daf4db78fd090be4e210e07f786120dnoahric private: 11785d9b92b53daf4db78fd090be4e210e07f786120dnoahric FunctorT functor_; 11795d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 11805d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 11815d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 11825d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 11835d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P5>::type p5_; 11845d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P6>::type p6_; 11855d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P7>::type p7_; 11865d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P8>::type p8_; 11875d9b92b53daf4db78fd090be4e210e07f786120dnoahric}; 11885d9b92b53daf4db78fd090be4e210e07f786120dnoahric 11895d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6, P7, P8) 11905d9b92b53daf4db78fd090be4e210e07f786120dnoahric 11915d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 11925d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 11935d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 11945d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 11955d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 11965d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 11975d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 11985d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 11995d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 12005d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8> 12015d9b92b53daf4db78fd090be4e210e07f786120dnoahricMethodFunctor8<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, P8> Bind( 12025d9b92b53daf4db78fd090be4e210e07f786120dnoahric FP_T(method), 12035d9b92b53daf4db78fd090be4e210e07f786120dnoahric ObjectT* object, 12045d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 12055d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 12065d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 12075d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 12085d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 12095d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 12105d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7, 12115d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P8>::type p8) { 12125d9b92b53daf4db78fd090be4e210e07f786120dnoahric return MethodFunctor8<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, 12135d9b92b53daf4db78fd090be4e210e07f786120dnoahric P8>(method, object, p1, p2, p3, p4, p5, p6, p7, p8); 12145d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 12155d9b92b53daf4db78fd090be4e210e07f786120dnoahric 12165d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 12175d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6, P7, P8) const 12185d9b92b53daf4db78fd090be4e210e07f786120dnoahric 12195d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 12205d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 12215d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 12225d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 12235d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 12245d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 12255d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 12265d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 12275d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 12285d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8> 12295d9b92b53daf4db78fd090be4e210e07f786120dnoahricMethodFunctor8<const ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, P8> 12305d9b92b53daf4db78fd090be4e210e07f786120dnoahricBind(FP_T(method), 12315d9b92b53daf4db78fd090be4e210e07f786120dnoahric const ObjectT* object, 12325d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 12335d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 12345d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 12355d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 12365d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 12375d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 12385d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7, 12395d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P8>::type p8) { 12405d9b92b53daf4db78fd090be4e210e07f786120dnoahric return MethodFunctor8<const ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, 12415d9b92b53daf4db78fd090be4e210e07f786120dnoahric P7, P8>(method, object, p1, p2, p3, p4, p5, p6, p7, p8); 12425d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 12435d9b92b53daf4db78fd090be4e210e07f786120dnoahric 12445d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 12455d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6, P7, P8) 12465d9b92b53daf4db78fd090be4e210e07f786120dnoahric 12475d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 12485d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 12495d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 12505d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 12515d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 12525d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 12535d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 12545d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 12555d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 12565d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8> 12575d9b92b53daf4db78fd090be4e210e07f786120dnoahricMethodFunctor8<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, P8> Bind( 12585d9b92b53daf4db78fd090be4e210e07f786120dnoahric FP_T(method), 12595d9b92b53daf4db78fd090be4e210e07f786120dnoahric const scoped_refptr<ObjectT>& object, 12605d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 12615d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 12625d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 12635d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 12645d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 12655d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 12665d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7, 12675d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P8>::type p8) { 12685d9b92b53daf4db78fd090be4e210e07f786120dnoahric return MethodFunctor8<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, 12695d9b92b53daf4db78fd090be4e210e07f786120dnoahric P8>(method, object.get(), p1, p2, p3, p4, p5, p6, p7, 12705d9b92b53daf4db78fd090be4e210e07f786120dnoahric p8); 12715d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 12725d9b92b53daf4db78fd090be4e210e07f786120dnoahric 12735d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 12745d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (*x)(P1, P2, P3, P4, P5, P6, P7, P8) 12755d9b92b53daf4db78fd090be4e210e07f786120dnoahric 12765d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class R, 12775d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 12785d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 12795d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 12805d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 12815d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 12825d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 12835d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 12845d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8> 12855d9b92b53daf4db78fd090be4e210e07f786120dnoahricFunctor8<FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, P8> Bind( 12865d9b92b53daf4db78fd090be4e210e07f786120dnoahric FP_T(function), 12875d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 12885d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 12895d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 12905d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 12915d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 12925d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 12935d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7, 12945d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P8>::type p8) { 12955d9b92b53daf4db78fd090be4e210e07f786120dnoahric return Functor8<FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, P8>( 12965d9b92b53daf4db78fd090be4e210e07f786120dnoahric function, p1, p2, p3, p4, p5, p6, p7, p8); 12975d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 12985d9b92b53daf4db78fd090be4e210e07f786120dnoahric 12995d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 13005d9b92b53daf4db78fd090be4e210e07f786120dnoahric 13015d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 13025d9b92b53daf4db78fd090be4e210e07f786120dnoahric class MethodT, 13035d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 13045d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 13055d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 13065d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 13075d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 13085d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 13095d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 13105d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 13115d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8, 13125d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P9> 13135d9b92b53daf4db78fd090be4e210e07f786120dnoahricclass MethodFunctor9 { 13145d9b92b53daf4db78fd090be4e210e07f786120dnoahric public: 13155d9b92b53daf4db78fd090be4e210e07f786120dnoahric MethodFunctor9(MethodT method, 13165d9b92b53daf4db78fd090be4e210e07f786120dnoahric ObjectT* object, 13175d9b92b53daf4db78fd090be4e210e07f786120dnoahric P1 p1, 13185d9b92b53daf4db78fd090be4e210e07f786120dnoahric P2 p2, 13195d9b92b53daf4db78fd090be4e210e07f786120dnoahric P3 p3, 13205d9b92b53daf4db78fd090be4e210e07f786120dnoahric P4 p4, 13215d9b92b53daf4db78fd090be4e210e07f786120dnoahric P5 p5, 13225d9b92b53daf4db78fd090be4e210e07f786120dnoahric P6 p6, 13235d9b92b53daf4db78fd090be4e210e07f786120dnoahric P7 p7, 13245d9b92b53daf4db78fd090be4e210e07f786120dnoahric P8 p8, 13255d9b92b53daf4db78fd090be4e210e07f786120dnoahric P9 p9) 13265d9b92b53daf4db78fd090be4e210e07f786120dnoahric : method_(method), 13275d9b92b53daf4db78fd090be4e210e07f786120dnoahric object_(object), 13285d9b92b53daf4db78fd090be4e210e07f786120dnoahric p1_(p1), 13295d9b92b53daf4db78fd090be4e210e07f786120dnoahric p2_(p2), 13305d9b92b53daf4db78fd090be4e210e07f786120dnoahric p3_(p3), 13315d9b92b53daf4db78fd090be4e210e07f786120dnoahric p4_(p4), 13325d9b92b53daf4db78fd090be4e210e07f786120dnoahric p5_(p5), 13335d9b92b53daf4db78fd090be4e210e07f786120dnoahric p6_(p6), 13345d9b92b53daf4db78fd090be4e210e07f786120dnoahric p7_(p7), 13355d9b92b53daf4db78fd090be4e210e07f786120dnoahric p8_(p8), 13365d9b92b53daf4db78fd090be4e210e07f786120dnoahric p9_(p9) {} 13375d9b92b53daf4db78fd090be4e210e07f786120dnoahric R operator()() const { 13385d9b92b53daf4db78fd090be4e210e07f786120dnoahric return (object_->*method_)(p1_, p2_, p3_, p4_, p5_, p6_, p7_, p8_, p9_); 13395d9b92b53daf4db78fd090be4e210e07f786120dnoahric } 13405d9b92b53daf4db78fd090be4e210e07f786120dnoahric 13415d9b92b53daf4db78fd090be4e210e07f786120dnoahric private: 13425d9b92b53daf4db78fd090be4e210e07f786120dnoahric MethodT method_; 13435d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::PointerType<ObjectT>::type object_; 13445d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 13455d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 13465d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 13475d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 13485d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P5>::type p5_; 13495d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P6>::type p6_; 13505d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P7>::type p7_; 13515d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P8>::type p8_; 13525d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P9>::type p9_; 13535d9b92b53daf4db78fd090be4e210e07f786120dnoahric}; 13545d9b92b53daf4db78fd090be4e210e07f786120dnoahric 13555d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class FunctorT, 13565d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 13575d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 13585d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 13595d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 13605d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 13615d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 13625d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 13635d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 13645d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8, 13655d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P9> 13665d9b92b53daf4db78fd090be4e210e07f786120dnoahricclass Functor9 { 13675d9b92b53daf4db78fd090be4e210e07f786120dnoahric public: 13685d9b92b53daf4db78fd090be4e210e07f786120dnoahric Functor9(const FunctorT& functor, 13695d9b92b53daf4db78fd090be4e210e07f786120dnoahric P1 p1, 13705d9b92b53daf4db78fd090be4e210e07f786120dnoahric P2 p2, 13715d9b92b53daf4db78fd090be4e210e07f786120dnoahric P3 p3, 13725d9b92b53daf4db78fd090be4e210e07f786120dnoahric P4 p4, 13735d9b92b53daf4db78fd090be4e210e07f786120dnoahric P5 p5, 13745d9b92b53daf4db78fd090be4e210e07f786120dnoahric P6 p6, 13755d9b92b53daf4db78fd090be4e210e07f786120dnoahric P7 p7, 13765d9b92b53daf4db78fd090be4e210e07f786120dnoahric P8 p8, 13775d9b92b53daf4db78fd090be4e210e07f786120dnoahric P9 p9) 13785d9b92b53daf4db78fd090be4e210e07f786120dnoahric : functor_(functor), 13795d9b92b53daf4db78fd090be4e210e07f786120dnoahric p1_(p1), 13805d9b92b53daf4db78fd090be4e210e07f786120dnoahric p2_(p2), 13815d9b92b53daf4db78fd090be4e210e07f786120dnoahric p3_(p3), 13825d9b92b53daf4db78fd090be4e210e07f786120dnoahric p4_(p4), 13835d9b92b53daf4db78fd090be4e210e07f786120dnoahric p5_(p5), 13845d9b92b53daf4db78fd090be4e210e07f786120dnoahric p6_(p6), 13855d9b92b53daf4db78fd090be4e210e07f786120dnoahric p7_(p7), 13865d9b92b53daf4db78fd090be4e210e07f786120dnoahric p8_(p8), 13875d9b92b53daf4db78fd090be4e210e07f786120dnoahric p9_(p9) {} 13885d9b92b53daf4db78fd090be4e210e07f786120dnoahric R operator()() const { 13895d9b92b53daf4db78fd090be4e210e07f786120dnoahric return functor_(p1_, p2_, p3_, p4_, p5_, p6_, p7_, p8_, p9_); 13905d9b92b53daf4db78fd090be4e210e07f786120dnoahric } 13915d9b92b53daf4db78fd090be4e210e07f786120dnoahric 13925d9b92b53daf4db78fd090be4e210e07f786120dnoahric private: 13935d9b92b53daf4db78fd090be4e210e07f786120dnoahric FunctorT functor_; 13945d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P1>::type p1_; 13955d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P2>::type p2_; 13965d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P3>::type p3_; 13975d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P4>::type p4_; 13985d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P5>::type p5_; 13995d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P6>::type p6_; 14005d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P7>::type p7_; 14015d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P8>::type p8_; 14025d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename rtc::remove_reference<P9>::type p9_; 14035d9b92b53daf4db78fd090be4e210e07f786120dnoahric}; 14045d9b92b53daf4db78fd090be4e210e07f786120dnoahric 14055d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6, P7, P8, P9) 14065d9b92b53daf4db78fd090be4e210e07f786120dnoahric 14075d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 14085d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 14095d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 14105d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 14115d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 14125d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 14135d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 14145d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 14155d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 14165d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8, 14175d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P9> 14185d9b92b53daf4db78fd090be4e210e07f786120dnoahricMethodFunctor9<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, P8, P9> 14195d9b92b53daf4db78fd090be4e210e07f786120dnoahricBind(FP_T(method), 14205d9b92b53daf4db78fd090be4e210e07f786120dnoahric ObjectT* object, 14215d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 14225d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 14235d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 14245d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 14255d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 14265d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 14275d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7, 14285d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P8>::type p8, 14295d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P9>::type p9) { 14305d9b92b53daf4db78fd090be4e210e07f786120dnoahric return MethodFunctor9<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, 14315d9b92b53daf4db78fd090be4e210e07f786120dnoahric P8, P9>(method, object, p1, p2, p3, p4, p5, p6, p7, p8, 14325d9b92b53daf4db78fd090be4e210e07f786120dnoahric p9); 14335d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 14345d9b92b53daf4db78fd090be4e210e07f786120dnoahric 14355d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 14365d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6, P7, P8, P9) const 14375d9b92b53daf4db78fd090be4e210e07f786120dnoahric 14385d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 14395d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 14405d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 14415d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 14425d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 14435d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 14445d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 14455d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 14465d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 14475d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8, 14485d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P9> 14495d9b92b53daf4db78fd090be4e210e07f786120dnoahricMethodFunctor9<const ObjectT, 14505d9b92b53daf4db78fd090be4e210e07f786120dnoahric FP_T(NONAME), 14515d9b92b53daf4db78fd090be4e210e07f786120dnoahric R, 14525d9b92b53daf4db78fd090be4e210e07f786120dnoahric P1, 14535d9b92b53daf4db78fd090be4e210e07f786120dnoahric P2, 14545d9b92b53daf4db78fd090be4e210e07f786120dnoahric P3, 14555d9b92b53daf4db78fd090be4e210e07f786120dnoahric P4, 14565d9b92b53daf4db78fd090be4e210e07f786120dnoahric P5, 14575d9b92b53daf4db78fd090be4e210e07f786120dnoahric P6, 14585d9b92b53daf4db78fd090be4e210e07f786120dnoahric P7, 14595d9b92b53daf4db78fd090be4e210e07f786120dnoahric P8, 14605d9b92b53daf4db78fd090be4e210e07f786120dnoahric P9> 14615d9b92b53daf4db78fd090be4e210e07f786120dnoahricBind(FP_T(method), 14625d9b92b53daf4db78fd090be4e210e07f786120dnoahric const ObjectT* object, 14635d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 14645d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 14655d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 14665d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 14675d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 14685d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 14695d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7, 14705d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P8>::type p8, 14715d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P9>::type p9) { 14725d9b92b53daf4db78fd090be4e210e07f786120dnoahric return MethodFunctor9<const ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, 14735d9b92b53daf4db78fd090be4e210e07f786120dnoahric P7, P8, P9>(method, object, p1, p2, p3, p4, p5, p6, p7, 14745d9b92b53daf4db78fd090be4e210e07f786120dnoahric p8, p9); 14755d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 14765d9b92b53daf4db78fd090be4e210e07f786120dnoahric 14775d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 14785d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6, P7, P8, P9) 14795d9b92b53daf4db78fd090be4e210e07f786120dnoahric 14805d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class ObjectT, 14815d9b92b53daf4db78fd090be4e210e07f786120dnoahric class R, 14825d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 14835d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 14845d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 14855d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 14865d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 14875d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 14885d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 14895d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8, 14905d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P9> 14915d9b92b53daf4db78fd090be4e210e07f786120dnoahricMethodFunctor9<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, P8, P9> 14925d9b92b53daf4db78fd090be4e210e07f786120dnoahricBind(FP_T(method), 14935d9b92b53daf4db78fd090be4e210e07f786120dnoahric const scoped_refptr<ObjectT>& object, 14945d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 14955d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 14965d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 14975d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 14985d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 14995d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 15005d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7, 15015d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P8>::type p8, 15025d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P9>::type p9) { 15035d9b92b53daf4db78fd090be4e210e07f786120dnoahric return MethodFunctor9<ObjectT, FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, 15045d9b92b53daf4db78fd090be4e210e07f786120dnoahric P8, P9>(method, object.get(), p1, p2, p3, p4, p5, p6, 15055d9b92b53daf4db78fd090be4e210e07f786120dnoahric p7, p8, p9); 15065d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 15075d9b92b53daf4db78fd090be4e210e07f786120dnoahric 15085d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 15095d9b92b53daf4db78fd090be4e210e07f786120dnoahric#define FP_T(x) R (*x)(P1, P2, P3, P4, P5, P6, P7, P8, P9) 15105d9b92b53daf4db78fd090be4e210e07f786120dnoahric 15115d9b92b53daf4db78fd090be4e210e07f786120dnoahrictemplate <class R, 15125d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P1, 15135d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P2, 15145d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P3, 15155d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P4, 15165d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P5, 15175d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P6, 15185d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P7, 15195d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P8, 15205d9b92b53daf4db78fd090be4e210e07f786120dnoahric class P9> 15215d9b92b53daf4db78fd090be4e210e07f786120dnoahricFunctor9<FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, P8, P9> Bind( 15225d9b92b53daf4db78fd090be4e210e07f786120dnoahric FP_T(function), 15235d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P1>::type p1, 15245d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P2>::type p2, 15255d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P3>::type p3, 15265d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P4>::type p4, 15275d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P5>::type p5, 15285d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P6>::type p6, 15295d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P7>::type p7, 15305d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P8>::type p8, 15315d9b92b53daf4db78fd090be4e210e07f786120dnoahric typename detail::identity<P9>::type p9) { 15325d9b92b53daf4db78fd090be4e210e07f786120dnoahric return Functor9<FP_T(NONAME), R, P1, P2, P3, P4, P5, P6, P7, P8, P9>( 15335d9b92b53daf4db78fd090be4e210e07f786120dnoahric function, p1, p2, p3, p4, p5, p6, p7, p8, p9); 15345d9b92b53daf4db78fd090be4e210e07f786120dnoahric} 15355d9b92b53daf4db78fd090be4e210e07f786120dnoahric 15365d9b92b53daf4db78fd090be4e210e07f786120dnoahric#undef FP_T 15375d9b92b53daf4db78fd090be4e210e07f786120dnoahric 1538f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} // namespace rtc 1539f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 1540f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#undef NONAME 1541f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 1542f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#endif // WEBRTC_BASE_BIND_H_ 1543