5 #if !defined(RXCPP_RX_OPERATORS_HPP) 6 #define RXCPP_RX_OPERATORS_HPP 24 template<
class T,
class =rxu::types_checked>
31 : std::is_convertible<typename T::operator_tag*, tag_operator*>
37 template<
class T,
class Decayed = rxu::decay_t<T>>
44 namespace rxo=operators;
51 typename Tag::template include_header<std::false_type> {
52 return typename Tag::template include_header<std::false_type>();
56 template<
class T,
class...
AN>
59 template<
class T,
class...
AN>
64 decltype(Overload::member(std::forward<AN>(an)...)) {
65 return Overload::member(std::forward<AN>(an)...);
68 template<
class Tag,
class...
AN>
73 using tuple_type = std::tuple<rxu::decay_t<AN>...>;
89 template<
class Observable>
91 -> decltype(rxu::apply(std::tuple_cat(std::make_tuple(tag_type{},
source), (*(tuple_type*)
nullptr)), (*(this_type*)
nullptr))) {
92 return rxu::apply(std::tuple_cat(std::make_tuple(tag_type{},
source), an), *
this);
104 template<
class Included>
106 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-amb.hpp>");
111 template<
class Included>
113 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-all.hpp>");
120 template<
class Included>
122 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-any.hpp>");
130 template<
class Included>
132 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-buffer_count.hpp>");
137 template<
class Included>
139 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-buffer_time.hpp>");
144 template<
class Included>
146 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-buffer_time_count.hpp>");
151 template<
class Included>
153 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-combine_latest.hpp>");
158 template<
class Included>
160 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-concat.hpp>");
165 template<
class Included>
167 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-concat_map.hpp>");
172 template<
class Included>
174 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-connect_forever.hpp>");
179 template<
class Included>
181 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-debounce.hpp>");
186 template<
class Included>
188 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-delay.hpp>");
193 template<
class Included>
195 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-distinct.hpp>");
200 template<
class Included>
202 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-distinct_until_changed.hpp>");
207 template<
class Included>
209 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-element_at.hpp>");
214 template<
class Included>
216 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-filter.hpp>");
221 template<
class Included>
223 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-finally.hpp>");
228 template<
class Included>
230 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-flat_map.hpp>");
235 template<
class Included>
237 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-group_by.hpp>");
242 template<
class Included>
244 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-ignore_elements.hpp>");
249 template<
class Included>
251 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-map.hpp>");
256 template<
class Included>
258 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-merge.hpp>");
262 template<
class Included>
264 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-merge_delay_error.hpp>");
269 template<
class Included>
271 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-multicast.hpp>");
276 template<
class Included>
278 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-observe_on.hpp>");
283 template<
class Included>
285 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-on_error_resume_next.hpp>");
293 std::runtime_error(msg)
297 template<
class Included>
299 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-reduce.hpp>");
310 template<
class Included>
312 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-ref_count.hpp>");
317 template<
class Included>
319 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-pairwise.hpp>");
324 template<
class Included>
326 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-publish.hpp>");
332 template<
class Included>
334 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-repeat.hpp>");
339 template<
class Included>
341 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-replay.hpp>");
346 template<
class Included>
348 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-retry.hpp>");
353 template<
class Included>
355 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-sample_time.hpp>");
360 template<
class Included>
362 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-scan.hpp>");
367 template<
class Included>
369 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-sequence_equal.hpp>");
374 template<
class Included>
376 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-skip.hpp>");
381 template<
class Included>
383 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-skip_while.hpp>");
388 template<
class Included>
390 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-skip_last.hpp>");
395 template<
class Included>
397 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-skip_until.hpp>");
402 template<
class Included>
404 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-start_with.hpp>");
409 template<
class Included>
411 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-subscribe_on.hpp>");
416 template<
class Included>
418 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-switch_if_empty.hpp>");
424 template<
class Included>
426 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-switch_on_next.hpp>");
431 template<
class Included>
433 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-take.hpp>");
438 template<
class Included>
440 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-take_last.hpp>");
445 template<
class Included>
447 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-take_while.hpp>");
452 template<
class Included>
454 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-take_until.hpp>");
459 template<
class Included>
461 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-rap.hpp>");
466 template<
class Included>
468 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-timeout.hpp>");
473 template<
class Included>
475 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-time_interval.hpp>");
480 template<
class Included>
482 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-timestamp.hpp>");
487 template<
class Included>
489 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-window.hpp>");
494 template<
class Included>
496 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-window_time.hpp>");
501 template<
class Included>
503 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-window_time_count.hpp>");
508 template<
class Included>
510 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-window_toggle.hpp>");
515 template<
class Included>
517 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-with_latest_from.hpp>");
522 template<
class Included>
524 static_assert(Included::value,
"missing include: please #include <rxcpp/operators/rx-zip.hpp>");
Definition: rx-operators.hpp:126
Definition: rx-operators.hpp:366
Definition: rx-operators.hpp:171
Definition: rx-operators.hpp:248
Definition: rx-operators.hpp:380
Definition: rx-operators.hpp:143
Subscribe will cause the source observable to emit values to the provided subscriber.
Definition: rx-operators.hpp:387
Definition: rx-operators.hpp:458
Definition: rx-all.hpp:26
empty_error(const std::string &msg)
Definition: rx-operators.hpp:292
typename std::decay< T >::type::value_type value_type_t
Definition: rx-util.hpp:47
operator_factory(tuple_type an)
Definition: rx-operators.hpp:78
Definition: rx-operators.hpp:329
Definition: rx-operators.hpp:444
Definition: rx-operators.hpp:157
Definition: rx-operators.hpp:282
static T value(AN **...)
Definition: rx-operators.hpp:57
auto observable_member(Tag, AN &&... an) -> decltype(Overload::member(std::forward< AN >(an)...))
Definition: rx-operators.hpp:63
Definition: rx-operators.hpp:289
Definition: rx-operators.hpp:69
Definition: rx-operators.hpp:296
Definition: rx-operators.hpp:309
Definition: rx-operators.hpp:352
Definition: rx-operators.hpp:421
Definition: rx-operators.hpp:500
Definition: rx-operators.hpp:394
Definition: rx-operators.hpp:472
Definition: rx-operators.hpp:331
Definition: rx-operators.hpp:234
auto AN
Definition: rx-finally.hpp:105
Definition: rx-operators.hpp:255
static auto member(AN &&...) -> typename Tag::template include_header< std::false_type >
Definition: rx-operators.hpp:50
Definition: rx-operators.hpp:199
Definition: rx-operators.hpp:521
Definition: rx-operators.hpp:345
typename std::decay< T >::type decay_t
Definition: rx-util.hpp:48
Definition: rx-operators.hpp:47
Definition: rx-operators.hpp:373
Definition: rx-operators.hpp:316
Definition: rx-operators.hpp:451
Definition: rx-operators.hpp:304
Definition: rx-operators.hpp:302
Definition: rx-operators.hpp:227
Definition: rx-operators.hpp:241
Definition: rx-operators.hpp:117
Definition: rx-operators.hpp:213
Definition: rx-operators.hpp:430
Definition: rx-operators.hpp:38
Definition: rx-operators.hpp:268
auto operator()(tag_type t, ZN &&... zn) const -> decltype(observable_member(t, std::forward< ZN >(zn)...))
Definition: rx-operators.hpp:84
Definition: rx-operators.hpp:129
Definition: rx-operators.hpp:437
Definition: rx-operators.hpp:359
Definition: rx-operators.hpp:479
Definition: rx-operators.hpp:136
Definition: rx-operators.hpp:206
Definition: rx-operators.hpp:303
T value_type
Definition: rx-operators.hpp:18
Definition: rx-operators.hpp:192
Definition: rx-operators.hpp:103
source
Definition: rx-operators.hpp:91
Definition: rx-operators.hpp:486
Definition: rx-operators.hpp:110
Definition: rx-operators.hpp:57
takes any function that will take a subscriber for this observable and produce a subscriber. this is intended to allow externally defined operators, that use make_subscriber, to be connected into the expression.
Definition: rx-operators.hpp:14
Definition: rx-operators.hpp:307
Definition: rx-operators.hpp:220
Definition: rx-operators.hpp:185
Definition: rx-operators.hpp:465
Definition: rx-operators.hpp:261
Definition: rx-operators.hpp:275
typename types_checked_from< TN... >::type types_checked_t
Definition: rx-util.hpp:176
Definition: rx-operators.hpp:493
Definition: rx-operators.hpp:150
Definition: rx-operators.hpp:338
Definition: rx-operators.hpp:16
auto operator()(Observable source) const -> decltype(rxu::apply(std::tuple_cat(std::make_tuple(tag_type
Definition: rx-operators.hpp:90
Definition: rx-operators.hpp:164
Definition: rx-operators.hpp:323
Definition: rx-operators.hpp:507
Definition: rx-operators.hpp:423
Definition: rx-operators.hpp:119
Definition: rx-operators.hpp:306
Turn a cold observable hot and allow connections to the source to be independent of subscriptions...
Definition: rx-operators.hpp:178
rxu::value_type_t< delayed_type< T, AN... > > delayed_type_t
Definition: rx-operators.hpp:60
tag_operator operator_tag
Definition: rx-operators.hpp:19
takes a connectable_observable source and uses a ref_count of the subscribers to control the connecti...
Definition: rx-operators.hpp:305
Definition: rx-operators.hpp:127
Definition: rx-operators.hpp:415
allows connections to the source to be independent of subscriptions.
Definition: rx-operators.hpp:408
T value_type
Definition: rx-operators.hpp:57
Definition: rx-operators.hpp:401
Definition: rx-operators.hpp:514