Commit Graph

694 Commits (1ade11b936e37ddf567c37f6b75b7a87c6f11260)

Author SHA1 Message Date
Daniel Kolesa 2c62b82ec4 future-like objects representing tasks in concurrency 2017-05-02 21:42:31 +02:00
Daniel Kolesa 94814dc61e remove internal/win32.hh and put environ stuff into a source file 2017-05-02 00:15:01 +02:00
Daniel Kolesa 19badf6140 threaded build.cc 2017-04-30 20:16:49 +02:00
Daniel Kolesa c1e79a4c75 unit tester fixes 2017-04-28 01:54:28 +02:00
Daniel Kolesa 69890906fd move test module to the beginning of the file 2017-04-27 19:06:57 +02:00
Daniel Kolesa 37def859e5 catch all exceptions in unit tester 2017-04-26 23:12:59 +02:00
Daniel Kolesa 27bc7be245 cleanup and document unit test header 2017-04-25 18:48:10 +02:00
Daniel Kolesa b885e57fdb improved threaded test runner 2017-04-24 18:18:10 +02:00
Daniel Kolesa d359e46818 add some basic unit test infra to allow testing together with impl 2017-04-23 17:57:01 +02:00
Daniel Kolesa cc8452e265 remove make_ range helpers for containers (use iter_begin/end) 2017-04-23 15:30:51 +02:00
Daniel Kolesa ef147c538c add complete input iterator type for any range 2017-04-22 17:12:20 +02:00
Daniel Kolesa b1f207bd3b hide appender_range definition 2017-04-17 17:07:24 +02:00
Daniel Kolesa c0421b721b no need to create generator iterator from generator ranges 2017-04-17 16:17:18 +02:00
Daniel Kolesa a743f7b755 no reference/size_type for output ranges 2017-04-16 17:41:50 +02:00
Daniel Kolesa 1619dac782 remove range difference type (unused) 2017-04-16 17:23:09 +02:00
Daniel Kolesa 71aa6ff70b better template arg names for algorithm documentation 2017-04-15 16:14:50 +02:00
Daniel Kolesa cd3ccba757 more elaborate range element swap tests 2017-04-15 14:20:01 +02:00
Daniel Kolesa 45b5eb2c0e Fully document algorithm.hh 2017-04-14 19:10:38 +02:00
Daniel Kolesa 6cdf31d42b doc cleanups 2017-04-14 18:04:17 +02:00
Daniel Kolesa dd0c747488 more algorithm.hh documentation 2017-04-14 17:30:21 +02:00
Daniel Kolesa 3de75431dd more algorithm docs 2017-04-14 16:57:02 +02:00
Daniel Kolesa dbbef8c7ac add a range trait to check swappability for range elements 2017-04-14 15:54:15 +02:00
Daniel Kolesa c6697c9ff4 document part of algorithm.hh 2017-04-14 15:03:54 +02:00
Daniel Kolesa c1e17617cb hide generator range too 2017-04-14 03:45:06 +02:00
Daniel Kolesa 313f637e9b hide most wrapper ranges in detail namespace 2017-04-14 03:35:30 +02:00
Daniel Kolesa 09c3c02c33 doc cleanups 2017-04-12 19:12:09 +02:00
Daniel Kolesa 220f9ee374 remove explicit copy/move ctors 2017-04-12 00:45:02 +02:00
Daniel Kolesa ce5c20a973 simplify chainable range algos 2017-04-12 00:07:21 +02:00
Daniel Kolesa 9d1c739956 document range.hh 2017-04-11 21:32:53 +02:00
Daniel Kolesa fb02bd2cb9 string.hh documentation + noexcept 2017-04-10 19:43:44 +02:00
Daniel Kolesa 1525edf3d7 type/include cleanup 2017-04-09 16:44:45 +02:00
Daniel Kolesa a913f7beca document io.hh 2017-04-09 16:09:54 +02:00
Daniel Kolesa 2b74cd170f document stream.hh 2017-04-08 18:03:02 +02:00
Daniel Kolesa 572620b10f channel api improvements 2017-04-07 19:28:19 +02:00
Daniel Kolesa 62676f4222 rename octastd to libostd 2017-04-06 20:14:52 +02:00
Daniel Kolesa 36332dff40 document environ and filesystem 2017-04-05 20:53:14 +02:00
Daniel Kolesa 480b7a56a4 more documentation 2017-04-04 19:29:15 +02:00
Daniel Kolesa 9f35909660 fixes in streams 2017-04-04 01:06:55 +02:00
Daniel Kolesa 4a7baa40a0 remove types.hh 2017-04-04 00:30:07 +02:00
Daniel Kolesa 3b7f54e64c virtual destructor for scheduler 2017-04-03 18:20:43 +02:00
Daniel Kolesa b1c9a0d196 more doc fixes 2017-04-03 18:17:47 +02:00
Daniel Kolesa 08bd63d773 doc cleanups 2017-04-03 18:11:24 +02:00
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