| OLD | NEW | 
|---|
| 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 2012 The WebRTC Project Authors. All rights reserved. | 6  *  Copyright 2012 The WebRTC Project Authors. All rights reserved. | 
| 7  * | 7  * | 
| 8  *  Use of this source code is governed by a BSD-style license | 8  *  Use of this source code is governed by a BSD-style license | 
| 9  *  that can be found in the LICENSE file in the root of the source | 9  *  that can be found in the LICENSE file in the root of the source | 
| 10  *  tree. An additional intellectual property rights grant can be found | 10  *  tree. An additional intellectual property rights grant can be found | 
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 121 | 121 | 
| 122 // PointerType<T>::type will be scoped_refptr<T> for ref counted types, and T* | 122 // PointerType<T>::type will be scoped_refptr<T> for ref counted types, and T* | 
| 123 // otherwise. | 123 // otherwise. | 
| 124 template <class T> | 124 template <class T> | 
| 125 struct PointerType { | 125 struct PointerType { | 
| 126   typedef typename TernaryTypeOperator<IsRefCounted<T>::value, | 126   typedef typename TernaryTypeOperator<IsRefCounted<T>::value, | 
| 127                                        scoped_refptr<T>, | 127                                        scoped_refptr<T>, | 
| 128                                        T*>::type type; | 128                                        T*>::type type; | 
| 129 }; | 129 }; | 
| 130 | 130 | 
|  | 131 // RemoveScopedPtrRef will capture scoped_refptr by-value instead of | 
|  | 132 // by-reference. | 
|  | 133 template <class T> struct RemoveScopedPtrRef { typedef T type; }; | 
|  | 134 template <class T> | 
|  | 135 struct RemoveScopedPtrRef<const scoped_refptr<T>&> { | 
|  | 136   typedef scoped_refptr<T> type; | 
|  | 137 }; | 
|  | 138 template <class T> | 
|  | 139 struct RemoveScopedPtrRef<scoped_refptr<T>&> { | 
|  | 140   typedef scoped_refptr<T> type; | 
|  | 141 }; | 
|  | 142 | 
| 131 }  // namespace detail | 143 }  // namespace detail | 
| 132 | 144 | 
| 133 template <class ObjectT, class MethodT, class R> | 145 template <class ObjectT, class MethodT, class R> | 
| 134 class MethodFunctor0 { | 146 class MethodFunctor0 { | 
| 135  public: | 147  public: | 
| 136   MethodFunctor0(MethodT method, ObjectT* object) | 148   MethodFunctor0(MethodT method, ObjectT* object) | 
| 137       : method_(method), object_(object) {} | 149       : method_(method), object_(object) {} | 
| 138   R operator()() const { | 150   R operator()() const { | 
| 139     return (object_->*method_)(); } | 151     return (object_->*method_)(); } | 
| 140  private: | 152  private: | 
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 201  public: | 213  public: | 
| 202   MethodFunctor1(MethodT method, ObjectT* object, | 214   MethodFunctor1(MethodT method, ObjectT* object, | 
| 203                  P1 p1) | 215                  P1 p1) | 
| 204       : method_(method), object_(object), | 216       : method_(method), object_(object), | 
| 205       p1_(p1) {} | 217       p1_(p1) {} | 
| 206   R operator()() const { | 218   R operator()() const { | 
| 207     return (object_->*method_)(p1_); } | 219     return (object_->*method_)(p1_); } | 
| 208  private: | 220  private: | 
| 209   MethodT method_; | 221   MethodT method_; | 
| 210   typename detail::PointerType<ObjectT>::type object_; | 222   typename detail::PointerType<ObjectT>::type object_; | 
| 211   P1 p1_; | 223   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 212 }; | 224 }; | 
| 213 | 225 | 
| 214 template <class FunctorT, class R, | 226 template <class FunctorT, class R, | 
| 215           class P1> | 227           class P1> | 
| 216 class Functor1 { | 228 class Functor1 { | 
| 217  public: | 229  public: | 
| 218   Functor1(const FunctorT& functor, P1 p1) | 230   Functor1(const FunctorT& functor, P1 p1) | 
| 219       : functor_(functor), | 231       : functor_(functor), | 
| 220       p1_(p1) {} | 232       p1_(p1) {} | 
| 221   R operator()() const { | 233   R operator()() const { | 
| 222     return functor_(p1_); } | 234     return functor_(p1_); } | 
| 223  private: | 235  private: | 
| 224   FunctorT functor_; | 236   FunctorT functor_; | 
| 225   P1 p1_; | 237   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 226 }; | 238 }; | 
| 227 | 239 | 
| 228 | 240 | 
| 229 #define FP_T(x) R (ObjectT::*x)(P1) | 241 #define FP_T(x) R (ObjectT::*x)(P1) | 
| 230 | 242 | 
| 231 template <class ObjectT, class R, | 243 template <class ObjectT, class R, | 
| 232           class P1> | 244           class P1> | 
| 233 MethodFunctor1<ObjectT, FP_T(NONAME), R, P1> | 245 MethodFunctor1<ObjectT, FP_T(NONAME), R, P1> | 
| 234 Bind(FP_T(method), ObjectT* object, | 246 Bind(FP_T(method), ObjectT* object, | 
| 235      typename detail::identity<P1>::type p1) { | 247      typename detail::identity<P1>::type p1) { | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 284                  P1 p1, | 296                  P1 p1, | 
| 285                  P2 p2) | 297                  P2 p2) | 
| 286       : method_(method), object_(object), | 298       : method_(method), object_(object), | 
| 287       p1_(p1), | 299       p1_(p1), | 
| 288       p2_(p2) {} | 300       p2_(p2) {} | 
| 289   R operator()() const { | 301   R operator()() const { | 
| 290     return (object_->*method_)(p1_, p2_); } | 302     return (object_->*method_)(p1_, p2_); } | 
| 291  private: | 303  private: | 
| 292   MethodT method_; | 304   MethodT method_; | 
| 293   typename detail::PointerType<ObjectT>::type object_; | 305   typename detail::PointerType<ObjectT>::type object_; | 
| 294   P1 p1_; | 306   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 295   P2 p2_; | 307   typename detail::RemoveScopedPtrRef<P2>::type p2_; | 
| 296 }; | 308 }; | 
| 297 | 309 | 
| 298 template <class FunctorT, class R, | 310 template <class FunctorT, class R, | 
| 299           class P1, | 311           class P1, | 
| 300           class P2> | 312           class P2> | 
| 301 class Functor2 { | 313 class Functor2 { | 
| 302  public: | 314  public: | 
| 303   Functor2(const FunctorT& functor, P1 p1, P2 p2) | 315   Functor2(const FunctorT& functor, P1 p1, P2 p2) | 
| 304       : functor_(functor), | 316       : functor_(functor), | 
| 305       p1_(p1), | 317       p1_(p1), | 
| 306       p2_(p2) {} | 318       p2_(p2) {} | 
| 307   R operator()() const { | 319   R operator()() const { | 
| 308     return functor_(p1_, p2_); } | 320     return functor_(p1_, p2_); } | 
| 309  private: | 321  private: | 
| 310   FunctorT functor_; | 322   FunctorT functor_; | 
| 311   P1 p1_; | 323   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 312   P2 p2_; | 324   typename detail::RemoveScopedPtrRef<P2>::type p2_; | 
| 313 }; | 325 }; | 
| 314 | 326 | 
| 315 | 327 | 
| 316 #define FP_T(x) R (ObjectT::*x)(P1, P2) | 328 #define FP_T(x) R (ObjectT::*x)(P1, P2) | 
| 317 | 329 | 
| 318 template <class ObjectT, class R, | 330 template <class ObjectT, class R, | 
| 319           class P1, | 331           class P1, | 
| 320           class P2> | 332           class P2> | 
| 321 MethodFunctor2<ObjectT, FP_T(NONAME), R, P1, P2> | 333 MethodFunctor2<ObjectT, FP_T(NONAME), R, P1, P2> | 
| 322 Bind(FP_T(method), ObjectT* object, | 334 Bind(FP_T(method), ObjectT* object, | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 382                  P3 p3) | 394                  P3 p3) | 
| 383       : method_(method), object_(object), | 395       : method_(method), object_(object), | 
| 384       p1_(p1), | 396       p1_(p1), | 
| 385       p2_(p2), | 397       p2_(p2), | 
| 386       p3_(p3) {} | 398       p3_(p3) {} | 
| 387   R operator()() const { | 399   R operator()() const { | 
| 388     return (object_->*method_)(p1_, p2_, p3_); } | 400     return (object_->*method_)(p1_, p2_, p3_); } | 
| 389  private: | 401  private: | 
| 390   MethodT method_; | 402   MethodT method_; | 
| 391   typename detail::PointerType<ObjectT>::type object_; | 403   typename detail::PointerType<ObjectT>::type object_; | 
| 392   P1 p1_; | 404   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 393   P2 p2_; | 405   typename detail::RemoveScopedPtrRef<P2>::type p2_; | 
| 394   P3 p3_; | 406   typename detail::RemoveScopedPtrRef<P3>::type p3_; | 
| 395 }; | 407 }; | 
| 396 | 408 | 
| 397 template <class FunctorT, class R, | 409 template <class FunctorT, class R, | 
| 398           class P1, | 410           class P1, | 
| 399           class P2, | 411           class P2, | 
| 400           class P3> | 412           class P3> | 
| 401 class Functor3 { | 413 class Functor3 { | 
| 402  public: | 414  public: | 
| 403   Functor3(const FunctorT& functor, P1 p1, P2 p2, P3 p3) | 415   Functor3(const FunctorT& functor, P1 p1, P2 p2, P3 p3) | 
| 404       : functor_(functor), | 416       : functor_(functor), | 
| 405       p1_(p1), | 417       p1_(p1), | 
| 406       p2_(p2), | 418       p2_(p2), | 
| 407       p3_(p3) {} | 419       p3_(p3) {} | 
| 408   R operator()() const { | 420   R operator()() const { | 
| 409     return functor_(p1_, p2_, p3_); } | 421     return functor_(p1_, p2_, p3_); } | 
| 410  private: | 422  private: | 
| 411   FunctorT functor_; | 423   FunctorT functor_; | 
| 412   P1 p1_; | 424   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 413   P2 p2_; | 425   typename detail::RemoveScopedPtrRef<P2>::type p2_; | 
| 414   P3 p3_; | 426   typename detail::RemoveScopedPtrRef<P3>::type p3_; | 
| 415 }; | 427 }; | 
| 416 | 428 | 
| 417 | 429 | 
| 418 #define FP_T(x) R (ObjectT::*x)(P1, P2, P3) | 430 #define FP_T(x) R (ObjectT::*x)(P1, P2, P3) | 
| 419 | 431 | 
| 420 template <class ObjectT, class R, | 432 template <class ObjectT, class R, | 
| 421           class P1, | 433           class P1, | 
| 422           class P2, | 434           class P2, | 
| 423           class P3> | 435           class P3> | 
| 424 MethodFunctor3<ObjectT, FP_T(NONAME), R, P1, P2, P3> | 436 MethodFunctor3<ObjectT, FP_T(NONAME), R, P1, P2, P3> | 
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 495       : method_(method), object_(object), | 507       : method_(method), object_(object), | 
| 496       p1_(p1), | 508       p1_(p1), | 
| 497       p2_(p2), | 509       p2_(p2), | 
| 498       p3_(p3), | 510       p3_(p3), | 
| 499       p4_(p4) {} | 511       p4_(p4) {} | 
| 500   R operator()() const { | 512   R operator()() const { | 
| 501     return (object_->*method_)(p1_, p2_, p3_, p4_); } | 513     return (object_->*method_)(p1_, p2_, p3_, p4_); } | 
| 502  private: | 514  private: | 
| 503   MethodT method_; | 515   MethodT method_; | 
| 504   typename detail::PointerType<ObjectT>::type object_; | 516   typename detail::PointerType<ObjectT>::type object_; | 
| 505   P1 p1_; | 517   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 506   P2 p2_; | 518   typename detail::RemoveScopedPtrRef<P2>::type p2_; | 
| 507   P3 p3_; | 519   typename detail::RemoveScopedPtrRef<P3>::type p3_; | 
| 508   P4 p4_; | 520   typename detail::RemoveScopedPtrRef<P4>::type p4_; | 
| 509 }; | 521 }; | 
| 510 | 522 | 
| 511 template <class FunctorT, class R, | 523 template <class FunctorT, class R, | 
| 512           class P1, | 524           class P1, | 
| 513           class P2, | 525           class P2, | 
| 514           class P3, | 526           class P3, | 
| 515           class P4> | 527           class P4> | 
| 516 class Functor4 { | 528 class Functor4 { | 
| 517  public: | 529  public: | 
| 518   Functor4(const FunctorT& functor, P1 p1, P2 p2, P3 p3, P4 p4) | 530   Functor4(const FunctorT& functor, P1 p1, P2 p2, P3 p3, P4 p4) | 
| 519       : functor_(functor), | 531       : functor_(functor), | 
| 520       p1_(p1), | 532       p1_(p1), | 
| 521       p2_(p2), | 533       p2_(p2), | 
| 522       p3_(p3), | 534       p3_(p3), | 
| 523       p4_(p4) {} | 535       p4_(p4) {} | 
| 524   R operator()() const { | 536   R operator()() const { | 
| 525     return functor_(p1_, p2_, p3_, p4_); } | 537     return functor_(p1_, p2_, p3_, p4_); } | 
| 526  private: | 538  private: | 
| 527   FunctorT functor_; | 539   FunctorT functor_; | 
| 528   P1 p1_; | 540   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 529   P2 p2_; | 541   typename detail::RemoveScopedPtrRef<P2>::type p2_; | 
| 530   P3 p3_; | 542   typename detail::RemoveScopedPtrRef<P3>::type p3_; | 
| 531   P4 p4_; | 543   typename detail::RemoveScopedPtrRef<P4>::type p4_; | 
| 532 }; | 544 }; | 
| 533 | 545 | 
| 534 | 546 | 
| 535 #define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4) | 547 #define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4) | 
| 536 | 548 | 
| 537 template <class ObjectT, class R, | 549 template <class ObjectT, class R, | 
| 538           class P1, | 550           class P1, | 
| 539           class P2, | 551           class P2, | 
| 540           class P3, | 552           class P3, | 
| 541           class P4> | 553           class P4> | 
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 623       p1_(p1), | 635       p1_(p1), | 
| 624       p2_(p2), | 636       p2_(p2), | 
| 625       p3_(p3), | 637       p3_(p3), | 
| 626       p4_(p4), | 638       p4_(p4), | 
| 627       p5_(p5) {} | 639       p5_(p5) {} | 
| 628   R operator()() const { | 640   R operator()() const { | 
| 629     return (object_->*method_)(p1_, p2_, p3_, p4_, p5_); } | 641     return (object_->*method_)(p1_, p2_, p3_, p4_, p5_); } | 
| 630  private: | 642  private: | 
| 631   MethodT method_; | 643   MethodT method_; | 
| 632   typename detail::PointerType<ObjectT>::type object_; | 644   typename detail::PointerType<ObjectT>::type object_; | 
| 633   P1 p1_; | 645   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 634   P2 p2_; | 646   typename detail::RemoveScopedPtrRef<P2>::type p2_; | 
| 635   P3 p3_; | 647   typename detail::RemoveScopedPtrRef<P3>::type p3_; | 
| 636   P4 p4_; | 648   typename detail::RemoveScopedPtrRef<P4>::type p4_; | 
| 637   P5 p5_; | 649   typename detail::RemoveScopedPtrRef<P5>::type p5_; | 
| 638 }; | 650 }; | 
| 639 | 651 | 
| 640 template <class FunctorT, class R, | 652 template <class FunctorT, class R, | 
| 641           class P1, | 653           class P1, | 
| 642           class P2, | 654           class P2, | 
| 643           class P3, | 655           class P3, | 
| 644           class P4, | 656           class P4, | 
| 645           class P5> | 657           class P5> | 
| 646 class Functor5 { | 658 class Functor5 { | 
| 647  public: | 659  public: | 
| 648   Functor5(const FunctorT& functor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) | 660   Functor5(const FunctorT& functor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) | 
| 649       : functor_(functor), | 661       : functor_(functor), | 
| 650       p1_(p1), | 662       p1_(p1), | 
| 651       p2_(p2), | 663       p2_(p2), | 
| 652       p3_(p3), | 664       p3_(p3), | 
| 653       p4_(p4), | 665       p4_(p4), | 
| 654       p5_(p5) {} | 666       p5_(p5) {} | 
| 655   R operator()() const { | 667   R operator()() const { | 
| 656     return functor_(p1_, p2_, p3_, p4_, p5_); } | 668     return functor_(p1_, p2_, p3_, p4_, p5_); } | 
| 657  private: | 669  private: | 
| 658   FunctorT functor_; | 670   FunctorT functor_; | 
| 659   P1 p1_; | 671   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 660   P2 p2_; | 672   typename detail::RemoveScopedPtrRef<P2>::type p2_; | 
| 661   P3 p3_; | 673   typename detail::RemoveScopedPtrRef<P3>::type p3_; | 
| 662   P4 p4_; | 674   typename detail::RemoveScopedPtrRef<P4>::type p4_; | 
| 663   P5 p5_; | 675   typename detail::RemoveScopedPtrRef<P5>::type p5_; | 
| 664 }; | 676 }; | 
| 665 | 677 | 
| 666 | 678 | 
| 667 #define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5) | 679 #define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5) | 
| 668 | 680 | 
| 669 template <class ObjectT, class R, | 681 template <class ObjectT, class R, | 
| 670           class P1, | 682           class P1, | 
| 671           class P2, | 683           class P2, | 
| 672           class P3, | 684           class P3, | 
| 673           class P4, | 685           class P4, | 
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 766       p2_(p2), | 778       p2_(p2), | 
| 767       p3_(p3), | 779       p3_(p3), | 
| 768       p4_(p4), | 780       p4_(p4), | 
| 769       p5_(p5), | 781       p5_(p5), | 
| 770       p6_(p6) {} | 782       p6_(p6) {} | 
| 771   R operator()() const { | 783   R operator()() const { | 
| 772     return (object_->*method_)(p1_, p2_, p3_, p4_, p5_, p6_); } | 784     return (object_->*method_)(p1_, p2_, p3_, p4_, p5_, p6_); } | 
| 773  private: | 785  private: | 
| 774   MethodT method_; | 786   MethodT method_; | 
| 775   typename detail::PointerType<ObjectT>::type object_; | 787   typename detail::PointerType<ObjectT>::type object_; | 
| 776   P1 p1_; | 788   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 777   P2 p2_; | 789   typename detail::RemoveScopedPtrRef<P2>::type p2_; | 
| 778   P3 p3_; | 790   typename detail::RemoveScopedPtrRef<P3>::type p3_; | 
| 779   P4 p4_; | 791   typename detail::RemoveScopedPtrRef<P4>::type p4_; | 
| 780   P5 p5_; | 792   typename detail::RemoveScopedPtrRef<P5>::type p5_; | 
| 781   P6 p6_; | 793   typename detail::RemoveScopedPtrRef<P6>::type p6_; | 
| 782 }; | 794 }; | 
| 783 | 795 | 
| 784 template <class FunctorT, class R, | 796 template <class FunctorT, class R, | 
| 785           class P1, | 797           class P1, | 
| 786           class P2, | 798           class P2, | 
| 787           class P3, | 799           class P3, | 
| 788           class P4, | 800           class P4, | 
| 789           class P5, | 801           class P5, | 
| 790           class P6> | 802           class P6> | 
| 791 class Functor6 { | 803 class Functor6 { | 
| 792  public: | 804  public: | 
| 793   Functor6(const FunctorT& functor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) | 805   Functor6(const FunctorT& functor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) | 
| 794       : functor_(functor), | 806       : functor_(functor), | 
| 795       p1_(p1), | 807       p1_(p1), | 
| 796       p2_(p2), | 808       p2_(p2), | 
| 797       p3_(p3), | 809       p3_(p3), | 
| 798       p4_(p4), | 810       p4_(p4), | 
| 799       p5_(p5), | 811       p5_(p5), | 
| 800       p6_(p6) {} | 812       p6_(p6) {} | 
| 801   R operator()() const { | 813   R operator()() const { | 
| 802     return functor_(p1_, p2_, p3_, p4_, p5_, p6_); } | 814     return functor_(p1_, p2_, p3_, p4_, p5_, p6_); } | 
| 803  private: | 815  private: | 
| 804   FunctorT functor_; | 816   FunctorT functor_; | 
| 805   P1 p1_; | 817   typename detail::RemoveScopedPtrRef<P1>::type p1_; | 
| 806   P2 p2_; | 818   typename detail::RemoveScopedPtrRef<P2>::type p2_; | 
| 807   P3 p3_; | 819   typename detail::RemoveScopedPtrRef<P3>::type p3_; | 
| 808   P4 p4_; | 820   typename detail::RemoveScopedPtrRef<P4>::type p4_; | 
| 809   P5 p5_; | 821   typename detail::RemoveScopedPtrRef<P5>::type p5_; | 
| 810   P6 p6_; | 822   typename detail::RemoveScopedPtrRef<P6>::type p6_; | 
| 811 }; | 823 }; | 
| 812 | 824 | 
| 813 | 825 | 
| 814 #define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6) | 826 #define FP_T(x) R (ObjectT::*x)(P1, P2, P3, P4, P5, P6) | 
| 815 | 827 | 
| 816 template <class ObjectT, class R, | 828 template <class ObjectT, class R, | 
| 817           class P1, | 829           class P1, | 
| 818           class P2, | 830           class P2, | 
| 819           class P3, | 831           class P3, | 
| 820           class P4, | 832           class P4, | 
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 898       function, p1, p2, p3, p4, p5, p6); | 910       function, p1, p2, p3, p4, p5, p6); | 
| 899 } | 911 } | 
| 900 | 912 | 
| 901 #undef FP_T | 913 #undef FP_T | 
| 902 | 914 | 
| 903 }  // namespace rtc | 915 }  // namespace rtc | 
| 904 | 916 | 
| 905 #undef NONAME | 917 #undef NONAME | 
| 906 | 918 | 
| 907 #endif  // WEBRTC_BASE_BIND_H_ | 919 #endif  // WEBRTC_BASE_BIND_H_ | 
| OLD | NEW | 
|---|