Commit Graph

87 Commits (dbb266b5bdb5e21512ec6cdcf90e4fdf34fdb716)

Author SHA1 Message Date
Daniel Kolesa dc58d09388 make allocator based containers more predictable + simplified PointerRange 2015-06-17 00:15:44 +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 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 d24d891977 more hashtable apis 2015-06-14 03:38:08 +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 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 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 ea42a5e841 use new type aliases + refactoring + namespacing 2015-06-08 21:20:12 +01:00
Daniel Kolesa 6eae6487c4 replace usages of typedef with "using" 2015-06-08 00:55:08 +01:00
Daniel Kolesa 84d78ba87a deuglify template args 2015-06-04 22:57:06 +01:00
Daniel Kolesa 9b0a6e630b deuglify vector.h 2015-06-04 00:06:43 +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 bfc94e31d7 uglify the code by using unique identifiers only (prevent macro conflicts) 2015-06-02 00:57:34 +01:00
Daniel Kolesa 67600c4637 first -> front, last -> back 2015-06-01 01:13:37 +01:00
Daniel Kolesa 77f7fed0df more tests + cleaner test runner 2015-05-31 15:50:09 +01:00
Daniel Kolesa 3c6ef6e593 initial support for "range halves" ("range iterator") 2015-05-29 23:32:25 +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 434816840b octa::concat 2015-05-27 22:09:22 +01:00
Daniel Kolesa e9367246b5 completely genericized octa::swap (no need for global overloads ever) 2015-05-26 21:29:44 +01:00
Daniel Kolesa 42167fdc5a fix vector::swap 2015-05-26 21:16:59 +01:00
Daniel Kolesa f0380a2aaf initializer list fixes 2015-05-25 19:08:53 +01:00
Daniel Kolesa 8718630a5a il.range() -> il.each(), add algorithm::filter(range, pred) 2015-05-24 02:31:54 +01:00
Daniel Kolesa 7589a93539 add some traits to check range for range types including proper type inheritance 2015-05-23 20:33:08 +01:00
Daniel Kolesa 8908ac0506 new range category: FiniteRandomAccessRange 2015-05-23 20:00:03 +01:00
Daniel Kolesa 3883a0da33 octa::Vector - new constructor and operator= for construction from range (+ random access specialization for efficiency) 2015-05-23 19:52:42 +01:00
Daniel Kolesa 56d8e481c8 .get() -> .data() 2015-05-21 00:45:34 +01:00
Daniel Kolesa 64810e4006 remove the noexcept stuff; nothing in octastd ever throws 2015-05-20 22:05:41 +01:00
Daniel Kolesa 559a1afd26 noexcept fix 2015-05-19 01:23:41 +01:00
Daniel Kolesa 704066954a remove vector::pop_ret 2015-05-19 01:21:23 +01:00
Daniel Kolesa 7e61799f8b vector: do not free buffer in copy assignment unless necessary 2015-05-17 17:28:11 +01:00
Daniel Kolesa ed24618061 vector: clear does not free buffer + add operator= for initializer list 2015-05-17 17:11:56 +01:00
Daniel Kolesa 98e7566ad9 coding style 2015-05-03 23:44:48 +01:00
Daniel Kolesa 8fe03741cc fix vector noexcept on gcc 4.8 2015-05-01 20:21:47 +01:00
Daniel Kolesa b1192b248c noexcept formatting 2015-04-29 01:38:16 +01:00
Daniel Kolesa 1a2d606ae7 noexcept the library 2015-04-28 18:48:58 +01:00
Daniel Kolesa 56f19204a2 style update 2015-04-27 20:23:38 +01:00
Daniel Kolesa d7778cf259 ditch the separate "type" struct 2015-04-27 19:38:34 +01:00
Daniel Kolesa 0245db3fec rename traits->type_traits 2015-04-25 16:13:21 +01:00