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

Side by Side Diff: base/bind.h

Issue 8728010: Increase Bind/Callback Arity from 6 -> 7. (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') | base/bind.h.pump » ('J')
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 6
7 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 7 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
8 // Use of this source code is governed by a BSD-style license that can be 8 // Use of this source code is governed by a BSD-style license that can be
9 // found in the LICENSE file. 9 // found in the LICENSE file.
10 10
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 new internal::BindState<RunnableType, RunType, 403 new internal::BindState<RunnableType, RunType,
404 void(typename internal::CallbackParamTraits<P1>::StorageType, 404 void(typename internal::CallbackParamTraits<P1>::StorageType,
405 typename internal::CallbackParamTraits<P2>::StorageType, 405 typename internal::CallbackParamTraits<P2>::StorageType,
406 typename internal::CallbackParamTraits<P3>::StorageType, 406 typename internal::CallbackParamTraits<P3>::StorageType,
407 typename internal::CallbackParamTraits<P4>::StorageType, 407 typename internal::CallbackParamTraits<P4>::StorageType,
408 typename internal::CallbackParamTraits<P5>::StorageType, 408 typename internal::CallbackParamTraits<P5>::StorageType,
409 typename internal::CallbackParamTraits<P6>::StorageType)>( 409 typename internal::CallbackParamTraits<P6>::StorageType)>(
410 internal::MakeRunnable(functor), p1, p2, p3, p4, p5, p6)); 410 internal::MakeRunnable(functor), p1, p2, p3, p4, p5, p6));
411 } 411 }
412 412
413 template <typename Functor, typename P1, typename P2, typename P3, typename P4,
414 typename P5, typename P6, typename P7>
415 internal::BindStateHolder<
416 internal::BindState<
417 typename internal::FunctorTraits<Functor>::RunnableType,
418 typename internal::FunctorTraits<Functor>::RunType,
419 void(typename internal::CallbackParamTraits<P1>::StorageType,
420 typename internal::CallbackParamTraits<P2>::StorageType,
421 typename internal::CallbackParamTraits<P3>::StorageType,
422 typename internal::CallbackParamTraits<P4>::StorageType,
423 typename internal::CallbackParamTraits<P5>::StorageType,
424 typename internal::CallbackParamTraits<P6>::StorageType,
425 typename internal::CallbackParamTraits<P7>::StorageType)> >
426 Bind(Functor functor, const P1& p1, const P2& p2, const P3& p3, const P4& p4,
427 const P5& p5, const P6& p6, const P7& p7) {
428 // Typedefs for how to store and run the functor.
429 typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType;
430 typedef typename internal::FunctorTraits<Functor>::RunType RunType;
431
432 // Use RunnableType::RunType instead of RunType above because our
433 // checks should below for bound references need to know what the actual
434 // functor is going to interpret the argument as.
435 typedef internal::FunctionTraits<typename RunnableType::RunType>
436 BoundFunctorTraits;
437
438 // Do not allow binding a non-const reference parameter. Non-const reference
439 // parameters are disallowed by the Google style guide. Also, binding a
440 // non-const reference parameter can make for subtle bugs because the
441 // invoked function will receive a reference to the stored copy of the
442 // argument and not the original.
443 COMPILE_ASSERT(
444 !(is_non_const_reference<typename BoundFunctorTraits::A1Type>::value ||
445 is_non_const_reference<typename BoundFunctorTraits::A2Type>::value ||
446 is_non_const_reference<typename BoundFunctorTraits::A3Type>::value ||
447 is_non_const_reference<typename BoundFunctorTraits::A4Type>::value ||
448 is_non_const_reference<typename BoundFunctorTraits::A5Type>::value ||
449 is_non_const_reference<typename BoundFunctorTraits::A6Type>::value ||
450 is_non_const_reference<typename BoundFunctorTraits::A7Type>::value ),
451 do_not_bind_functions_with_nonconst_ref);
452
453 // For methods, we need to be careful for parameter 1. We do not require
454 // a scoped_refptr because BindState<> itself takes care of AddRef() for
455 // methods. We also disallow binding of an array as the method's target
456 // object.
457 COMPILE_ASSERT(
458 internal::HasIsMethodTag<RunnableType>::value ||
459 !internal::NeedsScopedRefptrButGetsRawPtr<P1>::value,
460 p1_is_refcounted_type_and_needs_scoped_refptr);
461 COMPILE_ASSERT(!internal::HasIsMethodTag<RunnableType>::value ||
462 !is_array<P1>::value,
463 first_bound_argument_to_method_cannot_be_array);
464 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P2>::value,
465 p2_is_refcounted_type_and_needs_scoped_refptr);
466 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P3>::value,
467 p3_is_refcounted_type_and_needs_scoped_refptr);
468 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P4>::value,
469 p4_is_refcounted_type_and_needs_scoped_refptr);
470 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P5>::value,
471 p5_is_refcounted_type_and_needs_scoped_refptr);
472 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P6>::value,
473 p6_is_refcounted_type_and_needs_scoped_refptr);
474 COMPILE_ASSERT(!internal::NeedsScopedRefptrButGetsRawPtr<P7>::value,
475 p7_is_refcounted_type_and_needs_scoped_refptr);
476
477 return internal::MakeBindStateHolder(
478 new internal::BindState<RunnableType, RunType,
479 void(typename internal::CallbackParamTraits<P1>::StorageType,
480 typename internal::CallbackParamTraits<P2>::StorageType,
481 typename internal::CallbackParamTraits<P3>::StorageType,
482 typename internal::CallbackParamTraits<P4>::StorageType,
483 typename internal::CallbackParamTraits<P5>::StorageType,
484 typename internal::CallbackParamTraits<P6>::StorageType,
485 typename internal::CallbackParamTraits<P7>::StorageType)>(
486 internal::MakeRunnable(functor), p1, p2, p3, p4, p5, p6, p7));
487 }
488
413 } // namespace base 489 } // namespace base
414 490
415 #endif // BASE_BIND_H_ 491 #endif // BASE_BIND_H_
OLDNEW
« no previous file with comments | « no previous file | base/bind.h.pump » ('j') | base/bind.h.pump » ('J')

Powered by Google App Engine
This is Rietveld 408576698