Commit Graph

436 Commits (cca5a12755aa8b3ec2bc1c6626fe7347e51ea38a)

Author SHA1 Message Date
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