blob: 76205b33cd85d33db507636ee24d21c650e76054 [file] [log] [blame]
henrike@webrtc.orgf7795df2014-05-13 18:00:26 +00001// This file was GENERATED by command:
2// pump.py genericslot.h.pump
3// DO NOT EDIT BY HAND!!!
4
5/*
6 * Copyright 2014 The WebRTC Project Authors. All rights reserved.
7 *
8 * Use of this source code is governed by a BSD-style license
9 * that can be found in the LICENSE file in the root of the source
10 * tree. An additional intellectual property rights grant can be found
11 * in the file PATENTS. All contributing project authors may
12 * be found in the AUTHORS file in the root of the source tree.
13 */
14
15#ifndef WEBRTC_BASE_GENERICSLOT_H_
16#define WEBRTC_BASE_GENERICSLOT_H_
17
18// To generate genericslot.h from genericslot.h.pump, execute:
19// /home/build/google3/third_party/gtest/scripts/pump.py genericslot.h.pump
20
21// Generic-slots are pure slots that can be hooked up to signals. They're
22// mainly intended to be used in tests where we want to check if a signal
23// was invoked and what arguments were passed. NOTE: They do not do any
24// lifetime management of the arguments received via callbacks.
25//
26// Example:
27// /* Some signal */
28// sigslot::signal1<int> foo;
29//
30// /* We want to monitor foo in some test */
31// rtc::GenericSlot1<int> slot(&foo, 0);
32// foo.emit(5);
33// EXPECT_TRUE(slot.callback_received());
34// EXPECT_EQ(5, *(slot.arg1()));
35//
36
37#include "webrtc/base/constructormagic.h"
38#include "webrtc/base/sigslot.h"
39
40namespace rtc {
41
42template <class A1>
43class GenericSlot1 : public sigslot::has_slots<> {
44 public:
45 GenericSlot1(sigslot::signal1<A1>* signal,
46 const A1& arg1_initial)
47 : arg1_initial_(arg1_initial) {
48 Reset();
49 signal->connect(this, &GenericSlot1::OnSignalCallback);
50 }
51
52 void Reset() {
53 callback_received_ = false;
54 arg1_ = arg1_initial_;
55 }
56
57 bool callback_received() const { return callback_received_; }
58 const A1& arg1() const { return arg1_; }
59
60 private:
61 void OnSignalCallback(A1 arg1) {
62 callback_received_ = true;
63 arg1_ = arg1;
64 }
65
66 bool callback_received_;
67 A1 arg1_initial_, arg1_;
68
69 DISALLOW_COPY_AND_ASSIGN(GenericSlot1);
70};
71
72template <class A1, class A2>
73class GenericSlot2 : public sigslot::has_slots<> {
74 public:
75 GenericSlot2(sigslot::signal2<A1, A2>* signal,
76 const A1& arg1_initial, const A2& arg2_initial)
77 : arg1_initial_(arg1_initial), arg2_initial_(arg2_initial) {
78 Reset();
79 signal->connect(this, &GenericSlot2::OnSignalCallback);
80 }
81
82 void Reset() {
83 callback_received_ = false;
84 arg1_ = arg1_initial_;
85 arg2_ = arg2_initial_;
86 }
87
88 bool callback_received() const { return callback_received_; }
89 const A1& arg1() const { return arg1_; }
90 const A2& arg2() const { return arg2_; }
91
92 private:
93 void OnSignalCallback(A1 arg1, A2 arg2) {
94 callback_received_ = true;
95 arg1_ = arg1;
96 arg2_ = arg2;
97 }
98
99 bool callback_received_;
100 A1 arg1_initial_, arg1_;
101 A2 arg2_initial_, arg2_;
102
103 DISALLOW_COPY_AND_ASSIGN(GenericSlot2);
104};
105
106template <class A1, class A2, class A3>
107class GenericSlot3 : public sigslot::has_slots<> {
108 public:
109 GenericSlot3(sigslot::signal3<A1, A2, A3>* signal,
110 const A1& arg1_initial, const A2& arg2_initial,
111 const A3& arg3_initial)
112 : arg1_initial_(arg1_initial), arg2_initial_(arg2_initial),
113 arg3_initial_(arg3_initial) {
114 Reset();
115 signal->connect(this, &GenericSlot3::OnSignalCallback);
116 }
117
118 void Reset() {
119 callback_received_ = false;
120 arg1_ = arg1_initial_;
121 arg2_ = arg2_initial_;
122 arg3_ = arg3_initial_;
123 }
124
125 bool callback_received() const { return callback_received_; }
126 const A1& arg1() const { return arg1_; }
127 const A2& arg2() const { return arg2_; }
128 const A3& arg3() const { return arg3_; }
129
130 private:
131 void OnSignalCallback(A1 arg1, A2 arg2, A3 arg3) {
132 callback_received_ = true;
133 arg1_ = arg1;
134 arg2_ = arg2;
135 arg3_ = arg3;
136 }
137
138 bool callback_received_;
139 A1 arg1_initial_, arg1_;
140 A2 arg2_initial_, arg2_;
141 A3 arg3_initial_, arg3_;
142
143 DISALLOW_COPY_AND_ASSIGN(GenericSlot3);
144};
145
146template <class A1, class A2, class A3, class A4>
147class GenericSlot4 : public sigslot::has_slots<> {
148 public:
149 GenericSlot4(sigslot::signal4<A1, A2, A3, A4>* signal,
150 const A1& arg1_initial, const A2& arg2_initial,
151 const A3& arg3_initial, const A4& arg4_initial)
152 : arg1_initial_(arg1_initial), arg2_initial_(arg2_initial),
153 arg3_initial_(arg3_initial), arg4_initial_(arg4_initial) {
154 Reset();
155 signal->connect(this, &GenericSlot4::OnSignalCallback);
156 }
157
158 void Reset() {
159 callback_received_ = false;
160 arg1_ = arg1_initial_;
161 arg2_ = arg2_initial_;
162 arg3_ = arg3_initial_;
163 arg4_ = arg4_initial_;
164 }
165
166 bool callback_received() const { return callback_received_; }
167 const A1& arg1() const { return arg1_; }
168 const A2& arg2() const { return arg2_; }
169 const A3& arg3() const { return arg3_; }
170 const A4& arg4() const { return arg4_; }
171
172 private:
173 void OnSignalCallback(A1 arg1, A2 arg2, A3 arg3, A4 arg4) {
174 callback_received_ = true;
175 arg1_ = arg1;
176 arg2_ = arg2;
177 arg3_ = arg3;
178 arg4_ = arg4;
179 }
180
181 bool callback_received_;
182 A1 arg1_initial_, arg1_;
183 A2 arg2_initial_, arg2_;
184 A3 arg3_initial_, arg3_;
185 A4 arg4_initial_, arg4_;
186
187 DISALLOW_COPY_AND_ASSIGN(GenericSlot4);
188};
189
190template <class A1, class A2, class A3, class A4, class A5>
191class GenericSlot5 : public sigslot::has_slots<> {
192 public:
193 GenericSlot5(sigslot::signal5<A1, A2, A3, A4, A5>* signal,
194 const A1& arg1_initial, const A2& arg2_initial,
195 const A3& arg3_initial, const A4& arg4_initial,
196 const A5& arg5_initial)
197 : arg1_initial_(arg1_initial), arg2_initial_(arg2_initial),
198 arg3_initial_(arg3_initial), arg4_initial_(arg4_initial),
199 arg5_initial_(arg5_initial) {
200 Reset();
201 signal->connect(this, &GenericSlot5::OnSignalCallback);
202 }
203
204 void Reset() {
205 callback_received_ = false;
206 arg1_ = arg1_initial_;
207 arg2_ = arg2_initial_;
208 arg3_ = arg3_initial_;
209 arg4_ = arg4_initial_;
210 arg5_ = arg5_initial_;
211 }
212
213 bool callback_received() const { return callback_received_; }
214 const A1& arg1() const { return arg1_; }
215 const A2& arg2() const { return arg2_; }
216 const A3& arg3() const { return arg3_; }
217 const A4& arg4() const { return arg4_; }
218 const A5& arg5() const { return arg5_; }
219
220 private:
221 void OnSignalCallback(A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5) {
222 callback_received_ = true;
223 arg1_ = arg1;
224 arg2_ = arg2;
225 arg3_ = arg3;
226 arg4_ = arg4;
227 arg5_ = arg5;
228 }
229
230 bool callback_received_;
231 A1 arg1_initial_, arg1_;
232 A2 arg2_initial_, arg2_;
233 A3 arg3_initial_, arg3_;
234 A4 arg4_initial_, arg4_;
235 A5 arg5_initial_, arg5_;
236
237 DISALLOW_COPY_AND_ASSIGN(GenericSlot5);
238};
239} // namespace rtc
240
241#endif // WEBRTC_BASE_GENERICSLOT_H_