Commit Graph

309 Commits (32b59e0c2e80d2d01a2b74d525ab6b885d9563c4)

Author SHA1 Message Date
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
Daniel Kolesa ea42a5e841 use new type aliases + refactoring + namespacing 2015-06-08 21:20:12 +01:00
Daniel Kolesa 06dc966f19 explicit-size type aliases + do not expose uint etc into global namespace 2015-06-08 20:45:49 +01:00
Daniel Kolesa d4e234f893 type renames 2015-06-08 01:39:12 +01:00
Daniel Kolesa 6eae6487c4 replace usages of typedef with "using" 2015-06-08 00:55:08 +01:00
Daniel Kolesa 7f1c80e2d6 oops 2015-06-07 18:31:27 +01:00
Daniel Kolesa 4a45d03544 gcc warning fixes 2015-06-07 18:30:28 +01:00
Daniel Kolesa 23261d6d5b no typename necessary 2015-06-07 18:12:07 +01:00
Daniel Kolesa 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
Daniel Kolesa f4ca222dbd remove duplicate code + further simplify 2015-06-07 16:32:32 +01:00
Daniel Kolesa 1d47ac26a8 simplify func checks 2015-06-07 16:17:03 +01:00
Daniel Kolesa ee8d565203 optimize/specialize filter func in a similar way to map func 2015-06-07 16:12:14 +01:00
Daniel Kolesa 44e07b8e6b no need to do convertible checks as that's already done previously 2015-06-07 15:50:33 +01:00
Daniel Kolesa 93652ed81f fix octa::MapRange func type checks for regular functors 2015-06-07 15:49:08 +01:00
Daniel Kolesa 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
Daniel Kolesa 2652fe9242 octa::Function allocator support 2015-06-07 01:14:04 +01:00
Daniel Kolesa e9ab01b894 function cleanup 2015-06-07 00:03:06 +01:00
Daniel Kolesa d6d0ff3e8d tests for utility.h 2015-06-06 18:22:10 +01:00
Daniel Kolesa 3f56700e19 format fixes 2015-06-05 23:45:07 +01:00
Daniel Kolesa 84d78ba87a deuglify template args 2015-06-04 22:57:06 +01:00
Daniel Kolesa 47016ec6ad clean up the rest of type traits 2015-06-04 21:47:30 +01:00
Daniel Kolesa 49188f78ea more type traits cleanups 2015-06-04 21:19:05 +01:00
Daniel Kolesa 1aeebb69a7 some type traits cleanups 2015-06-04 21:09:11 +01:00
Daniel Kolesa d9366475b5 fully cleaned up memory.h 2015-06-04 02:20:20 +01:00
Daniel Kolesa bc2e3575b2 further memory.h cleanups 2015-06-04 02:09:07 +01:00
Daniel Kolesa e12e1aa57b more memory.h cleanups 2015-06-04 01:56:04 +01:00
Daniel Kolesa 1b038b0de8 memory.h partial cleanup 2015-06-04 01:45:30 +01:00
Daniel Kolesa 62b8bee6c3 deassify atomic.h 2015-06-04 00:20:19 +01:00
Daniel Kolesa 9b0a6e630b deuglify vector.h 2015-06-04 00:06:43 +01:00
Daniel Kolesa 710fa1addc deuglify range.h 2015-06-03 23:55:11 +01:00
Daniel Kolesa 153812e91e deuglify functional.h 2015-06-03 23:27:09 +01:00
Daniel Kolesa e130eb6cf0 deuglify array.h 2015-06-03 23:10:10 +01:00
Daniel Kolesa e0d64ab1ac deuglify string.h 2015-06-03 23:07:57 +01:00
Daniel Kolesa 5a11390903 deuglify utility.h 2015-06-03 23:01:23 +01:00
Daniel Kolesa e599a7f67a deassify initializer_list 2015-06-03 22:56:01 +01:00
Daniel Kolesa d442ba2508 deassify algorithm.h 2015-06-03 22:54:18 +01:00
Daniel Kolesa ae05420994 get rid of __Octa/__octa in algorithm 2015-06-03 22:43:39 +01:00
Daniel Kolesa 6c20f00494 space-optimize vector (don't take up any additional space with empty allocator) 2015-06-03 22:31:02 +01:00
Daniel Kolesa 216fdb5392 initial vector and string allocator support (currently space-inefficient) 2015-06-03 22:04:48 +01:00
Daniel Kolesa ff90009450 get rid of stupid Type suffixes (we already know it's a type from the name) 2015-06-03 20:00:41 +01:00
Daniel Kolesa 749434f98c add allocator traits 2015-06-03 19:47:36 +01:00
Daniel Kolesa 49b9a8d17f add octa::make_pair and octa::exchange 2015-06-02 02:01:32 +01:00
Daniel Kolesa bfc94e31d7 uglify the code by using unique identifiers only (prevent macro conflicts) 2015-06-02 00:57:34 +01:00
Daniel Kolesa 8bfd38f2e6 remove unused vars 2015-06-01 02:39:19 +01:00
Daniel Kolesa 67600c4637 first -> front, last -> back 2015-06-01 01:13:37 +01:00
Daniel Kolesa ca5d80189a RangeOf template to get a range for the given type 2015-06-01 00:33:59 +01:00
Daniel Kolesa 0c9a6f3a00 simplified concat 2015-05-31 23:55:40 +01:00
Daniel Kolesa 71f40d9ee4 allow octa::concat to work on non-range types that provide range interface 2015-05-31 19:50:00 +01:00
Daniel Kolesa 6c3db69741 no need to specialize ToString for objects that provide a range interface (works by default) 2015-05-31 16:44:35 +01:00
Daniel Kolesa 77f7fed0df more tests + cleaner test runner 2015-05-31 15:50:09 +01:00
Daniel Kolesa 51b210e1d6 cleanups 2015-05-30 01:46:50 +01:00
Daniel Kolesa 9f37057e51 cleanups 2015-05-30 01:09:13 +01:00
Daniel Kolesa cb1bf48aaa allow range traits to work on halves 2015-05-29 23:48:05 +01:00
Daniel Kolesa 3c6ef6e593 initial support for "range halves" ("range iterator") 2015-05-29 23:32:25 +01:00
Daniel Kolesa 15507e0143 remove useless equality/inequality operators on ranges 2015-05-29 21:49:07 +01:00
Daniel Kolesa a54db37a9c get const right on ranges 2015-05-29 20:21:35 +01:00
Daniel Kolesa 26f83b9efb pop_first() and pop_last() now return bool instead of void (true if popped, false if not) 2015-05-29 20:02:40 +01:00
Daniel Kolesa 38fc61481a initial support for "range extension" - i.e. push_first and push_last methods (+ push_first_n, push_last_n) 2015-05-29 19:52:20 +01:00
Daniel Kolesa b5f54b5cca a few more string ops 2015-05-29 01:02:46 +01:00
Daniel Kolesa 2f035f44ce simplify PointerRange more 2015-05-29 00:30:27 +01:00
Daniel Kolesa f96764fad0 simplify PointerRange 2015-05-29 00:01:24 +01:00
Daniel Kolesa c1be7f097d various ToString improvements 2015-05-28 19:58:05 +01:00
Daniel Kolesa a49716034e begin to_string infra 2015-05-28 02:38:52 +01:00
Daniel Kolesa 84336cabef tostring cleanup 2015-05-28 01:44:21 +01:00
Daniel Kolesa 324bdd154c ToString for core number types 2015-05-28 01:26:48 +01:00
Daniel Kolesa 1b75a10ec8 include <new> with OCTA_ALLOW_CXXSTD 2015-05-27 23:52:39 +01:00
Daniel Kolesa 9b98741c4d OCTA_ALLOW_CXXSTD to allow octastd to be used alongside stl (for transition and other projects) 2015-05-27 23:49:59 +01:00
Daniel Kolesa 08bb790612 stl-like initializer list interface (allow octastd to be used with stl outside of octaforge) 2015-05-27 23:46:58 +01:00
Daniel Kolesa 1371a32db7 use size() instead of length() 2015-05-27 23:19:16 +01:00
Daniel Kolesa d2ddb82499 swap args 2015-05-27 22:32:35 +01:00
Daniel Kolesa 6885006199 ToString function object + callback variant of concat 2015-05-27 22:29:57 +01:00
Daniel Kolesa c111483f1d some initial funcs 2015-05-27 22:15:24 +01:00
Daniel Kolesa 434816840b octa::concat 2015-05-27 22:09:22 +01:00
Daniel Kolesa 593acb35e4 initial octa::String 2015-05-27 21:43:13 +01:00
Daniel Kolesa 07881f2a4f octa::chunks 2015-05-27 20:56:44 +01:00
Daniel Kolesa d2f48ea0a5 octa::take 2015-05-27 20:45:34 +01:00
Daniel Kolesa 28828ff448 fix swap_ranges api to correctly handle differently sized ranges 2015-05-27 00:49:35 +01:00