Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(298)

Side by Side Diff: media/base/bind_to_current_loop.h

Issue 978923004: Use variadic template in media::BindToCurrentLoop() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | media/base/bind_to_current_loop.h.pump » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // This file was GENERATED by command: 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved.
2 // pump.py bind_to_current_loop.h.pump
3 // DO NOT EDIT BY HAND!!!
4
5
6 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
7 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
8 // found in the LICENSE file. 3 // found in the LICENSE file.
9 4
10 #ifndef MEDIA_BASE_BIND_TO_CURRENT_LOOP_H_ 5 #ifndef MEDIA_BASE_BIND_TO_CURRENT_LOOP_H_
11 #define MEDIA_BASE_BIND_TO_CURRENT_LOOP_H_ 6 #define MEDIA_BASE_BIND_TO_CURRENT_LOOP_H_
12 7
13 #include "base/bind.h" 8 #include "base/bind.h"
14 #include "base/location.h" 9 #include "base/location.h"
15 #include "base/message_loop/message_loop_proxy.h" 10 #include "base/message_loop/message_loop_proxy.h"
16 #include "base/single_thread_task_runner.h" 11 #include "base/single_thread_task_runner.h"
(...skipping 20 matching lines...) Expand all
37 T& TrampolineForward(T& t) { return t; } 32 T& TrampolineForward(T& t) { return t; }
38 33
39 template <typename T, typename R> 34 template <typename T, typename R>
40 base::internal::PassedWrapper<scoped_ptr<T, R> > TrampolineForward( 35 base::internal::PassedWrapper<scoped_ptr<T, R> > TrampolineForward(
41 scoped_ptr<T, R>& p) { return base::Passed(&p); } 36 scoped_ptr<T, R>& p) { return base::Passed(&p); }
42 37
43 template <typename T> 38 template <typename T>
44 base::internal::PassedWrapper<ScopedVector<T> > TrampolineForward( 39 base::internal::PassedWrapper<ScopedVector<T> > TrampolineForward(
45 ScopedVector<T>& p) { return base::Passed(&p); } 40 ScopedVector<T>& p) { return base::Passed(&p); }
46 41
47 template <typename T> struct TrampolineHelper; 42 template <typename Sig> struct TrampolineHelper;
xhwang 2015/03/05 17:19:15 Is this needed here? Can we drop this line?
xhwang 2015/03/05 17:19:15 What does "sig" mean here?
wdzierzanowski 2015/03/05 20:45:16 We can't, the compiler doesn't like that: ../../m
wdzierzanowski 2015/03/05 20:45:16 It stands for "signature", and my intention was to
xhwang 2015/03/05 20:48:49 A comment would help, thanks!
wdzierzanowski 2015/03/05 21:00:05 Done.
48 43
49 template <> 44 template <typename... Args>
50 struct TrampolineHelper<void()> { 45 struct TrampolineHelper<void(Args...)> {
51 static void Run( 46 static void Run(
52 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 47 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
53 const base::Callback<void()>& cb) { 48 const base::Callback<void(Args...)>& cb,
54 task_runner->PostTask(FROM_HERE, base::Bind(cb)); 49 Args... args) {
50 task_runner->PostTask(FROM_HERE,
51 base::Bind(cb, internal::TrampolineForward(args)...));
xhwang 2015/03/05 17:19:15 internal not needed?
wdzierzanowski 2015/03/05 20:45:16 Of course not, blindly copied from the old version
wdzierzanowski 2015/03/05 20:45:16 Of course not, blindly copied from the old version
wdzierzanowski 2015/03/05 20:47:56 Done.
55 } 52 }
56 }; 53 };
57 54
58
59 template <typename A1>
60 struct TrampolineHelper<void(A1)> {
61 static void Run(
62 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
63 const base::Callback<void(A1)>& cb, A1 a1) {
64 task_runner->PostTask(FROM_HERE, base::Bind(cb,
65 internal::TrampolineForward(a1)));
66 }
67 };
68
69
70 template <typename A1, typename A2>
71 struct TrampolineHelper<void(A1, A2)> {
72 static void Run(
73 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
74 const base::Callback<void(A1, A2)>& cb, A1 a1, A2 a2) {
75 task_runner->PostTask(FROM_HERE, base::Bind(cb,
76 internal::TrampolineForward(a1), internal::TrampolineForward(a2)));
77 }
78 };
79
80
81 template <typename A1, typename A2, typename A3>
82 struct TrampolineHelper<void(A1, A2, A3)> {
83 static void Run(
84 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
85 const base::Callback<void(A1, A2, A3)>& cb, A1 a1, A2 a2, A3 a3) {
86 task_runner->PostTask(FROM_HERE, base::Bind(cb,
87 internal::TrampolineForward(a1), internal::TrampolineForward(a2),
88 internal::TrampolineForward(a3)));
89 }
90 };
91
92
93 template <typename A1, typename A2, typename A3, typename A4>
94 struct TrampolineHelper<void(A1, A2, A3, A4)> {
95 static void Run(
96 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
97 const base::Callback<void(A1, A2, A3, A4)>& cb, A1 a1, A2 a2, A3 a3,
98 A4 a4) {
99 task_runner->PostTask(FROM_HERE, base::Bind(cb,
100 internal::TrampolineForward(a1), internal::TrampolineForward(a2),
101 internal::TrampolineForward(a3), internal::TrampolineForward(a4)));
102 }
103 };
104
105
106 template <typename A1, typename A2, typename A3, typename A4, typename A5>
107 struct TrampolineHelper<void(A1, A2, A3, A4, A5)> {
108 static void Run(
109 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
110 const base::Callback<void(A1, A2, A3, A4, A5)>& cb, A1 a1, A2 a2, A3 a3,
111 A4 a4, A5 a5) {
112 task_runner->PostTask(FROM_HERE, base::Bind(cb,
113 internal::TrampolineForward(a1), internal::TrampolineForward(a2),
114 internal::TrampolineForward(a3), internal::TrampolineForward(a4),
115 internal::TrampolineForward(a5)));
116 }
117 };
118
119
120 template <typename A1, typename A2, typename A3, typename A4, typename A5,
121 typename A6>
122 struct TrampolineHelper<void(A1, A2, A3, A4, A5, A6)> {
123 static void Run(
124 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
125 const base::Callback<void(A1, A2, A3, A4, A5, A6)>& cb, A1 a1, A2 a2,
126 A3 a3, A4 a4, A5 a5, A6 a6) {
127 task_runner->PostTask(FROM_HERE, base::Bind(cb,
128 internal::TrampolineForward(a1), internal::TrampolineForward(a2),
129 internal::TrampolineForward(a3), internal::TrampolineForward(a4),
130 internal::TrampolineForward(a5), internal::TrampolineForward(a6)));
131 }
132 };
133
134
135 template <typename A1, typename A2, typename A3, typename A4, typename A5,
136 typename A6, typename A7>
137 struct TrampolineHelper<void(A1, A2, A3, A4, A5, A6, A7)> {
138 static void Run(
139 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
140 const base::Callback<void(A1, A2, A3, A4, A5, A6, A7)>& cb, A1 a1, A2 a2,
141 A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) {
142 task_runner->PostTask(FROM_HERE, base::Bind(cb,
143 internal::TrampolineForward(a1), internal::TrampolineForward(a2),
144 internal::TrampolineForward(a3), internal::TrampolineForward(a4),
145 internal::TrampolineForward(a5), internal::TrampolineForward(a6),
146 internal::TrampolineForward(a7)));
147 }
148 };
149
150
151 } // namespace internal 55 } // namespace internal
152 56
153 template<typename T> 57 template<typename T>
154 static base::Callback<T> BindToCurrentLoop( 58 static base::Callback<T> BindToCurrentLoop(
155 const base::Callback<T>& cb) { 59 const base::Callback<T>& cb) {
156 return base::Bind(&internal::TrampolineHelper<T>::Run, 60 return base::Bind(&internal::TrampolineHelper<T>::Run,
157 base::MessageLoopProxy::current(), cb); 61 base::MessageLoopProxy::current(), cb);
158 } 62 }
159 63
160 } // namespace media 64 } // namespace media
161 65
162 #endif // MEDIA_BASE_BIND_TO_CURRENT_LOOP_H_ 66 #endif // MEDIA_BASE_BIND_TO_CURRENT_LOOP_H_
OLDNEW
« no previous file with comments | « no previous file | media/base/bind_to_current_loop.h.pump » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698