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