q66
493f31fabf
make coroutines immovable (moving invalidates inside pointers)
...
If you move a coroutine, all references to the coroutine from
inside of it become invalid, including e.g. yielders. Therefore,
make coroutines immovable to prevent weird bugs...
but also, make the guts of coroutine context a bit more move
friendly (like, do not change current status after context switch
and always do it outside), in case a solution is found in the
future.
2018-04-21 22:39:07 +02:00
q66
77814ca08f
fix coroutine resume
2018-04-21 19:06:32 +02:00
q66
51d7a62bee
eliminate -Wweak-vtables warnings
2018-01-05 22:48:38 +01:00
q66
723c06c612
various warning fixes with -Weverything
2018-01-03 17:13:38 +01:00
q66
67525af4e5
gcc/libstdc++ 7.x fixes
2017-11-03 12:56:34 +01:00
q66
2ce488002a
use <> for includes everywhere
2017-06-19 16:59:36 +02:00
q66
9be0ad2a0e
simplify example a bit more
2017-05-03 02:31:26 +02:00
q66
d6a2a3f07c
include all examples in generated docs
2017-05-03 02:14:27 +02:00
q66
c0421b721b
no need to create generator iterator from generator ranges
2017-04-17 16:17:18 +02:00
q66
1619dac782
remove range difference type (unused)
2017-04-16 17:23:09 +02:00
q66
c1e17617cb
hide generator range too
2017-04-14 03:45:06 +02:00
q66
09c3c02c33
doc cleanups
2017-04-12 19:12:09 +02:00
q66
1525edf3d7
type/include cleanup
2017-04-09 16:44:45 +02:00
q66
4a7baa40a0
remove types.hh
2017-04-04 00:30:07 +02:00
q66
b1c9a0d196
more doc fixes
2017-04-03 18:17:47 +02:00
q66
08bd63d773
doc cleanups
2017-04-03 18:11:24 +02:00
q66
d99768de96
remove equals_ stuff
2017-03-31 03:39:28 +02:00
q66
90af651f24
document thread pool
2017-03-29 20:41:53 +02:00
q66
32110bcb9f
simplify range-for-only iterators using relaxed c++17 rules
2017-03-28 23:58:44 +02:00
q66
049c4b8c47
document coroutines
2017-03-28 22:21:38 +02:00
q66
94915ee5fc
merge coroutine context into coroutine.hh
2017-03-28 18:59:16 +02:00
q66
422a65cade
actually free coroutine stacks in dtor (more predictable and safer)
2017-03-22 22:38:48 +01:00
q66
06fbdc7419
remove coroutine_type, but keep public context
2017-03-17 02:46:24 +01:00
q66
959f319318
type inspection support on coroutines (with context as common base type)
2017-03-17 02:38:37 +01:00
q66
75e4ac1cb7
unnecessary template keyword
2017-03-17 02:16:06 +01:00
q66
043e38601f
instantiate yielder at point of func call
2017-03-17 01:14:56 +01:00
q66
f8b7275d5f
get rid of some index sequences
2017-03-17 01:11:30 +01:00
q66
a30e0ae639
move p_func into p_stor
2017-03-17 01:02:33 +01:00
q66
58a11a3415
make storage for args/result a standalone object
2017-03-17 00:48:11 +01:00
q66
23493c49af
do not decay; breaks const type inputs
2017-03-16 23:40:00 +01:00
q66
0a0fe27317
better generator yield/value storage semantics
2017-03-16 23:25:59 +01:00
q66
cf568c6f30
get rid of arg_wrapper, use lightweight storage for results
2017-03-13 20:18:35 +01:00
q66
64380bda53
use pointers to store coro args with perfect forwarding (guaranteed to be alive until resume return)
2017-03-13 19:32:56 +01:00
q66
c89953c11f
coro args/results don't need to be default constructible
2017-03-13 19:01:44 +01:00
q66
ea9ac2e5c6
add the same iterators to generator_range
2017-03-13 18:50:44 +01:00
q66
b63729641b
auto unwind in coroutine_context (no manual dtor), clean up generator
2017-03-13 17:29:48 +01:00
q66
f1341b913c
unify context_call between coroutines and generators
2017-03-12 16:54:49 +01:00
q66
b2a71d773d
stack cleanups
2017-03-11 18:39:46 +01:00
q66
c07f7d5ddc
correct noexcept in coroutine.hh
2017-03-11 18:30:08 +01:00
q66
88e6fe3906
revert the stack freeing method (can be achieved via stack allocator)
2017-03-11 18:24:55 +01:00
q66
20f57dad9b
dealloc stacks in destructor (allows stack reuse)
2017-03-11 17:57:04 +01:00
q66
0185fa7c12
coroutine fixes/cleanups, remove INIT state (can be checked better)
2017-03-11 17:23:50 +01:00
q66
8c6e7d8bf7
add a generic way to get an yielder for a coroutine/generator
2017-03-11 14:51:55 +01:00
q66
9c9221822a
directly iterable generators
2017-03-11 14:16:47 +01:00
q66
058efff580
coroutine cleanups
2017-03-11 03:53:41 +01:00
q66
2cf818a67b
make generators autostart
2017-03-11 02:17:59 +01:00
q66
935e1bc337
yielder revamp, separate generators without having to return
2017-03-11 02:12:43 +01:00
q66
81feac59d1
add separate protected and unprotected stack allocators, use unprotected by default
2017-03-08 02:16:24 +01:00
q66
48d039aea0
initial support for stack allocator objects
2017-03-08 02:06:56 +01:00
q66
7d0778cf0a
kill coroutine stack from entrypoint instead of destructor
2017-03-08 01:43:41 +01:00