mirror of
https://github.com/boostorg/unordered.git
synced 2025-07-30 03:17:15 +02:00
Merge hash and unordered changes.
Remove deprecated headers, move hash_fwd.hpp into hash subdirectory. And several minor internal changes. Mostly minor internal details. Merged revisions 51262-51263,51407-51409,51504-51505,51644-51646,51667 via svnmerge from https://svn.boost.org/svn/boost/trunk ........ r51262 | danieljames | 2009-02-15 19:32:04 +0000 (Sun, 15 Feb 2009) | 1 line Use the new 'boost:' links for the hash, unordered and quickbook documentation. ........ r51263 | danieljames | 2009-02-15 19:32:19 +0000 (Sun, 15 Feb 2009) | 2 lines Don't copy images for the standalone hash and unordered documentation, was only really required before the libraries were integrated into boost. ........ r51407 | danieljames | 2009-02-22 23:49:51 +0000 (Sun, 22 Feb 2009) | 1 line Fix the hash dirname. ........ r51408 | danieljames | 2009-02-22 23:50:04 +0000 (Sun, 22 Feb 2009) | 1 line Make copy_buckets and move_buckets member functions - so that calling them is a bit simpler. ........ r51409 | danieljames | 2009-02-22 23:50:20 +0000 (Sun, 22 Feb 2009) | 1 line Move some of the data structure classes out of hash table data. ........ r51504 | danieljames | 2009-03-01 14:15:09 +0000 (Sun, 01 Mar 2009) | 1 line Add missing return for operator=. ........ r51505 | danieljames | 2009-03-01 14:15:39 +0000 (Sun, 01 Mar 2009) | 3 lines Make the sort stable. Doesn't really matter, but it might as well be. ........ r51644 | danieljames | 2009-03-08 09:44:51 +0000 (Sun, 08 Mar 2009) | 1 line Detab. ........ r51645 | danieljames | 2009-03-08 09:45:11 +0000 (Sun, 08 Mar 2009) | 4 lines Move hash_fwd into the hash subdirectory. I should have done this in the last release. But now all of the hash implementation is in the hash subdirectory. ........ r51646 | danieljames | 2009-03-08 09:45:30 +0000 (Sun, 08 Mar 2009) | 3 lines Remove deprecated headers. Fixes #2412. ........ r51667 | danieljames | 2009-03-09 20:56:23 +0000 (Mon, 09 Mar 2009) | 1 line Update copyright dates in hash and unordered. ........ [SVN r51729]
This commit is contained in:
@ -8,11 +8,11 @@ path-constant admonishment_location : ../../../../doc/src/images ;
|
|||||||
|
|
||||||
xml unordered : unordered.qbk ;
|
xml unordered : unordered.qbk ;
|
||||||
boostbook standalone : unordered :
|
boostbook standalone : unordered :
|
||||||
<format>html:<xsl:param>admon.graphics.path=images/
|
<xsl:param>html.stylesheet=../../../../doc/html/boostbook.css
|
||||||
<xsl:param>navig.graphics.path=images/
|
|
||||||
<xsl:param>html.stylesheet=boostbook.css
|
|
||||||
<xsl:param>boost.root=../../../..
|
<xsl:param>boost.root=../../../..
|
||||||
<xsl:param>boost.libraries=../../../libraries.htm
|
<xsl:param>boost.libraries=../../../libraries.htm
|
||||||
|
<xsl:param>navig.graphics=1
|
||||||
|
|
||||||
<xsl:param>chunk.first.sections=1
|
<xsl:param>chunk.first.sections=1
|
||||||
<xsl:param>chunk.section.depth=2
|
<xsl:param>chunk.section.depth=2
|
||||||
<xsl:param>generate.section.toc.level=2
|
<xsl:param>generate.section.toc.level=2
|
||||||
@ -23,9 +23,6 @@ boostbook standalone : unordered :
|
|||||||
<xsl:param>boost.compact.function=0
|
<xsl:param>boost.compact.function=0
|
||||||
<xsl:param>boost.compact.enum=0
|
<xsl:param>boost.compact.enum=0
|
||||||
|
|
||||||
<dependency>css
|
|
||||||
<dependency>images
|
|
||||||
|
|
||||||
# PDF Options:
|
# PDF Options:
|
||||||
# TOC Generation: this is needed for FOP-0.9 and later:
|
# TOC Generation: this is needed for FOP-0.9 and later:
|
||||||
<xsl:param>fop1.extensions=0
|
<xsl:param>fop1.extensions=0
|
||||||
@ -54,10 +51,3 @@ boostbook standalone : unordered :
|
|||||||
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/unordered/doc/html
|
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/unordered/doc/html
|
||||||
;
|
;
|
||||||
|
|
||||||
install css : [ glob $(BOOST_ROOT)/doc/src/*.css ]
|
|
||||||
: <location>html ;
|
|
||||||
install images : [ glob $(BOOST_ROOT)/doc/src/images/*.png ]
|
|
||||||
: <location>html/images ;
|
|
||||||
explicit css ;
|
|
||||||
explicit images ;
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
Copyright Daniel James 2008
|
Copyright Daniel James 2008-2009
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
-->
|
-->
|
||||||
|
@ -44,7 +44,7 @@ First official release.
|
|||||||
|
|
||||||
[h2 Boost 1.38.0]
|
[h2 Boost 1.38.0]
|
||||||
|
|
||||||
* Use [@../../libs/utility/swap.html `boost::swap`].
|
* Use [@boost:/libs/utility/swap.html `boost::swap`].
|
||||||
* [@https://svn.boost.org/trac/boost/ticket/2237 Ticket 2237]:
|
* [@https://svn.boost.org/trac/boost/ticket/2237 Ticket 2237]:
|
||||||
Document that the equality and inequality operators are undefined for two
|
Document that the equality and inequality operators are undefined for two
|
||||||
objects if their equality predicates aren't equivalent. Thanks to Daniel
|
objects if their equality predicates aren't equivalent. Thanks to Daniel
|
||||||
@ -53,7 +53,7 @@ First official release.
|
|||||||
Use a larger prime number list. Thanks to Thorsten Ottosen and Hervé
|
Use a larger prime number list. Thanks to Thorsten Ottosen and Hervé
|
||||||
Brönnimann.
|
Brönnimann.
|
||||||
* Use
|
* Use
|
||||||
[@../../libs/type_traits/doc/html/boost_typetraits/category/alignment.html
|
[@boost:/libs/type_traits/doc/html/boost_typetraits/category/alignment.html
|
||||||
aligned storage] to store the types. This changes the way the allocator is
|
aligned storage] to store the types. This changes the way the allocator is
|
||||||
used to construct nodes. It used to construct the node with two calls to
|
used to construct nodes. It used to construct the node with two calls to
|
||||||
the allocator's `construct` method - once for the pointers and once for the
|
the allocator's `construct` method - once for the pointers and once for the
|
||||||
|
@ -23,7 +23,7 @@ but not the equality predicate. For example, if you wanted to use the
|
|||||||
[import src_code/dictionary.cpp]
|
[import src_code/dictionary.cpp]
|
||||||
[case_sensitive_dictionary_fnv]
|
[case_sensitive_dictionary_fnv]
|
||||||
|
|
||||||
There is an [@../../libs/unordered/examples/fnv1.hpp implementation
|
There is an [@boost:/libs/unordered/examples/fnv1.hpp implementation
|
||||||
of FNV-1] in the examples directory.
|
of FNV-1] in the examples directory.
|
||||||
|
|
||||||
If you wish to use a different equality function,
|
If you wish to use a different equality function,
|
||||||
@ -38,7 +38,7 @@ Which you can then use in a case insensitive dictionary:
|
|||||||
[case_insensitive_dictionary]
|
[case_insensitive_dictionary]
|
||||||
|
|
||||||
This is a simplified version of the example at
|
This is a simplified version of the example at
|
||||||
[@../../libs/unordered/examples/case_insensitive.hpp /libs/unordered/examples/case_insensitive.hpp]
|
[@boost:/libs/unordered/examples/case_insensitive.hpp /libs/unordered/examples/case_insensitive.hpp]
|
||||||
which supports other locales and string types.
|
which supports other locales and string types.
|
||||||
|
|
||||||
[caution
|
[caution
|
||||||
|
10
doc/ref.xml
10
doc/ref.xml
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
Copyright Daniel James 2006-2008
|
Copyright Daniel James 2006-2009
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
--><library-reference>
|
--><library-reference>
|
||||||
@ -24,7 +24,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|||||||
</purpose>
|
</purpose>
|
||||||
<description>
|
<description>
|
||||||
<para>For the normative reference see chapter 23 of
|
<para>For the normative reference see chapter 23 of
|
||||||
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2691.pdf">the working draft of the C++ standard [n2691].</ulink></para>
|
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008-2009/n2691.pdf">the working draft of the C++ standard [n2691].</ulink></para>
|
||||||
<para><emphasis role="bold">Template Parameters</emphasis>
|
<para><emphasis role="bold">Template Parameters</emphasis>
|
||||||
<informaltable>
|
<informaltable>
|
||||||
<tgroup cols="2">
|
<tgroup cols="2">
|
||||||
@ -758,7 +758,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|||||||
</purpose>
|
</purpose>
|
||||||
<description>
|
<description>
|
||||||
<para>For the normative reference see chapter 23 of
|
<para>For the normative reference see chapter 23 of
|
||||||
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2691.pdf">the working draft of the C++ standard [n2691].</ulink></para>
|
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008-2009/n2691.pdf">the working draft of the C++ standard [n2691].</ulink></para>
|
||||||
<para><emphasis role="bold">Template Parameters</emphasis>
|
<para><emphasis role="bold">Template Parameters</emphasis>
|
||||||
<informaltable>
|
<informaltable>
|
||||||
<tgroup cols="2">
|
<tgroup cols="2">
|
||||||
@ -1496,7 +1496,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|||||||
</purpose>
|
</purpose>
|
||||||
<description>
|
<description>
|
||||||
<para>For the normative reference see chapter 23 of
|
<para>For the normative reference see chapter 23 of
|
||||||
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2691.pdf">the working draft of the C++ standard [n2691].</ulink></para>
|
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008-2009/n2691.pdf">the working draft of the C++ standard [n2691].</ulink></para>
|
||||||
<para><emphasis role="bold">Template Parameters</emphasis>
|
<para><emphasis role="bold">Template Parameters</emphasis>
|
||||||
<informaltable>
|
<informaltable>
|
||||||
<tgroup cols="2">
|
<tgroup cols="2">
|
||||||
@ -2279,7 +2279,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|||||||
</purpose>
|
</purpose>
|
||||||
<description>
|
<description>
|
||||||
<para>For the normative reference see chapter 23 of
|
<para>For the normative reference see chapter 23 of
|
||||||
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2691.pdf">the working draft of the C++ standard [n2691].</ulink></para>
|
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008-2009/n2691.pdf">the working draft of the C++ standard [n2691].</ulink></para>
|
||||||
<para><emphasis role="bold">Template Parameters</emphasis>
|
<para><emphasis role="bold">Template Parameters</emphasis>
|
||||||
<informaltable>
|
<informaltable>
|
||||||
<tgroup cols="2">
|
<tgroup cols="2">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2008 Daniel James.
|
// Copyright 2008-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2008 Daniel James.
|
// Copyright 2005-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2008 Daniel James.
|
// Copyright 2008-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
||||||
// Copyright (C) 2005-2008 Daniel James
|
// Copyright (C) 2005-2009 Daniel James
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
@ -228,6 +228,49 @@ namespace boost {
|
|||||||
void destroy(T* x) {
|
void destroy(T* x) {
|
||||||
x->~T();
|
x->~T();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Some classes for the data structure
|
||||||
|
|
||||||
|
template <typename Alloc>
|
||||||
|
struct bucket_impl
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
bucket_impl& operator=(bucket_impl const&);
|
||||||
|
public:
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
boost::unordered_detail::rebind_wrap<Alloc, bucket_impl>::type
|
||||||
|
bucket_allocator;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
allocator_pointer<bucket_allocator>::type bucket_ptr;
|
||||||
|
typedef bucket_ptr link_ptr;
|
||||||
|
|
||||||
|
link_ptr next_;
|
||||||
|
|
||||||
|
bucket_impl() : next_()
|
||||||
|
{
|
||||||
|
BOOST_UNORDERED_MSVC_RESET_PTR(next_);
|
||||||
|
}
|
||||||
|
|
||||||
|
bucket_impl(bucket_impl const& x) : next_(x.next_)
|
||||||
|
{
|
||||||
|
// Only copy construct when allocating.
|
||||||
|
BOOST_ASSERT(!x.next_);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool empty() const
|
||||||
|
{
|
||||||
|
return !this->next_;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct value_base {
|
||||||
|
typename boost::aligned_storage<
|
||||||
|
sizeof(T),
|
||||||
|
boost::alignment_of<T>::value>::type data_;
|
||||||
|
|
||||||
|
void* address() { return this; }
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
|
|
||||||
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
||||||
// Copyright (C) 2005-2008 Daniel James
|
// Copyright (C) 2005-2009 Daniel James
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
#if BOOST_UNORDERED_EQUIVALENT_KEYS
|
#if BOOST_UNORDERED_EQUIVALENT_KEYS
|
||||||
#define BOOST_UNORDERED_TABLE hash_table_equivalent_keys
|
#define BOOST_UNORDERED_TABLE hash_table_equivalent_keys
|
||||||
|
#define BOOST_UNORDERED_TABLE_NODE node_equivalent_keys
|
||||||
#define BOOST_UNORDERED_TABLE_DATA hash_table_data_equivalent_keys
|
#define BOOST_UNORDERED_TABLE_DATA hash_table_data_equivalent_keys
|
||||||
#define BOOST_UNORDERED_ITERATOR hash_iterator_equivalent_keys
|
#define BOOST_UNORDERED_ITERATOR hash_iterator_equivalent_keys
|
||||||
#define BOOST_UNORDERED_CONST_ITERATOR hash_const_iterator_equivalent_keys
|
#define BOOST_UNORDERED_CONST_ITERATOR hash_const_iterator_equivalent_keys
|
||||||
@ -13,6 +14,7 @@
|
|||||||
#define BOOST_UNORDERED_CONST_LOCAL_ITERATOR hash_const_local_iterator_equivalent_keys
|
#define BOOST_UNORDERED_CONST_LOCAL_ITERATOR hash_const_local_iterator_equivalent_keys
|
||||||
#else
|
#else
|
||||||
#define BOOST_UNORDERED_TABLE hash_table_unique_keys
|
#define BOOST_UNORDERED_TABLE hash_table_unique_keys
|
||||||
|
#define BOOST_UNORDERED_TABLE_NODE node_unique_keys
|
||||||
#define BOOST_UNORDERED_TABLE_DATA hash_table_data_unique_keys
|
#define BOOST_UNORDERED_TABLE_DATA hash_table_data_unique_keys
|
||||||
#define BOOST_UNORDERED_ITERATOR hash_iterator_unique_keys
|
#define BOOST_UNORDERED_ITERATOR hash_iterator_unique_keys
|
||||||
#define BOOST_UNORDERED_CONST_ITERATOR hash_const_iterator_unique_keys
|
#define BOOST_UNORDERED_CONST_ITERATOR hash_const_iterator_unique_keys
|
||||||
@ -23,6 +25,32 @@
|
|||||||
namespace boost {
|
namespace boost {
|
||||||
namespace unordered_detail {
|
namespace unordered_detail {
|
||||||
|
|
||||||
|
template <typename Alloc>
|
||||||
|
struct BOOST_UNORDERED_TABLE_NODE :
|
||||||
|
value_base<BOOST_DEDUCED_TYPENAME allocator_value_type<Alloc>::type>,
|
||||||
|
bucket_impl<Alloc>
|
||||||
|
{
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME bucket_impl<Alloc>::link_ptr link_ptr;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME allocator_value_type<Alloc>::type value_type;
|
||||||
|
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
boost::unordered_detail::rebind_wrap<Alloc, BOOST_UNORDERED_TABLE_NODE>::type
|
||||||
|
node_allocator;
|
||||||
|
|
||||||
|
#if BOOST_UNORDERED_EQUIVALENT_KEYS
|
||||||
|
BOOST_UNORDERED_TABLE_NODE() : group_prev_()
|
||||||
|
{
|
||||||
|
BOOST_UNORDERED_MSVC_RESET_PTR(group_prev_);
|
||||||
|
}
|
||||||
|
|
||||||
|
link_ptr group_prev_;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
value_type& value() {
|
||||||
|
return *static_cast<value_type*>(this->address());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Hash Table Data
|
// Hash Table Data
|
||||||
//
|
//
|
||||||
@ -34,86 +62,24 @@ namespace boost {
|
|||||||
public:
|
public:
|
||||||
typedef BOOST_UNORDERED_TABLE_DATA data;
|
typedef BOOST_UNORDERED_TABLE_DATA data;
|
||||||
|
|
||||||
struct node;
|
|
||||||
struct bucket;
|
|
||||||
typedef std::size_t size_type;
|
typedef std::size_t size_type;
|
||||||
typedef std::ptrdiff_t difference_type;
|
typedef std::ptrdiff_t difference_type;
|
||||||
|
|
||||||
typedef Alloc value_allocator;
|
typedef Alloc value_allocator;
|
||||||
|
|
||||||
typedef BOOST_DEDUCED_TYPENAME
|
typedef bucket_impl<Alloc> bucket;
|
||||||
boost::unordered_detail::rebind_wrap<Alloc, node>::type
|
typedef BOOST_DEDUCED_TYPENAME bucket::bucket_allocator bucket_allocator;
|
||||||
node_allocator;
|
typedef BOOST_DEDUCED_TYPENAME bucket::bucket_ptr bucket_ptr;
|
||||||
typedef BOOST_DEDUCED_TYPENAME
|
typedef BOOST_DEDUCED_TYPENAME bucket::link_ptr link_ptr;
|
||||||
boost::unordered_detail::rebind_wrap<Alloc, bucket>::type
|
|
||||||
bucket_allocator;
|
typedef BOOST_UNORDERED_TABLE_NODE<Alloc> node;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME node::node_allocator node_allocator;
|
||||||
|
|
||||||
typedef BOOST_DEDUCED_TYPENAME allocator_value_type<Alloc>::type value_type;
|
typedef BOOST_DEDUCED_TYPENAME allocator_value_type<Alloc>::type value_type;
|
||||||
typedef BOOST_DEDUCED_TYPENAME allocator_pointer<node_allocator>::type node_ptr;
|
typedef BOOST_DEDUCED_TYPENAME allocator_pointer<node_allocator>::type node_ptr;
|
||||||
typedef BOOST_DEDUCED_TYPENAME allocator_pointer<bucket_allocator>::type bucket_ptr;
|
|
||||||
typedef BOOST_DEDUCED_TYPENAME allocator_reference<value_allocator>::type reference;
|
typedef BOOST_DEDUCED_TYPENAME allocator_reference<value_allocator>::type reference;
|
||||||
typedef BOOST_DEDUCED_TYPENAME allocator_reference<bucket_allocator>::type bucket_reference;
|
typedef BOOST_DEDUCED_TYPENAME allocator_reference<bucket_allocator>::type bucket_reference;
|
||||||
|
|
||||||
typedef bucket_ptr link_ptr;
|
|
||||||
|
|
||||||
// Hash Bucket
|
|
||||||
//
|
|
||||||
// all no throw
|
|
||||||
|
|
||||||
struct bucket
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
bucket& operator=(bucket const&);
|
|
||||||
public:
|
|
||||||
link_ptr next_;
|
|
||||||
|
|
||||||
bucket() : next_()
|
|
||||||
{
|
|
||||||
BOOST_UNORDERED_MSVC_RESET_PTR(next_);
|
|
||||||
}
|
|
||||||
|
|
||||||
bucket(bucket const& x) : next_(x.next_)
|
|
||||||
{
|
|
||||||
// Only copy construct when allocating.
|
|
||||||
BOOST_ASSERT(!x.next_);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool empty() const
|
|
||||||
{
|
|
||||||
return !this->next_;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Value Base
|
|
||||||
|
|
||||||
struct value_base {
|
|
||||||
typename boost::aligned_storage<
|
|
||||||
sizeof(value_type),
|
|
||||||
boost::alignment_of<value_type>::value>::type data_;
|
|
||||||
|
|
||||||
void* address() { return this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
// Hash Node
|
|
||||||
//
|
|
||||||
// all no throw
|
|
||||||
|
|
||||||
struct node : value_base, bucket {
|
|
||||||
#if BOOST_UNORDERED_EQUIVALENT_KEYS
|
|
||||||
public:
|
|
||||||
node() : group_prev_()
|
|
||||||
{
|
|
||||||
BOOST_UNORDERED_MSVC_RESET_PTR(group_prev_);
|
|
||||||
}
|
|
||||||
|
|
||||||
link_ptr group_prev_;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
value_type& value() {
|
|
||||||
return *static_cast<value_type*>(this->address());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// allocators
|
// allocators
|
||||||
//
|
//
|
||||||
// Stores all the allocators that we're going to need.
|
// Stores all the allocators that we're going to need.
|
||||||
@ -1103,7 +1069,7 @@ namespace boost {
|
|||||||
|
|
||||||
// This can throw, but BOOST_UNORDERED_TABLE_DATA's destructor will clean
|
// This can throw, but BOOST_UNORDERED_TABLE_DATA's destructor will clean
|
||||||
// up.
|
// up.
|
||||||
copy_buckets(x.data_, data_, functions_.current());
|
x.copy_buckets_to(data_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy Construct with allocator
|
// Copy Construct with allocator
|
||||||
@ -1118,7 +1084,7 @@ namespace boost {
|
|||||||
|
|
||||||
// This can throw, but BOOST_UNORDERED_TABLE_DATA's destructor will clean
|
// This can throw, but BOOST_UNORDERED_TABLE_DATA's destructor will clean
|
||||||
// up.
|
// up.
|
||||||
copy_buckets(x.data_, data_, functions_.current());
|
x.copy_buckets_to(data_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move Construct
|
// Move Construct
|
||||||
@ -1143,14 +1109,14 @@ namespace boost {
|
|||||||
if(x.data_.buckets_) {
|
if(x.data_.buckets_) {
|
||||||
// This can throw, but BOOST_UNORDERED_TABLE_DATA's destructor will clean
|
// This can throw, but BOOST_UNORDERED_TABLE_DATA's destructor will clean
|
||||||
// up.
|
// up.
|
||||||
copy_buckets(x.data_, data_, functions_.current());
|
x.copy_buckets_to(data_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assign
|
// Assign
|
||||||
//
|
//
|
||||||
// basic exception safety, if buffered_functions::buffer or reserver throws
|
// basic exception safety, if buffered_functions::buffer or reserver throws
|
||||||
// the container is left in a sane, empty state. If copy_buckets
|
// the container is left in a sane, empty state. If copy_buckets_to
|
||||||
// throws the container is left with whatever was successfully
|
// throws the container is left with whatever was successfully
|
||||||
// copied.
|
// copied.
|
||||||
|
|
||||||
@ -1164,7 +1130,7 @@ namespace boost {
|
|||||||
mlf_ = x.mlf_; // no throw
|
mlf_ = x.mlf_; // no throw
|
||||||
calculate_max_load(); // no throw
|
calculate_max_load(); // no throw
|
||||||
reserve(x.size()); // throws
|
reserve(x.size()); // throws
|
||||||
copy_buckets(x.data_, data_, functions_.current()); // throws
|
x.copy_buckets_to(data_); // throws
|
||||||
}
|
}
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
@ -1207,10 +1173,10 @@ namespace boost {
|
|||||||
// which will clean up if anything throws an exception.
|
// which will clean up if anything throws an exception.
|
||||||
// (all can throw, but with no effect as these are new objects).
|
// (all can throw, but with no effect as these are new objects).
|
||||||
data new_this(data_, x.min_buckets_for_size(x.data_.size_));
|
data new_this(data_, x.min_buckets_for_size(x.data_.size_));
|
||||||
copy_buckets(x.data_, new_this, functions_.*new_func_this);
|
x.copy_buckets_to(new_this);
|
||||||
|
|
||||||
data new_that(x.data_, min_buckets_for_size(data_.size_));
|
data new_that(x.data_, min_buckets_for_size(data_.size_));
|
||||||
x.copy_buckets(data_, new_that, x.functions_.*new_func_that);
|
copy_buckets_to(new_that);
|
||||||
|
|
||||||
// Start updating the data here, no throw from now on.
|
// Start updating the data here, no throw from now on.
|
||||||
data_.swap(new_this);
|
data_.swap(new_this);
|
||||||
@ -1251,7 +1217,7 @@ namespace boost {
|
|||||||
// which will clean up if anything throws an exception.
|
// which will clean up if anything throws an exception.
|
||||||
// (all can throw, but with no effect as these are new objects).
|
// (all can throw, but with no effect as these are new objects).
|
||||||
data new_this(data_, x.min_buckets_for_size(x.data_.size_));
|
data new_this(data_, x.min_buckets_for_size(x.data_.size_));
|
||||||
copy_buckets(x.data_, new_this, functions_.*new_func_this);
|
x.copy_buckets_to(new_this);
|
||||||
|
|
||||||
// Start updating the data here, no throw from now on.
|
// Start updating the data here, no throw from now on.
|
||||||
data_.move(new_this);
|
data_.move(new_this);
|
||||||
@ -1494,22 +1460,23 @@ namespace boost {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
data new_buckets(data_, n); // throws, seperate
|
data new_buckets(data_, n); // throws, seperate
|
||||||
move_buckets(data_, new_buckets, hash_function());
|
move_buckets_to(new_buckets); // basic/no throw
|
||||||
// basic/no throw
|
|
||||||
new_buckets.swap(data_); // no throw
|
new_buckets.swap(data_); // no throw
|
||||||
calculate_max_load(); // no throw
|
calculate_max_load(); // no throw
|
||||||
}
|
}
|
||||||
|
|
||||||
// move_buckets & copy_buckets
|
// move_buckets_to & copy_buckets_to
|
||||||
//
|
//
|
||||||
// if the hash function throws, basic excpetion safety
|
// if the hash function throws, basic excpetion safety
|
||||||
// no throw otherwise
|
// no throw otherwise
|
||||||
|
|
||||||
static void move_buckets(data& src, data& dst, hasher const& hf)
|
void move_buckets_to(data& dst)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(dst.size_ == 0);
|
BOOST_ASSERT(dst.size_ == 0);
|
||||||
//BOOST_ASSERT(src.allocators_.node_alloc_ == dst.allocators_.node_alloc_);
|
//BOOST_ASSERT(src.allocators_.node_alloc_ == dst.allocators_.node_alloc_);
|
||||||
|
|
||||||
|
data& src = this->data_;
|
||||||
|
hasher const& hf = this->hash_function();
|
||||||
bucket_ptr end = src.buckets_end();
|
bucket_ptr end = src.buckets_end();
|
||||||
|
|
||||||
for(; src.cached_begin_bucket_ != end;
|
for(; src.cached_begin_bucket_ != end;
|
||||||
@ -1533,12 +1500,14 @@ namespace boost {
|
|||||||
// basic excpetion safety. If an exception is thrown this will
|
// basic excpetion safety. If an exception is thrown this will
|
||||||
// leave dst partially filled.
|
// leave dst partially filled.
|
||||||
|
|
||||||
static void copy_buckets(data const& src, data& dst, functions const& f)
|
void copy_buckets_to(data& dst) const
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(dst.size_ == 0);
|
BOOST_ASSERT(dst.size_ == 0);
|
||||||
|
|
||||||
// no throw:
|
// no throw:
|
||||||
|
data const& src = this->data_;
|
||||||
|
hasher const& hf = this->hash_function();
|
||||||
bucket_ptr end = src.buckets_end();
|
bucket_ptr end = src.buckets_end();
|
||||||
hasher const& hf = f.hash_function();
|
|
||||||
|
|
||||||
// no throw:
|
// no throw:
|
||||||
for(bucket_ptr i = src.cached_begin_bucket_; i != end; ++i) {
|
for(bucket_ptr i = src.cached_begin_bucket_; i != end; ++i) {
|
||||||
@ -2322,6 +2291,7 @@ namespace boost {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#undef BOOST_UNORDERED_TABLE
|
#undef BOOST_UNORDERED_TABLE
|
||||||
|
#undef BOOST_UNORDERED_TABLE_NODE
|
||||||
#undef BOOST_UNORDERED_TABLE_DATA
|
#undef BOOST_UNORDERED_TABLE_DATA
|
||||||
#undef BOOST_UNORDERED_ITERATOR
|
#undef BOOST_UNORDERED_ITERATOR
|
||||||
#undef BOOST_UNORDERED_CONST_ITERATOR
|
#undef BOOST_UNORDERED_CONST_ITERATOR
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
||||||
// Copyright (C) 2005-2008 Daniel James.
|
// Copyright (C) 2005-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright (C) 2008 Daniel James.
|
// Copyright (C) 2008-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
||||||
// Copyright (C) 2005-2008 Daniel James.
|
// Copyright (C) 2005-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright (C) 2008 Daniel James.
|
// Copyright (C) 2008-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2008 Daniel James.
|
// Copyright 2005-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2008 Daniel James.
|
// Copyright 2008-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or move at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or move at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2008 Daniel James.
|
// Copyright 2005-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2008 Daniel James.
|
// Copyright 2005-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2008 Daniel James.
|
// Copyright 2005-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2008 Daniel James.
|
// Copyright 2008-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
@ -144,6 +144,7 @@ namespace test
|
|||||||
list& operator=(list const& other) {
|
list& operator=(list const& other) {
|
||||||
clear();
|
clear();
|
||||||
insert(other.begin(), other.end());
|
insert(other.begin(), other.end());
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
iterator begin() { return iterator(data_.first_); }
|
iterator begin() { return iterator(data_.first_); }
|
||||||
@ -242,14 +243,28 @@ namespace test
|
|||||||
node** merge_adjacent_ranges(node** first, node** second,
|
node** merge_adjacent_ranges(node** first, node** second,
|
||||||
node** third, Less less)
|
node** third, Less less)
|
||||||
{
|
{
|
||||||
while(first != second) {
|
while(true) {
|
||||||
if(less((*second)->value_, (*first)->value_)) {
|
while(true) {
|
||||||
swap_adjacent_ranges(first, second, third);
|
if(first == second) return third;
|
||||||
std::swap(second, third);
|
if(less((*second)->value_, (*first)->value_)) break;
|
||||||
|
first = &(*first)->next_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
swap_adjacent_ranges(first, second, third);
|
||||||
|
first = &(*first)->next_;
|
||||||
|
|
||||||
|
// Since the two ranges we just swapped, the order is now:
|
||||||
|
// first...third...second
|
||||||
|
|
||||||
|
while(true) {
|
||||||
|
if(first == third) return second;
|
||||||
|
if(!less((*first)->value_, (*third)->value_)) break;
|
||||||
|
first = &(*first)->next_;
|
||||||
|
}
|
||||||
|
|
||||||
|
swap_adjacent_ranges(first, third, second);
|
||||||
first = &(*first)->next_;
|
first = &(*first)->next_;
|
||||||
}
|
}
|
||||||
return third;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void swap_adjacent_ranges(node** first, node** second, node** third)
|
void swap_adjacent_ranges(node** first, node** second, node** third)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2008 Daniel James.
|
// Copyright 2005-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2008 Daniel James.
|
// Copyright 2005-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2008 Daniel James.
|
// Copyright 2005-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2007-2008 Daniel James.
|
// Copyright 2007-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2008 Daniel James.
|
// Copyright 2005-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2008 Daniel James.
|
// Copyright 2008-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2008 Daniel James.
|
// Copyright 2008-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2008 Daniel James.
|
// Copyright 2008-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2007-2008 Daniel James.
|
// Copyright 2007-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2008 Daniel James.
|
// Copyright 2008-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or move at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or move at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006-2008 Daniel James.
|
// Copyright 2006-2009 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user