q66
c53efaba92
fix hash table guard too
2015-06-28 16:05:27 +01:00
q66
94daa4f76b
fix include guards
2015-06-28 16:04:49 +01:00
q66
36c264b4b0
make .cc the extension for source files and .hh the extension for header files
2015-06-28 15:39:04 +01:00
q66
9831b15b8c
rename some default functors
2015-06-27 15:00:16 +01:00
q66
ab72b4a602
fix streamoffset empty checking
2015-06-27 03:19:00 +01:00
q66
3e2b21ae4c
streamrange fix
2015-06-27 03:02:00 +01:00
q66
6097d1bd53
make operator() const in endian functors
2015-06-27 02:59:54 +01:00
q66
015c888af6
stream fixes
2015-06-27 02:59:10 +01:00
q66
70e50d2f41
rename to FromBigEndian/FromLilEndian
2015-06-27 02:50:26 +01:00
q66
274de0e70d
add functional::EndianSwap,EndianSwapLil,EndianSwapBig (+ corresponding plain funcs)
2015-06-27 02:38:58 +01:00
q66
da0019dc09
add endian swap funcs to platform.h
2015-06-27 02:05:25 +01:00
q66
715a608b3a
generic StreamRange (defaulting to char)
2015-06-27 01:02:28 +01:00
q66
a840b20ea3
forgot to remove inheritance
2015-06-27 00:59:16 +01:00
q66
32b59e0c2e
add platform.h to easily check for different systems and archs
2015-06-26 23:37:39 +01:00
q66
55d09cb437
delete copy ctor on FileStream
2015-06-26 21:20:05 +01:00
q66
45e468fed3
separate StreamRange from Stream
2015-06-26 21:15:02 +01:00
q66
9677274b3f
each -> iter
2015-06-26 21:01:16 +01:00
q66
29bf4c3b76
streams always read/write by bytes
2015-06-26 20:41:11 +01:00
q66
24ec88c37b
initial filestream work
2015-06-26 20:18:40 +01:00
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