Home | History | Annotate | Download | only in drive_backend
      1 // This file was GENERATED by command:
      2 //     pump.py callback_tracker_internal.h.pump
      3 // DO NOT EDIT BY HAND!!!
      4 
      5 
      6 // Copyright 2014 The Chromium Authors. All rights reserved.
      7 // Use of this source code is governed by a BSD-style license that can be
      8 // found in the LICENSE file.
      9 
     10 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_CALLBACK_TRACKER_INTERNAL_H_
     11 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_CALLBACK_TRACKER_INTERNAL_H_
     12 
     13 #include "base/callback.h"
     14 #include "base/callback_internal.h"
     15 #include "base/memory/scoped_ptr.h"
     16 #include "base/memory/weak_ptr.h"
     17 
     18 namespace sync_file_system {
     19 namespace drive_backend {
     20 
     21 class CallbackTracker;
     22 
     23 namespace internal {
     24 
     25 class AbortHelper {
     26  public:
     27   explicit AbortHelper(CallbackTracker* tracker);
     28   ~AbortHelper();
     29   base::WeakPtr<AbortHelper> AsWeakPtr();
     30 
     31   static scoped_ptr<AbortHelper> TakeOwnership(
     32       const base::WeakPtr<AbortHelper>& abort_helper);
     33 
     34  private:
     35   CallbackTracker* tracker_;  // Not owned.
     36   base::WeakPtrFactory<AbortHelper> weak_ptr_factory_;
     37 
     38   DISALLOW_COPY_AND_ASSIGN(AbortHelper);
     39 };
     40 
     41 template <typename>
     42 struct InvokeAndInvalidateHelper;
     43 
     44 template <>
     45 struct InvokeAndInvalidateHelper<void()> {
     46   static void Run(const base::WeakPtr<AbortHelper>& abort_helper,
     47                   const base::Callback<void()>& callback) {
     48     scoped_ptr<AbortHelper> deleter = AbortHelper::TakeOwnership(abort_helper);
     49     if (deleter) {
     50       callback.Run();
     51     }
     52   }
     53 };
     54 
     55 template <typename A1>
     56 struct InvokeAndInvalidateHelper<void(A1)> {
     57   static void Run(const base::WeakPtr<AbortHelper>& abort_helper,
     58                   const base::Callback<void(A1)>& callback, A1 a1) {
     59     scoped_ptr<AbortHelper> deleter = AbortHelper::TakeOwnership(abort_helper);
     60     if (deleter) {
     61       callback.Run(base::internal::CallbackForward(a1));
     62     }
     63   }
     64 };
     65 
     66 template <typename A1, typename A2>
     67 struct InvokeAndInvalidateHelper<void(A1, A2)> {
     68   static void Run(const base::WeakPtr<AbortHelper>& abort_helper,
     69                   const base::Callback<void(A1, A2)>& callback, A1 a1, A2 a2) {
     70     scoped_ptr<AbortHelper> deleter = AbortHelper::TakeOwnership(abort_helper);
     71     if (deleter) {
     72       callback.Run(base::internal::CallbackForward(a1),
     73           base::internal::CallbackForward(a2));
     74     }
     75   }
     76 };
     77 
     78 template <typename A1, typename A2, typename A3>
     79 struct InvokeAndInvalidateHelper<void(A1, A2, A3)> {
     80   static void Run(const base::WeakPtr<AbortHelper>& abort_helper,
     81                   const base::Callback<void(A1, A2, A3)>& callback, A1 a1,
     82                       A2 a2, A3 a3) {
     83     scoped_ptr<AbortHelper> deleter = AbortHelper::TakeOwnership(abort_helper);
     84     if (deleter) {
     85       callback.Run(base::internal::CallbackForward(a1),
     86           base::internal::CallbackForward(a2),
     87           base::internal::CallbackForward(a3));
     88     }
     89   }
     90 };
     91 
     92 template <typename A1, typename A2, typename A3, typename A4>
     93 struct InvokeAndInvalidateHelper<void(A1, A2, A3, A4)> {
     94   static void Run(const base::WeakPtr<AbortHelper>& abort_helper,
     95                   const base::Callback<void(A1, A2, A3, A4)>& callback, A1 a1,
     96                       A2 a2, A3 a3, A4 a4) {
     97     scoped_ptr<AbortHelper> deleter = AbortHelper::TakeOwnership(abort_helper);
     98     if (deleter) {
     99       callback.Run(base::internal::CallbackForward(a1),
    100           base::internal::CallbackForward(a2),
    101           base::internal::CallbackForward(a3),
    102           base::internal::CallbackForward(a4));
    103     }
    104   }
    105 };
    106 
    107 template <typename A1, typename A2, typename A3, typename A4, typename A5>
    108 struct InvokeAndInvalidateHelper<void(A1, A2, A3, A4, A5)> {
    109   static void Run(const base::WeakPtr<AbortHelper>& abort_helper,
    110                   const base::Callback<void(A1, A2, A3, A4, A5)>& callback,
    111                       A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) {
    112     scoped_ptr<AbortHelper> deleter = AbortHelper::TakeOwnership(abort_helper);
    113     if (deleter) {
    114       callback.Run(base::internal::CallbackForward(a1),
    115           base::internal::CallbackForward(a2),
    116           base::internal::CallbackForward(a3),
    117           base::internal::CallbackForward(a4),
    118           base::internal::CallbackForward(a5));
    119     }
    120   }
    121 };
    122 
    123 template <typename A1, typename A2, typename A3, typename A4, typename A5,
    124     typename A6>
    125 struct InvokeAndInvalidateHelper<void(A1, A2, A3, A4, A5, A6)> {
    126   static void Run(const base::WeakPtr<AbortHelper>& abort_helper,
    127                   const base::Callback<void(A1, A2, A3, A4, A5, A6)>& callback,
    128                       A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) {
    129     scoped_ptr<AbortHelper> deleter = AbortHelper::TakeOwnership(abort_helper);
    130     if (deleter) {
    131       callback.Run(base::internal::CallbackForward(a1),
    132           base::internal::CallbackForward(a2),
    133           base::internal::CallbackForward(a3),
    134           base::internal::CallbackForward(a4),
    135           base::internal::CallbackForward(a5),
    136           base::internal::CallbackForward(a6));
    137     }
    138   }
    139 };
    140 
    141 template <typename A1, typename A2, typename A3, typename A4, typename A5,
    142     typename A6, typename A7>
    143 struct InvokeAndInvalidateHelper<void(A1, A2, A3, A4, A5, A6, A7)> {
    144   static void Run(const base::WeakPtr<AbortHelper>& abort_helper,
    145                   const base::Callback<void(A1, A2, A3, A4, A5, A6,
    146                       A7)>& callback, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
    147                       A7 a7) {
    148     scoped_ptr<AbortHelper> deleter = AbortHelper::TakeOwnership(abort_helper);
    149     if (deleter) {
    150       callback.Run(base::internal::CallbackForward(a1),
    151           base::internal::CallbackForward(a2),
    152           base::internal::CallbackForward(a3),
    153           base::internal::CallbackForward(a4),
    154           base::internal::CallbackForward(a5),
    155           base::internal::CallbackForward(a6),
    156           base::internal::CallbackForward(a7));
    157     }
    158   }
    159 };
    160 
    161 }  // namespace internal
    162 }  // namespace drive_backend
    163 }  // namespace sync_file_system
    164 
    165 #endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_CALLBACK_TRACKER_INTERNAL_H_
    166