Commit Graph

1299 Commits (27ce727eefd92c7db1d90c7f1e10b9f2ab4d5960)

Author SHA1 Message Date
Daniel Kolesa d8bf7b9c69 make hash/bucket ranges properly convertible 2015-06-17 02:28:26 +01:00
Daniel Kolesa ad0521bdfa modify StringRange in the same way 2015-06-17 02:00:39 +01:00
Daniel Kolesa 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
Daniel Kolesa dc58d09388 make allocator based containers more predictable + simplified PointerRange 2015-06-17 00:15:44 +01:00
Daniel Kolesa ec44dbbfbd fix find() for const containers 2015-06-16 22:54:04 +01:00
Daniel Kolesa 2b05cb9297 Map::find, Set::find 2015-06-16 22:51:57 +01:00
Daniel Kolesa 4a86120a8f add octa::Set (hash table set) 2015-06-16 22:19:20 +01:00
Daniel Kolesa 3a659c1412 much simpler rehashing that doesn't invalidate references and allocates less 2015-06-16 21:52:37 +01:00
Daniel Kolesa 7265aee0d9 automatic rehashing 2015-06-16 21:36:16 +01:00
Daniel Kolesa eca4310caf support for hashtable assignment ops 2015-06-16 20:44:41 +01:00
Daniel Kolesa cfe7450d4b hashtable swap allocator fix 2015-06-16 20:05:45 +01:00
Daniel Kolesa 1c6f3a74e1 follow allocator propagation on swap + do not free memory unless necessary 2015-06-16 20:02:52 +01:00
Daniel Kolesa 4b0add9020 follow allocator propagation rules 2015-06-16 19:57:08 +01:00
Daniel Kolesa e0a498806a hash table copy/move ctor support 2015-06-16 19:12:03 +01:00
Daniel Kolesa 3b65b0cb99 use allocators for hashtables always 2015-06-16 01:46:34 +01:00
Daniel Kolesa 8324f5f9cc revamped HashRange 2015-06-16 01:24:19 +01:00
Daniel Kolesa aa2a0afcc1 add BucketRange instead of abusing HashRange 2015-06-15 22:10:44 +01:00
Daniel Kolesa c456843f59 bucket interface 2015-06-15 21:06:34 +01:00
Daniel Kolesa 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
Daniel Kolesa 7cdac42c4a sfinae friendly range traits + IsInputRange etc now works on arbitrary non-range types 2015-06-15 18:54:00 +01:00
Daniel Kolesa 13e553f85c hash initializer list and range ctors 2015-06-15 02:22:10 +01:00
Daniel Kolesa 8ce2e67e36 emplace support on hashtables 2015-06-15 02:09:53 +01:00
Daniel Kolesa 1ae3957e5c more hash ctors 2015-06-15 01:35:37 +01:00
Daniel Kolesa 4715e09f35 hashtble rehash support 2015-06-15 00:18:08 +01:00
Daniel Kolesa e2d8283eb7 cleaner hash range handling 2015-06-14 19:48:55 +01:00
Daniel Kolesa c287d7e98a push_front is only necessary on bidir ranges or better now 2015-06-14 04:53:38 +01:00
Daniel Kolesa fa7bf1d3db initial range interface for hashtables 2015-06-14 04:32:01 +01:00
Daniel Kolesa c9e3ebd773 load factor management api 2015-06-14 03:43:11 +01:00
Daniel Kolesa d24d891977 more hashtable apis 2015-06-14 03:38:08 +01:00
Daniel Kolesa c5678238c3 move semantics/perfect forwarding for hashtable keys 2015-06-14 03:04:03 +01:00
Daniel Kolesa 48b8ba7522 initial hashtable/map implementation 2015-06-14 02:46:46 +01:00
Daniel Kolesa 850d20093a string equality + tweaks 2015-06-14 02:36:20 +01:00
Daniel Kolesa 5c0f051eac forwarding ctors 2015-06-13 16:36:47 +01:00
Daniel Kolesa e4738e0368 implement a basic CompressedPair for internal container usage (removes code dups) 2015-06-13 16:32:03 +01:00
Daniel Kolesa 4d97aa7ac2 add get_allocator 2015-06-12 20:13:27 +01:00
Daniel Kolesa 79774efbe6 more generalized PointerRange (but only optionally) 2015-06-11 00:41:41 +01:00
Daniel Kolesa 5608cb97ac fix 2015-06-11 00:21:11 +01:00
Daniel Kolesa 3cf06f228d Vector::insert/insert_range now returns a range 2015-06-11 00:20:21 +01:00
Daniel Kolesa 657118f037 simpler and more correct vector packed pair 2015-06-11 00:14:19 +01:00
Daniel Kolesa b079d3b51d use the pointer/reference typedefs + redefine them with allocator traits 2015-06-11 00:08:56 +01:00
Daniel Kolesa 59c896e34f remove unnecessary arg 2015-06-10 01:18:56 +01:00
Daniel Kolesa e8114feaf0 the traits are actually not necessary 2015-06-10 00:59:39 +01:00
Daniel Kolesa 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
Daniel Kolesa 6b87f4c4ac no need to specify template args there 2015-06-10 00:16:25 +01:00
Daniel Kolesa 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
Daniel Kolesa 6b2a7fb43c avoid copies 2015-06-09 23:07:53 +01:00
Daniel Kolesa 40b52ed765 more efficient sort 2015-06-09 22:56:40 +01:00
Daniel Kolesa ae68f1f379 octa::ceach,reach,creach 2015-06-09 21:18:43 +01:00
Daniel Kolesa 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
Daniel Kolesa 13b8b06d33 hashing improvements, allow to_hash on containers 2015-06-09 18:58:21 +01:00