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