Commit graph

299 commits

Author SHA1 Message Date
q66 329aefdecd IsOutputRange will now test for presence of the right 'put' method, enabling IsOutputRange tests on hybrid ranges (i.e. input ranges that satisfy output requirements) 2015-05-23 22:24:12 +01:00
q66 7589a93539 add some traits to check range for range types including proper type inheritance 2015-05-23 20:33:08 +01:00
q66 8908ac0506 new range category: FiniteRandomAccessRange 2015-05-23 20:00:03 +01:00
q66 3883a0da33 octa::Vector - new constructor and operator= for construction from range (+ random access specialization for efficiency) 2015-05-23 19:52:42 +01:00
q66 523c0e0ad1 const correctness 2015-05-23 18:59:14 +01:00
q66 7c91e1cc5b implement random access requirements on MapRange 2015-05-23 18:55:22 +01:00
q66 8c96179bd6 add octa::algorithm::map 2015-05-23 18:44:06 +01:00
q66 b90fce8d84 Revert "add range difference type"
This reverts commit 4adbeb4e1b.
2015-05-23 17:56:08 +01:00
q66 4adbeb4e1b add range difference type 2015-05-23 17:40:36 +01:00
q66 9c3486903d add optional pop_first_n and pop_last_n methods on ranges 2015-05-23 17:36:26 +01:00
q66 56d8e481c8 .get() -> .data() 2015-05-21 00:45:34 +01:00
q66 f919983e03 array fixes 2015-05-21 00:34:42 +01:00
q66 64810e4006 remove the noexcept stuff; nothing in octastd ever throws 2015-05-20 22:05:41 +01:00
q66 25fb30b524 atomic.h: use strongly typed enum 2015-05-20 00:24:20 +01:00
q66 559a1afd26 noexcept fix 2015-05-19 01:23:41 +01:00
q66 704066954a remove vector::pop_ret 2015-05-19 01:21:23 +01:00
q66 700905f594 style fix 2015-05-18 01:59:04 +01:00
q66 767226a4ce array in_range fix 2015-05-18 01:57:44 +01:00
q66 1d4e01ad5e array empty fix 2015-05-18 01:56:31 +01:00
q66 f4ef47e75a noexcept fix 2015-05-17 22:59:32 +01:00
q66 5a991f3e21 array::in_range 2015-05-17 22:51:42 +01:00
q66 7e61799f8b vector: do not free buffer in copy assignment unless necessary 2015-05-17 17:28:11 +01:00
q66 ed24618061 vector: clear does not free buffer + add operator= for initializer list 2015-05-17 17:11:56 +01:00
q66 58faefa317 initial impl of allocator 2015-05-13 20:56:53 +01:00
q66 3e51a86aa4 add header file for stream (no implementation yet) 2015-05-12 21:27:46 +01:00
q66 e3d5da3e66 octa::Hash in functional.h (+ specializations for all primitive types) 2015-05-10 21:57:52 +01:00
q66 6a8dec424a range fixes 2015-05-08 02:03:48 +01:00
q66 ff9c78c1d4 fix 2015-05-07 21:07:06 +01:00
q66 680c0da0a6 some traits cleanup 2015-05-06 19:52:07 +01:00
q66 a6bb089283 use some standard builtin traits 2015-05-05 19:30:31 +01:00
q66 61a66f7372 more IsIntegral specializations 2015-05-04 00:00:27 +01:00
q66 fb0c7571c1 more style/consistency stuff 2015-05-03 23:50:21 +01:00
q66 98e7566ad9 coding style 2015-05-03 23:44:48 +01:00
q66 6a9d3b8ea7 coding style 2015-05-03 23:34:21 +01:00
q66 ef9995ae51 remove PointerTraits; replace with individual using aliases 2015-05-03 22:39:32 +01:00
q66 2d10cd9280 ditch RangeTraits for alias definitions 2015-05-03 21:54:26 +01:00
q66 da69a57015 add input func check to octa::Function 2015-05-03 16:09:47 +01:00
q66 64f403011a deprecate MSVC support for the time being 2015-05-02 22:12:28 +01:00
q66 897f1873f7 remove macros 2015-05-01 21:17:28 +01:00
q66 084139b731 remove more macros 2015-05-01 21:09:44 +01:00
q66 367a586bf7 start demacrofying msvc implementation 2015-05-01 20:59:47 +01:00
q66 302e674141 initial support for atomics 2015-05-01 20:34:32 +01:00
q66 8fe03741cc fix vector noexcept on gcc 4.8 2015-05-01 20:21:47 +01:00
q66 cbd6d66eca box optimization - compress with empty deleters 2015-04-30 18:53:38 +01:00
q66 95711030aa more noexcept for pair 2015-04-29 18:52:00 +01:00
q66 b1192b248c noexcept formatting 2015-04-29 01:38:16 +01:00
q66 ef47ade61f basic Pair type implementation 2015-04-29 00:01:22 +01:00
q66 1a2d606ae7 noexcept the library 2015-04-28 18:48:58 +01:00
q66 f4b0691003 noexcept for functional 2015-04-28 02:30:17 +01:00
q66 bd86d82446 noexcept for memory.h 2015-04-28 02:20:14 +01:00
q66 56f19204a2 style update 2015-04-27 20:23:38 +01:00
q66 709bcb1362 add octa::make_box 2015-04-27 20:05:33 +01:00
q66 de7ceba269 minor renames 2015-04-27 19:56:06 +01:00
q66 e98b8946ae define size_type for ranges 2015-04-27 19:53:48 +01:00
q66 d7778cf259 ditch the separate "type" struct 2015-04-27 19:38:34 +01:00
q66 990a7646da initial Box and pointer traits impl 2015-04-27 19:01:07 +01:00
q66 b37921ee93 add octa::clamp 2015-04-26 18:45:10 +01:00
q66 0245db3fec rename traits->type_traits 2015-04-25 16:13:21 +01:00
q66 6de48f1f21 refactor traits: e.g. "RemoveCV<T>" instead of "typename RemoveCV<T>::type" 2015-04-24 20:03:16 +01:00
q66 8dd7ae1eda export core types outside of octa 2015-04-24 18:51:35 +01:00
q66 f106c5ae24 get rid of namespace internal 2015-04-24 18:16:35 +01:00
q66 cca0a62d34 use IsPOD rather than !IsClass to decide whether to memcpy etc. 2015-04-23 23:31:52 +01:00
q66 89bab3362b add another condition on Function in-place optimization 2015-04-23 21:05:09 +01:00
q66 e92f5bba4b remove traits dependency on utility.h and thus the need to put some of the traits in utility.h 2015-04-23 20:53:05 +01:00
q66 0c217e2128 add all remaining traits + cleanup, remove namespace internal etc 2015-04-23 20:38:18 +01:00
q66 a80f535b5d IsDestructible and IsNothrowDestructible 2015-04-23 19:26:26 +01:00
q66 8557b0abe1 some platforms' C libs don't have max_align_t 2015-04-23 19:07:13 +01:00
q66 c388e8c09a add lots of new traits 2015-04-23 18:47:33 +01:00
q66 fff049d6c7 add IsConvertible 2015-04-23 02:39:43 +01:00
q66 c1e9b5e5e5 implement more traits + enable Decay (the remaining traits were implemented for it) 2015-04-23 02:16:48 +01:00
q66 8cfd714a2d implement IsFunction + other traits 2015-04-23 01:49:24 +01:00
q66 456704caa2 more traits 2015-04-23 01:26:03 +01:00
q66 7779563bd9 add some more type traits, reorder the others 2015-04-23 00:26:53 +01:00
q66 90cecea052 correctly forward 2015-04-22 23:28:43 +01:00
q66 9a7a832fe3 move mem_fn to functional 2015-04-22 23:25:02 +01:00
q66 af9eff5c6d add functional::Function (generic wrapper around any callable type) 2015-04-22 18:42:58 +01:00
q66 87e324bb1c traits::enable_if, algorithm::iota 2015-04-21 23:54:26 +01:00
q66 ff5fc7368d add EnumeratedRange + octa::enumerate 2015-04-21 17:58:36 +01:00
q66 e6a176c870 add Array container 2015-04-21 17:57:57 +01:00
q66 6807d22df5 satisfy OutputRange on MoveRange and PointerRange (might be mutable), add more algorithms 2015-04-21 17:56:36 +01:00
q66 ab95885b4a add more algorithms 2015-04-21 02:33:58 +01:00
q66 d68d381f72 move initializer lists into initializer_list.h + add new .range() method to retrieve a PointerRange to it 2015-04-20 19:06:47 +01:00
q66 9885909485 add algorithm::all_of, any_of, none_of 2015-04-20 02:21:27 +01:00
q66 6d60b051e8 add algorithm::for_each 2015-04-20 02:14:55 +01:00
q66 c4aa7242fc add algorithm::is_partitioned 2015-04-20 02:06:42 +01:00
q66 ed0b28f2e0 add PointerRange constructor for pointer + length 2015-04-19 20:53:02 +01:00
q66 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
q66 c36a653824 use introsort for sorting 2015-04-18 23:12:45 +01:00
q66 f9a298c1b8 move quicksort to internal namespace 2015-04-18 22:43:20 +01:00
q66 4850e2454f don't use lambda 2015-04-18 22:40:38 +01:00
q66 708100d171 add quicksort 2015-04-18 22:33:19 +01:00
q66 dc2dacaf5d add slicing for finite random access ranges 2015-04-18 22:05:24 +01:00
q66 cd0b6fc2fc add algorithm::partition 2015-04-18 21:46:31 +01:00
q66 35424dd248 assignment op overloads for reverserange/moverange (c++ deletes them because of move ctor) 2015-04-18 20:31:07 +01:00
q66 0ac7bb4302 initial sort support + cleanups 2015-04-18 20:21:59 +01:00
q66 1177d94b6e implement ReferenceWrapper + ref/cref + address_of 2015-04-18 19:03:11 +01:00
q66 799c9fed94 add not1/not2 2015-04-18 18:36:06 +01:00
q66 2e750f6874 give IntegralConstant an "operator value_type" and "value_type operator()" 2015-04-18 18:32:25 +01:00
q66 cdc63eaf63 allow pointers to objects to be passed to calls with mem_fn 2015-04-18 17:28:11 +01:00
q66 c68742811b specialize mem_fn types for const 2015-04-18 17:23:59 +01:00
q66 cc4113459a implement octa::mem_fn 2015-04-18 17:19:58 +01:00
q66 f549d876e4 ResultOf trait, declval 2015-04-18 16:48:54 +01:00
q66 2c03469cf8 more type traits 2015-04-18 16:09:08 +01:00
q66 6247093ad9 add BinaryNegate and UnaryNegate 2015-04-18 02:50:20 +01:00
q66 c147f57588 add functional.h (for now with operator functor defs) + skeleton for algorithm.h 2015-04-18 02:35:36 +01:00
q66 296b7cdeb9 move move/forward to utility.h 2015-04-18 00:11:16 +01:00
q66 97fd88be62 octa::swap 2015-04-18 00:07:37 +01:00
q66 32d925d298 define support for OutputRange 2015-04-17 21:33:01 +01:00
q66 c9b7afc035 add NumberRange specialization for 1 argument (creates a "[0, v)" range) 2015-04-17 20:33:36 +01:00
q66 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
q66 0116d3cf4c equality checking for NumberRange 2015-04-17 20:20:38 +01:00
q66 37aa387734 use inheritance to guarantee iterable behavior (also shortens code) 2015-04-17 20:15:03 +01:00
q66 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
q66 e73a8344ab RangeIterator doesn't need a type {} structure 2015-04-17 02:19:40 +01:00
q66 21ba9d025d add NumberRange 2015-04-17 00:55:50 +01:00
q66 bc35dad776 fix RangeIterator to use empty() 2015-04-17 00:15:20 +01:00
q66 36d53f2019 make_move_range/make_reverse_range 2015-04-16 23:47:31 +01:00
q66 603cb42eca fix insert + add move_range 2015-04-16 23:26:10 +01:00
q66 00175b59ad rename range insert to insert_range (prevent ambiguous calls) 2015-04-16 23:18:30 +01:00
q66 1458188593 initializer-list insert for vector 2015-04-16 23:11:56 +01:00
q66 cb8e189450 range-based vector insert + add MoveRange that wraps any InputRange with move semantics 2015-04-16 23:06:39 +01:00
q66 953e4a2afa cleanup insert + move variant 2015-04-16 22:44:37 +01:00
q66 172b62fa92 use moving in insert 2015-04-16 22:33:31 +01:00
q66 66f7bc90c2 range category tags + cleanup 2015-04-16 21:50:53 +01:00
q66 b3a49b597c define a range and const_range type for containers 2015-04-16 20:40:59 +01:00
q66 e1b9e208ae better constness on ranges 2015-04-16 20:35:10 +01:00
q66 0ac0ec24be const stuff 2015-04-16 02:40:49 +01:00
q66 aca6a7810b correct [] operator on reverse ranges 2015-04-16 02:13:53 +01:00
q66 1f7c5e97b3 reverse range 2015-04-16 02:07:32 +01:00
q66 988b092778 actually working comparisons 2015-04-16 01:47:02 +01:00
q66 cb68ada121 simplify ranges a bit 2015-04-16 01:18:18 +01:00
q66 c27a77b611 public inheritance for ranges by default 2015-04-16 01:07:58 +01:00
q66 c79e5757f9 initial proof-of-concept implementation of ranges and range iterator 2015-04-16 00:18:00 +01:00
q66 e12b221112 use nullptr 2015-04-15 22:41:32 +01:00
q66 e2f43ed25e initializer list support + insert on vector 2015-04-15 22:38:35 +01:00
q66 9d5acc2337 more vector utils 2015-04-15 22:09:35 +01:00
q66 dba2ac673f split new implementations 2015-04-15 01:39:26 +01:00
q66 6767157db9 use static_cast 2015-04-14 23:25:29 +01:00
q66 d26db78f0d move stuff instead of copy, forward correctly in emplace_back 2015-04-14 23:14:46 +01:00
q66 2f56d5b52b vector move ctor + emplace_back 2015-04-14 23:04:51 +01:00
q66 f70d8e792d mark explicit 2015-04-14 22:21:17 +01:00
q66 16c1cc203e working basic vector implementation 2015-04-14 22:16:06 +01:00
q66 df1b9daeaf add move/forward and more traits 2015-04-14 01:12:15 +01:00
q66 0311af0ffe IsClass and IsNumber traits 2015-04-13 23:20:04 +01:00
q66 0500e52295 moar traits 2015-04-13 23:04:25 +01:00
q66 292c5a35b7 moar traits + strip qualifiers first 2015-04-13 22:56:15 +01:00
q66 844fc88b9b some core types, initial type traits 2015-04-13 22:25:31 +01:00
q66 6c6e7b69f7 some vector work 2015-04-12 21:41:02 +01:00
q66 323e992ea5 new namespace 2015-04-11 21:00:10 +01:00