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

Side by Side Diff: base/bind_internal.h.pump

Issue 9021032: Redo r113722 - Add Pass(), which implements move semantics, to scoped_ptr, scoped_array.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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 | « base/bind_internal.h ('k') | base/bind_unittest.cc » ('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 is a pump file for generating file templates. Pump is a python 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 2 $$ script that is part of the Google Test suite of utilities. Description
3 $$ can be found here: 3 $$ can be found here:
4 $$ 4 $$
5 $$ http://code.google.com/p/googletest/wiki/PumpManual 5 $$ http://code.google.com/p/googletest/wiki/PumpManual
6 $$ 6 $$
7 7
8 $$ See comment for MAX_ARITY in base/bind.h.pump. 8 $$ See comment for MAX_ARITY in base/bind.h.pump.
9 $var MAX_ARITY = 7 9 $var MAX_ARITY = 7
10 $range ARITY 0..MAX_ARITY 10 $range ARITY 0..MAX_ARITY
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 // and for ignoring return values. This is separate from 75 // and for ignoring return values. This is separate from
76 // Invoker to avoid creating multiple version of Invoker<> 76 // Invoker to avoid creating multiple version of Invoker<>
77 // which grows at O(n^2) with the arity. 77 // which grows at O(n^2) with the arity.
78 // There are |k*ARITY| InvokeHelper types. 78 // There are |k*ARITY| InvokeHelper types.
79 // Invoker<> -- Unwraps the curried parameters and executes the Runnable. 79 // Invoker<> -- Unwraps the curried parameters and executes the Runnable.
80 // There are |(ARITY^2 + ARITY)/2| Invoketypes. 80 // There are |(ARITY^2 + ARITY)/2| Invoketypes.
81 // BindState<> -- Stores the curried parameters, and is the main entry point 81 // BindState<> -- Stores the curried parameters, and is the main entry point
82 // into the Bind() system, doing most of the type resolution. 82 // into the Bind() system, doing most of the type resolution.
83 // There are ARITY BindState types. 83 // There are ARITY BindState types.
84 84
85
86 // RunnableAdapter<> 85 // RunnableAdapter<>
87 // 86 //
88 // The RunnableAdapter<> templates provide a uniform interface for invoking 87 // The RunnableAdapter<> templates provide a uniform interface for invoking
89 // a function pointer, method pointer, or const method pointer. The adapter 88 // a function pointer, method pointer, or const method pointer. The adapter
90 // exposes a Run() method with an appropriate signature. Using this wrapper 89 // exposes a Run() method with an appropriate signature. Using this wrapper
91 // allows for writing code that supports all three pointer types without 90 // allows for writing code that supports all three pointer types without
92 // undue repetition. Without it, a lot of code would need to be repeated 3 91 // undue repetition. Without it, a lot of code would need to be repeated 3
93 // times. 92 // times.
94 // 93 //
95 // For method pointers and const method pointers the first argument to Run() 94 // For method pointers and const method pointers the first argument to Run()
(...skipping 18 matching lines...) Expand all
114 $if ARITY > 0[[, ]] $for ARG , [[typename A$(ARG)]]> 113 $if ARITY > 0[[, ]] $for ARG , [[typename A$(ARG)]]>
115 class RunnableAdapter<R(*)($for ARG , [[A$(ARG)]])> { 114 class RunnableAdapter<R(*)($for ARG , [[A$(ARG)]])> {
116 public: 115 public:
117 typedef R (RunType)($for ARG , [[A$(ARG)]]); 116 typedef R (RunType)($for ARG , [[A$(ARG)]]);
118 117
119 explicit RunnableAdapter(R(*function)($for ARG , [[A$(ARG)]])) 118 explicit RunnableAdapter(R(*function)($for ARG , [[A$(ARG)]]))
120 : function_(function) { 119 : function_(function) {
121 } 120 }
122 121
123 R Run($for ARG , [[typename CallbackParamTraits<A$(ARG)>::ForwardType a$(ARG)] ]) { 122 R Run($for ARG , [[typename CallbackParamTraits<A$(ARG)>::ForwardType a$(ARG)] ]) {
124 return function_($for ARG , [[a$(ARG)]]); 123 return function_($for ARG , [[CallbackForward(a$(ARG))]]);
125 } 124 }
126 125
127 private: 126 private:
128 R (*function_)($for ARG , [[A$(ARG)]]); 127 R (*function_)($for ARG , [[A$(ARG)]]);
129 }; 128 };
130 129
131 // Method: Arity $(ARITY). 130 // Method: Arity $(ARITY).
132 template <typename R, typename T[[]] 131 template <typename R, typename T[[]]
133 $if ARITY > 0[[, ]] $for ARG , [[typename A$(ARG)]]> 132 $if ARITY > 0[[, ]] $for ARG , [[typename A$(ARG)]]>
134 class RunnableAdapter<R(T::*)($for ARG , [[A$(ARG)]])> { 133 class RunnableAdapter<R(T::*)($for ARG , [[A$(ARG)]])> {
135 public: 134 public:
136 typedef R (RunType)(T*[[]] 135 typedef R (RunType)(T*[[]]
137 $if ARITY > 0[[, ]] $for ARG , [[A$(ARG)]]); 136 $if ARITY > 0[[, ]] $for ARG , [[A$(ARG)]]);
138 typedef true_type IsMethod; 137 typedef true_type IsMethod;
139 138
140 explicit RunnableAdapter(R(T::*method)($for ARG , [[A$(ARG)]])) 139 explicit RunnableAdapter(R(T::*method)($for ARG , [[A$(ARG)]]))
141 : method_(method) { 140 : method_(method) {
142 } 141 }
143 142
144 R Run(T* object[[]] 143 R Run(T* object[[]]
145 $if ARITY > 0[[, ]] $for ARG, [[typename CallbackParamTraits<A$(ARG)>::ForwardT ype a$(ARG)]]) { 144 $if ARITY > 0[[, ]] $for ARG, [[typename CallbackParamTraits<A$(ARG)>::ForwardT ype a$(ARG)]]) {
146 return (object->*method_)($for ARG , [[a$(ARG)]]); 145 return (object->*method_)($for ARG , [[CallbackForward(a$(ARG))]]);
147 } 146 }
148 147
149 private: 148 private:
150 R (T::*method_)($for ARG , [[A$(ARG)]]); 149 R (T::*method_)($for ARG , [[A$(ARG)]]);
151 }; 150 };
152 151
153 // Const Method: Arity $(ARITY). 152 // Const Method: Arity $(ARITY).
154 template <typename R, typename T[[]] 153 template <typename R, typename T[[]]
155 $if ARITY > 0[[, ]] $for ARG , [[typename A$(ARG)]]> 154 $if ARITY > 0[[, ]] $for ARG , [[typename A$(ARG)]]>
156 class RunnableAdapter<R(T::*)($for ARG , [[A$(ARG)]]) const> { 155 class RunnableAdapter<R(T::*)($for ARG , [[A$(ARG)]]) const> {
157 public: 156 public:
158 typedef R (RunType)(const T*[[]] 157 typedef R (RunType)(const T*[[]]
159 $if ARITY > 0[[, ]] $for ARG , [[A$(ARG)]]); 158 $if ARITY > 0[[, ]] $for ARG , [[A$(ARG)]]);
160 typedef true_type IsMethod; 159 typedef true_type IsMethod;
161 160
162 explicit RunnableAdapter(R(T::*method)($for ARG , [[A$(ARG)]]) const) 161 explicit RunnableAdapter(R(T::*method)($for ARG , [[A$(ARG)]]) const)
163 : method_(method) { 162 : method_(method) {
164 } 163 }
165 164
166 R Run(const T* object[[]] 165 R Run(const T* object[[]]
167 $if ARITY > 0[[, ]] $for ARG, [[typename CallbackParamTraits<A$(ARG)>::ForwardT ype a$(ARG)]]) { 166 $if ARITY > 0[[, ]] $for ARG, [[typename CallbackParamTraits<A$(ARG)>::ForwardT ype a$(ARG)]]) {
168 return (object->*method_)($for ARG , [[a$(ARG)]]); 167 return (object->*method_)($for ARG , [[CallbackForward(a$(ARG))]]);
169 } 168 }
170 169
171 private: 170 private:
172 R (T::*method_)($for ARG , [[A$(ARG)]]) const; 171 R (T::*method_)($for ARG , [[A$(ARG)]]) const;
173 }; 172 };
174 173
175 ]] $$ for ARITY 174 ]] $$ for ARITY
176 175
177 176
178 // FunctionTraits<> 177 // FunctionTraits<>
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 283
285 $for ARITY [[ 284 $for ARITY [[
286 $range ARG 1..ARITY 285 $range ARG 1..ARITY
287 286
288 template <typename ReturnType, typename Runnable[[]] 287 template <typename ReturnType, typename Runnable[[]]
289 $if ARITY > 0 [[,]] $for ARG , [[typename A$(ARG)]]> 288 $if ARITY > 0 [[,]] $for ARG , [[typename A$(ARG)]]>
290 struct InvokeHelper<false, ReturnType, Runnable, 289 struct InvokeHelper<false, ReturnType, Runnable,
291 void($for ARG , [[A$(ARG)]])> { 290 void($for ARG , [[A$(ARG)]])> {
292 static ReturnType MakeItSo(Runnable runnable[[]] 291 static ReturnType MakeItSo(Runnable runnable[[]]
293 $if ARITY > 0[[, ]] $for ARG , [[A$(ARG) a$(ARG)]]) { 292 $if ARITY > 0[[, ]] $for ARG , [[A$(ARG) a$(ARG)]]) {
294 return runnable.Run($for ARG , [[a$(ARG)]]); 293 return runnable.Run($for ARG , [[CallbackForward(a$(ARG))]]);
295 } 294 }
296 }; 295 };
297 296
298 template <typename Runnable[[]] 297 template <typename Runnable[[]]
299 $if ARITY > 0 [[,]] $for ARG , [[typename A$(ARG)]]> 298 $if ARITY > 0 [[,]] $for ARG , [[typename A$(ARG)]]>
300 struct InvokeHelper<false, void, Runnable, 299 struct InvokeHelper<false, void, Runnable,
301 void($for ARG , [[A$(ARG)]])> { 300 void($for ARG , [[A$(ARG)]])> {
302 static void MakeItSo(Runnable runnable[[]] 301 static void MakeItSo(Runnable runnable[[]]
303 $if ARITY > 0[[, ]] $for ARG , [[A$(ARG) a$(ARG)]]) { 302 $if ARITY > 0[[, ]] $for ARG , [[A$(ARG) a$(ARG)]]) {
304 runnable.Run($for ARG , [[a$(ARG)]]); 303 runnable.Run($for ARG , [[CallbackForward(a$(ARG))]]);
305 } 304 }
306 }; 305 };
307 306
308 $if ARITY > 0 [[ 307 $if ARITY > 0 [[
309 308
310 template <typename Runnable[[]], $for ARG , [[typename A$(ARG)]]> 309 template <typename Runnable[[]], $for ARG , [[typename A$(ARG)]]>
311 struct InvokeHelper<true, void, Runnable, 310 struct InvokeHelper<true, void, Runnable,
312 void($for ARG , [[A$(ARG)]])> { 311 void($for ARG , [[A$(ARG)]])> {
313 static void MakeItSo(Runnable runnable[[]] 312 static void MakeItSo(Runnable runnable[[]]
314 $if ARITY > 0[[, ]] $for ARG , [[A$(ARG) a$(ARG)]]) { 313 $if ARITY > 0[[, ]] $for ARG , [[A$(ARG) a$(ARG)]]) {
315 if (!a1.get()) { 314 if (!a1.get()) {
316 return; 315 return;
317 } 316 }
318 317
319 runnable.Run($for ARG , [[a$(ARG)]]); 318 runnable.Run($for ARG , [[CallbackForward(a$(ARG))]]);
320 } 319 }
321 }; 320 };
322 321
323 ]] 322 ]]
324 323
325 ]] $$ for ARITY 324 ]] $$ for ARITY
326 325
327 #if !defined(_MSC_VER) 326 #if !defined(_MSC_VER)
328 327
329 template <typename ReturnType, typename Runnable, typename ArgsType> 328 template <typename ReturnType, typename Runnable, typename ArgsType>
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 typename Bound$(BOUND_ARG)UnwrapTraits::ForwardType 396 typename Bound$(BOUND_ARG)UnwrapTraits::ForwardType
398 ]] 397 ]]
399 398
400 $if UNBOUND > 0 [[$if BOUND > 0 [[, ]]]][[]] 399 $if UNBOUND > 0 [[$if BOUND > 0 [[, ]]]][[]]
401 400
402 $for UNBOUND_ARG , [[ 401 $for UNBOUND_ARG , [[
403 typename CallbackParamTraits<X$(UNBOUND_ARG)>::ForwardType x$(UNBOUND_ARG) 402 typename CallbackParamTraits<X$(UNBOUND_ARG)>::ForwardType x$(UNBOUND_ARG)
404 ]] 403 ]]
405 )> 404 )>
406 ::MakeItSo(storage->runnable_ 405 ::MakeItSo(storage->runnable_
407 $if ARITY > 0[[, ]] $for ARG , [[x$(ARG)]]); 406 $if ARITY > 0[[, ]] $for ARG , [[CallbackForward(x$(ARG))]]);
408 } 407 }
409 }; 408 };
410 409
411 ]] $$ for BOUND 410 ]] $$ for BOUND
412 ]] $$ for ARITY 411 ]] $$ for ARITY
413 412
414 413
415 // BindState<> 414 // BindState<>
416 // 415 //
417 // This stores all the state passed into Bind() and is also where most 416 // This stores all the state passed into Bind() and is also where most
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 485
487 ]] 486 ]]
488 }; 487 };
489 488
490 ]] $$ for ARITY 489 ]] $$ for ARITY
491 490
492 } // namespace internal 491 } // namespace internal
493 } // namespace base 492 } // namespace base
494 493
495 #endif // BASE_BIND_INTERNAL_H_ 494 #endif // BASE_BIND_INTERNAL_H_
OLDNEW
« no previous file with comments | « base/bind_internal.h ('k') | base/bind_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698