Commit graph

353 commits

Author SHA1 Message Date
q66 6b32072694 some initial stream api stuff 2015-06-26 02:30:48 +01:00
q66 9a6caffefe fix potential gcc warnings 2015-06-26 00:14:18 +01:00
q66 3a1ea741f1 do not move-on-return in order to allow copy elision 2015-06-25 18:59:26 +01:00
q66 501beee633 in HashRange, keep p_beg always pointing to the same bucket as p_node 2015-06-25 01:19:21 +01:00
q66 a4d33c5cd7 use friends to handle copy constructors correctly 2015-06-25 01:16:19 +01:00
q66 ddb18b9d0d relax RangeHalf copy constructor a little (allow convertible range types) 2015-06-25 01:07:11 +01:00
q66 dbb266b5bd disallow range half trait checks 2015-06-24 20:03:23 +01:00
q66 4c2376ea2d no need for distance_front either 2015-06-21 22:47:17 +01:00
q66 6f2ab37b55 no need to implement push_front_n on TakeRange 2015-06-21 22:46:29 +01:00
q66 154b1c7588 operator+ and operator- should be const 2015-06-21 22:29:17 +01:00
q66 f93094735e remove duplications in all hash table code + unify hashes and multihashes into a single struct 2015-06-18 02:32:43 +01:00
q66 b20a6ec38e hash table cleanups 2015-06-18 01:41:00 +01:00
q66 7cf50febd9 cleaner multihash handling 2015-06-18 01:17:33 +01:00
q66 e0ce128d13 remove unneeded templates 2015-06-17 21:37:22 +01:00
q66 281371bb0c reduce code duplication 2015-06-17 21:33:49 +01:00
q66 ea70d2e467 add octa::Multimap and octa::Multiset 2015-06-17 21:25:34 +01:00
q66 bbb5fbf224 stricter bucket/hashrange ctor test 2015-06-17 19:19:08 +01:00
q66 7a63619852 actually only check for sameness without qualifiers 2015-06-17 02:30:36 +01:00
q66 d8bf7b9c69 make hash/bucket ranges properly convertible 2015-06-17 02:28:26 +01:00
q66 ad0521bdfa modify StringRange in the same way 2015-06-17 02:00:39 +01:00
q66 dafd5a17b5 loosen up PointerRange ctor rules (allow construction of PointerRange<T> from any PointerRange<U> where U * is convertible to T *) 2015-06-17 00:44:53 +01:00
q66 dc58d09388 make allocator based containers more predictable + simplified PointerRange 2015-06-17 00:15:44 +01:00
q66 ec44dbbfbd fix find() for const containers 2015-06-16 22:54:04 +01:00
q66 2b05cb9297 Map::find, Set::find 2015-06-16 22:51:57 +01:00
q66 4a86120a8f add octa::Set (hash table set) 2015-06-16 22:19:20 +01:00
q66 3a659c1412 much simpler rehashing that doesn't invalidate references and allocates less 2015-06-16 21:52:37 +01:00
q66 7265aee0d9 automatic rehashing 2015-06-16 21:36:16 +01:00
q66 eca4310caf support for hashtable assignment ops 2015-06-16 20:44:41 +01:00
q66 cfe7450d4b hashtable swap allocator fix 2015-06-16 20:05:45 +01:00
q66 1c6f3a74e1 follow allocator propagation on swap + do not free memory unless necessary 2015-06-16 20:02:52 +01:00
q66 4b0add9020 follow allocator propagation rules 2015-06-16 19:57:08 +01:00
q66 e0a498806a hash table copy/move ctor support 2015-06-16 19:12:03 +01:00
q66 3b65b0cb99 use allocators for hashtables always 2015-06-16 01:46:34 +01:00
q66 8324f5f9cc revamped HashRange 2015-06-16 01:24:19 +01:00
q66 aa2a0afcc1 add BucketRange instead of abusing HashRange 2015-06-15 22:10:44 +01:00
q66 c456843f59 bucket interface 2015-06-15 21:06:34 +01:00
q66 e15bb6adf3 prevent vector/string/map range constructors to be used when the input arg is not a range (prevent conflicts with other ctors) 2015-06-15 19:44:00 +01:00
q66 7cdac42c4a sfinae friendly range traits + IsInputRange etc now works on arbitrary non-range types 2015-06-15 18:54:00 +01:00
q66 13e553f85c hash initializer list and range ctors 2015-06-15 02:22:10 +01:00
q66 8ce2e67e36 emplace support on hashtables 2015-06-15 02:09:53 +01:00
q66 1ae3957e5c more hash ctors 2015-06-15 01:35:37 +01:00
q66 4715e09f35 hashtble rehash support 2015-06-15 00:18:08 +01:00
q66 e2d8283eb7 cleaner hash range handling 2015-06-14 19:48:55 +01:00
q66 c287d7e98a push_front is only necessary on bidir ranges or better now 2015-06-14 04:53:38 +01:00
q66 fa7bf1d3db initial range interface for hashtables 2015-06-14 04:32:01 +01:00
q66 c9e3ebd773 load factor management api 2015-06-14 03:43:11 +01:00
q66 d24d891977 more hashtable apis 2015-06-14 03:38:08 +01:00
q66 c5678238c3 move semantics/perfect forwarding for hashtable keys 2015-06-14 03:04:03 +01:00
q66 48b8ba7522 initial hashtable/map implementation 2015-06-14 02:46:46 +01:00
q66 850d20093a string equality + tweaks 2015-06-14 02:36:20 +01:00
q66 5c0f051eac forwarding ctors 2015-06-13 16:36:47 +01:00
q66 e4738e0368 implement a basic CompressedPair for internal container usage (removes code dups) 2015-06-13 16:32:03 +01:00
q66 4d97aa7ac2 add get_allocator 2015-06-12 20:13:27 +01:00
q66 79774efbe6 more generalized PointerRange (but only optionally) 2015-06-11 00:41:41 +01:00
q66 5608cb97ac fix 2015-06-11 00:21:11 +01:00
q66 3cf06f228d Vector::insert/insert_range now returns a range 2015-06-11 00:20:21 +01:00
q66 657118f037 simpler and more correct vector packed pair 2015-06-11 00:14:19 +01:00
q66 b079d3b51d use the pointer/reference typedefs + redefine them with allocator traits 2015-06-11 00:08:56 +01:00
q66 59c896e34f remove unnecessary arg 2015-06-10 01:18:56 +01:00
q66 e8114feaf0 the traits are actually not necessary 2015-06-10 00:59:39 +01:00
q66 905d9e8d3c actually get rid of the reach() stuff, introduce new Reverse and Movable range traits and rename range.reach() to range.reverse() 2015-06-10 00:57:46 +01:00
q66 6b87f4c4ac no need to specify template args there 2015-06-10 00:16:25 +01:00
q66 f9adf08ef9 turn make_move_range into .movable() on any range, and make_half_range(h1, h2) into h1.each(h2) 2015-06-10 00:13:20 +01:00
q66 6b2a7fb43c avoid copies 2015-06-09 23:07:53 +01:00
q66 40b52ed765 more efficient sort 2015-06-09 22:56:40 +01:00
q66 ae68f1f379 octa::ceach,reach,creach 2015-06-09 21:18:43 +01:00
q66 1553e2d30f add StringRange (provides hashing and proper ToString), make it the range for String, add extra ptr-ctor for Vector and new ctors for String, optimizations 2015-06-09 19:02:44 +01:00
q66 13b8b06d33 hashing improvements, allow to_hash on containers 2015-06-09 18:58:21 +01:00
q66 ea42a5e841 use new type aliases + refactoring + namespacing 2015-06-08 21:20:12 +01:00
q66 06dc966f19 explicit-size type aliases + do not expose uint etc into global namespace 2015-06-08 20:45:49 +01:00
q66 d4e234f893 type renames 2015-06-08 01:39:12 +01:00
q66 6eae6487c4 replace usages of typedef with "using" 2015-06-08 00:55:08 +01:00
q66 7f1c80e2d6 oops 2015-06-07 18:31:27 +01:00
q66 4a45d03544 gcc warning fixes 2015-06-07 18:30:28 +01:00
q66 23261d6d5b no typename necessary 2015-06-07 18:12:07 +01:00
q66 548de69102 add octa::FunctionMakeDefaultConstructible, use in MapRange and FilterRange
This turns any callable object into a primitive default constructible type.
That is, for regular function objects, the type represents the object type
itself, for function pointers, the type represents the function pointer,
for simple lambdas the type represents a function pointer they map to
(only when the lambda doesn't capture) and for closures it represents
the right octa::Function type.
2015-06-07 18:07:48 +01:00
q66 f4ca222dbd remove duplicate code + further simplify 2015-06-07 16:32:32 +01:00
q66 1d47ac26a8 simplify func checks 2015-06-07 16:17:03 +01:00
q66 ee8d565203 optimize/specialize filter func in a similar way to map func 2015-06-07 16:12:14 +01:00
q66 44e07b8e6b no need to do convertible checks as that's already done previously 2015-06-07 15:50:33 +01:00
q66 93652ed81f fix octa::MapRange func type checks for regular functors 2015-06-07 15:49:08 +01:00
q66 36d9a35066 for MapRange, specialize stored func in a few ways to avoid octa::Function (and thus avoid the significant overhead it brings) 2015-06-07 04:31:18 +01:00
q66 2652fe9242 octa::Function allocator support 2015-06-07 01:14:04 +01:00
q66 e9ab01b894 function cleanup 2015-06-07 00:03:06 +01:00
q66 d6d0ff3e8d tests for utility.h 2015-06-06 18:22:10 +01:00
q66 3f56700e19 format fixes 2015-06-05 23:45:07 +01:00
q66 84d78ba87a deuglify template args 2015-06-04 22:57:06 +01:00
q66 47016ec6ad clean up the rest of type traits 2015-06-04 21:47:30 +01:00
q66 49188f78ea more type traits cleanups 2015-06-04 21:19:05 +01:00
q66 1aeebb69a7 some type traits cleanups 2015-06-04 21:09:11 +01:00
q66 d9366475b5 fully cleaned up memory.h 2015-06-04 02:20:20 +01:00
q66 bc2e3575b2 further memory.h cleanups 2015-06-04 02:09:07 +01:00
q66 e12e1aa57b more memory.h cleanups 2015-06-04 01:56:04 +01:00
q66 1b038b0de8 memory.h partial cleanup 2015-06-04 01:45:30 +01:00
q66 62b8bee6c3 deassify atomic.h 2015-06-04 00:20:19 +01:00
q66 9b0a6e630b deuglify vector.h 2015-06-04 00:06:43 +01:00
q66 710fa1addc deuglify range.h 2015-06-03 23:55:11 +01:00
q66 153812e91e deuglify functional.h 2015-06-03 23:27:09 +01:00
q66 e130eb6cf0 deuglify array.h 2015-06-03 23:10:10 +01:00
q66 e0d64ab1ac deuglify string.h 2015-06-03 23:07:57 +01:00