Daniel James
eced4266c2
Unordered: Copy and assign using Boost.Move.
...
[SVN r73503]
2011-08-03 08:34:33 +00:00
Daniel James
ff66f79721
Unordered: Import functions into boost namespace.
...
[SVN r72905]
2011-07-04 21:52:17 +00:00
Daniel James
8b610a6d34
Unordered: Work around for compilers which don't support template friend members.
...
[SVN r72523]
2011-06-09 19:48:34 +00:00
Daniel James
20e923ba0d
Unordered: Move the implementation into a namespace.
...
Although it typically won't prevent ADL, because of boost::hash.
[SVN r72391]
2011-06-04 16:17:07 +00:00
Daniel James
4777eaf367
Unordered: remove some dead, bad code.
...
[SVN r72390]
2011-06-04 16:15:27 +00:00
Daniel James
a40422fada
Unordered: remove use of the 'or' keyword.
...
[SVN r71602]
2011-04-29 11:03:29 +00:00
Daniel James
b1912055a9
Unordered: Fix some errors in the equality tests.
...
[SVN r71363]
2011-04-17 21:27:38 +00:00
Daniel James
e8714d79b2
Unordered: Implement C++0x equality.
...
[SVN r71354]
2011-04-17 16:23:25 +00:00
Daniel James
f8e2a917f9
Unordered: 2 phase lookup fix for clang.
...
[SVN r71352]
2011-04-17 14:27:08 +00:00
Daniel James
140e8852e8
Unordered: fix some gcc issues.
...
[SVN r71346]
2011-04-17 00:31:35 +00:00
Daniel James
547e141166
Unordered: Overhaul the implementation.
...
Store nodes in a single linked list, with hash values so that their
buckets can be found when needed. Iterators now only have to store a
pointer to the node and don't have to iterate over empty buckets to
reach the next node. This allows the container to meet the iterator
requirements - fixing the speed issues with `equal_range` and `erase`.
Also, define iterators in their own namespace, so that they don't
accidentally pull in detail functions via ADL.
I've simplified the code slightly by removing some of the special
cases for empty containers. Renamed a few things as well and other
minor changes that were made as I went along.
[SVN r71327]
2011-04-16 18:47:33 +00:00
Daniel James
b9188caf7d
Fix [66556] - Remove clang workaround.
...
I accidentaly removed the good code and left the workaround in. Also, a
correction to the comment: I think bug was only in a unreleased version
of clang.
[SVN r66567]
2010-11-14 11:43:49 +00:00
Daniel James
14e0e1afc2
Less use of the ampersand operator in unordered.
...
[SVN r66557]
2010-11-13 12:31:54 +00:00
Daniel James
2c1a8894cb
Remove clang workaround.
...
Clang from llvm 2.8 doesn't need it. Clang form llvm 2.7 isn't
supported.
[SVN r66556]
2010-11-13 12:30:45 +00:00
Daniel James
a49c76c69c
More comments describing the unordered internals.
...
And fix a couple of small mistakes in the existing comments.
[SVN r66555]
2010-11-13 12:30:06 +00:00
Daniel James
daad24388c
Fix iterator insert bug in unordered_set/unordered_map.
...
[SVN r66136]
2010-10-21 20:23:37 +00:00
Daniel James
5edc45349f
Revert changes for sun 5.9.
...
Nobody seems to be running the tests now.
[SVN r62117]
2010-05-21 07:06:33 +00:00
Daniel James
dfaa61b666
Another inline.
...
[SVN r61872]
2010-05-09 07:24:47 +00:00
Daniel James
076e195cac
Define several methods inline.
...
Sun 5.9 was having some issues.
[SVN r61831]
2010-05-06 20:13:25 +00:00
Daniel James
71a8e56ae3
Move equivalent and unique hash tables into their own headers.
...
[SVN r61830]
2010-05-06 20:12:40 +00:00
Daniel James
ef79fea0b7
The clang workaround broke some compilers, so only use it for clang.
...
[SVN r61529]
2010-04-24 12:59:35 +00:00
Daniel James
5bab4d4360
Work around friend bug in clang.
...
[SVN r61504]
2010-04-23 07:25:53 +00:00
Daniel James
00cebc3dfb
Use boost::throw_exception in unordered.
...
[SVN r60983]
2010-03-31 21:42:08 +00:00
Daniel James
06f63fdc0d
Stop using the deprecated BOOST_HAS_ macros in unordered and hash.
...
[SVN r59697]
2010-02-15 23:01:06 +00:00
Daniel James
7efcf9ccff
Set length of primes inside template on Sun C++. Refs #3854
...
[SVN r59200]
2010-01-21 18:01:53 +00:00
Daniel James
71096f4d26
Formatting changes, mostly to fit within 80 characters.
...
Also, some C casts converted to static_cast.
[SVN r58692]
2010-01-04 22:49:39 +00:00
Daniel James
b99382b551
Add templated find overload for compatible keys.
...
[SVN r58405]
2009-12-15 22:53:33 +00:00
Daniel James
4e6292b439
Implement an alternative erase function that doesn't return an iterator.
...
Ref #3693
[SVN r58403]
2009-12-15 22:52:52 +00:00
Daniel James
2f0a94bcfd
Add missing std:: qualifier to ptrdiff_t. Refs #3773 .
...
[SVN r58402]
2009-12-15 22:42:04 +00:00
Daniel James
c8b893cb77
Workaround codegear ICE.
...
It seems that the problem is calling sizeof on a dependent type when the
containers have only been used by reference. So by putting in these
dummy structures with the containers as members, it helps the compiler
instantiate the class to the level where sizeof works. I hope.
[SVN r58130]
2009-12-04 00:51:50 +00:00
Daniel James
1f17294cd3
Use remove_const again.
...
[SVN r57840]
2009-11-21 20:37:50 +00:00
Daniel James
df72c4886f
Support incomplete template parameters to unordered containers.
...
[SVN r57798]
2009-11-20 08:03:26 +00:00
Daniel James
26c72f9860
Use 'E' for key extractor, freeing 'K' for key.
...
[SVN r57797]
2009-11-20 08:02:48 +00:00
Daniel James
55957bbab5
Some more warning fixes for Visual C++ 7.1
...
[SVN r57719]
2009-11-16 23:56:37 +00:00
Daniel James
ab843eb587
Fix a warning on Visual C++ 7.1. Although, I don't think I'm going to be warning free on the compiler.
...
[SVN r57617]
2009-11-12 21:36:27 +00:00
Daniel James
4438b8e017
Fix a warning that only shows up in release builds.
...
[SVN r57556]
2009-11-10 20:07:50 +00:00
Daniel James
b4f08db391
Remove 'grouped' from hash_table as it isn't used and is a bit confusing.
...
[SVN r57153]
2009-10-25 10:55:27 +00:00
Daniel James
060acb3f25
Slightly rearrange the unordered container headers so that prev_prime is defined before it's used.
...
[SVN r57152]
2009-10-25 10:55:08 +00:00
Daniel James
6bac25221a
Fix unordered for intel strict.
...
[SVN r57139]
2009-10-24 17:53:03 +00:00
Daniel James
8d4b503e56
Use normal emplace implementation for emplace_hint and insert with hint.
...
There's a bug in the emplace_hint implementation for unordered
containers with equivalent keys. Since my tests missed it, I'm just
going to use the normal emplace implementation until I write better
tests.
[SVN r57005]
2009-10-19 19:24:33 +00:00
Daniel James
854dc0b353
Various inspect fixes.
...
[SVN r56603]
2009-10-05 21:29:39 +00:00
Daniel James
373791d0b2
Detab.
...
[SVN r56571]
2009-10-04 10:37:56 +00:00
Daniel James
fe3d612fe0
Clean up some unordered TODOs.
...
[SVN r56570]
2009-10-04 10:37:36 +00:00
Daniel James
ae0c97a77a
Make sure inserting from a range of types other than the value type is better tested.
...
[SVN r56562]
2009-10-03 16:42:20 +00:00
Daniel James
2b8680d2c4
Remove the optimization for std::pair with a key reference. It'll be too much hassle to get a very unusual use case to work on all compilers.
...
[SVN r56461]
2009-09-28 23:06:03 +00:00
Daniel James
31cd8f4e16
Try supporting reference parameters in pairs. Probably not required.
...
[SVN r56441]
2009-09-27 19:12:04 +00:00
Daniel James
437a35feaa
Remove the emplace_hint implementation for unique containers as it isn't really used and seems to be causing sun 5.7 problems.
...
[SVN r56363]
2009-09-22 22:39:17 +00:00
Daniel James
f76af2d0c8
Another std::max.
...
[SVN r56362]
2009-09-22 22:39:00 +00:00
Daniel James
efbf13685e
Use std::max.
...
[SVN r56349]
2009-09-21 21:18:21 +00:00
Daniel James
08d533cb88
Fix a bug that was causing unnecessary rehahes.
...
[SVN r56348]
2009-09-21 21:18:01 +00:00