proxygen
composition_3.cpp File Reference
#include <algorithm>
#include <cassert>
#include <iostream>
#include <vector>
#include <folly/experimental/pushmi/o/defer.h>
#include <folly/experimental/pushmi/o/share.h>
#include <folly/experimental/pushmi/o/just.h>
#include <folly/experimental/pushmi/o/tap.h>

Go to the source code of this file.

Functions

auto defer_execution ()
 
auto defer_construction ()
 
auto eager_execution ()
 
int main ()
 

Function Documentation

auto defer_construction ( )

Definition at line 42 of file composition_3.cpp.

References folly::pushmi::operators::defer, and defer_execution().

Referenced by main().

42  {
43  return op::defer([] { return defer_execution(); });
44 }
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::operators::defer_fn defer
auto defer_execution()
auto defer_execution ( )

Definition at line 36 of file composition_3.cpp.

References folly::pushmi::operators::just, and folly::pushmi::operators::tap.

Referenced by defer_construction(), eager_execution(), and main().

36  {
37  printf("construct just\n");
38  return op::just(42) | op::tap([](int v) { printf("just - %d\n", v); });
39 }
PUSHMI_INLINE_VAR constexpr detail::tap_fn tap
Definition: tap.h:126
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::operators::just_fn just
auto eager_execution ( )

Definition at line 47 of file composition_3.cpp.

References defer_execution().

Referenced by main().

47  {
48  return defer_execution() | op::share<int>();
49 }
auto defer_execution()
int main ( void  )

Definition at line 51 of file composition_3.cpp.

References defer_construction(), defer_execution(), eager_execution(), and submit.

51  {
52  printf("\ncall defer_execution\n");
53  auto de = defer_execution();
54  printf("submit defer_execution\n");
55  de | op::submit();
56  // call defer_execution
57  // construct just
58  // submit defer_execution
59  // just - 42
60 
61  printf("\ncall defer_construction\n");
62  auto dc = defer_construction();
63  printf("submit defer_construction\n");
64  dc | op::submit();
65  // call defer_construction
66  // submit defer_construction
67  // construct just
68  // just - 42
69 
70  printf("\ncall eager_execution\n");
71  auto ee = eager_execution();
72  printf("submit eager_execution\n");
73  ee | op::submit();
74  // call eager_execution
75  // construct just
76  // just - 42
77  // submit eager_execution
78 
79  std::cout << "OK" << std::endl;
80  // OK
81 }
auto defer_construction()
auto eager_execution()
auto defer_execution()