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

Side by Side Diff: base/callback_registry.h

Issue 23514056: Function-type templated CallbackRegistry (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | base/callback_registry.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:
2 // pump.py callback_registry.h.pump
3 // DO NOT EDIT BY HAND!!!
4
5
1 // Copyright 2013 The Chromium Authors. All rights reserved. 6 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 7 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 8 // found in the LICENSE file.
4 9
5 #ifndef BASE_CALLBACK_REGISTRY_H_ 10 #ifndef BASE_CALLBACK_REGISTRY_H_
6 #define BASE_CALLBACK_REGISTRY_H_ 11 #define BASE_CALLBACK_REGISTRY_H_
7 12
8 #include <list> 13 #include <list>
9 14
10 #include "base/basictypes.h" 15 #include "base/basictypes.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 171
167 private: 172 private:
168 std::list<CallbackType> callbacks_; 173 std::list<CallbackType> callbacks_;
169 int active_iterator_count_; 174 int active_iterator_count_;
170 175
171 DISALLOW_COPY_AND_ASSIGN(CallbackRegistryBase); 176 DISALLOW_COPY_AND_ASSIGN(CallbackRegistryBase);
172 }; 177 };
173 178
174 } // namespace internal 179 } // namespace internal
175 180
176 template <typename Details> 181 template <typename Sig> class CallbackRegistry;
177 class CallbackRegistry 182 template <>
178 : public internal::CallbackRegistryBase<Callback<void(const Details&)> > { 183 class CallbackRegistry<void(void)>
179 public: 184 : public internal::CallbackRegistryBase<Callback<void(void)> > {
180 CallbackRegistry() {} 185 public:
181 186 typedef Callback<void(void)> CallbackType;
182 // Execute all active callbacks with |details| parameter. 187
183 void Notify(const Details& details) { 188 CallbackRegistry() {}
184 typename internal::CallbackRegistryBase< 189
185 Callback<void(const Details&)> >::Iterator it = this->GetIterator();
186 Callback<void(const Details&)>* cb;
187 while((cb = it.GetNext()) != NULL) {
188 cb->Run(details);
189 }
190 }
191
192 private:
193 DISALLOW_COPY_AND_ASSIGN(CallbackRegistry);
194 };
195
196 template <> class CallbackRegistry<void>
197 : public internal::CallbackRegistryBase<Closure> {
198 public:
199 CallbackRegistry() {}
200
201 // Execute all active callbacks.
202 void Notify() { 190 void Notify() {
203 Iterator it = this->GetIterator(); 191 typename internal::CallbackRegistryBase<CallbackType>::Iterator it =
204 Closure* cb; 192 this->GetIterator();
193 CallbackType* cb;
205 while((cb = it.GetNext()) != NULL) { 194 while((cb = it.GetNext()) != NULL) {
206 cb->Run(); 195 cb->Run();
207 } 196 }
208 } 197 }
209 198
210 private: 199 private:
211 DISALLOW_COPY_AND_ASSIGN(CallbackRegistry); 200 DISALLOW_COPY_AND_ASSIGN(CallbackRegistry);
201
erikwright (departed) 2013/09/13 15:05:56 remove blanks
Cait (Slow) 2013/09/13 19:07:58 Done.
202
203 };
204
205 template <typename A1>
206 class CallbackRegistry<void(const A1&)>
207 : public internal::CallbackRegistryBase<
208 Callback<void(const A1&)> > {
209 public:
210 typedef Callback<void(const A1&)> CallbackType;
211
212 CallbackRegistry() {}
213
214 void Notify(const A1& a1) {
awong 2013/09/12 21:17:47 BTW, forgot to mention...we should explicitly spec
erikwright (departed) 2013/09/13 15:05:56 What's the danger here? It will fail to compile, a
Cait (Slow) 2013/09/13 19:07:58 So will I need to create something similar to Call
215 typename internal::CallbackRegistryBase<CallbackType>::Iterator it =
216 this->GetIterator();
217 CallbackType* cb;
218 while((cb = it.GetNext()) != NULL) {
219 cb->Run(a1);
220 }
221 }
222
223 private:
224 DISALLOW_COPY_AND_ASSIGN(CallbackRegistry);
225
226
227 };
228
229 template <typename A1, typename A2>
230 class CallbackRegistry<void(const A1&, const A2&)>
231 : public internal::CallbackRegistryBase<
232 Callback<void(const A1&, const A2&)> > {
233 public:
234 typedef Callback<void(const A1&, const A2&)> CallbackType;
235
236 CallbackRegistry() {}
237
238 void Notify(const A1& a1, const A2& a2) {
239 typename internal::CallbackRegistryBase<CallbackType>::Iterator it =
240 this->GetIterator();
241 CallbackType* cb;
242 while((cb = it.GetNext()) != NULL) {
243 cb->Run(a1, a2);
244 }
245 }
246
247 private:
248 DISALLOW_COPY_AND_ASSIGN(CallbackRegistry);
249
250
251 };
252
253 template <typename A1, typename A2, typename A3>
254 class CallbackRegistry<void(const A1&, const A2&, const A3&)>
255 : public internal::CallbackRegistryBase<
256 Callback<void(const A1&, const A2&, const A3&)> > {
257 public:
258 typedef Callback<void(const A1&, const A2&, const A3&)> CallbackType;
259
260 CallbackRegistry() {}
261
262 void Notify(const A1& a1, const A2& a2, const A3& a3) {
263 typename internal::CallbackRegistryBase<CallbackType>::Iterator it =
264 this->GetIterator();
265 CallbackType* cb;
266 while((cb = it.GetNext()) != NULL) {
267 cb->Run(a1, a2, a3);
268 }
269 }
270
271 private:
272 DISALLOW_COPY_AND_ASSIGN(CallbackRegistry);
273
274
275 };
276
277 template <typename A1, typename A2, typename A3, typename A4>
278 class CallbackRegistry<void(const A1&, const A2&, const A3&, const A4&)>
279 : public internal::CallbackRegistryBase<
280 Callback<void(const A1&, const A2&, const A3&, const A4&)> > {
281 public:
282 typedef Callback<void(const A1&, const A2&, const A3&,
283 const A4&)> CallbackType;
284
285 CallbackRegistry() {}
286
287 void Notify(const A1& a1, const A2& a2, const A3& a3, const A4& a4) {
288 typename internal::CallbackRegistryBase<CallbackType>::Iterator it =
289 this->GetIterator();
290 CallbackType* cb;
291 while((cb = it.GetNext()) != NULL) {
292 cb->Run(a1, a2, a3, a4);
293 }
294 }
295
296 private:
297 DISALLOW_COPY_AND_ASSIGN(CallbackRegistry);
298
299
300 };
301
302 template <typename A1, typename A2, typename A3, typename A4, typename A5>
303 class CallbackRegistry<void(const A1&, const A2&, const A3&, const A4&,
304 const A5&)>
305 : public internal::CallbackRegistryBase<
306 Callback<void(const A1&, const A2&, const A3&, const A4&,
307 const A5&)> > {
308 public:
309 typedef Callback<void(const A1&, const A2&, const A3&, const A4&,
310 const A5&)> CallbackType;
311
312 CallbackRegistry() {}
313
314 void Notify(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
315 const A5& a5) {
316 typename internal::CallbackRegistryBase<CallbackType>::Iterator it =
317 this->GetIterator();
318 CallbackType* cb;
319 while((cb = it.GetNext()) != NULL) {
320 cb->Run(a1, a2, a3, a4, a5);
321 }
322 }
323
324 private:
325 DISALLOW_COPY_AND_ASSIGN(CallbackRegistry);
326
327
328 };
329
330 template <typename A1, typename A2, typename A3, typename A4, typename A5,
331 typename A6>
332 class CallbackRegistry<void(const A1&, const A2&, const A3&, const A4&,
333 const A5&, const A6&)>
334 : public internal::CallbackRegistryBase<
335 Callback<void(const A1&, const A2&, const A3&, const A4&, const A5&,
336 const A6&)> > {
337 public:
338 typedef Callback<void(const A1&, const A2&, const A3&, const A4&, const A5&,
339 const A6&)> CallbackType;
340
341 CallbackRegistry() {}
342
343 void Notify(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
344 const A5& a5, const A6& a6) {
345 typename internal::CallbackRegistryBase<CallbackType>::Iterator it =
346 this->GetIterator();
347 CallbackType* cb;
348 while((cb = it.GetNext()) != NULL) {
349 cb->Run(a1, a2, a3, a4, a5, a6);
350 }
351 }
352
353 private:
354 DISALLOW_COPY_AND_ASSIGN(CallbackRegistry);
355
356
357 };
358
359 template <typename A1, typename A2, typename A3, typename A4, typename A5,
360 typename A6, typename A7>
361 class CallbackRegistry<void(const A1&, const A2&, const A3&, const A4&,
362 const A5&, const A6&, const A7&)>
363 : public internal::CallbackRegistryBase<
364 Callback<void(const A1&, const A2&, const A3&, const A4&, const A5&,
365 const A6&, const A7&)> > {
366 public:
367 typedef Callback<void(const A1&, const A2&, const A3&, const A4&, const A5&,
368 const A6&, const A7&)> CallbackType;
369
370 CallbackRegistry() {}
371
372 void Notify(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
373 const A5& a5, const A6& a6, const A7& a7) {
374 typename internal::CallbackRegistryBase<CallbackType>::Iterator it =
375 this->GetIterator();
376 CallbackType* cb;
377 while((cb = it.GetNext()) != NULL) {
378 cb->Run(a1, a2, a3, a4, a5, a6, a7);
379 }
380 }
381
382 private:
383 DISALLOW_COPY_AND_ASSIGN(CallbackRegistry);
384
385
212 }; 386 };
213 387
214 } // namespace base 388 } // namespace base
215 389
216 #endif // BASE_CALLBACK_REGISTRY_H_ 390 #endif // BASE_CALLBACK_REGISTRY_H
OLDNEW
« no previous file with comments | « no previous file | base/callback_registry.h.pump » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698