Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Side by Side Diff: base/bind.h

Issue 8914022: Revert 114494 - Remove BindStateHolder and have Bind() return a Callback<> object directly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | base/bind.h.pump » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // This file was GENERATED by command: 1 // This file was GENERATED by command:
2 // pump.py bind.h.pump 2 // pump.py bind.h.pump
3 // DO NOT EDIT BY HAND!!! 3 // DO NOT EDIT BY HAND!!!
4 4
5 5
6 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 6 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
7 // Use of this source code is governed by a BSD-style license that can be 7 // Use of this source code is governed by a BSD-style license that can be
8 // found in the LICENSE file. 8 // found in the LICENSE file.
9 9
10 #ifndef BASE_BIND_H_ 10 #ifndef BASE_BIND_H_
(...skipping 26 matching lines...) Expand all
37 // TODO(ajwong): We might be able to avoid this now, but need to test. 37 // TODO(ajwong): We might be able to avoid this now, but need to test.
38 // 38 //
39 // It is possible to move most of the COMPILE_ASSERT asserts into BindState<>, 39 // It is possible to move most of the COMPILE_ASSERT asserts into BindState<>,
40 // but it feels a little nicer to have the asserts here so people do not 40 // but it feels a little nicer to have the asserts here so people do not
41 // need to crack open bind_internal.h. On the other hand, it makes Bind() 41 // need to crack open bind_internal.h. On the other hand, it makes Bind()
42 // harder to read. 42 // harder to read.
43 43
44 namespace base { 44 namespace base {
45 45
46 template <typename Functor> 46 template <typename Functor>
47 base::Callback< 47 internal::BindStateHolder<
48 typename internal::BindState< 48 internal::BindState<
49 typename internal::FunctorTraits<Functor>::RunnableType, 49 typename internal::FunctorTraits<Functor>::RunnableType,
50 typename internal::FunctorTraits<Functor>::RunType, 50 typename internal::FunctorTraits<Functor>::RunType,
51 void()> 51 void()> >
52 ::UnboundRunType>
53 Bind(Functor functor) { 52 Bind(Functor functor) {
54 // Typedefs for how to store and run the functor. 53 // Typedefs for how to store and run the functor.
55 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType; 54 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType;
56 typedef typename internal::FunctorTraits<Functor>::RunType RunType; 55 typedef typename internal::FunctorTraits<Functor>::RunType RunType;
57 56
58 // Use RunnableType::RunType instead of RunType above because our 57 // Use RunnableType::RunType instead of RunType above because our
59 // checks should below for bound references need to know what the actual 58 // checks should below for bound references need to know what the actual
60 // functor is going to interpret the argument as. 59 // functor is going to interpret the argument as.
61 typedef internal::FunctionTraits<typename RunnableType::RunType> 60 typedef internal::FunctionTraits<typename RunnableType::RunType>
62 BoundFunctorTraits; 61 BoundFunctorTraits;
63 62
64 typedef internal::BindState<RunnableType, RunType, void()> BindState;
65 63
66 64 return internal::MakeBindStateHolder(
67 return Callback<typename BindState::UnboundRunType>( 65 new internal::BindState<RunnableType, RunType, void()>(
68 new BindState(internal::MakeRunnable(functor))); 66 internal::MakeRunnable(functor)));
69 } 67 }
70 68
71 template <typename Functor, typename P1> 69 template <typename Functor, typename P1>
72 base::Callback< 70 internal::BindStateHolder<
73 typename internal::BindState< 71 internal::BindState<
74 typename internal::FunctorTraits<Functor>::RunnableType, 72 typename internal::FunctorTraits<Functor>::RunnableType,
75 typename internal::FunctorTraits<Functor>::RunType, 73 typename internal::FunctorTraits<Functor>::RunType,
76 void(typename internal::CallbackParamTraits<P1>::StorageType)> 74 void(typename internal::CallbackParamTraits<P1>::StorageType)> >
77 ::UnboundRunType>
78 Bind(Functor functor, const P1& p1) { 75 Bind(Functor functor, const P1& p1) {
79 // Typedefs for how to store and run the functor. 76 // Typedefs for how to store and run the functor.
80 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType; 77 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType;
81 typedef typename internal::FunctorTraits<Functor>::RunType RunType; 78 typedef typename internal::FunctorTraits<Functor>::RunType RunType;
82 79
83 // Use RunnableType::RunType instead of RunType above because our 80 // Use RunnableType::RunType instead of RunType above because our
84 // checks should below for bound references need to know what the actual 81 // checks should below for bound references need to know what the actual
85 // functor is going to interpret the argument as. 82 // functor is going to interpret the argument as.
86 typedef internal::FunctionTraits<typename RunnableType::RunType> 83 typedef internal::FunctionTraits<typename RunnableType::RunType>
87 BoundFunctorTraits; 84 BoundFunctorTraits;
(...skipping 11 matching lines...) Expand all
99 // a scoped_refptr because BindState<> itself takes care of AddRef() for 96 // a scoped_refptr because BindState<> itself takes care of AddRef() for
100 // methods. We also disallow binding of an array as the method's target 97 // methods. We also disallow binding of an array as the method's target
101 // object. 98 // object.
102 COMPILE_ASSERT( 99 COMPILE_ASSERT(
103 internal::HasIsMethodTag<RunnableType>::value || 100 internal::HasIsMethodTag<RunnableType>::value ||
104 !internal::NeedsScopedRefptrButGetsRawPtr<P1>::value, 101 !internal::NeedsScopedRefptrButGetsRawPtr<P1>::value,
105 p1_is_refcounted_type_and_needs_scoped_refptr); 102 p1_is_refcounted_type_and_needs_scoped_refptr);
106 COMPILE_ASSERT(!internal::HasIsMethodTag<RunnableType>::value || 103 COMPILE_ASSERT(!internal::HasIsMethodTag<RunnableType>::value ||
107 !is_array<P1>::value, 104 !is_array<P1>::value,
108 first_bound_argument_to_method_cannot_be_array); 105 first_bound_argument_to_method_cannot_be_array);
109 typedef internal::BindState<RunnableType, RunType,
110 void(typename internal::CallbackParamTraits<P1>::StorageType)> BindState;
111 106
112 107 return internal::MakeBindStateHolder(
113 return Callback<typename BindState::UnboundRunType>( 108 new internal::BindState<RunnableType, RunType,
114 new BindState(internal::MakeRunnable(functor), p1)); 109 void(typename internal::CallbackParamTraits<P1>::StorageType)>(
110 internal::MakeRunnable(functor), p1));
115 } 111 }
116 112
117 template <typename Functor, typename P1, typename P2> 113 template <typename Functor, typename P1, typename P2>
118 base::Callback< 114 internal::BindStateHolder<
119 typename internal::BindState< 115 internal::BindState<
120 typename internal::FunctorTraits<Functor>::RunnableType, 116 typename internal::FunctorTraits<Functor>::RunnableType,
121 typename internal::FunctorTraits<Functor>::RunType, 117 typename internal::FunctorTraits<Functor>::RunType,
122 void(typename internal::CallbackParamTraits<P1>::StorageType, 118 void(typename internal::CallbackParamTraits<P1>::StorageType,
123 typename internal::CallbackParamTraits<P2>::StorageType)> 119 typename internal::CallbackParamTraits<P2>::StorageType)> >
124 ::UnboundRunType>
125 Bind(Functor functor, const P1& p1, const P2& p2) { 120 Bind(Functor functor, const P1& p1, const P2& p2) {
126 // Typedefs for how to store and run the functor. 121 // Typedefs for how to store and run the functor.
127 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType; 122 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType;
128 typedef typename internal::FunctorTraits<Functor>::RunType RunType; 123 typedef typename internal::FunctorTraits<Functor>::RunType RunType;
129 124
130 // Use RunnableType::RunType instead of RunType above because our 125 // Use RunnableType::RunType instead of RunType above because our
131 // checks should below for bound references need to know what the actual 126 // checks should below for bound references need to know what the actual
132 // functor is going to interpret the argument as. 127 // functor is going to interpret the argument as.
133 typedef internal::FunctionTraits<typename RunnableType::RunType> 128 typedef internal::FunctionTraits<typename RunnableType::RunType>
134 BoundFunctorTraits; 129 BoundFunctorTraits;
(...skipping 14 matching lines...) Expand all
149 // object. 144 // object.
150 COMPILE_ASSERT( 145 COMPILE_ASSERT(
151 internal::HasIsMethodTag<RunnableType>::value || 146 internal::HasIsMethodTag<RunnableType>::value ||
152 !internal::NeedsScopedRefptrButGetsRawPtr<P1>::value, 147 !internal::NeedsScopedRefptrButGetsRawPtr<P1>::value,
153 p1_is_refcounted_type_and_needs_scoped_refptr); 148 p1_is_refcounted_type_and_needs_scoped_refptr);
154 COMPILE_ASSERT(!internal::HasIsMethodTag<RunnableType>::value || 149 COMPILE_ASSERT(!internal::HasIsMethodTag<RunnableType>::value ||
155 !is_array<P1>::value, 150 !is_array<P1>::value,
156 first_bound_argument_to_method_cannot_be_array); 151 first_bound_argument_to_method_cannot_be_array);
157 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P2>::value, 152 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P2>::value,
158 p2_is_refcounted_type_and_needs_scoped_refptr); 153 p2_is_refcounted_type_and_needs_scoped_refptr);
159 typedef internal::BindState<RunnableType, RunType,
160 void(typename internal::CallbackParamTraits<P1>::StorageType,
161 typename internal::CallbackParamTraits<P2>::StorageType)> BindState;
162 154
163 155 return internal::MakeBindStateHolder(
164 return Callback<typename BindState::UnboundRunType>( 156 new internal::BindState<RunnableType, RunType,
165 new BindState(internal::MakeRunnable(functor), p1, p2)); 157 void(typename internal::CallbackParamTraits<P1>::StorageType,
158 typename internal::CallbackParamTraits<P2>::StorageType)>(
159 internal::MakeRunnable(functor), p1, p2));
166 } 160 }
167 161
168 template <typename Functor, typename P1, typename P2, typename P3> 162 template <typename Functor, typename P1, typename P2, typename P3>
169 base::Callback< 163 internal::BindStateHolder<
170 typename internal::BindState< 164 internal::BindState<
171 typename internal::FunctorTraits<Functor>::RunnableType, 165 typename internal::FunctorTraits<Functor>::RunnableType,
172 typename internal::FunctorTraits<Functor>::RunType, 166 typename internal::FunctorTraits<Functor>::RunType,
173 void(typename internal::CallbackParamTraits<P1>::StorageType, 167 void(typename internal::CallbackParamTraits<P1>::StorageType,
174 typename internal::CallbackParamTraits<P2>::StorageType, 168 typename internal::CallbackParamTraits<P2>::StorageType,
175 typename internal::CallbackParamTraits<P3>::StorageType)> 169 typename internal::CallbackParamTraits<P3>::StorageType)> >
176 ::UnboundRunType>
177 Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3) { 170 Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3) {
178 // Typedefs for how to store and run the functor. 171 // Typedefs for how to store and run the functor.
179 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType; 172 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType;
180 typedef typename internal::FunctorTraits<Functor>::RunType RunType; 173 typedef typename internal::FunctorTraits<Functor>::RunType RunType;
181 174
182 // Use RunnableType::RunType instead of RunType above because our 175 // Use RunnableType::RunType instead of RunType above because our
183 // checks should below for bound references need to know what the actual 176 // checks should below for bound references need to know what the actual
184 // functor is going to interpret the argument as. 177 // functor is going to interpret the argument as.
185 typedef internal::FunctionTraits<typename RunnableType::RunType> 178 typedef internal::FunctionTraits<typename RunnableType::RunType>
186 BoundFunctorTraits; 179 BoundFunctorTraits;
(...skipping 17 matching lines...) Expand all
204 internal::HasIsMethodTag<RunnableType>::value || 197 internal::HasIsMethodTag<RunnableType>::value ||
205 !internal::NeedsScopedRefptrButGetsRawPtr<P1>::value, 198 !internal::NeedsScopedRefptrButGetsRawPtr<P1>::value,
206 p1_is_refcounted_type_and_needs_scoped_refptr); 199 p1_is_refcounted_type_and_needs_scoped_refptr);
207 COMPILE_ASSERT(!internal::HasIsMethodTag<RunnableType>::value || 200 COMPILE_ASSERT(!internal::HasIsMethodTag<RunnableType>::value ||
208 !is_array<P1>::value, 201 !is_array<P1>::value,
209 first_bound_argument_to_method_cannot_be_array); 202 first_bound_argument_to_method_cannot_be_array);
210 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P2>::value, 203 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P2>::value,
211 p2_is_refcounted_type_and_needs_scoped_refptr); 204 p2_is_refcounted_type_and_needs_scoped_refptr);
212 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P3>::value, 205 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P3>::value,
213 p3_is_refcounted_type_and_needs_scoped_refptr); 206 p3_is_refcounted_type_and_needs_scoped_refptr);
214 typedef internal::BindState<RunnableType, RunType,
215 void(typename internal::CallbackParamTraits<P1>::StorageType,
216 typename internal::CallbackParamTraits<P2>::StorageType,
217 typename internal::CallbackParamTraits<P3>::StorageType)> BindState;
218 207
219 208 return internal::MakeBindStateHolder(
220 return Callback<typename BindState::UnboundRunType>( 209 new internal::BindState<RunnableType, RunType,
221 new BindState(internal::MakeRunnable(functor), p1, p2, p3)); 210 void(typename internal::CallbackParamTraits<P1>::StorageType,
211 typename internal::CallbackParamTraits<P2>::StorageType,
212 typename internal::CallbackParamTraits<P3>::StorageType)>(
213 internal::MakeRunnable(functor), p1, p2, p3));
222 } 214 }
223 215
224 template <typename Functor, typename P1, typename P2, typename P3, typename P4> 216 template <typename Functor, typename P1, typename P2, typename P3, typename P4>
225 base::Callback< 217 internal::BindStateHolder<
226 typename internal::BindState< 218 internal::BindState<
227 typename internal::FunctorTraits<Functor>::RunnableType, 219 typename internal::FunctorTraits<Functor>::RunnableType,
228 typename internal::FunctorTraits<Functor>::RunType, 220 typename internal::FunctorTraits<Functor>::RunType,
229 void(typename internal::CallbackParamTraits<P1>::StorageType, 221 void(typename internal::CallbackParamTraits<P1>::StorageType,
230 typename internal::CallbackParamTraits<P2>::StorageType, 222 typename internal::CallbackParamTraits<P2>::StorageType,
231 typename internal::CallbackParamTraits<P3>::StorageType, 223 typename internal::CallbackParamTraits<P3>::StorageType,
232 typename internal::CallbackParamTraits<P4>::StorageType)> 224 typename internal::CallbackParamTraits<P4>::StorageType)> >
233 ::UnboundRunType>
234 Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 225 Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
235 // Typedefs for how to store and run the functor. 226 // Typedefs for how to store and run the functor.
236 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType; 227 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType;
237 typedef typename internal::FunctorTraits<Functor>::RunType RunType; 228 typedef typename internal::FunctorTraits<Functor>::RunType RunType;
238 229
239 // Use RunnableType::RunType instead of RunType above because our 230 // Use RunnableType::RunType instead of RunType above because our
240 // checks should below for bound references need to know what the actual 231 // checks should below for bound references need to know what the actual
241 // functor is going to interpret the argument as. 232 // functor is going to interpret the argument as.
242 typedef internal::FunctionTraits<typename RunnableType::RunType> 233 typedef internal::FunctionTraits<typename RunnableType::RunType>
243 BoundFunctorTraits; 234 BoundFunctorTraits;
(...skipping 20 matching lines...) Expand all
264 p1_is_refcounted_type_and_needs_scoped_refptr); 255 p1_is_refcounted_type_and_needs_scoped_refptr);
265 COMPILE_ASSERT(!internal::HasIsMethodTag<RunnableType>::value || 256 COMPILE_ASSERT(!internal::HasIsMethodTag<RunnableType>::value ||
266 !is_array<P1>::value, 257 !is_array<P1>::value,
267 first_bound_argument_to_method_cannot_be_array); 258 first_bound_argument_to_method_cannot_be_array);
268 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P2>::value, 259 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P2>::value,
269 p2_is_refcounted_type_and_needs_scoped_refptr); 260 p2_is_refcounted_type_and_needs_scoped_refptr);
270 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P3>::value, 261 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P3>::value,
271 p3_is_refcounted_type_and_needs_scoped_refptr); 262 p3_is_refcounted_type_and_needs_scoped_refptr);
272 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P4>::value, 263 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P4>::value,
273 p4_is_refcounted_type_and_needs_scoped_refptr); 264 p4_is_refcounted_type_and_needs_scoped_refptr);
274 typedef internal::BindState<RunnableType, RunType,
275 void(typename internal::CallbackParamTraits<P1>::StorageType,
276 typename internal::CallbackParamTraits<P2>::StorageType,
277 typename internal::CallbackParamTraits<P3>::StorageType,
278 typename internal::CallbackParamTraits<P4>::StorageType)> BindState;
279 265
280 266 return internal::MakeBindStateHolder(
281 return Callback<typename BindState::UnboundRunType>( 267 new internal::BindState<RunnableType, RunType,
282 new BindState(internal::MakeRunnable(functor), p1, p2, p3, p4)); 268 void(typename internal::CallbackParamTraits<P1>::StorageType,
269 typename internal::CallbackParamTraits<P2>::StorageType,
270 typename internal::CallbackParamTraits<P3>::StorageType,
271 typename internal::CallbackParamTraits<P4>::StorageType)>(
272 internal::MakeRunnable(functor), p1, p2, p3, p4));
283 } 273 }
284 274
285 template <typename Functor, typename P1, typename P2, typename P3, typename P4, 275 template <typename Functor, typename P1, typename P2, typename P3, typename P4,
286 typename P5> 276 typename P5>
287 base::Callback< 277 internal::BindStateHolder<
288 typename internal::BindState< 278 internal::BindState<
289 typename internal::FunctorTraits<Functor>::RunnableType, 279 typename internal::FunctorTraits<Functor>::RunnableType,
290 typename internal::FunctorTraits<Functor>::RunType, 280 typename internal::FunctorTraits<Functor>::RunType,
291 void(typename internal::CallbackParamTraits<P1>::StorageType, 281 void(typename internal::CallbackParamTraits<P1>::StorageType,
292 typename internal::CallbackParamTraits<P2>::StorageType, 282 typename internal::CallbackParamTraits<P2>::StorageType,
293 typename internal::CallbackParamTraits<P3>::StorageType, 283 typename internal::CallbackParamTraits<P3>::StorageType,
294 typename internal::CallbackParamTraits<P4>::StorageType, 284 typename internal::CallbackParamTraits<P4>::StorageType,
295 typename internal::CallbackParamTraits<P5>::StorageType)> 285 typename internal::CallbackParamTraits<P5>::StorageType)> >
296 ::UnboundRunType>
297 Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4, 286 Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4,
298 const P5& p5) { 287 const P5& p5) {
299 // Typedefs for how to store and run the functor. 288 // Typedefs for how to store and run the functor.
300 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType; 289 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType;
301 typedef typename internal::FunctorTraits<Functor>::RunType RunType; 290 typedef typename internal::FunctorTraits<Functor>::RunType RunType;
302 291
303 // Use RunnableType::RunType instead of RunType above because our 292 // Use RunnableType::RunType instead of RunType above because our
304 // checks should below for bound references need to know what the actual 293 // checks should below for bound references need to know what the actual
305 // functor is going to interpret the argument as. 294 // functor is going to interpret the argument as.
306 typedef internal::FunctionTraits<typename RunnableType::RunType> 295 typedef internal::FunctionTraits<typename RunnableType::RunType>
(...skipping 24 matching lines...) Expand all
331 !is_array<P1>::value, 320 !is_array<P1>::value,
332 first_bound_argument_to_method_cannot_be_array); 321 first_bound_argument_to_method_cannot_be_array);
333 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P2>::value, 322 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P2>::value,
334 p2_is_refcounted_type_and_needs_scoped_refptr); 323 p2_is_refcounted_type_and_needs_scoped_refptr);
335 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P3>::value, 324 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P3>::value,
336 p3_is_refcounted_type_and_needs_scoped_refptr); 325 p3_is_refcounted_type_and_needs_scoped_refptr);
337 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P4>::value, 326 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P4>::value,
338 p4_is_refcounted_type_and_needs_scoped_refptr); 327 p4_is_refcounted_type_and_needs_scoped_refptr);
339 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P5>::value, 328 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P5>::value,
340 p5_is_refcounted_type_and_needs_scoped_refptr); 329 p5_is_refcounted_type_and_needs_scoped_refptr);
341 typedef internal::BindState<RunnableType, RunType,
342 void(typename internal::CallbackParamTraits<P1>::StorageType,
343 typename internal::CallbackParamTraits<P2>::StorageType,
344 typename internal::CallbackParamTraits<P3>::StorageType,
345 typename internal::CallbackParamTraits<P4>::StorageType,
346 typename internal::CallbackParamTraits<P5>::StorageType)> BindState;
347 330
348 331 return internal::MakeBindStateHolder(
349 return Callback<typename BindState::UnboundRunType>( 332 new internal::BindState<RunnableType, RunType,
350 new BindState(internal::MakeRunnable(functor), p1, p2, p3, p4, p5)); 333 void(typename internal::CallbackParamTraits<P1>::StorageType,
334 typename internal::CallbackParamTraits<P2>::StorageType,
335 typename internal::CallbackParamTraits<P3>::StorageType,
336 typename internal::CallbackParamTraits<P4>::StorageType,
337 typename internal::CallbackParamTraits<P5>::StorageType)>(
338 internal::MakeRunnable(functor), p1, p2, p3, p4, p5));
351 } 339 }
352 340
353 template <typename Functor, typename P1, typename P2, typename P3, typename P4, 341 template <typename Functor, typename P1, typename P2, typename P3, typename P4,
354 typename P5, typename P6> 342 typename P5, typename P6>
355 base::Callback< 343 internal::BindStateHolder<
356 typename internal::BindState< 344 internal::BindState<
357 typename internal::FunctorTraits<Functor>::RunnableType, 345 typename internal::FunctorTraits<Functor>::RunnableType,
358 typename internal::FunctorTraits<Functor>::RunType, 346 typename internal::FunctorTraits<Functor>::RunType,
359 void(typename internal::CallbackParamTraits<P1>::StorageType, 347 void(typename internal::CallbackParamTraits<P1>::StorageType,
360 typename internal::CallbackParamTraits<P2>::StorageType, 348 typename internal::CallbackParamTraits<P2>::StorageType,
361 typename internal::CallbackParamTraits<P3>::StorageType, 349 typename internal::CallbackParamTraits<P3>::StorageType,
362 typename internal::CallbackParamTraits<P4>::StorageType, 350 typename internal::CallbackParamTraits<P4>::StorageType,
363 typename internal::CallbackParamTraits<P5>::StorageType, 351 typename internal::CallbackParamTraits<P5>::StorageType,
364 typename internal::CallbackParamTraits<P6>::StorageType)> 352 typename internal::CallbackParamTraits<P6>::StorageType)> >
365 ::UnboundRunType>
366 Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4, 353 Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4,
367 const P5& p5, const P6& p6) { 354 const P5& p5, const P6& p6) {
368 // Typedefs for how to store and run the functor. 355 // Typedefs for how to store and run the functor.
369 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType; 356 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType;
370 typedef typename internal::FunctorTraits<Functor>::RunType RunType; 357 typedef typename internal::FunctorTraits<Functor>::RunType RunType;
371 358
372 // Use RunnableType::RunType instead of RunType above because our 359 // Use RunnableType::RunType instead of RunType above because our
373 // checks should below for bound references need to know what the actual 360 // checks should below for bound references need to know what the actual
374 // functor is going to interpret the argument as. 361 // functor is going to interpret the argument as.
375 typedef internal::FunctionTraits<typename RunnableType::RunType> 362 typedef internal::FunctionTraits<typename RunnableType::RunType>
(...skipping 27 matching lines...) Expand all
403 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P2>::value, 390 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P2>::value,
404 p2_is_refcounted_type_and_needs_scoped_refptr); 391 p2_is_refcounted_type_and_needs_scoped_refptr);
405 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P3>::value, 392 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P3>::value,
406 p3_is_refcounted_type_and_needs_scoped_refptr); 393 p3_is_refcounted_type_and_needs_scoped_refptr);
407 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P4>::value, 394 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P4>::value,
408 p4_is_refcounted_type_and_needs_scoped_refptr); 395 p4_is_refcounted_type_and_needs_scoped_refptr);
409 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P5>::value, 396 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P5>::value,
410 p5_is_refcounted_type_and_needs_scoped_refptr); 397 p5_is_refcounted_type_and_needs_scoped_refptr);
411 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P6>::value, 398 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P6>::value,
412 p6_is_refcounted_type_and_needs_scoped_refptr); 399 p6_is_refcounted_type_and_needs_scoped_refptr);
413 typedef internal::BindState<RunnableType, RunType,
414 void(typename internal::CallbackParamTraits<P1>::StorageType,
415 typename internal::CallbackParamTraits<P2>::StorageType,
416 typename internal::CallbackParamTraits<P3>::StorageType,
417 typename internal::CallbackParamTraits<P4>::StorageType,
418 typename internal::CallbackParamTraits<P5>::StorageType,
419 typename internal::CallbackParamTraits<P6>::StorageType)> BindState;
420 400
421 401 return internal::MakeBindStateHolder(
422 return Callback<typename BindState::UnboundRunType>( 402 new internal::BindState<RunnableType, RunType,
423 new BindState(internal::MakeRunnable(functor), p1, p2, p3, p4, p5, p6)); 403 void(typename internal::CallbackParamTraits<P1>::StorageType,
404 typename internal::CallbackParamTraits<P2>::StorageType,
405 typename internal::CallbackParamTraits<P3>::StorageType,
406 typename internal::CallbackParamTraits<P4>::StorageType,
407 typename internal::CallbackParamTraits<P5>::StorageType,
408 typename internal::CallbackParamTraits<P6>::StorageType)>(
409 internal::MakeRunnable(functor), p1, p2, p3, p4, p5, p6));
424 } 410 }
425 411
426 template <typename Functor, typename P1, typename P2, typename P3, typename P4, 412 template <typename Functor, typename P1, typename P2, typename P3, typename P4,
427 typename P5, typename P6, typename P7> 413 typename P5, typename P6, typename P7>
428 base::Callback< 414 internal::BindStateHolder<
429 typename internal::BindState< 415 internal::BindState<
430 typename internal::FunctorTraits<Functor>::RunnableType, 416 typename internal::FunctorTraits<Functor>::RunnableType,
431 typename internal::FunctorTraits<Functor>::RunType, 417 typename internal::FunctorTraits<Functor>::RunType,
432 void(typename internal::CallbackParamTraits<P1>::StorageType, 418 void(typename internal::CallbackParamTraits<P1>::StorageType,
433 typename internal::CallbackParamTraits<P2>::StorageType, 419 typename internal::CallbackParamTraits<P2>::StorageType,
434 typename internal::CallbackParamTraits<P3>::StorageType, 420 typename internal::CallbackParamTraits<P3>::StorageType,
435 typename internal::CallbackParamTraits<P4>::StorageType, 421 typename internal::CallbackParamTraits<P4>::StorageType,
436 typename internal::CallbackParamTraits<P5>::StorageType, 422 typename internal::CallbackParamTraits<P5>::StorageType,
437 typename internal::CallbackParamTraits<P6>::StorageType, 423 typename internal::CallbackParamTraits<P6>::StorageType,
438 typename internal::CallbackParamTraits<P7>::StorageType)> 424 typename internal::CallbackParamTraits<P7>::StorageType)> >
439 ::UnboundRunType>
440 Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4, 425 Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4,
441 const P5& p5, const P6& p6, const P7& p7) { 426 const P5& p5, const P6& p6, const P7& p7) {
442 // Typedefs for how to store and run the functor. 427 // Typedefs for how to store and run the functor.
443 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType; 428 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType;
444 typedef typename internal::FunctorTraits<Functor>::RunType RunType; 429 typedef typename internal::FunctorTraits<Functor>::RunType RunType;
445 430
446 // Use RunnableType::RunType instead of RunType above because our 431 // Use RunnableType::RunType instead of RunType above because our
447 // checks should below for bound references need to know what the actual 432 // checks should below for bound references need to know what the actual
448 // functor is going to interpret the argument as. 433 // functor is going to interpret the argument as.
449 typedef internal::FunctionTraits<typename RunnableType::RunType> 434 typedef internal::FunctionTraits<typename RunnableType::RunType>
(...skipping 30 matching lines...) Expand all
480 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P3>::value, 465 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P3>::value,
481 p3_is_refcounted_type_and_needs_scoped_refptr); 466 p3_is_refcounted_type_and_needs_scoped_refptr);
482 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P4>::value, 467 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P4>::value,
483 p4_is_refcounted_type_and_needs_scoped_refptr); 468 p4_is_refcounted_type_and_needs_scoped_refptr);
484 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P5>::value, 469 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P5>::value,
485 p5_is_refcounted_type_and_needs_scoped_refptr); 470 p5_is_refcounted_type_and_needs_scoped_refptr);
486 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P6>::value, 471 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P6>::value,
487 p6_is_refcounted_type_and_needs_scoped_refptr); 472 p6_is_refcounted_type_and_needs_scoped_refptr);
488 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P7>::value, 473 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P7>::value,
489 p7_is_refcounted_type_and_needs_scoped_refptr); 474 p7_is_refcounted_type_and_needs_scoped_refptr);
490 typedef internal::BindState<RunnableType, RunType,
491 void(typename internal::CallbackParamTraits<P1>::StorageType,
492 typename internal::CallbackParamTraits<P2>::StorageType,
493 typename internal::CallbackParamTraits<P3>::StorageType,
494 typename internal::CallbackParamTraits<P4>::StorageType,
495 typename internal::CallbackParamTraits<P5>::StorageType,
496 typename internal::CallbackParamTraits<P6>::StorageType,
497 typename internal::CallbackParamTraits<P7>::StorageType)> BindState;
498 475
499 476 return internal::MakeBindStateHolder(
500 return Callback<typename BindState::UnboundRunType>( 477 new internal::BindState<RunnableType, RunType,
501 new BindState(internal::MakeRunnable(functor), p1, p2, p3, p4, p5, p6, 478 void(typename internal::CallbackParamTraits<P1>::StorageType,
502 p7)); 479 typename internal::CallbackParamTraits<P2>::StorageType,
480 typename internal::CallbackParamTraits<P3>::StorageType,
481 typename internal::CallbackParamTraits<P4>::StorageType,
482 typename internal::CallbackParamTraits<P5>::StorageType,
483 typename internal::CallbackParamTraits<P6>::StorageType,
484 typename internal::CallbackParamTraits<P7>::StorageType)>(
485 internal::MakeRunnable(functor), p1, p2, p3, p4, p5, p6, p7));
503 } 486 }
504 487
505 } // namespace base 488 } // namespace base
506 489
507 #endif // BASE_BIND_H_ 490 #endif // BASE_BIND_H_
OLDNEW
« no previous file with comments | « no previous file | base/bind.h.pump » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698