28
28
//
29
29
// If test_track_obj writes nothing and the return code is 0, the test has passed.
30
30
31
+ // sigc::track_obj() is deprecated, but let's keep the test if possible.
32
+ // If libsigc++ is configured with -Dbuild-deprecated-api=false
33
+ // (--disable-deprecated-api), SIGCXX_DISABLE_DEPRECATED is defined in
34
+ // sigc++config.h. An undef at the start of this file has no effect.
35
+ #undef SIGCXX_DISABLE_DEPRECATED
36
+
31
37
#include " testutilities.h"
32
38
#include < string>
33
39
#include < iostream>
36
42
#include < sigc++/adaptors/track_obj.h>
37
43
#include < sigc++/signal.h>
38
44
39
-
40
45
namespace
41
46
{
42
47
std::ostringstream result_stream;
@@ -127,7 +132,11 @@ int main(int argc, char* argv[])
127
132
sigc::slot<std::string, int > sl2;
128
133
{
129
134
bar_group4 bar4;
135
+ #ifndef SIGCXX_DISABLE_DEPRECATED
130
136
sl1 = sigc::track_obj (Functor1 (bar4), bar4);
137
+ #else
138
+ sl1 = sigc::track_object (Functor1 (bar4), bar4);
139
+ #endif
131
140
sl2 = sigc::track_object (Functor1 (bar4), bar4);
132
141
result_stream << sl1 (-2 ) << " , " << sl2 (2 );
133
142
util->check_result (result_stream, " negative, positive" );
@@ -143,7 +152,11 @@ int main(int argc, char* argv[])
143
152
auto psl4 = new sigc::slot<std::string, int , std::string>;
144
153
bar_group4* pbar4 = new bar_group4;
145
154
book* pbook4 = new book (" A Book" );
155
+ #ifndef SIGCXX_DISABLE_DEPRECATED
146
156
*psl3 = sigc::track_obj (Functor2 (*pbar4, *pbook4), *pbar4, *pbook4);
157
+ #else
158
+ *psl3 = sigc::track_object (Functor2 (*pbar4, *pbook4), *pbar4, *pbook4);
159
+ #endif
147
160
*psl4 = sigc::track_object (Functor2 (*pbar4, *pbook4), *pbar4, *pbook4);
148
161
result_stream << (*psl3)(0 , " Book title: " ) << " , " << (*psl4)(1 , " Title: " );
149
162
util->check_result (result_stream, " zero, Book title: A Book, positive, Title: A Book" );
@@ -170,8 +183,13 @@ int main(int argc, char* argv[])
170
183
{
171
184
book guest_book (" karl" );
172
185
// sl1 = [&guest_book](std::ostringstream& stream){ stream << guest_book << "\n"; }; // no auto-disconnect
186
+ #ifndef SIGCXX_DISABLE_DEPRECATED
173
187
sl11 = sigc::track_obj (
174
188
[&guest_book](std::ostringstream& stream) { stream << guest_book; }, guest_book);
189
+ #else
190
+ sl11 = sigc::track_object (
191
+ [&guest_book](std::ostringstream& stream) { stream << guest_book; }, guest_book);
192
+ #endif
175
193
sl12 = sigc::track_object (
176
194
[&guest_book](std::ostringstream& stream) { stream << guest_book; }, guest_book);
177
195
sl11 (result_stream);
@@ -191,8 +209,12 @@ int main(int argc, char* argv[])
191
209
book guest_book (" karl" );
192
210
// sl2 = [&guest_book] () { egon(guest_book); }; // no auto-disconnect
193
211
// sl2 = std::bind(&egon, std::ref(guest_book)); // does not compile (gcc 4.6.3)
212
+ #ifndef SIGCXX_DISABLE_DEPRECATED
194
213
sl21 = sigc::track_obj ([&guest_book]() { egon (guest_book); }, guest_book);
195
- sl22 = sigc::track_obj ([&guest_book]() { egon (guest_book); }, guest_book);
214
+ #else
215
+ sl21 = sigc::track_object ([&guest_book]() { egon (guest_book); }, guest_book);
216
+ #endif
217
+ sl22 = sigc::track_object ([&guest_book]() { egon (guest_book); }, guest_book);
196
218
sl21 ();
197
219
sl22 ();
198
220
util->check_result (result_stream, " egon(string 'karl')egon(string 'egon was here')" );
@@ -217,7 +239,11 @@ int main(int argc, char* argv[])
217
239
// disconnected automatically if some_bar goes out of scope
218
240
// some_signal.connect([&some_bar](){ foo_group4(some_bar); }); // no auto-disconnect
219
241
// some_signal.connect(sigc::bind(&foo_group4, std::ref(some_bar))); // auto-disconnects, but we prefer C++11 lambda
242
+ #ifndef SIGCXX_DISABLE_DEPRECATED
220
243
some_signal.connect (sigc::track_obj ([&some_bar](){ foo_group4 (some_bar); }, some_bar));
244
+ #else
245
+ some_signal.connect (sigc::track_object ([&some_bar](){ foo_group4 (some_bar); }, some_bar));
246
+ #endif
221
247
some_signal.connect (sigc::track_object ([&some_bar](){ foo_group4 (some_bar); }, some_bar));
222
248
some_signal.emit ();
223
249
util->check_result (result_stream, " foo_group4(bar_group4&)foo_group4(bar_group4&)" );
0 commit comments