Commit Graph

394 Commits (c34e81be56c2ac187f103d95d998fcf9969240e0)

Author SHA1 Message Date
Daniel Kolesa e31c227567 add optional range methods get_n/put_n (with accurate default implementations, overridable for performance) 2015-07-01 21:46:58 +01:00
Daniel Kolesa a23525bacf make put() on OutputRanges return bool 2015-07-01 21:12:45 +01:00
Daniel Kolesa f36c35afae add StringBase::length which will eventually deal with unicode and return the number of codepoints 2015-07-01 21:03:44 +01:00
Daniel Kolesa c86d31e5c2 use 64bit file offsets and _ftelli64/_fseeki64 on Windows + specialize some FileStream methods 2015-07-01 21:02:01 +01:00
Daniel Kolesa 1de58ac2b6 make most funcs taking strings allocator independent 2015-07-01 20:20:37 +01:00
Daniel Kolesa ea1325543d more formatter work, type traits fixes, formatting on all streams 2015-07-01 18:51:39 +01:00
Daniel Kolesa b5748267d9 namespace detail stuff 2015-07-01 02:29:42 +01:00
Daniel Kolesa 011aea6fbb initial format string support 2015-07-01 02:23:07 +01:00
Daniel Kolesa 809e4825ae fixes 2015-07-01 01:46:01 +01:00
Daniel Kolesa b51e84c8b0 hash char */const char * as a string by default (to avoid that, cast to byte ptr) 2015-06-30 23:30:48 +01:00
Daniel Kolesa 06eeec1ca7 schar/uchar -> sbyte/byte, extend write/writeln on Stream, rename Stream::read/write to read/write_bytes to clear ambiguities and overloads, fixes 2015-06-30 23:07:28 +01:00
Daniel Kolesa 5ace1c4777 vararg and type-generic octa::write(ln) 2015-06-30 22:41:17 +01:00
Daniel Kolesa 656ddb76af split filestreams into octa/io.hh + add more funcs, methods etc 2015-06-30 19:25:40 +01:00
Daniel Kolesa 1e7640031a delete default ctors on all core range types 2015-06-29 23:33:20 +01:00
Daniel Kolesa 57dbad0282 remove the need for range default constructors for RangeIterator support 2015-06-29 23:21:24 +01:00
Daniel Kolesa f8c99b9f50 fix type traits aligned storage 2015-06-29 23:18:08 +01:00
Daniel Kolesa d8d8ea7151 put EnableIf in template type params where possible 2015-06-29 21:59:09 +01:00
Daniel Kolesa 2f16288671 fix includes 2015-06-29 21:33:18 +01:00
Daniel Kolesa b4146b0523 more reliable and accurate empty() checking in StreamRange 2015-06-29 18:54:25 +01:00
Daniel Kolesa 41c0ac0fdd return a pointer from the "at" methods (which is nullptr on non-existent items) 2015-06-28 22:16:13 +01:00
Daniel Kolesa 9f58a6c399 add octa::Maybe, representing optional values for simpler error handling 2015-06-28 21:28:54 +01:00
Daniel Kolesa 10fa69dcd1 constexpr initializer_list 2015-06-28 20:39:27 +01:00
Daniel Kolesa c53efaba92 fix hash table guard too 2015-06-28 16:05:27 +01:00
Daniel Kolesa 94daa4f76b fix include guards 2015-06-28 16:04:49 +01:00
Daniel Kolesa 36c264b4b0 make .cc the extension for source files and .hh the extension for header files 2015-06-28 15:39:04 +01:00
Daniel Kolesa 9831b15b8c rename some default functors 2015-06-27 15:00:16 +01:00
Daniel Kolesa ab72b4a602 fix streamoffset empty checking 2015-06-27 03:19:00 +01:00
Daniel Kolesa 3e2b21ae4c streamrange fix 2015-06-27 03:02:00 +01:00
Daniel Kolesa 6097d1bd53 make operator() const in endian functors 2015-06-27 02:59:54 +01:00
Daniel Kolesa 015c888af6 stream fixes 2015-06-27 02:59:10 +01:00
Daniel Kolesa 70e50d2f41 rename to FromBigEndian/FromLilEndian 2015-06-27 02:50:26 +01:00
Daniel Kolesa 274de0e70d add functional::EndianSwap,EndianSwapLil,EndianSwapBig (+ corresponding plain funcs) 2015-06-27 02:38:58 +01:00
Daniel Kolesa da0019dc09 add endian swap funcs to platform.h 2015-06-27 02:05:25 +01:00
Daniel Kolesa 715a608b3a generic StreamRange (defaulting to char) 2015-06-27 01:02:28 +01:00
Daniel Kolesa a840b20ea3 forgot to remove inheritance 2015-06-27 00:59:16 +01:00
Daniel Kolesa 32b59e0c2e add platform.h to easily check for different systems and archs 2015-06-26 23:37:39 +01:00
Daniel Kolesa 55d09cb437 delete copy ctor on FileStream 2015-06-26 21:20:05 +01:00
Daniel Kolesa 45e468fed3 separate StreamRange from Stream 2015-06-26 21:15:02 +01:00
Daniel Kolesa 9677274b3f each -> iter 2015-06-26 21:01:16 +01:00
Daniel Kolesa 29bf4c3b76 streams always read/write by bytes 2015-06-26 20:41:11 +01:00
Daniel Kolesa 24ec88c37b initial filestream work 2015-06-26 20:18:40 +01:00
Daniel Kolesa 6b32072694 some initial stream api stuff 2015-06-26 02:30:48 +01:00
Daniel Kolesa 9a6caffefe fix potential gcc warnings 2015-06-26 00:14:18 +01:00
Daniel Kolesa 3a1ea741f1 do not move-on-return in order to allow copy elision 2015-06-25 18:59:26 +01:00
Daniel Kolesa 501beee633 in HashRange, keep p_beg always pointing to the same bucket as p_node 2015-06-25 01:19:21 +01:00
Daniel Kolesa a4d33c5cd7 use friends to handle copy constructors correctly 2015-06-25 01:16:19 +01:00
Daniel Kolesa ddb18b9d0d relax RangeHalf copy constructor a little (allow convertible range types) 2015-06-25 01:07:11 +01:00
Daniel Kolesa dbb266b5bd disallow range half trait checks 2015-06-24 20:03:23 +01:00
Daniel Kolesa 4c2376ea2d no need for distance_front either 2015-06-21 22:47:17 +01:00
Daniel Kolesa 6f2ab37b55 no need to implement push_front_n on TakeRange 2015-06-21 22:46:29 +01:00
Daniel Kolesa 154b1c7588 operator+ and operator- should be const 2015-06-21 22:29:17 +01:00
Daniel Kolesa f93094735e remove duplications in all hash table code + unify hashes and multihashes into a single struct 2015-06-18 02:32:43 +01:00
Daniel Kolesa b20a6ec38e hash table cleanups 2015-06-18 01:41:00 +01:00
Daniel Kolesa 7cf50febd9 cleaner multihash handling 2015-06-18 01:17:33 +01:00
Daniel Kolesa e0ce128d13 remove unneeded templates 2015-06-17 21:37:22 +01:00
Daniel Kolesa 281371bb0c reduce code duplication 2015-06-17 21:33:49 +01:00
Daniel Kolesa ea70d2e467 add octa::Multimap and octa::Multiset 2015-06-17 21:25:34 +01:00
Daniel Kolesa bbb5fbf224 stricter bucket/hashrange ctor test 2015-06-17 19:19:08 +01:00
Daniel Kolesa 7a63619852 actually only check for sameness without qualifiers 2015-06-17 02:30:36 +01:00
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