52#define cr_begin(type, ...) \
54 return [=](__VA_ARGS__) mutable -> type { \
66#define cr_yield(value) \
81#define cr_return(value) \
86 throw console::StopIteration("StopIteration"); \
97#define cr_throw(exception) \
102 throw console::StopIteration("StopIteration"); \
117 throw console::StopIteration("StopIteration"); \
145 std::shared_ptr<std::function<Ret()>>
coro;
156 coro(std::make_shared<std::function<Ret()>>(std::move(f))) {}
251 std::shared_ptr<std::function<Ret &()>>
coro;
262 coro(std::make_shared<std::function<Ret &()>>(std::move(f))) {}
349 template <
class Ret,
class... Args>
352 std::function<Ret(Args...)>
coro;
368 template <
class... Args_>
370 return coro(std::forward<Args_>(args)...);
std::shared_ptr< std::function< Ret &()> > coro
底层协程函数 (由宏生成的 lambda)。
Definition coroutine.h:251
reference operator*()
解引用操作符,返回当前缓存值。
Definition coroutine.h:288
Coroutine end()
返回自身作为范围 for 的结束哨兵迭代器。
Definition coroutine.h:339
bool operator==(const Coroutine &)
相等比较。
Definition coroutine.h:322
std::input_iterator_tag iterator_category
迭代器类别 (输入迭代器)。
Definition coroutine.h:280
Ret * ptr
引用位置,结束后为 nullptr。
Definition coroutine.h:253
Coroutine operator++(int)
后置自增,推进协程。
Definition coroutine.h:311
Ret * pointer
指针类型。
Definition coroutine.h:276
bool operator!=(const Coroutine &)
不相等比较。
Definition coroutine.h:331
Ret & reference
引用类型。
Definition coroutine.h:278
ptrdiff_t difference_type
差值类型。
Definition coroutine.h:274
Ret value_type
值类型。
Definition coroutine.h:272
Ret & operator()()
直接调用协程,取下一个产出值。
Definition coroutine.h:269
Coroutine & operator++()
前置自增,推进协程。
Definition coroutine.h:298
Coroutine(F f)
从可调用对象构造协程迭代器。
Definition coroutine.h:261
Coroutine begin()
返回自身作为范围 for 的起始迭代器。
Definition coroutine.h:337
Coroutine & operator++()
前置自增,推进协程。
Definition coroutine.h:192
std::shared_ptr< std::function< Ret()> > coro
底层协程函数 (由宏生成的 lambda)。
Definition coroutine.h:145
Coroutine(F f)
从可调用对象构造协程迭代器。
Definition coroutine.h:155
Ret operator()()
直接调用协程,取下一个产出值。
Definition coroutine.h:163
bool operator!=(const Coroutine &)
不相等比较。
Definition coroutine.h:228
Coroutine begin()
返回自身作为范围 for 的起始迭代器。
Definition coroutine.h:234
Coroutine operator++(int)
后置自增,推进协程。
Definition coroutine.h:208
Ret value_type
值类型。
Definition coroutine.h:166
value_type reference
引用类型 (事实上是值类型)。
Definition coroutine.h:172
value_type * pointer
指针类型。
Definition coroutine.h:170
bool operator==(const Coroutine &)
相等比较。
Definition coroutine.h:219
std::input_iterator_tag iterator_category
迭代器类别 (输入迭代器)。
Definition coroutine.h:174
ptrdiff_t difference_type
差值类型。
Definition coroutine.h:168
value_type operator*()
解引用操作符,返回当前缓存值。
Definition coroutine.h:182
std::shared_ptr< Ret > ptr
缓存当前产出值;协程结束后为 nullptr。
Definition coroutine.h:147
Coroutine end()
返回自身作为范围 for 的结束哨兵迭代器。
Definition coroutine.h:236
Ret operator()(Args_ &&...args)
调用协程并获取产出值。
Definition coroutine.h:369
Coroutine(F &&f)
从可调用对象构造带参协程。
Definition coroutine.h:360
std::function< Ret(Args...)> coro
底层协程函数 (由宏生成的 lambda)。
Definition coroutine.h:352
协程/生成器包装器。
Definition coroutine.h:131
表示试图对已结束的生成器调用 next()。
Definition csexc.h:174
StopIteration(const std::string &msg)
构造 StopIteration。
Definition csexc.h:180
定义 console 库使用的自定义异常类层次结构。