Commit Graph

1319 Commits (master)

Author SHA1 Message Date
Daniel Kolesa 6d60b051e8 add algorithm::for_each 2015-04-20 02:14:55 +01:00
Daniel Kolesa c4aa7242fc add algorithm::is_partitioned 2015-04-20 02:06:42 +01:00
Daniel Kolesa ed0b28f2e0 add PointerRange constructor for pointer + length 2015-04-19 20:53:02 +01:00
Daniel Kolesa 58063fe392 add min, max, min_element, max_element in algorithm.h; rename VectorRange to PointerRange and move to range.h (useful as generic, e.g. with InitializerList) 2015-04-19 00:04:17 +01:00
Daniel Kolesa c36a653824 use introsort for sorting 2015-04-18 23:12:45 +01:00
Daniel Kolesa f9a298c1b8 move quicksort to internal namespace 2015-04-18 22:43:20 +01:00
Daniel Kolesa 4850e2454f don't use lambda 2015-04-18 22:40:38 +01:00
Daniel Kolesa 708100d171 add quicksort 2015-04-18 22:33:19 +01:00
Daniel Kolesa dc2dacaf5d add slicing for finite random access ranges 2015-04-18 22:05:24 +01:00
Daniel Kolesa cd0b6fc2fc add algorithm::partition 2015-04-18 21:46:31 +01:00
Daniel Kolesa 35424dd248 assignment op overloads for reverserange/moverange (c++ deletes them because of move ctor) 2015-04-18 20:31:07 +01:00
Daniel Kolesa 0ac7bb4302 initial sort support + cleanups 2015-04-18 20:21:59 +01:00
Daniel Kolesa 1177d94b6e implement ReferenceWrapper + ref/cref + address_of 2015-04-18 19:03:11 +01:00
Daniel Kolesa 799c9fed94 add not1/not2 2015-04-18 18:36:06 +01:00
Daniel Kolesa 2e750f6874 give IntegralConstant an "operator value_type" and "value_type operator()" 2015-04-18 18:32:25 +01:00
Daniel Kolesa cdc63eaf63 allow pointers to objects to be passed to calls with mem_fn 2015-04-18 17:28:11 +01:00
Daniel Kolesa c68742811b specialize mem_fn types for const 2015-04-18 17:23:59 +01:00
Daniel Kolesa cc4113459a implement octa::mem_fn 2015-04-18 17:19:58 +01:00
Daniel Kolesa f549d876e4 ResultOf trait, declval 2015-04-18 16:48:54 +01:00
Daniel Kolesa 2c03469cf8 more type traits 2015-04-18 16:09:08 +01:00
Daniel Kolesa 6247093ad9 add BinaryNegate and UnaryNegate 2015-04-18 02:50:20 +01:00
Daniel Kolesa c147f57588 add functional.h (for now with operator functor defs) + skeleton for algorithm.h 2015-04-18 02:35:36 +01:00
Daniel Kolesa 296b7cdeb9 move move/forward to utility.h 2015-04-18 00:11:16 +01:00
Daniel Kolesa 97fd88be62 octa::swap 2015-04-18 00:07:37 +01:00
Daniel Kolesa 32d925d298 define support for OutputRange 2015-04-17 21:33:01 +01:00
Daniel Kolesa c9b7afc035 add NumberRange specialization for 1 argument (creates a "[0, v)" range) 2015-04-17 20:33:36 +01:00
Daniel Kolesa 1557c227d0 remove range traits pointer specializations, as a pointer is not a range... also remove the pointer member type 2015-04-17 20:29:38 +01:00
Daniel Kolesa 0116d3cf4c equality checking for NumberRange 2015-04-17 20:20:38 +01:00
Daniel Kolesa 37aa387734 use inheritance to guarantee iterable behavior (also shortens code) 2015-04-17 20:15:03 +01:00
Daniel Kolesa 83abf1d44b make RangeIterator more internal; strip down its unnecessary functionality; remove the iterator macro for standard containers; fixes 2015-04-17 18:33:41 +01:00
Daniel Kolesa e73a8344ab RangeIterator doesn't need a type {} structure 2015-04-17 02:19:40 +01:00
Daniel Kolesa 21ba9d025d add NumberRange 2015-04-17 00:55:50 +01:00
Daniel Kolesa bc35dad776 fix RangeIterator to use empty() 2015-04-17 00:15:20 +01:00
Daniel Kolesa 36d53f2019 make_move_range/make_reverse_range 2015-04-16 23:47:31 +01:00
Daniel Kolesa 603cb42eca fix insert + add move_range 2015-04-16 23:26:10 +01:00
Daniel Kolesa 00175b59ad rename range insert to insert_range (prevent ambiguous calls) 2015-04-16 23:18:30 +01:00
Daniel Kolesa 1458188593 initializer-list insert for vector 2015-04-16 23:11:56 +01:00
Daniel Kolesa cb8e189450 range-based vector insert + add MoveRange that wraps any InputRange with move semantics 2015-04-16 23:06:39 +01:00
Daniel Kolesa 953e4a2afa cleanup insert + move variant 2015-04-16 22:44:37 +01:00
Daniel Kolesa 172b62fa92 use moving in insert 2015-04-16 22:33:31 +01:00
Daniel Kolesa 66f7bc90c2 range category tags + cleanup 2015-04-16 21:50:53 +01:00
Daniel Kolesa b3a49b597c define a range and const_range type for containers 2015-04-16 20:40:59 +01:00
Daniel Kolesa e1b9e208ae better constness on ranges 2015-04-16 20:35:10 +01:00
Daniel Kolesa 0ac0ec24be const stuff 2015-04-16 02:40:49 +01:00
Daniel Kolesa aca6a7810b correct [] operator on reverse ranges 2015-04-16 02:13:53 +01:00
Daniel Kolesa 1f7c5e97b3 reverse range 2015-04-16 02:07:32 +01:00
Daniel Kolesa 988b092778 actually working comparisons 2015-04-16 01:47:02 +01:00
Daniel Kolesa cb68ada121 simplify ranges a bit 2015-04-16 01:18:18 +01:00
Daniel Kolesa c27a77b611 public inheritance for ranges by default 2015-04-16 01:07:58 +01:00
Daniel Kolesa c79e5757f9 initial proof-of-concept implementation of ranges and range iterator 2015-04-16 00:18:00 +01:00