callback_tracker_internal.h revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
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 18namespace sync_file_system { 19namespace drive_backend { 20 21class CallbackTracker; 22 23namespace internal { 24 25class 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 41template <typename> 42struct InvokeAndInvalidateHelper; 43 44template <> 45struct 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 55template <typename A1> 56struct 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 66template <typename A1, typename A2> 67struct 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 78template <typename A1, typename A2, typename A3> 79struct 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 92template <typename A1, typename A2, typename A3, typename A4> 93struct 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 107template <typename A1, typename A2, typename A3, typename A4, typename A5> 108struct 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 123template <typename A1, typename A2, typename A3, typename A4, typename A5, 124 typename A6> 125struct 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 141template <typename A1, typename A2, typename A3, typename A4, typename A5, 142 typename A6, typename A7> 143struct 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