Daniel Kolesa
a4523027c2
format doc fixes
2017-04-03 17:53:41 +02:00
Daniel Kolesa
d4edd42596
detailed docs for format module
2017-04-02 18:24:30 +02:00
Daniel Kolesa
6d0c0a91f4
document context_stack.hh
2017-04-02 15:11:22 +02:00
Daniel Kolesa
f2a78ad589
guaranteed single-argument slice
2017-04-01 16:49:38 +02:00
Daniel Kolesa
fe4d7a553a
remove pop_front_n/pop_back_n from direct definition
2017-04-01 01:07:30 +02:00
Daniel Kolesa
d99768de96
remove equals_ stuff
2017-03-31 03:39:28 +02:00
Daniel Kolesa
dc7c124069
remove distance_ stuff
2017-03-31 03:36:40 +02:00
Daniel Kolesa
8f70b60484
remove range push_ stuff
2017-03-31 03:34:35 +02:00
Daniel Kolesa
6ddb0f1b17
remove the range half stuff for now
2017-03-31 03:28:18 +02:00
Daniel Kolesa
1bd12fda04
use @brief
2017-03-30 00:38:43 +02:00
Daniel Kolesa
d5f2f7f6b7
document generic_condvar
2017-03-30 00:36:51 +02:00
Daniel Kolesa
90af651f24
document thread pool
2017-03-29 20:41:53 +02:00
Daniel Kolesa
32110bcb9f
simplify range-for-only iterators using relaxed c++17 rules
2017-03-28 23:58:44 +02:00
Daniel Kolesa
049c4b8c47
document coroutines
2017-03-28 22:21:38 +02:00
Daniel Kolesa
94915ee5fc
merge coroutine context into coroutine.hh
2017-03-28 18:59:16 +02:00
Daniel Kolesa
ca40fb1e0c
document concurrency
2017-03-27 21:49:55 +02:00
Daniel Kolesa
cca5a12755
some initial documentation
2017-03-27 18:51:50 +02:00
Daniel Kolesa
b86b7f9b29
allow setting the thread count for coroutine scheduler
2017-03-26 14:38:57 +02:00
Daniel Kolesa
cdf3875b81
custom stack allocator support for start where available
2017-03-25 17:52:11 +01:00
Daniel Kolesa
b02521ac19
only lock for stack manipulation with potentially unsafe allocators
2017-03-25 15:13:21 +01:00
Daniel Kolesa
9fc3d70fe3
lock when allocating/deallocating/reserving stacks in a threaded env
2017-03-25 15:09:53 +01:00
Daniel Kolesa
ed9f7c8949
add wrapper methods to reserve more stacks to existing schedulers
2017-03-25 15:04:28 +01:00
Daniel Kolesa
b1d95faa41
make it possible to provide custom stack allocator types to schedulers
2017-03-25 15:01:14 +01:00
Daniel Kolesa
f93b08a924
implement stack pool's interface on regular stack allocators
2017-03-25 14:50:16 +01:00
Daniel Kolesa
1826511187
make it possible to allocate coroutines/generators with scheduler
2017-03-25 14:22:52 +01:00
Daniel Kolesa
73c4dd6cbf
yields are noexcept
2017-03-24 15:56:16 +01:00
Daniel Kolesa
c1e0ae56ac
prevent starting of another scheduler if one is already running
2017-03-24 15:52:40 +01:00
Daniel Kolesa
f79236e94f
make full spawn/make_channel methods on base scheduler
2017-03-24 15:31:41 +01:00
Daniel Kolesa
a1974ddf45
clean up the helper funcs
2017-03-24 15:24:07 +01:00
Daniel Kolesa
c96d64e5ba
remove the scheduler iface nonsense (just make a virtual base)
2017-03-24 15:18:41 +01:00
Daniel Kolesa
a4a524b29d
remove the _in suffixes (not actually necessary)
2017-03-24 14:25:13 +01:00
Daniel Kolesa
9ab5f03612
remove template arg
2017-03-23 17:52:14 +01:00
Daniel Kolesa
a04db12d49
dispatch directly from start when using bscs
2017-03-23 15:25:23 +01:00
Daniel Kolesa
023af03361
spawn/make_channel/yield without explicitly specifying scheduler
2017-03-23 11:35:23 +01:00
Daniel Kolesa
147b8d8042
non-template spawn
2017-03-23 10:56:21 +01:00
Daniel Kolesa
d73ad08e87
make channels outside of scheduler
2017-03-23 10:41:13 +01:00
Daniel Kolesa
47145f0431
make the generic condvar public
2017-03-23 10:25:24 +01:00
Daniel Kolesa
45e65d7ec7
unified single-type interface for channels
2017-03-23 03:17:09 +01:00
Daniel Kolesa
0e24dcd1c4
nested coroutine example + use stackpool for dispatcher in bscs
2017-03-23 00:40:42 +01:00
Daniel Kolesa
422a65cade
actually free coroutine stacks in dtor (more predictable and safer)
2017-03-22 22:38:48 +01:00
Daniel Kolesa
1351ac14f6
fix lockups when a condvar signals while a task is being blocked
2017-03-22 20:01:37 +01:00
Daniel Kolesa
66758fa1df
only put task to the waitlist after it's yielded
2017-03-22 19:00:36 +01:00
Daniel Kolesa
cd5bc965bd
use csched_task for both coroutine schedulers
2017-03-22 18:44:06 +01:00
Daniel Kolesa
18cfe5119f
track current task for coroutine scheduler separately
2017-03-22 18:23:29 +01:00
Daniel Kolesa
bffc917f46
use a custom coroutine type for tasks
2017-03-22 17:58:34 +01:00
Daniel Kolesa
2537d955d1
fixes, bigger stack for main task, take spawn funcs by value
2017-03-22 17:32:58 +01:00
Daniel Kolesa
c1a1c4a1ac
fix issues with coroutine scheduler threads locking up
2017-03-21 19:49:06 +01:00
Daniel Kolesa
307123fd35
revert the threadpool split (wasn't used in the end)
2017-03-21 00:29:38 +01:00
Daniel Kolesa
c120f49634
implement an M:N thread/coroutine scheduler
2017-03-21 00:28:38 +01:00
Daniel Kolesa
a080a17d00
separate thread pool into two structures
...
the internal one will also be used in parallel coroutine scheduler
2017-03-20 18:42:54 +01:00
Daniel Kolesa
367d2b8b31
lightweight backing for thread_pool tasks (no shared_ptr)
2017-03-20 04:12:44 +01:00
Daniel Kolesa
c1c68fb339
always use packaged_task for thread_pool push
2017-03-20 03:11:59 +01:00
Daniel Kolesa
e50a86f339
it's not needed/desirable to hold onto the lock while notifying
2017-03-20 02:44:38 +01:00
Daniel Kolesa
23652409f6
use lock_guard where possible
2017-03-20 02:35:50 +01:00
Daniel Kolesa
e7855faeb1
add a way to reserve more stacks in stack_pool
2017-03-20 02:12:49 +01:00
Daniel Kolesa
5e2891c806
make dispatcher a coroutine (that way main can do its thing)
2017-03-19 23:36:29 +01:00
Daniel Kolesa
cef3c96bdb
use stack pool for coroutine scheduler
2017-03-19 20:02:09 +01:00
Daniel Kolesa
d35e8b6341
channel api cleanup
2017-03-19 19:35:00 +01:00
Daniel Kolesa
94d72b693e
remove split stack support (not portable or available on Windows)
2017-03-19 19:11:54 +01:00
Daniel Kolesa
c123e98178
some universal funcs for working with schedulers
2017-03-19 18:12:08 +01:00
Daniel Kolesa
9a9466e943
make channels copyable (referring to a shared state)
2017-03-19 16:23:00 +01:00
Daniel Kolesa
9ad7fe76c4
add a simple coroutine scheduler that multiplexes tasks onto a single thread
2017-03-19 14:11:23 +01:00
Daniel Kolesa
9f6d8da9db
allow return of value from scheduler start
2017-03-18 20:04:22 +01:00
Daniel Kolesa
f07eefaf5a
thread_pool push result type fix
2017-03-18 20:02:03 +01:00
Daniel Kolesa
795234c476
do the same with the returning version
2017-03-18 18:53:57 +01:00
Daniel Kolesa
3462703b3a
only bind when args are passed
2017-03-18 18:50:23 +01:00
Daniel Kolesa
35cda8872e
add a thread pool impl
2017-03-18 18:34:13 +01:00
Daniel Kolesa
b4b7224dd0
initial skeleton for concurrency module
2017-03-18 01:05:10 +01:00
Daniel Kolesa
0da22e777d
add a way to retrieve the current coroutine context
2017-03-17 03:04:15 +01:00
Daniel Kolesa
06fbdc7419
remove coroutine_type, but keep public context
2017-03-17 02:46:24 +01:00
Daniel Kolesa
959f319318
type inspection support on coroutines (with context as common base type)
2017-03-17 02:38:37 +01:00
Daniel Kolesa
75e4ac1cb7
unnecessary template keyword
2017-03-17 02:16:06 +01:00
Daniel Kolesa
043e38601f
instantiate yielder at point of func call
2017-03-17 01:14:56 +01:00
Daniel Kolesa
f8b7275d5f
get rid of some index sequences
2017-03-17 01:11:30 +01:00
Daniel Kolesa
a30e0ae639
move p_func into p_stor
2017-03-17 01:02:33 +01:00
Daniel Kolesa
58a11a3415
make storage for args/result a standalone object
2017-03-17 00:48:11 +01:00
Daniel Kolesa
23493c49af
do not decay; breaks const type inputs
2017-03-16 23:40:00 +01:00
Daniel Kolesa
0a0fe27317
better generator yield/value storage semantics
2017-03-16 23:25:59 +01:00
Daniel Kolesa
f4d3382617
allow custom condition variable types in channels
2017-03-16 01:16:03 +01:00
Daniel Kolesa
ce155190e0
do not store the allocator/stack pointer directly, also call stack allocator dtor
2017-03-15 01:19:01 +01:00
Daniel Kolesa
78d6a23ad3
align the stack pointer by 16 bytes
2017-03-15 00:59:26 +01:00
Daniel Kolesa
bdb95567e4
implement a stack pool (allocates a chunk of stacks, gives out as requested)
2017-03-14 19:34:05 +01:00
Daniel Kolesa
5e956ad0ce
remove include
2017-03-14 01:48:21 +01:00
Daniel Kolesa
783057a3a3
add initial basic implementation for channels
2017-03-14 01:46:58 +01:00
Daniel Kolesa
cf568c6f30
get rid of arg_wrapper, use lightweight storage for results
2017-03-13 20:18:35 +01:00
Daniel Kolesa
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
Daniel Kolesa
c89953c11f
coro args/results don't need to be default constructible
2017-03-13 19:01:44 +01:00
Daniel Kolesa
ea9ac2e5c6
add the same iterators to generator_range
2017-03-13 18:50:44 +01:00
Daniel Kolesa
b63729641b
auto unwind in coroutine_context (no manual dtor), clean up generator
2017-03-13 17:29:48 +01:00
Daniel Kolesa
c2b82771f9
hide internal coroutine_context funcs from the rest
2017-03-12 16:58:33 +01:00
Daniel Kolesa
f1341b913c
unify context_call between coroutines and generators
2017-03-12 16:54:49 +01:00
Daniel Kolesa
de45dd2e80
do stacksize clamp in ctor
2017-03-11 18:41:03 +01:00
Daniel Kolesa
b2a71d773d
stack cleanups
2017-03-11 18:39:46 +01:00
Daniel Kolesa
c07f7d5ddc
correct noexcept in coroutine.hh
2017-03-11 18:30:08 +01:00
Daniel Kolesa
88e6fe3906
revert the stack freeing method (can be achieved via stack allocator)
2017-03-11 18:24:55 +01:00
Daniel Kolesa
20f57dad9b
dealloc stacks in destructor (allows stack reuse)
2017-03-11 17:57:04 +01:00
Daniel Kolesa
0185fa7c12
coroutine fixes/cleanups, remove INIT state (can be checked better)
2017-03-11 17:23:50 +01:00
Daniel Kolesa
8c6e7d8bf7
add a generic way to get an yielder for a coroutine/generator
2017-03-11 14:51:55 +01:00
Daniel Kolesa
64e699a2d2
implement more compares to make range halves conformant random/bidirectional iterators
2017-03-11 14:24:41 +01:00
Daniel Kolesa
9c9221822a
directly iterable generators
2017-03-11 14:16:47 +01:00
Daniel Kolesa
058efff580
coroutine cleanups
2017-03-11 03:53:41 +01:00
Daniel Kolesa
2cf818a67b
make generators autostart
2017-03-11 02:17:59 +01:00
Daniel Kolesa
935e1bc337
yielder revamp, separate generators without having to return
2017-03-11 02:12:43 +01:00
Daniel Kolesa
b86df5c016
move over to standard filesystem module (from std::experimental or std)
2017-03-10 18:31:34 +01:00
Daniel Kolesa
52da0ab7ae
windows fixes
2017-03-10 03:05:05 +01:00
Daniel Kolesa
afd086b2a0
move some more bits into impl files
2017-03-09 19:21:01 +01:00
Daniel Kolesa
5fafcdf954
move the stack alloc impl bits into a source file
2017-03-09 01:00:47 +01:00
Daniel Kolesa
fb592f8c2c
shove the stack alloc stuff into detail:: (for potential reuse elsewhere)
2017-03-09 00:25:51 +01:00
Daniel Kolesa
8e97f7fdfd
separate stack stuff into its own file, add support for segmented stacks on POSIX+gcc/clang
2017-03-08 18:11:39 +01:00
Daniel Kolesa
81feac59d1
add separate protected and unprotected stack allocators, use unprotected by default
2017-03-08 02:16:24 +01:00
Daniel Kolesa
48d039aea0
initial support for stack allocator objects
2017-03-08 02:06:56 +01:00
Daniel Kolesa
7d0778cf0a
kill coroutine stack from entrypoint instead of destructor
2017-03-08 01:43:41 +01:00
Daniel Kolesa
1d5c98f830
add valgrind support to coroutine code
2017-03-08 00:52:31 +01:00
Daniel Kolesa
4987fd568d
windows typo fix
2017-03-07 22:55:05 +01:00
Daniel Kolesa
c526f12b81
use malloc on systems without MAP_ANON/ANONYMOUS (they're not in POSIX)
2017-03-07 22:48:44 +01:00
Daniel Kolesa
58206da3b4
use mmap to allocate stack on POSIX, VirtualAlloc on Windows
2017-03-07 22:39:17 +01:00
Daniel Kolesa
661393f9c5
some initial stack alloc/free funcs
2017-03-07 21:53:16 +01:00
Daniel Kolesa
3145ebe0c9
move coroutine context stuff to a separate file
2017-03-07 21:29:12 +01:00
Daniel Kolesa
e97e70b427
constructor cleanup, const correctness, swap fixes, explicit bool, comments
2017-03-07 17:39:40 +01:00
Daniel Kolesa
483ec9df3b
only initialize the context with a valid function
2017-03-07 02:19:25 +01:00
Daniel Kolesa
573c001786
put coroutine_context in detail and inherit from it
2017-03-07 02:07:13 +01:00
Daniel Kolesa
248acbeac5
use p_func to check finished status (no separate bool)
2017-03-07 01:25:56 +01:00
Daniel Kolesa
7ba1f9265b
make value-returning no-argument coroutines iterable
2017-03-06 19:01:17 +01:00
Daniel Kolesa
64d92743e4
only pass yield to coroutines, make them movable and swappable, improve examples
2017-03-06 18:38:50 +01:00
Daniel Kolesa
9a194343f3
operator bool on coroutine should be inverse
2017-03-06 02:09:52 +01:00
Daniel Kolesa
a4e17e22c7
fix coroutine + initial proof of concept generator (bad impl)
2017-03-06 00:47:15 +01:00
Daniel Kolesa
1f946bff50
forwarding of coroutine args/results
2017-03-05 23:49:20 +01:00
Daniel Kolesa
34a434ab53
move helpers to coro_base
2017-03-05 23:07:00 +01:00
Daniel Kolesa
5c209872b5
fix narrowing
2017-03-05 21:56:41 +01:00
Daniel Kolesa
ed514c28a6
specialize coroutines for zero args
2017-03-05 20:11:39 +01:00
Daniel Kolesa
d369bb4b8a
use generic arg so we can construct coroutines from lambdas using =
2017-03-05 19:50:25 +01:00
Daniel Kolesa
1bb2dffc63
return the arg directly from yield with single-arg coroutines
2017-03-05 19:45:26 +01:00
Daniel Kolesa
2a842ef9da
reimplement coroutine using the new fcontext assembly
2017-03-05 16:48:44 +01:00
Daniel Kolesa
8ecaa338bc
add initial coroutine module (slow ucontext_t, POSIX only, WiP)
2017-03-04 18:25:33 +01:00
Daniel Kolesa
d33ca88d0a
fix bug with bool writing in format
2017-03-04 18:24:18 +01:00
Daniel Kolesa
60cc9ee47e
rename standard streams to feel less keywordy
2017-03-04 15:43:53 +01:00
Daniel Kolesa
3c33395fe6
stream write/writef cleanup
2017-03-02 22:52:09 +01:00
Daniel Kolesa
d9a65da5bf
simplify write/writeln
2017-03-02 20:01:01 +01:00
Daniel Kolesa
c93e818247
rvalue reference matching ostd::iter
2017-03-02 19:50:01 +01:00
Daniel Kolesa
22a5640a59
revamped stream errors, add get_line on streams and stream line range
2017-03-02 18:12:00 +01:00
Daniel Kolesa
f13f11f54e
format helper func with locale support
2017-03-01 19:19:46 +01:00
Daniel Kolesa
15d6b0157b
remove detail::fmt_stream_range (not necessary anymore)
2017-02-28 17:22:29 +01:00
Daniel Kolesa
740914d772
copy the item too
2017-02-27 17:55:05 +01:00
Daniel Kolesa
e0574308a0
fully generic stream range (works on any type of stream)
2017-02-27 17:52:52 +01:00
Daniel Kolesa
9f286f88f3
do not use digit grouping for pointers
2017-02-26 04:23:51 +01:00
Daniel Kolesa
2f4f9dd440
prevent overflow when grouping is in place
2017-02-26 03:28:23 +01:00
Daniel Kolesa
7164019e22
locale digit grouping support for integer format
2017-02-26 03:21:26 +01:00
Daniel Kolesa
8be2e1fa56
basic locale awareness in streams (including writef/ln integration)
2017-02-26 02:06:02 +01:00
Daniel Kolesa
db991ca03d
locale-aware format_spec
2017-02-26 01:04:33 +01:00
Daniel Kolesa
98fb0e3e2e
fix escaping for default range print
2017-02-26 00:32:35 +01:00
Daniel Kolesa
ccb0564bfc
clean up range writer
2017-02-26 00:30:07 +01:00
Daniel Kolesa
bd5aa4795c
custom formatting is now done with format_traits
...
Allows definition for any type, even in any foreign namespace.
2017-02-25 19:17:08 +01:00
Daniel Kolesa
e714e5f3fb
add new format flag @, make it escape always (never toggle)
2017-02-25 18:56:41 +01:00
Daniel Kolesa
e90b0868aa
make the dash flag toggle current escaping mode in format
2017-02-25 17:33:18 +01:00
Daniel Kolesa
262e691a4d
fix test runner
2017-02-25 14:56:51 +01:00
Daniel Kolesa
81ccca0e52
ios based formatting of floats (no heap alloc and basic locale awareness)
2017-02-25 04:03:36 +01:00
Daniel Kolesa
602aa7f182
clean up format
2017-02-22 03:32:03 +01:00
Daniel Kolesa
2665c20351
support for precision in integer format
2017-02-21 18:22:25 +01:00
Daniel Kolesa
a23a42da1f
remove ostd::to_string and ostd::concat (both replaced by more flexible format)
2017-02-20 20:43:38 +01:00
Daniel Kolesa
1e1f6d63a2
support for formatting tuples in format strings via %<contents%>
2017-02-20 20:14:26 +01:00
Daniel Kolesa
3f983afae5
support for printing iterable objects and tuples with %s
2017-02-20 19:36:55 +01:00
Daniel Kolesa
3aa5db5b1c
do not implicitly to_string as a fallback in format
2017-02-20 18:31:08 +01:00
Daniel Kolesa
5a76f29dea
revamped format module (more flexible, cleaner api)
2017-02-20 18:04:03 +01:00
Daniel Kolesa
3a82495a4c
cleanups and optimizations
2017-02-19 18:46:43 +01:00
Daniel Kolesa
78e6771148
bounds checking pointer/string ranges
2017-02-19 18:31:08 +01:00
Daniel Kolesa
d6219046be
add range_put_all which can be overloaded with special optimizations
2017-02-19 18:14:09 +01:00
Daniel Kolesa
e4dc237f4d
revamped output ranges and input range pop funcs
2017-02-19 16:45:06 +01:00
Daniel Kolesa
2661ba91ae
add back appender helper funcs, add noop_output_range and counting_output_range
2017-02-18 19:05:03 +01:00
Daniel Kolesa
c22f8e4b7a
remove ostd::min/max/clamp
2017-02-18 17:54:51 +01:00
Daniel Kolesa
468ddd02e2
remove appender func (unnecessary)
2017-02-18 17:25:49 +01:00
Daniel Kolesa
d155f90ceb
range fixes
2017-02-18 16:21:03 +01:00
Daniel Kolesa
2ce3e6496a
clean up range tests
2017-02-18 15:23:57 +01:00
Daniel Kolesa
755429f901
ravamped range traits
2017-02-18 15:05:42 +01:00
Daniel Kolesa
f039fc7ed9
clean up some sfinae and proxy abuse
2017-02-18 14:31:50 +01:00
Daniel Kolesa
0977b35fd2
cleaner array/pointer ctor for string ranges
2017-02-17 17:50:44 +01:00
Daniel Kolesa
8e40841219
update to new style everywhere
2017-02-16 20:49:34 +01:00
Daniel Kolesa
68c19a80fb
update naming style across range module
2017-02-16 20:02:55 +01:00
Daniel Kolesa
3edcafd9a6
rename string range types to new style
2017-02-16 19:07:14 +01:00
Daniel Kolesa
296345f18e
remove leftover template arg
2017-02-15 19:38:27 +01:00
Daniel Kolesa
8190a0db5c
remove bad iter() overload
2017-02-15 19:35:28 +01:00
Daniel Kolesa
c88660a854
standard way to retrieve range type from ranged_traits + minor fixes
2017-02-15 19:18:57 +01:00
Daniel Kolesa
bd307bd52e
standard iter() for any std container type without ranged_traits
2017-02-14 18:32:51 +01:00
Daniel Kolesa
67cbcb71eb
move initializer_list iter/citer to range.hh
2017-02-14 17:44:24 +01:00
Daniel Kolesa
6b3707c0dc
remove PointerRange, IteratorRange completely replaces it
2017-02-14 17:39:03 +01:00
Daniel Kolesa
08e980cd0a
start cleaning up the range system for nicer syntax
2017-02-13 23:33:52 +01:00
Daniel Kolesa
21da5ec3d1
make the pipe op a member to make it to work automagically on user ranges
2017-02-13 21:13:10 +01:00
Daniel Kolesa
6ba3b93018
cleaner pipe operator definition for ranges
2017-02-13 20:43:23 +01:00
Daniel Kolesa
fd6a47c223
re-add zero-argument format impl and fix char_traits usage for const char ranges
2017-02-12 23:02:49 +01:00
Daniel Kolesa
33bab6eb72
fix wrong return type
2017-02-12 22:51:43 +01:00
Daniel Kolesa
667b2d50ea
use size_t for format results
2017-02-11 01:28:14 +01:00
Daniel Kolesa
dc640d2c1e
no need for the other format_impl overload
2017-02-11 01:11:22 +01:00
Daniel Kolesa
13477db869
add a format() overload to format a single spec without a format string + use
2017-02-11 00:18:41 +01:00
Daniel Kolesa
d56a233120
partial cleanup of format module, better error handling
2017-02-10 23:49:00 +01:00
Daniel Kolesa
9ab2093ed4
clean up join range pop/front
2017-02-10 21:06:08 +01:00
Daniel Kolesa
2e773b3849
clean up join/zip ranges with c++17 fold expressions
2017-02-10 20:26:13 +01:00
Daniel Kolesa
d06637eac6
actually use write_bytes directly
2017-02-10 17:48:19 +01:00
Daniel Kolesa
922f19b776
make write(x) equivalent to write("%s", x)
2017-02-10 17:44:06 +01:00
Daniel Kolesa
e1f5cc477f
extend IteratorRange to handle pointers as special case
2017-02-09 23:38:11 +01:00
Daniel Kolesa
052fa58be4
clean up pointer range constructor
2017-02-09 22:55:17 +01:00
Daniel Kolesa
946cf9d3fe
use char_traits in string range types
2017-02-09 21:39:35 +01:00
Daniel Kolesa
2d5c4cab3f
clean up pointer/string ranges
2017-02-09 21:27:20 +01:00
Daniel Kolesa
c5dd6bb8c3
remove obsolete type traits
2017-02-09 20:56:15 +01:00
Daniel Kolesa
ea6d3d4bbf
clean up IteratorRange, use unsigned variant of difference for size
2017-02-09 20:13:52 +01:00
Daniel Kolesa
463c7275d5
use ranged_traits specialization for static arrays
2017-02-09 20:07:10 +01:00
Daniel Kolesa
79809a610b
remove functional.hh
2017-02-08 01:06:50 +01:00
Daniel Kolesa
efa103c362
consistent error msg
2017-02-01 22:42:18 +01:00
Daniel Kolesa
9e87d372de
allow constructing unordered_maps from any 2-tuple range
2017-02-01 22:38:25 +01:00
Daniel Kolesa
407d4a524f
forgot to actually use the new template params
2017-02-01 20:58:54 +01:00
Daniel Kolesa
0842a24cd3
complete template param support for all ranged make_ funcs and ranged_traits
2017-02-01 20:56:29 +01:00
Daniel Kolesa
84f01c1286
remove memory.hh
2017-02-01 20:19:14 +01:00
Daniel Kolesa
3e683a2436
remove silly intermediate ranges for writef, print directly to stream
2017-02-01 19:30:15 +01:00
Daniel Kolesa
077835e4b6
range system fixes, add iterator types to RangeHalf, optimize make_vector(R)
2017-02-01 18:29:42 +01:00
Daniel Kolesa
e0072773e1
remove custom hashtable; no longer necessary
2017-01-31 19:31:55 +01:00
Daniel Kolesa
1f83e8c1b0
cleaner range passing in second version of make_CONTAINER
2017-01-31 19:17:46 +01:00
Daniel Kolesa
fbdaf77b62
std::unordered_map initial range support (no extra template args yet)
2017-01-31 19:11:38 +01:00
Daniel Kolesa
6ec72a6ecd
add IteratorRange to make a range out of any two iterators
2017-01-30 22:07:12 +01:00
Daniel Kolesa
62b0c2ecf7
hash operator() needs to be const
2017-01-30 19:31:24 +01:00
Daniel Kolesa
1abf3bb3ad
remove Maybe (use optional instead)
2017-01-30 19:27:25 +01:00
Daniel Kolesa
0ee0d3231c
use standard types
2017-01-30 19:23:12 +01:00
Daniel Kolesa
2884f4b47b
use size_t and ptrdiff_t
2017-01-30 19:11:49 +01:00
Daniel Kolesa
1db7529ad9
remove custom hashing
2017-01-30 18:56:38 +01:00
Daniel Kolesa
343c684820
initial proper string integration
2017-01-30 01:16:29 +01:00
Daniel Kolesa
632147c5fb
bump compiler
2017-01-29 21:22:40 +01:00
Daniel Kolesa
58a361e6e0
remove ostd::Function after all (never supported allocators properly anyway)
2017-01-29 18:38:37 +01:00
Daniel Kolesa
2c7f98f57e
use standard swap
2017-01-29 15:56:02 +01:00
Daniel Kolesa
a8f7122d45
use standard declval
2017-01-29 15:29:11 +01:00
Daniel Kolesa
a41299505c
use unique_ptr
2017-01-29 15:16:13 +01:00
Daniel Kolesa
71515c5383
actually keep our own function because libstdc++'s has no allocator support
2017-01-28 23:00:05 +01:00
Daniel Kolesa
780f7e5b21
use standard function
2017-01-28 22:46:48 +01:00
Daniel Kolesa
c751275d83
remove remains of tuple headers
2017-01-28 19:39:50 +01:00
Daniel Kolesa
c8c24300ee
fully use standard tuples
2017-01-28 19:06:52 +01:00
Daniel Kolesa
2e7bba2c95
remove Pair, more standard tuple usage etc
2017-01-28 18:52:34 +01:00
Daniel Kolesa
7e96183648
start moving over to standard tuple
2017-01-28 18:30:31 +01:00
Daniel Kolesa
19226d51af
since we can't ADL for std container iter, use different system
...
This introduces ranged_traits structure, which by default works
for things defining .iter(), but also allows you to override it
per type at later stage, which comes in handy for std containers.
This is because we can't extend the std namespace in any way and
we still need to be able to add iterable functionality to std
containers even at later stage than iter() is defined.
2017-01-26 00:27:54 +01:00
Daniel Kolesa
0bf36b679a
iter extensions for std::array
2017-01-25 23:46:48 +01:00
Daniel Kolesa
56a3327dce
use standard vector and move/forward
2017-01-25 01:57:24 +01:00
Daniel Kolesa
27005f1715
remove native ostd threading/atomic stuff (just use c++11 ones)
2017-01-24 00:35:07 +01:00
Daniel Kolesa
41ad273c32
std allowed by default
2017-01-14 15:09:27 +01:00
Daniel Kolesa
32cd56d3c1
linux/gcc fixes
2017-01-09 17:58:40 +01:00
Daniel Kolesa
1eb3db64f0
use implicit ctor
2016-11-16 19:09:19 +01:00
Daniel Kolesa
c450600097
add type trait to check type size in bits
2016-11-15 22:51:15 +01:00
Daniel Kolesa
e7c6032edb
add initial numeric limits implementation (type-generic min/max/etc)
2016-11-15 22:46:03 +01:00
Daniel Kolesa
9e609e0057
rename disown to release (consistent with other places)
2016-09-18 19:30:55 +02:00
Daniel Kolesa
9251fb506f
remove unneeded code
2016-09-18 19:22:54 +02:00
Daniel Kolesa
9d174013e6
fix
2016-09-11 21:21:07 +02:00
Daniel Kolesa
519c9c7624
more noexcept and readme note
2016-09-11 21:20:03 +02:00
Daniel Kolesa
1586cedd17
noexcept for memory.hh
2016-09-11 20:46:53 +02:00
Daniel Kolesa
70a2b88898
allow non-static methods to be bound to Function
2016-09-11 19:57:42 +02:00
Daniel Kolesa
462e6f0659
new ostd::Function implementation (cleaner with better allocator awareness including stateful allocators)
2016-09-11 17:58:16 +02:00
Daniel Kolesa
f26cf02277
more internal traits for later use + cleaned ResultOf
2016-09-11 16:26:36 +02:00
Daniel Kolesa
211961cc31
implement piecewise construction for Pair/CompressedPair
2016-09-11 14:08:56 +02:00
Daniel Kolesa
7f2e5f67d4
fix
2016-09-06 19:55:17 +02:00
Daniel Kolesa
d31101d85e
typo fix
2016-09-02 18:58:24 +01:00
Daniel Kolesa
59ce413ef3
maybe enhancements
2016-09-02 18:52:58 +01:00
Daniel Kolesa
b202cb43ad
typo
2016-09-02 18:20:39 +01:00
Daniel Kolesa
0dc4d5074d
Maybe enhancements
2016-09-02 18:15:46 +01:00
Daniel Kolesa
cd748bd44a
remove unneeded code
2016-09-02 17:21:35 +01:00
Daniel Kolesa
c4039fa56f
add case insensitive string compare
2016-09-02 00:06:13 +01:00
Daniel Kolesa
17365642ef
actually safe string cmp
2016-08-18 00:35:21 +01:00
Daniel Kolesa
c7862243a8
avoid UB in string compare
2016-08-17 18:18:12 +01:00
Daniel Kolesa
7a11157f95
formatting
2016-08-03 16:50:06 +01:00
Daniel Kolesa
d259877fba
typo fix
2016-07-31 20:50:07 +01:00
Daniel Kolesa
8afffc1fb7
refactoring, style updates, various fixes
2016-07-31 20:40:25 +01:00
Daniel Kolesa
88241f5f9e
remove namespace
2016-07-08 19:48:11 +01:00
Daniel Kolesa
115da8be30
use lstat for consistent behavior
2016-07-07 19:46:53 +01:00
Daniel Kolesa
8b7fc0f791
don't alloc path twice
2016-07-07 17:06:57 +01:00
Daniel Kolesa
b02966fb9d
environment api for windows, and rename environ namespace to envvar because windows is retarded
2016-07-06 20:40:43 +02:00
Daniel Kolesa
dd35b0bf05
fix incorrect FindFirstFile logic on Windows
2016-07-06 19:51:39 +02:00
Daniel Kolesa
85d98780ce
windows build warning/error fixes
2016-07-06 19:31:21 +02:00
Daniel Kolesa
0a1b578fcd
ignore some template specializations for systems with no big char builtins
2016-07-06 19:10:17 +02:00
Daniel Kolesa
0c8c16a44a
windows fixes + stdin/stdout/stderr might be defined as macros
2016-07-06 17:05:32 +01:00
Daniel Kolesa
f5a7c19acc
fix invalid cast
2016-07-05 18:27:27 +01:00
Daniel Kolesa
b7a2322990
add nothrow constructible/assignable/destructible type traits (for when user code uses exceptions)
2016-07-03 01:39:13 +01:00
Daniel Kolesa
47ed1a700c
don't use classic style casts
2016-07-02 04:57:23 +01:00
Daniel Kolesa
85b7602654
fix directory stream on Linux as glibc's dirent.h doesn't put . and .. entries to the start
2016-06-28 19:52:37 +01:00
Daniel Kolesa
676f76acee
string element append fix and OS X support note
2016-06-27 19:18:31 +01:00
Daniel Kolesa
7912c24e3a
const syntax refactoring
2016-06-23 19:18:35 +01:00
Daniel Kolesa
430ca81bfd
pass compare func by reference in sort impl (don't copy it around)
2016-05-29 02:41:58 +01:00
Daniel Kolesa
46d8844a49
return fix
2016-05-24 01:30:11 +01:00
Daniel Kolesa
5189bab1af
simplify string operator+= for T
2016-05-22 15:31:11 +01:00
Daniel Kolesa
d9bd0f8380
restrict string operator+ (conflicts with range offset)
2016-05-21 15:36:14 +01:00
Daniel Kolesa
65954f614c
decay map/filter callbacks before storing them
2016-05-09 00:07:25 +01:00
Daniel Kolesa
a5c4b9d3ca
global concat op for strings
2016-05-07 17:25:40 +01:00
Daniel Kolesa
7561d40b14
missed inline
2016-05-04 00:50:52 +01:00
Daniel Kolesa
75e27a14b0
overload rvalue refs to const for tuple
2016-05-02 18:21:54 +01:00
Daniel Kolesa
34cb1f1fbd
forward the tuple to ensure correct get semantics
2016-05-01 00:53:48 +01:00
Daniel Kolesa
f46ffa53fd
forwarding join/zip
2016-05-01 00:34:00 +01:00
Daniel Kolesa
b16e72fa16
convert nearly all algos (except variadic ones) to use perfect forwarding
2016-04-30 19:21:50 +01:00
Daniel Kolesa
ca0dfcd8a4
fix return type
2016-04-30 18:27:53 +01:00
Daniel Kolesa
0f5ed68124
actually need to move things into the lambda or they die
2016-04-30 18:24:17 +01:00
Daniel Kolesa
5dfc54dad9
simplify map/filter
2016-04-30 17:58:37 +01:00
Daniel Kolesa
e33797e571
pipeable foldl/foldr func variant
2016-04-29 17:47:04 +01:00
Daniel Kolesa
fcd0616f4d
fix naming
2016-04-29 17:45:06 +01:00
Daniel Kolesa
551dc8bc15
return range from sort and make it pipeable
2016-04-29 17:34:46 +01:00
Daniel Kolesa
62fdbc74ad
add missing pipeable algorithms and suffix funcs that use comparators
2016-04-29 17:30:32 +01:00
Daniel Kolesa
ab22ba910a
remove mutable where unnecessary + capture join/zip by ref instead of copy
2016-04-27 18:42:51 +01:00
Daniel Kolesa
878476a397
use int for sdl1 mode and report size
2016-04-27 01:18:04 +01:00
Daniel Kolesa
c5a9d535f5
fixes
2016-04-27 01:11:03 +01:00
Daniel Kolesa
e51fe5a348
add an extensions directory and first extension, sdl rwops stream integration
2016-04-27 01:08:59 +01:00
Daniel Kolesa
288526e7db
capture by references more (the objects live long enough to be safe)
2016-04-27 00:29:55 +01:00