1 $$ This is a pump file for generating file templates. Pump is a python
2 $$ script that is part of the Google Test suite of utilities. Description
5 $$ http://code.google.com/p/googletest/wiki/PumpManual
7 $$ See comment for MAX_ARITY in base/bind.h.pump.
10 // Copyright 2014 The Chromium Authors. All rights reserved.
11 // Use of this source code is governed by a BSD-style license that can be
12 // found in the LICENSE file.
14 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_CALLBACK_TRACKER_INTERNAL_H_
15 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_CALLBACK_TRACKER_INTERNAL_H_
17 #include "base/callback.h"
18 #include "base/callback_internal.h"
19 #include "base/memory/scoped_ptr.h"
20 #include "base/memory/weak_ptr.h"
22 namespace sync_file_system {
23 namespace drive_backend {
25 class CallbackTracker;
31 explicit AbortHelper(CallbackTracker* tracker);
33 base::WeakPtr<AbortHelper> AsWeakPtr();
35 static scoped_ptr<AbortHelper> TakeOwnership(
36 const base::WeakPtr<AbortHelper>& abort_helper);
39 CallbackTracker* tracker_; // Not owned.
40 base::WeakPtrFactory<AbortHelper> weak_ptr_factory_;
42 DISALLOW_COPY_AND_ASSIGN(AbortHelper);
46 struct InvokeAndInvalidateHelper;
48 $range ARITY 0..MAX_ARITY
52 template <$for ARG , [[typename A$(ARG)]]>
53 struct InvokeAndInvalidateHelper<void($for ARG , [[A$(ARG)]])> {
54 static void Run(const base::WeakPtr<AbortHelper>& abort_helper,
55 const base::Callback<void($for ARG , [[A$(ARG)]])>& callback
57 $for ARG , [[A$(ARG) a$(ARG)]]
59 scoped_ptr<AbortHelper> deleter = AbortHelper::TakeOwnership(abort_helper);
62 $for ARG , [[base::internal::CallbackForward(a$(ARG))]]);
69 } // namespace internal
70 } // namespace drive_backend
71 } // namespace sync_file_system
73 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_CALLBACK_TRACKER_INTERNAL_H_