Commit Graph

130 Commits

Author SHA1 Message Date
Daniel James
386d9f28d7 Initial checkin of new version of Boost.Unordered.
- More template use, less preprocessor use.
 - Removed some of the Visual C++ 6 workarounds.
 - Reduced memory use of the main object.
 - Split into smaller headers.

[SVN r55878]
2009-08-30 16:42:28 +00:00
Daniel James
4350660626 Remove allocator_constructor since it's never used.
[SVN r55877]
2009-08-30 16:33:42 +00:00
Daniel James
cf363355df Try to work around an odd Visual C++ 8 bug.
[SVN r55138]
2009-07-23 22:17:20 +00:00
Daniel James
ca018bfba6 Remove the emulation of single argument C++0x std::pair constructor.
[SVN r55132]
2009-07-23 17:53:59 +00:00
Daniel James
3c48fa3818 Adjust the unordered defaults so that emplace takes more parameters and less buckets are created by default.
[SVN r55100]
2009-07-22 22:38:08 +00:00
Daniel James
cec1891586 Disable incorrect Visual C++ 64-bit warnings. Ref #3082.
[SVN r53505]
2009-05-31 15:50:56 +00:00
Daniel James
b83a73ab40 Remove an unused function.
[SVN r53318]
2009-05-27 18:32:38 +00:00
Daniel James
caa0b7cdf6 Fix a change accidentally included in the last commit.
[SVN r53317]
2009-05-27 18:32:22 +00:00
Daniel James
46caec7d77 Some workarounds for old versions of Borland.
[SVN r53316]
2009-05-27 18:19:32 +00:00
Daniel James
cfc134b871 Add explicit destructors to the unordered containers. Refs #2908.
Isn't really needed but it doesn't hurt.

[SVN r53253]
2009-05-25 19:14:07 +00:00
Daniel James
20c9360528 Better configuration for boost.unordered.
[SVN r53127]
2009-05-20 06:43:38 +00:00
Daniel James
09b239ed28 Merge emplace support for sandbox - but without move support.
[SVN r52885]
2009-05-10 21:25:09 +00:00
Daniel James
294d58d2fe Cherrypick some unordered container changes from sandbox. Not including
anything which depends on the new move library.

------------------------------------------------------------------------
r52746 | danieljames | 2009-05-03 11:12:30 +0100 (Sun, 03 May 2009) | 1 line

Merge latest unordered container changes.
------------------------------------------------------------------------
r52747 | danieljames | 2009-05-03 11:15:35 +0100 (Sun, 03 May 2009) | 4 lines

Put the C++0x emplace implementations before the non-C++0x versions.

I'm going to change the non-C++0x to be macro heavy emulations of the
C++0x versions, so this will put the readable version first.
------------------------------------------------------------------------
r52748 | danieljames | 2009-05-03 11:15:44 +0100 (Sun, 03 May 2009) | 1 line

Refactor the unordered implementation a tad, to make implementing emplace less painful.
------------------------------------------------------------------------

[SVN r52884]
2009-05-10 21:24:41 +00:00
Daniel James
3e70155100 Use a preprocessor sequence for the primes.
This feels like overkill but it seems to be the most reliable way to ensure
that the length is correct. I obviously can't be trusted to get it right, and
the template hack seems to prevent Boost.Range from working.

[SVN r52711]
2009-05-01 20:50:32 +00:00
Daniel James
ce379f7bb5 Fix the prime number list length in unordered.
[SVN r52674]
2009-04-30 05:10:57 +00:00
Daniel James
f8e1ec8d2b Revert changes to unordered, as the test fails on most compilers.
[SVN r52673]
2009-04-30 05:08:40 +00:00
Daniel James
4c3c18467c Fix the length of the prime number list. Refs #2975
[SVN r52658]
2009-04-29 10:05:17 +00:00
Daniel James
ac2409627a Use emplace instead of insert in the backend as it's more appropriate.
[SVN r52394]
2009-04-14 17:23:51 +00:00
Daniel James
a07e4c5810 Implement full extract_key for compilers without SFINAE and variadic
templates.

[SVN r52393]
2009-04-14 17:23:37 +00:00
Daniel James
4ac0a12a83 Avoid an unnecessary copy in 'operator[]'
[SVN r52224]
2009-04-06 22:51:36 +00:00
Daniel James
6ccc68b15c Give up and use another macro to destruct values.
[SVN r51995]
2009-03-26 21:09:51 +00:00
Daniel James
188bcafdec Try to destruct values in a way that all compilers might like.
[SVN r51983]
2009-03-26 07:00:46 +00:00
Daniel James
3a8739cd60 Revert [51409]
It isn't working on Borland.

[SVN r51982]
2009-03-26 07:00:21 +00:00
Daniel James
638accbec4 Update copyright dates in hash and unordered.
[SVN r51667]
2009-03-09 20:56:23 +00:00
Daniel James
d442f20bf8 Move some of the data structure classes out of hash table data.
[SVN r51409]
2009-02-22 23:50:20 +00:00
Daniel James
d36fc98c15 Make copy_buckets and move_buckets member functions - so that calling them is a bit simpler.
[SVN r51408]
2009-02-22 23:50:04 +00:00
Daniel James
77021c5bbb Remove a tab.
[SVN r50452]
2009-01-03 23:26:00 +00:00
Daniel James
fe3873b28f Add support for initializer lists to config and the unordered containers.
[SVN r50118]
2008-12-04 21:30:19 +00:00
Daniel James
c1e9a6ac59 Workaround another in-place destruction.
[SVN r50029]
2008-11-29 21:47:55 +00:00
Daniel James
c2425106ea Wild stab at getting destruction working on more compilers.
[SVN r49955]
2008-11-27 11:42:13 +00:00
Daniel James
c8e7874534 Use aligned storage for the value.
[SVN r49927]
2008-11-24 23:15:55 +00:00
Daniel James
601daa0e5d Use a larger prime number list. Fixes #1710
[SVN r49926]
2008-11-24 22:56:04 +00:00
Daniel James
f0bb74a530 Use the new swap library.
[SVN r49770]
2008-11-15 13:07:29 +00:00
Daniel James
b75f06d935 Use pragmas to suppress a Visual C++ warning.
[SVN r49756]
2008-11-14 16:11:16 +00:00
Daniel James
e2d1d75955 Explicitly specify the template parameters in the unordered container friend, in order to avoid some warnings.
[SVN r49735]
2008-11-14 12:51:00 +00:00
John Maddock
d98f72c4e1 Change includes of <cmath> to <boost/config/no_tr1/config.hpp>.
Previously if Boost.TR1 was in the include path then including <cmath> pulls in all the new TR1 math functions, which in turn also requires linking to an external library.  With auto-linking support this requires that library to have been built and be present in the library search path, even if the actual library under use is header only.

Fixes #2392.


[SVN r49254]
2008-10-10 16:10:00 +00:00
Daniel James
f5d52cc9b2 Move the unordered headers into the unordered directory.
[SVN r48803]
2008-09-16 21:49:41 +00:00
Daniel James
62427c8287 Forward headers for the unordered containers.
[SVN r48802]
2008-09-16 21:45:53 +00:00
Daniel James
d6f513be52 Rename 'emplace' with hint to 'emplace_hint'.
[SVN r48081]
2008-08-11 07:52:37 +00:00
Daniel James
4305d10264 On second thoughts, I'll just completely remove hash_value for ordered
containers. It's low quality and not very generic (it uses boost::hash for
mapped values). Should be a painless change.


[SVN r47465]
2008-07-15 22:03:15 +00:00
Daniel James
d5b38b01fc Better hash function for unordered containers. Still a bit rubbish.
[SVN r47463]
2008-07-15 21:26:54 +00:00
Daniel James
d66936a640 Require explicit conversion from allocators.
(Not what it says in the draft standard, but I think that might be a defect).


[SVN r47085]
2008-07-04 22:57:20 +00:00
Daniel James
3640e1e96c Workaround for some template syntax not supported in old versions of Visual C++ 6.5
[SVN r47040]
2008-07-03 14:34:56 +00:00
Daniel James
ec1e809fc3 Extract the hash and equality functions from hash_table_data_*.
As these are extensions and add extra requirements to the container elements,
they shouldn't be part of hash_table_data_* so that they won't get instantiated
if an unordered container is explicitly instantiated.

Merged revisions 46594-46604 via svnmerge from 
https://svn.boost.org/svn/boost/branches/unordered/trunk


[SVN r46607]
2008-06-22 13:54:45 +00:00
Daniel James
9bd3f498a7 Define unordered containers' friend functions outside of the class.
On some compilers, friend functions are being instantiated when the main class
is explicitly instantiated. This is slightly problematic because the equality
functions (which are an extension) put extra requirements on the types used. So
I'm going to try defining the functions outside of the class, in the hope that
they won't get instantiated. If someone wants non-member functions to be
instantiated, I think it's reasonable to expect them to explicitly instantiate
them, especially as compilers don't seem to be consistent about this.


[SVN r46579]
2008-06-21 15:32:11 +00:00
Daniel James
659a014976 Fix in an error in the unordered containers' emulated move constructors. These
aren't actually used, so I could probalby just remove 'move_from' for now (it's
used in the full move library).


[SVN r46410]
2008-06-15 17:03:37 +00:00
Daniel James
6b65b7a916 Merge test improvements, pdf documentation improvements, some implementation
tweaks.

Merged revisions 45747-46030 via svnmerge from 
https://svn.boost.org/svn/boost/branches/unordered/trunk

................
  r45747 | danieljames | 2008-05-25 18:03:30 +0100 (Sun, 25 May 2008) | 1 line
  
  Remove /branches/unordered/dev from svnmerge tracking.
................
  r45874 | danieljames | 2008-05-28 18:54:53 +0100 (Wed, 28 May 2008) | 1 line
  
  Merge from trunk.
................
  r45881 | danieljames | 2008-05-29 00:10:37 +0100 (Thu, 29 May 2008) | 2 lines
  
  Make it possible to use a custom generator in more places.
................
  r45882 | danieljames | 2008-05-29 00:10:56 +0100 (Thu, 29 May 2008) | 2 lines
  
  Remove several unused parameters.
................
  r45883 | danieljames | 2008-05-29 00:11:06 +0100 (Thu, 29 May 2008) | 2 lines
  
  No need to run move_construct_tests1 from move_construct_tests2, already calling it directly.
................
  r45884 | danieljames | 2008-05-29 00:11:15 +0100 (Thu, 29 May 2008) | 2 lines
  
  Remove unused 'construct' as in trunk.
................
  r45885 | danieljames | 2008-05-29 00:11:25 +0100 (Thu, 29 May 2008) | 2 lines
  
  More consistent implementations of insert_impl.
................
  r45886 | danieljames | 2008-05-29 00:11:34 +0100 (Thu, 29 May 2008) | 2 lines
  
  No need to use the single argument version of methods when the variadic version is available. Frees up the non-variadic version for overloading to emulate variadic methods.
................
  r45887 | danieljames | 2008-05-29 00:11:44 +0100 (Thu, 29 May 2008) | 2 lines
  
  Add another test, mainly to avoid an unused parameter warning.
................
  r45888 | danieljames | 2008-05-29 00:11:54 +0100 (Thu, 29 May 2008) | 2 lines
  
  Adjust the pixels per inch of the buckets diagram so it'll fit on the page.
................
  r45889 | danieljames | 2008-05-29 00:15:49 +0100 (Thu, 29 May 2008) | 1 line
  
  Improve pdf output, thanks to John Maddock.
................
  r45890 | danieljames | 2008-05-29 00:17:45 +0100 (Thu, 29 May 2008) | 1 line
  
  Add an svg version of the bucket diagram.
................
  r45891 | danieljames | 2008-05-29 00:18:11 +0100 (Thu, 29 May 2008) | 1 line
  
  Remove the original dia buckets diagram, I'm not using it anymore.
................
  r46025 | danieljames | 2008-06-01 18:39:51 +0100 (Sun, 01 Jun 2008) | 1 line
  
  Initialise merging from doc.
................
  r46030 | danieljames | 2008-06-01 18:54:36 +0100 (Sun, 01 Jun 2008) | 29 lines
  
  Merge in documentation improvements from the doc branch.
  
  Merged revisions 45892-46020 via svnmerge from 
  https://svn.boost.org/svn/boost/branches/doc
  
  ........
    r45892 | danieljames | 2008-05-29 00:30:07 +0100 (Thu, 29 May 2008) | 1 line
    
    Merge latest changes from unordered.
  ........
    r46017 | danieljames | 2008-06-01 18:18:15 +0100 (Sun, 01 Jun 2008) | 2 lines
    
    Use both PNG and SVG versions of the buckets diagram.
  ........
    r46018 | danieljames | 2008-06-01 18:18:27 +0100 (Sun, 01 Jun 2008) | 2 lines
    
    Improved function summary tables in unordered documenations.
  ........
    r46019 | danieljames | 2008-06-01 18:18:39 +0100 (Sun, 01 Jun 2008) | 3 lines
    
    I'd hacked the bibliography to avoid showing the title twice, but this was
    causing problems when generating PDFs, so show the title twice.
  ........
    r46020 | danieljames | 2008-06-01 18:18:52 +0100 (Sun, 01 Jun 2008) | 3 lines
    
    Don't use the compact boostbook refernce style in the standalone documentation
    as it is too wide for printing out.
  ........
................


[SVN r46031]
2008-06-01 18:00:53 +00:00
Daniel James
c85c8dbeef Some compilers don't like the use of sizeof with a static template member
array, so I'm hardcoding the prime number list length. Pity.


[SVN r45620]
2008-05-21 20:43:40 +00:00
Daniel James
0be8004724 Merge in a few small changes to unordered.
Merged revisions 45277-45280 via svnmerge from 
https://svn.boost.org/svn/boost/branches/unordered/trunk

........
  r45277 | danieljames | 2008-05-11 14:09:05 +0100 (Sun, 11 May 2008) | 2 lines
  
  Put the prime number list into a template so that they (hopefully) only get included once.
........
  r45278 | danieljames | 2008-05-11 14:12:27 +0100 (Sun, 11 May 2008) | 2 lines
  
  Add a quick explanation for an odd looking constructor.
........
  r45279 | danieljames | 2008-05-11 14:12:37 +0100 (Sun, 11 May 2008) | 2 lines
  
  No need to include the exception objects in helpers/strong.hpp. Now helpers on depend on the forwarding header from the objects.
........
  r45280 | danieljames | 2008-05-11 14:14:31 +0100 (Sun, 11 May 2008) | 1 line
  
  Instead of comparing potentially dangling pointers in move_tests check if any objects have been constructed.
........


[SVN r45574]
2008-05-20 15:24:20 +00:00
Daniel James
18e46ae624 Fix for older versions of the Borland C++ compiler which create the default
'operator=' even when an 'operator=' which takes its argument by value has been
defined. This causes assignments to be ambiguous. To work around this, I'm
removing the definitions on those compilers - breaking move assignment, but
allowing other assignments to work.

I'm using 0x0593 because that's the earliest compiler that I've seen do the
right thing, but it might also work on earlier 5.9.x versions.

Refs #1923.



[SVN r45573]
2008-05-20 15:13:57 +00:00