Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r56823 - in trunk/libs: interprocess interprocess/doc interprocess/example interprocess/proj interprocess/proj/vc7ide interprocess/test intrusive intrusive/doc intrusive/example intrusive/perf intrusive/proj/vc7ide intrusive/proj/vc7ide/_intrusivelib intrusive/test
From: igaztanaga_at_[hidden]
Date: 2009-10-14 09:08:22


Author: igaztanaga
Date: 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
New Revision: 56823
URL: http://svn.boost.org/trac/boost/changeset/56823

Log:
Fixes for 1.41
Added:
   trunk/libs/intrusive/example/doc_positional_insertion.cpp (contents, props changed)
Text files modified:
   trunk/libs/interprocess/doc/Jamfile.v2 | 4
   trunk/libs/interprocess/doc/interprocess.qbk | 46 ++++++++-------
   trunk/libs/interprocess/example/Jamfile.v2 | 1
   trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp | 2
   trunk/libs/interprocess/example/comp_doc_message_queueA.cpp | 2
   trunk/libs/interprocess/example/comp_doc_message_queueB.cpp | 2
   trunk/libs/interprocess/example/doc_adaptive_pool.cpp | 2
   trunk/libs/interprocess/example/doc_allocator.cpp | 2
   trunk/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp | 2
   trunk/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp | 2
   trunk/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp | 2
   trunk/libs/interprocess/example/doc_anonymous_shared_memory.cpp | 2
   trunk/libs/interprocess/example/doc_bufferstream.cpp | 2
   trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp | 2
   trunk/libs/interprocess/example/doc_cached_node_allocator.cpp | 2
   trunk/libs/interprocess/example/doc_complex_map.cpp | 2
   trunk/libs/interprocess/example/doc_cont.cpp | 2
   trunk/libs/interprocess/example/doc_file_mapping.cpp | 2
   trunk/libs/interprocess/example/doc_intrusive.cpp | 2
   trunk/libs/interprocess/example/doc_ipc_message.cpp | 2
   trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp | 29 +++++++++
   trunk/libs/interprocess/example/doc_managed_allocation_command.cpp | 2
   trunk/libs/interprocess/example/doc_managed_construction_info.cpp | 2
   trunk/libs/interprocess/example/doc_managed_copy_on_write.cpp | 2
   trunk/libs/interprocess/example/doc_managed_external_buffer.cpp | 2
   trunk/libs/interprocess/example/doc_managed_grow.cpp | 2
   trunk/libs/interprocess/example/doc_managed_heap_memory.cpp | 2
   trunk/libs/interprocess/example/doc_managed_mapped_file.cpp | 2
   trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp | 2
   trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp | 2
   trunk/libs/interprocess/example/doc_map.cpp | 2
   trunk/libs/interprocess/example/doc_move_containers.cpp | 2
   trunk/libs/interprocess/example/doc_multi_index.cpp | 2
   trunk/libs/interprocess/example/doc_named_alloc.cpp | 2
   trunk/libs/interprocess/example/doc_named_condition_shared_data.hpp | 2
   trunk/libs/interprocess/example/doc_named_mutex.cpp | 2
   trunk/libs/interprocess/example/doc_node_allocator.cpp | 2
   trunk/libs/interprocess/example/doc_offset_ptr.cpp | 2
   trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp | 2
   trunk/libs/interprocess/example/doc_private_node_allocator.cpp | 2
   trunk/libs/interprocess/example/doc_scoped_ptr.cpp | 2
   trunk/libs/interprocess/example/doc_shared_memory.cpp | 2
   trunk/libs/interprocess/example/doc_shared_ptr.cpp | 2
   trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp | 2
   trunk/libs/interprocess/example/doc_unique_ptr.cpp | 2
   trunk/libs/interprocess/example/doc_unordered_map.cpp | 2
   trunk/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp | 2
   trunk/libs/interprocess/example/doc_vectorstream.cpp | 2
   trunk/libs/interprocess/example/doc_where_allocate.cpp | 2
   trunk/libs/interprocess/example/doc_windows_shared_memory.cpp | 2
   trunk/libs/interprocess/index.html | 2
   trunk/libs/interprocess/proj/to-do.txt | 4
   trunk/libs/interprocess/proj/vc7ide/Interprocess.sln | 8 --
   trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj | 6 ++
   trunk/libs/interprocess/test/CMakeLists.txt | 6 --
   trunk/libs/interprocess/test/Jamfile.v2 | 1
   trunk/libs/interprocess/test/adaptive_node_pool_test.cpp | 3 -
   trunk/libs/interprocess/test/adaptive_pool_test.cpp | 2
   trunk/libs/interprocess/test/allocator_v1.hpp | 2
   trunk/libs/interprocess/test/allocexcept_test.cpp | 2
   trunk/libs/interprocess/test/anonymous_shared_memory_test.cpp | 2
   trunk/libs/interprocess/test/boost_interprocess_check.hpp | 2
   trunk/libs/interprocess/test/cached_adaptive_pool_test.cpp | 2
   trunk/libs/interprocess/test/cached_node_allocator_test.cpp | 2
   trunk/libs/interprocess/test/condition_test_template.hpp | 2
   trunk/libs/interprocess/test/data_test.cpp | 2
   trunk/libs/interprocess/test/deque_test.cpp | 39 ++++++++-----
   trunk/libs/interprocess/test/dummy_test_allocator.hpp | 2
   trunk/libs/interprocess/test/emplace_test.hpp | 4 -
   trunk/libs/interprocess/test/enable_shared_from_this_test.cpp | 2
   trunk/libs/interprocess/test/expand_bwd_test_allocator.hpp | 2
   trunk/libs/interprocess/test/file_lock_test.cpp | 2
   trunk/libs/interprocess/test/file_mapping_test.cpp | 2
   trunk/libs/interprocess/test/flat_tree_test.cpp | 32 ++++++++++
   trunk/libs/interprocess/test/get_process_id_name.hpp | 2
   trunk/libs/interprocess/test/heap_allocator_v1.hpp | 2
   trunk/libs/interprocess/test/list_test.cpp | 17 ++++-
   trunk/libs/interprocess/test/list_test.hpp | 29 ++++++---
   trunk/libs/interprocess/test/managed_mapped_file_test.cpp | 2
   trunk/libs/interprocess/test/managed_shared_memory_test.cpp | 21 ++++---
   trunk/libs/interprocess/test/managed_windows_shared_memory_test.cpp | 2
   trunk/libs/interprocess/test/map_test.hpp | 69 ++++++++++++++++++++---
   trunk/libs/interprocess/test/mapped_file_test.cpp | 2
   trunk/libs/interprocess/test/message_queue_test.cpp | 2
   trunk/libs/interprocess/test/movable_int.hpp | 66 +++++++++++++++++++++-
   trunk/libs/interprocess/test/multi_index_test.cpp | 13 ++++
   trunk/libs/interprocess/test/mutex_test.cpp | 2
   trunk/libs/interprocess/test/mutex_test_template.hpp | 3
   trunk/libs/interprocess/test/named_condition_test.cpp | 2
   trunk/libs/interprocess/test/named_construct_test.cpp | 2
   trunk/libs/interprocess/test/named_creation_template.hpp | 2
   trunk/libs/interprocess/test/named_mutex_test.cpp | 2
   trunk/libs/interprocess/test/named_recursive_mutex_test.cpp | 2
   trunk/libs/interprocess/test/named_semaphore_test.cpp | 2
   trunk/libs/interprocess/test/named_upgradable_mutex_test.cpp | 2
   trunk/libs/interprocess/test/node_allocator_test.cpp | 2
   trunk/libs/interprocess/test/node_pool_test.cpp | 3
   trunk/libs/interprocess/test/null_index_test.cpp | 2
   trunk/libs/interprocess/test/print_container.hpp | 2
   trunk/libs/interprocess/test/private_adaptive_pool_test.cpp | 2
   trunk/libs/interprocess/test/private_node_allocator_test.cpp | 2
   trunk/libs/interprocess/test/recursive_mutex_test.cpp | 2
   trunk/libs/interprocess/test/semaphore_test.cpp | 2
   trunk/libs/interprocess/test/semaphore_test_template.hpp | 2
   trunk/libs/interprocess/test/set_test.hpp | 115 ++++++++++++++++++++++++++++++++-------
   trunk/libs/interprocess/test/sharable_mutex_test_template.hpp | 2
   trunk/libs/interprocess/test/shared_memory_mapping_test.cpp | 2
   trunk/libs/interprocess/test/shared_memory_test.cpp | 2
   trunk/libs/interprocess/test/shared_ptr_test.cpp | 2
   trunk/libs/interprocess/test/slist_test.cpp | 14 +++-
   trunk/libs/interprocess/test/stable_vector_test.cpp | 8 ++
   trunk/libs/interprocess/test/string_test.cpp | 2
   trunk/libs/interprocess/test/tree_test.cpp | 20 ++++++
   trunk/libs/interprocess/test/unordered_test.cpp | 2
   trunk/libs/interprocess/test/upgradable_mutex_test.cpp | 2
   trunk/libs/interprocess/test/user_buffer_test.cpp | 2
   trunk/libs/interprocess/test/util.hpp | 2
   trunk/libs/interprocess/test/vector_test.cpp | 8 ++
   trunk/libs/interprocess/test/vector_test.hpp | 18 +++--
   trunk/libs/interprocess/test/windows_shared_memory_mapping_test.cpp | 2
   trunk/libs/interprocess/test/windows_shared_memory_test.cpp | 2
   trunk/libs/intrusive/CMakeLists.txt | 6 --
   trunk/libs/intrusive/doc/intrusive.qbk | 50 ++++++++++++----
   trunk/libs/intrusive/example/doc_advanced_value_traits.cpp | 2
   trunk/libs/intrusive/example/doc_advanced_value_traits2.cpp | 2
   trunk/libs/intrusive/example/doc_assoc_optimized_code.cpp | 2
   trunk/libs/intrusive/example/doc_auto_unlink.cpp | 2
   trunk/libs/intrusive/example/doc_avl_set.cpp | 2
   trunk/libs/intrusive/example/doc_avltree_algorithms.cpp | 2
   trunk/libs/intrusive/example/doc_bucket_traits.cpp | 2
   trunk/libs/intrusive/example/doc_clone_from.cpp | 2
   trunk/libs/intrusive/example/doc_entity.cpp | 2
   trunk/libs/intrusive/example/doc_erasing_and_disposing.cpp | 2
   trunk/libs/intrusive/example/doc_external_value_traits.cpp | 2
   trunk/libs/intrusive/example/doc_how_to_use.cpp | 2
   trunk/libs/intrusive/example/doc_iterator_from_value.cpp | 2
   trunk/libs/intrusive/example/doc_list.cpp | 2
   trunk/libs/intrusive/example/doc_list_algorithms.cpp | 2
   trunk/libs/intrusive/example/doc_offset_ptr.cpp | 2
   trunk/libs/intrusive/example/doc_rbtree_algorithms.cpp | 2
   trunk/libs/intrusive/example/doc_set.cpp | 2
   trunk/libs/intrusive/example/doc_sg_set.cpp | 2
   trunk/libs/intrusive/example/doc_slist.cpp | 2
   trunk/libs/intrusive/example/doc_slist_algorithms.cpp | 2
   trunk/libs/intrusive/example/doc_splay_algorithms.cpp | 2
   trunk/libs/intrusive/example/doc_splay_set.cpp | 2
   trunk/libs/intrusive/example/doc_splaytree_algorithms.cpp | 2
   trunk/libs/intrusive/example/doc_stateful_value_traits.cpp | 2
   trunk/libs/intrusive/example/doc_treap_algorithms.cpp | 2
   trunk/libs/intrusive/example/doc_treap_set.cpp | 2
   trunk/libs/intrusive/example/doc_unordered_set.cpp | 2
   trunk/libs/intrusive/example/doc_value_traits.cpp | 2
   trunk/libs/intrusive/example/doc_window.cpp | 2
   trunk/libs/intrusive/index.html | 2
   trunk/libs/intrusive/perf/perf_list.cpp | 2
   trunk/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj | 9 +++
   trunk/libs/intrusive/proj/vc7ide/to-do.txt | 16 ----
   trunk/libs/intrusive/test/any_test.cpp | 2
   trunk/libs/intrusive/test/avl_multiset_test.cpp | 22 +++++++
   trunk/libs/intrusive/test/avl_set_test.cpp | 23 +++++++
   trunk/libs/intrusive/test/common_functors.hpp | 2
   trunk/libs/intrusive/test/custom_bucket_traits_test.cpp | 2
   trunk/libs/intrusive/test/default_hook_test.cpp | 2
   trunk/libs/intrusive/test/external_value_traits_test.cpp | 2
   trunk/libs/intrusive/test/generic_assoc_test.hpp | 79 +++++++++++++++++++++++++++
   trunk/libs/intrusive/test/generic_multiset_test.hpp | 2
   trunk/libs/intrusive/test/generic_set_test.hpp | 112 ++++++++++++++++++++++++++++++++------
   trunk/libs/intrusive/test/itestvalue.hpp | 34 ++++++++++-
   trunk/libs/intrusive/test/list_test.cpp | 2
   trunk/libs/intrusive/test/make_functions_test.cpp | 2
   trunk/libs/intrusive/test/multiset_test.cpp | 22 +++++++
   trunk/libs/intrusive/test/set_test.cpp | 24 ++++++++
   trunk/libs/intrusive/test/sg_multiset_test.cpp | 19 ++++++
   trunk/libs/intrusive/test/sg_set_test.cpp | 16 +++++
   trunk/libs/intrusive/test/slist_test.cpp | 2
   trunk/libs/intrusive/test/splay_multiset_test.cpp | 2
   trunk/libs/intrusive/test/stateful_value_traits_test.cpp | 2
   trunk/libs/intrusive/test/test_container.hpp | 106 +++++++++++++++++++++++++++++++++++-
   trunk/libs/intrusive/test/test_macros.hpp | 2
   trunk/libs/intrusive/test/treap_multiset_test.cpp | 22 +++++++
   trunk/libs/intrusive/test/treap_set_test.cpp | 39 +++++++++++++
   trunk/libs/intrusive/test/unordered_multiset_test.cpp | 22 +++++++
   trunk/libs/intrusive/test/unordered_set_test.cpp | 22 +++++++
   trunk/libs/intrusive/test/virtual_base_test.cpp | 2
   191 files changed, 1165 insertions(+), 357 deletions(-)

Modified: trunk/libs/interprocess/doc/Jamfile.v2
==============================================================================
--- trunk/libs/interprocess/doc/Jamfile.v2 (original)
+++ trunk/libs/interprocess/doc/Jamfile.v2 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 # Boost.Interprocess library documentation Jamfile ---------------------------------
 #
-# Copyright Ion Gaztanaga 2005-2007. Use, modification and
+# Copyright Ion Gaztanaga 2005-2009. Use, modification and
 # distribution is subject to 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)
@@ -32,7 +32,7 @@
                                    \"BOOST_INTERPROCESS_ENABLE_MOVE_EMULATION(a)= \" \\
                                    \"BOOST_INTERPROCESS_RV_REF(a)=a &&\" \\
                                    \"BOOST_INTERPROCESS_RV_REF_2_TEMPL_ARGS(a,b,c)=a &&\" \\
- \"BOOST_INTERPROCESS_RV_REF_3_TEMPL_ARGS(a)=a &&\" \\
+ \"BOOST_INTERPROCESS_RV_REF_3_TEMPL_ARGS(a,b,c,d)=a &&\" \\
                                    \"BOOST_INTERPROCESS_FWD_REF(a)=a &&\""
         <xsl:param>"boost.doxygen.reftitle=Boost.Interprocess Reference"
    ;

Modified: trunk/libs/interprocess/doc/interprocess.qbk
==============================================================================
--- trunk/libs/interprocess/doc/interprocess.qbk (original)
+++ trunk/libs/interprocess/doc/interprocess.qbk 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,12 +1,12 @@
 [/
- / Copyright (c) 2007-2008 Ion Gaztanaga
+ / Copyright (c) 2007-2009 Ion Gaztanaga
  /
  / 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)
  /]
 
 [library Boost.Interprocess
- [quickbook 1.3]
+ [quickbook 1.4]
     [authors [Gaztanaga, Ion]]
     [copyright 2005- 2008 Ion Gaztanaga]
     [id interprocess]
@@ -1351,14 +1351,14 @@
 
    #include <boost/interprocess/sync/interprocess_mutex.hpp>
 
-* [classref boost::interprocess::interprocess_mutex]: A non-recursive,
+* [classref boost::interprocess::interprocess_mutex interprocess_mutex]: A non-recursive,
   anonymous mutex that can be placed in shared memory or memory mapped files.
 
 [c++]
 
    #include <boost/interprocess/sync/interprocess_recursive_mutex.hpp>
 
-* [classref boost::interprocess::interprocess_recursive_mutex]: A recursive,
+* [classref boost::interprocess::interprocess_recursive_mutex interprocess_recursive_mutex]: A recursive,
   anonymous mutex that can be placed in shared memory or memory mapped files.
 
 [c++]
@@ -1518,7 +1518,7 @@
 
    #include <boost/interprocess/sync/interprocess_condition.hpp>
 
-* [classref boost::interprocess::interprocess_condition]:
+* [classref boost::interprocess::interprocess_condition interprocess_condition]:
   An anonymous condition variable that can be placed in shared memory or memory
   mapped files to be used with [classref boost::interprocess::interprocess_mutex].
 
@@ -1526,8 +1526,8 @@
 
    #include <boost/interprocess/sync/named_condition.hpp>
 
-* [classref boost::interprocess::named_condition]: A named
- condition variable to be used with [classref boost::interprocess::named_mutex].
+* [classref boost::interprocess::named_condition named_condition]: A named
+ condition variable to be used with [classref boost::interprocess::named_mutex named_mutex].
 
 Named conditions are similar to anonymous conditions, but they are used in
 combination with named mutexes. Several times, we don't want to store
@@ -1609,7 +1609,7 @@
 
    #include <boost/interprocess/sync/interprocess_semaphore.hpp>
 
-* [classref boost::interprocess::interprocess_semaphore]:
+* [classref boost::interprocess::interprocess_semaphore interprocess_semaphore]:
   An anonymous semaphore that can be placed in shared memory or memory
   mapped files.
 
@@ -1617,13 +1617,9 @@
 
    #include <boost/interprocess/sync/named_semaphore.hpp>
 
-* [classref boost::interprocess::named_condition]: A named
+* [classref boost::interprocess::named_semaphore named_semaphore]: A named
   semaphore.
 
-Named conditions are similar to anonymous conditions, but they are used in
-combination with named mutexes. Several times, we don't want to store
-synchronization objects with the synchronized data:
-
 [endsect]
 
 [section:semaphores_anonymous_example Anonymous semaphore example]
@@ -1977,7 +1973,7 @@
 
    #include <boost/interprocess/sync/interprocess_upgradable_mutex.hpp>
 
-* [classref boost::interprocess::interprocess_upgradable_mutex]: A non-recursive,
+* [classref boost::interprocess::interprocess_upgradable_mutex interprocess_upgradable_mutex]: A non-recursive,
   anonymous upgradable mutex that can be placed in shared memory or memory mapped files.
 
 [c++]
@@ -1993,12 +1989,12 @@
 
 As with plain mutexes, it's important to release the acquired lock even in the presence
 of exceptions. [*Boost.Interprocess] mutexes are best used with the
-[classref boost::interprocess::scoped_lock] utility,
+[classref boost::interprocess::scoped_lock scoped_lock] utility,
 and this class only offers exclusive locking.
 
 As we have sharable locking and upgradable locking with upgradable mutexes, we have two new
-utilities: [classref boost::interprocess::sharable_lock] and
-[classref boost::interprocess::upgradable_lock]. Both classes are similar to `scoped_lock`
+utilities: [classref boost::interprocess::sharable_lock sharable_lock] and
+[classref boost::interprocess::upgradable_lock upgradable_lock]. Both classes are similar to `scoped_lock`
 but `sharable_lock` acquires the sharable lock in the constructor and `upgradable_lock`
 acquires the upgradable lock in the constructor.
 
@@ -2855,7 +2851,7 @@
 [doc_message_queueB]
 
 To know more about this class and all its operations, please see the
-[classref boost::interprocess::message_queue] class reference.
+[classref boost::interprocess::message_queue message_queue] class reference.
 
 [endsect]
 
@@ -3425,7 +3421,7 @@
 named/unique allocations is defined by the
 `MemoryAlgorithm::mutex_family::recursive_mutex_type` type. For shared memory,
 and memory mapped file based managed segments this recursive mutex is defined
-as [classref boost::interprocess::interprocess_recursive_mutex].
+as [classref boost::interprocess::interprocess_recursive_mutex interprocess_recursive_mutex].
 
 If two processes can call:
 
@@ -4189,7 +4185,7 @@
    #include <boost/interprocess/managed_heap_memory.hpp>
 
 The use is exactly the same as
-[classref boost::interprocess::basic_managed_external_buffer],
+[classref boost::interprocess::basic_managed_external_buffer basic_managed_external_buffer],
 except that memory is created by
 the managed memory segment itself using dynamic (new/delete) memory.
 
@@ -5023,7 +5019,7 @@
 
 
 To transfer the contents of a container to another one, use
-`boost::move()` function, as shown in the example. For more details
+`boost::interprocess::move()` function, as shown in the example. For more details
 about functions supporting move-semantics, see the reference section of
 Boost.Interprocess containers:
 
@@ -6534,6 +6530,14 @@
 
 [section:release_notes Release Notes]
 
+[section:release_notes_boost_1_41_00 Boost 1.41 Release]
+
+* Support for POSIX shared memory in Mac OS.
+* [*ABI breaking]: Generic `semaphore` and `named_semaphore` now implemented more efficiently with atomic operations.
+* More robust file opening in Windows platforms with active Anti-virus software.
+
+[endsect]
+
 [section:release_notes_boost_1_40_00 Boost 1.40 Release]
 
 * Windows shared memory is created in Shared Documents folder so that it can be shared

Modified: trunk/libs/interprocess/example/Jamfile.v2
==============================================================================
--- trunk/libs/interprocess/example/Jamfile.v2 (original)
+++ trunk/libs/interprocess/example/Jamfile.v2 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -36,6 +36,7 @@
       : # requirements
         <toolset>acc:<linkflags>-lrt
         <toolset>acc-pa_risc:<linkflags>-lrt
+ <host-os>hpux,<toolset>gcc:<linkflags>"-Wl,+as,mpas"
       ] ;
    }
 

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/comp_doc_message_queueA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_message_queueA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_message_queueA.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/comp_doc_message_queueB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_message_queueB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_message_queueB.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_adaptive_pool.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_adaptive_pool.cpp (original)
+++ trunk/libs/interprocess/example/doc_adaptive_pool.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_allocator.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp
==============================================================================
--- trunk/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp (original)
+++ trunk/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp
==============================================================================
--- trunk/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp (original)
+++ trunk/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp
==============================================================================
--- trunk/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp (original)
+++ trunk/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_anonymous_shared_memory.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_anonymous_shared_memory.cpp (original)
+++ trunk/libs/interprocess/example/doc_anonymous_shared_memory.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_bufferstream.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_bufferstream.cpp (original)
+++ trunk/libs/interprocess/example/doc_bufferstream.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp (original)
+++ trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_cached_node_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_cached_node_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_cached_node_allocator.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_complex_map.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_complex_map.cpp (original)
+++ trunk/libs/interprocess/example/doc_complex_map.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_cont.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_cont.cpp (original)
+++ trunk/libs/interprocess/example/doc_cont.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_file_mapping.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_file_mapping.cpp (original)
+++ trunk/libs/interprocess/example/doc_file_mapping.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_intrusive.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_intrusive.cpp (original)
+++ trunk/libs/interprocess/example/doc_intrusive.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_ipc_message.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_ipc_message.cpp (original)
+++ trunk/libs/interprocess/example/doc_ipc_message.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //
@@ -85,4 +85,31 @@
    return 0;
 }
 //]
+/*
+
+#include <vector>
+#include <boost/interprocess/managed_windows_shared_memory.hpp>
+
+int main()
+{
+ using namespace boost::interprocess;
+ typedef boost::interprocess::
+ managed_windows_shared_memory shared_segment;
+
+ std::vector<void *> ptrs;
+ shared_segment m_segment(create_only, "shmem", 4096*16);
+ try{
+ while(1){
+ //Now I have several allocate_aligned operations:
+ ptrs.push_back(m_segment.allocate_aligned(128, 128));
+ }
+ }
+ catch(...){
+ m_segment.deallocate(ptrs.back());
+ ptrs.pop_back();
+ ptrs.push_back(m_segment.allocate_aligned(128, 128));
+ }
+ return 0;
+}
+*/
 #include <boost/interprocess/detail/config_end.hpp>

Modified: trunk/libs/interprocess/example/doc_managed_allocation_command.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_allocation_command.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_allocation_command.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_managed_construction_info.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_construction_info.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_construction_info.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_managed_copy_on_write.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_copy_on_write.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_copy_on_write.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_managed_external_buffer.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_external_buffer.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_external_buffer.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_managed_grow.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_grow.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_grow.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_managed_heap_memory.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_heap_memory.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_heap_memory.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_managed_mapped_file.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_mapped_file.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_mapped_file.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_map.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_map.cpp (original)
+++ trunk/libs/interprocess/example/doc_map.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_move_containers.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_move_containers.cpp (original)
+++ trunk/libs/interprocess/example/doc_move_containers.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_multi_index.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_multi_index.cpp (original)
+++ trunk/libs/interprocess/example/doc_multi_index.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_named_alloc.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_named_alloc.cpp (original)
+++ trunk/libs/interprocess/example/doc_named_alloc.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_named_condition_shared_data.hpp
==============================================================================
--- trunk/libs/interprocess/example/doc_named_condition_shared_data.hpp (original)
+++ trunk/libs/interprocess/example/doc_named_condition_shared_data.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_named_mutex.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_named_mutex.cpp (original)
+++ trunk/libs/interprocess/example/doc_named_mutex.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_node_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_node_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_node_allocator.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_offset_ptr.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_offset_ptr.cpp (original)
+++ trunk/libs/interprocess/example/doc_offset_ptr.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp (original)
+++ trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_private_node_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_private_node_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_private_node_allocator.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_scoped_ptr.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_scoped_ptr.cpp (original)
+++ trunk/libs/interprocess/example/doc_scoped_ptr.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_shared_memory.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_shared_memory.cpp (original)
+++ trunk/libs/interprocess/example/doc_shared_memory.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_shared_ptr.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_shared_ptr.cpp (original)
+++ trunk/libs/interprocess/example/doc_shared_ptr.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 // 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)

Modified: trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp (original)
+++ trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 // 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)

Modified: trunk/libs/interprocess/example/doc_unique_ptr.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_unique_ptr.cpp (original)
+++ trunk/libs/interprocess/example/doc_unique_ptr.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 // 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)

Modified: trunk/libs/interprocess/example/doc_unordered_map.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_unordered_map.cpp (original)
+++ trunk/libs/interprocess/example/doc_unordered_map.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp
==============================================================================
--- trunk/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp (original)
+++ trunk/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_vectorstream.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_vectorstream.cpp (original)
+++ trunk/libs/interprocess/example/doc_vectorstream.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_where_allocate.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_where_allocate.cpp (original)
+++ trunk/libs/interprocess/example/doc_where_allocate.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/example/doc_windows_shared_memory.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_windows_shared_memory.cpp (original)
+++ trunk/libs/interprocess/example/doc_windows_shared_memory.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //

Modified: trunk/libs/interprocess/index.html
==============================================================================
--- trunk/libs/interprocess/index.html (original)
+++ trunk/libs/interprocess/index.html 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,5 +1,5 @@
 <!--
-Copyright 2005-2008 Ion Gaztanaga
+Copyright 2005-2009 Ion Gaztanaga
 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)
 -->

Modified: trunk/libs/interprocess/proj/to-do.txt
==============================================================================
--- trunk/libs/interprocess/proj/to-do.txt (original)
+++ trunk/libs/interprocess/proj/to-do.txt 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -55,10 +55,10 @@
 
 -> operator >> and similar need moved_value
 
--> Add cmath workaround for Boost < 1.37
-
 -> rvalue reference enabled compilers are not optimized with is_movable and move_iterator
 
 -> Add allocator test template that test all new functions (allocate_many, etc.)
 
 -> MacOS shm_open is non-conformant. Is there a way to know the size of a shared memory object?
+
+-> swap() of multiallocaiton iterator is wrong. Try to reimplement it with slist
\ No newline at end of file

Modified: trunk/libs/interprocess/proj/vc7ide/Interprocess.sln
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/Interprocess.sln (original)
+++ trunk/libs/interprocess/proj/vc7ide/Interprocess.sln 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -387,10 +387,6 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_windows_shared_memory2", "doc_windows_shared_memory2.vcproj", "{5E1D6C83-31DE-4F6F-6132-87A9FB663041}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_map_index_allocation_test", "flat_map_index_allocation_test.vcproj", "{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
@@ -833,10 +829,6 @@
                 {58C181B3-9516-463E-2F12-122155400054}.Debug.Build.0 = Debug|Win32
                 {58C181B3-9516-463E-2F12-122155400054}.Release.ActiveCfg = Release|Win32
                 {58C181B3-9516-463E-2F12-122155400054}.Release.Build.0 = Release|Win32
- {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Debug.ActiveCfg = Debug|Win32
- {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Debug.Build.0 = Debug|Win32
- {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Release.ActiveCfg = Release|Win32
- {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Release.Build.0 = Release|Win32
                 {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.ActiveCfg = Debug|Win32
                 {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.Build.0 = Debug|Win32
                 {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.ActiveCfg = Release|Win32

Modified: trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj (original)
+++ trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -99,6 +99,9 @@
                         Name="Containers"
                         Filter="">
                         <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\containers_fwd.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\boost\interprocess\containers\deque.hpp">
                         </File>
                         <File
@@ -373,6 +376,9 @@
                                 RelativePath="..\..\..\..\boost\interprocess\detail\in_place_interface.hpp">
                         </File>
                         <File
+ RelativePath="..\..\..\..\boost\interprocess\detail\intermodule_singleton.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\boost\interprocess\detail\interprocess_tester.hpp">
                         </File>
                         <File

Modified: trunk/libs/interprocess/test/CMakeLists.txt
==============================================================================
--- trunk/libs/interprocess/test/CMakeLists.txt (original)
+++ trunk/libs/interprocess/test/CMakeLists.txt 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,9 +1,3 @@
-#
-# Copyright Troy D. Straszheim
-#
-# Distributed under the Boost Software License, Version 1.0.
-# See http://www.boost.org/LICENSE_1_0.txt
-#
 boost_additional_test_dependencies(interprocess BOOST_DEPENDS test thread date_time multi_index)
 
 

Modified: trunk/libs/interprocess/test/Jamfile.v2
==============================================================================
--- trunk/libs/interprocess/test/Jamfile.v2 (original)
+++ trunk/libs/interprocess/test/Jamfile.v2 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -27,6 +27,7 @@
       : # requirements
         <toolset>acc:<linkflags>-lrt
         <toolset>acc-pa_risc:<linkflags>-lrt
+ <host-os>hpux,<toolset>gcc:<linkflags>"-Wl,+as,mpas"
       ] ;
    }
 

Modified: trunk/libs/interprocess/test/adaptive_node_pool_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/adaptive_node_pool_test.cpp (original)
+++ trunk/libs/interprocess/test/adaptive_node_pool_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -16,9 +16,6 @@
 using namespace boost::interprocess;
 typedef managed_shared_memory::segment_manager segment_manager_t;
 
-//Explicit specialization to catch compilation errors
-template class detail::private_adaptive_node_pool_impl<segment_manager_t>;
-
 int main ()
 {
    typedef detail::private_adaptive_node_pool

Modified: trunk/libs/interprocess/test/adaptive_pool_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/adaptive_pool_test.cpp (original)
+++ trunk/libs/interprocess/test/adaptive_pool_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/allocator_v1.hpp
==============================================================================
--- trunk/libs/interprocess/test/allocator_v1.hpp (original)
+++ trunk/libs/interprocess/test/allocator_v1.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2009. 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)
 //

Modified: trunk/libs/interprocess/test/allocexcept_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/allocexcept_test.cpp (original)
+++ trunk/libs/interprocess/test/allocexcept_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/anonymous_shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/anonymous_shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/anonymous_shared_memory_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/boost_interprocess_check.hpp
==============================================================================
--- trunk/libs/interprocess/test/boost_interprocess_check.hpp (original)
+++ trunk/libs/interprocess/test/boost_interprocess_check.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/cached_adaptive_pool_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/cached_adaptive_pool_test.cpp (original)
+++ trunk/libs/interprocess/test/cached_adaptive_pool_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/cached_node_allocator_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/cached_node_allocator_test.cpp (original)
+++ trunk/libs/interprocess/test/cached_node_allocator_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/condition_test_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/condition_test_template.hpp (original)
+++ trunk/libs/interprocess/test/condition_test_template.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -10,7 +10,7 @@
 // It is provided "as is" without express or implied warranty.
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2009. 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)
 //

Modified: trunk/libs/interprocess/test/data_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/data_test.cpp (original)
+++ trunk/libs/interprocess/test/data_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/deque_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/deque_test.cpp (original)
+++ trunk/libs/interprocess/test/deque_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //
@@ -152,7 +152,7 @@
    const char *const shMemName = test::get_process_id_name();
    const int max = 100;
 
- try{
+ /*try*/{
       shared_memory_object::remove(shMemName);
 
       //Create shared memory
@@ -167,33 +167,39 @@
 
       MyStdDeque *stddeque = new MyStdDeque;
 
- try{
+ /*try*/{
          //Compare several shared memory deque operations with std::deque
          int i;
- for(i = 0; i < max*100; ++i){
+ for(i = 0; i < max*50; ++i){
             IntType move_me(i);
             shmdeque->insert(shmdeque->end(), boost::interprocess::move(move_me));
             stddeque->insert(stddeque->end(), i);
+ shmdeque->insert(shmdeque->end(), IntType(i));
+ stddeque->insert(stddeque->end(), int(i));
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
 
          shmdeque->clear();
          stddeque->clear();
 
- for(i = 0; i < max*100; ++i){
+ for(i = 0; i < max*50; ++i){
             IntType move_me(i);
             shmdeque->push_back(boost::interprocess::move(move_me));
             stddeque->push_back(i);
+ shmdeque->push_back(IntType(i));
+ stddeque->push_back(i);
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
 
          shmdeque->clear();
          stddeque->clear();
 
- for(i = 0; i < max*100; ++i){
+ for(i = 0; i < max*50; ++i){
             IntType move_me(i);
             shmdeque->push_front(boost::interprocess::move(move_me));
             stddeque->push_front(i);
+ shmdeque->push_front(IntType(i));
+ stddeque->push_front(int(i));
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
 
@@ -221,8 +227,8 @@
             }
 
             shmdeque->insert(shmdeque->end()
- ,boost::interprocess::make_move_iterator(&aux_vect[0])
- ,boost::interprocess::make_move_iterator(aux_vect + 50));
+ ,::boost::interprocess::make_move_iterator(&aux_vect[0])
+ ,::boost::interprocess::make_move_iterator(aux_vect + 50));
             stddeque->insert(stddeque->end(), aux_vect2, aux_vect2 + 50);
             if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
 
@@ -243,14 +249,14 @@
                aux_vect2[i] = -1;
             }
             shmdeque->insert(shmdeque->begin()
- ,boost::interprocess::make_move_iterator(&aux_vect[0])
- ,boost::interprocess::make_move_iterator(aux_vect + 50));
+ ,::boost::interprocess::make_move_iterator(&aux_vect[0])
+ ,::boost::interprocess::make_move_iterator(aux_vect + 50));
             stddeque->insert(stddeque->begin(), aux_vect2, aux_vect2 + 50);
             if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
          }
 
          if(!copyable_only(shmdeque, stddeque
- ,detail::bool_<!boost::interprocess::is_movable<IntType>::value>())){
+ ,detail::bool_<!::boost::interprocess::is_movable<IntType>::value>())){
             return false;
          }
 
@@ -291,18 +297,18 @@
 
          if(!segment.all_memory_deallocated())
             return false;
- }
+ }/*
       catch(std::exception &ex){
          std::cout << ex.what() << std::endl;
          return false;
- }
+ }*/
       
       std::cout << std::endl << "Test OK!" << std::endl;
- }
+ }/*
    catch(...){
       shared_memory_object::remove(shMemName);
       throw;
- }
+ }*/
    shared_memory_object::remove(shMemName);
    return true;
 }
@@ -315,6 +321,9 @@
    if(!do_test<test::movable_int, allocator>())
       return 1;
 
+ if(!do_test<test::copyable_int, allocator>())
+ return 1;
+
    if(!do_test<int, test::allocator_v1>())
       return 1;
 

Modified: trunk/libs/interprocess/test/dummy_test_allocator.hpp
==============================================================================
--- trunk/libs/interprocess/test/dummy_test_allocator.hpp (original)
+++ trunk/libs/interprocess/test/dummy_test_allocator.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2009. 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)
 //

Modified: trunk/libs/interprocess/test/emplace_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/emplace_test.hpp (original)
+++ trunk/libs/interprocess/test/emplace_test.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -25,11 +25,9 @@
 class EmplaceInt
 {
    private:
- EmplaceInt (const EmplaceInt &o);
- EmplaceInt& operator=(const EmplaceInt &o);
+ BOOST_INTERPROCESS_MOVABLE_BUT_NOT_COPYABLE(EmplaceInt)
 
    public:
- BOOST_INTERPROCESS_ENABLE_MOVE_EMULATION(EmplaceInt)
 
    EmplaceInt(int a = 0, int b = 0, int c = 0, int d = 0, int e = 0)
       : a_(a), b_(b), c_(c), d_(d), e_(e)

Modified: trunk/libs/interprocess/test/enable_shared_from_this_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/enable_shared_from_this_test.cpp (original)
+++ trunk/libs/interprocess/test/enable_shared_from_this_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -3,7 +3,7 @@
 //
 // This file is the adaptation of shared_from_this_test.cpp from smart_ptr library
 //
-// (C) Copyright Ion Gaztanaga 2005-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2009. 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)
 //

Modified: trunk/libs/interprocess/test/expand_bwd_test_allocator.hpp
==============================================================================
--- trunk/libs/interprocess/test/expand_bwd_test_allocator.hpp (original)
+++ trunk/libs/interprocess/test/expand_bwd_test_allocator.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2009. 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)
 //

Modified: trunk/libs/interprocess/test/file_lock_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/file_lock_test.cpp (original)
+++ trunk/libs/interprocess/test/file_lock_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/file_mapping_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/file_mapping_test.cpp (original)
+++ trunk/libs/interprocess/test/file_mapping_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/flat_tree_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/flat_tree_test.cpp (original)
+++ trunk/libs/interprocess/test/flat_tree_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //
@@ -77,6 +77,10 @@
 
 typedef allocator<test::movable_and_copyable_int, my_managed_shared_memory::segment_manager>
    shmem_move_copy_allocator_t;
+
+typedef allocator<test::copyable_int, my_managed_shared_memory::segment_manager>
+ shmem_copy_allocator_t;
+
 typedef allocator<std::pair<test::movable_and_copyable_int, test::movable_and_copyable_int>, my_managed_shared_memory::segment_manager>
    shmem_move_copy_pair_allocator_t;
 
@@ -106,6 +110,12 @@
                 ,shmem_move_copy_allocator_t> MyMoveCopyShmSet;
 typedef flat_multiset<test::movable_and_copyable_int,std::less<test::movable_and_copyable_int>
                      ,shmem_move_copy_allocator_t> MyMoveCopyShmMultiSet;
+
+typedef flat_set<test::copyable_int, std::less<test::copyable_int>
+ ,shmem_copy_allocator_t> MyCopyShmSet;
+typedef flat_multiset<test::copyable_int,std::less<test::copyable_int>
+ ,shmem_copy_allocator_t> MyCopyShmMultiSet;
+
 typedef flat_map<test::movable_and_copyable_int, test::movable_and_copyable_int
                 ,std::less<test::movable_and_copyable_int>
                 ,shmem_move_copy_pair_allocator_t> MyMoveCopyShmMap;
@@ -128,6 +138,12 @@
 public:
    int id_;
    flat_map<recursive_flat_map, recursive_flat_map> map_;
+ recursive_flat_map (const recursive_flat_map&x)
+ :id_(x.id_), map_(x.map_)
+ {}
+ recursive_flat_map &operator=(const recursive_flat_map &x)
+ { id_ = x.id_; map_ = x.map_; return *this; }
+
    friend bool operator< (const recursive_flat_map &a, const recursive_flat_map &b)
    { return a.id_ < b.id_; }
 };
@@ -147,6 +163,11 @@
 public:
    int id_;
    flat_map<recursive_flat_multimap, recursive_flat_multimap> map_;
+ recursive_flat_multimap (const recursive_flat_multimap&x)
+ :id_(x.id_), map_(x.map_)
+ {}
+ recursive_flat_multimap &operator=(const recursive_flat_multimap &x)
+ { id_ = x.id_; map_ = x.map_; return *this; }
    friend bool operator< (const recursive_flat_multimap &a, const recursive_flat_multimap &b)
    { return a.id_ < b.id_; }
 };
@@ -211,6 +232,15 @@
       return 1;
    }
 
+ if (0 != set_test<my_managed_shared_memory
+ ,MyCopyShmSet
+ ,MyStdSet
+ ,MyCopyShmMultiSet
+ ,MyStdMultiSet>()){
+ std::cout << "Error in set_test<MyCopyShmSet>" << std::endl;
+ return 1;
+ }
+
    if (0 != map_test<my_managed_shared_memory
                   ,MyShmMap
                   ,MyStdMap

Modified: trunk/libs/interprocess/test/get_process_id_name.hpp
==============================================================================
--- trunk/libs/interprocess/test/get_process_id_name.hpp (original)
+++ trunk/libs/interprocess/test/get_process_id_name.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/heap_allocator_v1.hpp
==============================================================================
--- trunk/libs/interprocess/test/heap_allocator_v1.hpp (original)
+++ trunk/libs/interprocess/test/heap_allocator_v1.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2009. 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)
 //

Modified: trunk/libs/interprocess/test/list_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/list_test.cpp (original)
+++ trunk/libs/interprocess/test/list_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //
@@ -27,8 +27,8 @@
 typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocator;
 typedef list<int, ShmemAllocator> MyList;
 
-typedef allocator<volatile int, managed_shared_memory::segment_manager> ShmemVolatileAllocator;
-typedef list<volatile int, ShmemVolatileAllocator> MyVolatileList;
+//typedef allocator<volatile int, managed_shared_memory::segment_manager> ShmemVolatileAllocator;
+//typedef list<volatile int, ShmemVolatileAllocator> MyVolatileList;
 
 typedef allocator<test::movable_int, managed_shared_memory::segment_manager> ShmemMoveAllocator;
 typedef list<test::movable_int, ShmemMoveAllocator> MyMoveList;
@@ -36,6 +36,10 @@
 typedef allocator<test::movable_and_copyable_int, managed_shared_memory::segment_manager> ShmemCopyMoveAllocator;
 typedef list<test::movable_and_copyable_int, ShmemCopyMoveAllocator> MyCopyMoveList;
 
+typedef allocator<test::copyable_int, managed_shared_memory::segment_manager> ShmemCopyAllocator;
+typedef list<test::copyable_int, ShmemCopyAllocator> MyCopyList;
+
+
 class recursive_list
 {
 public:
@@ -62,8 +66,8 @@
    if(test::list_test<managed_shared_memory, MyList, true>())
       return 1;
 
- if(test::list_test<managed_shared_memory, MyVolatileList, true>())
- return 1;
+// if(test::list_test<managed_shared_memory, MyVolatileList, true>())
+// return 1;
 
    if(test::list_test<managed_shared_memory, MyMoveList, true>())
       return 1;
@@ -71,6 +75,9 @@
    if(test::list_test<managed_shared_memory, MyCopyMoveList, true>())
       return 1;
 
+ if(test::list_test<managed_shared_memory, MyCopyList, true>())
+ return 1;
+
    const test::EmplaceOptions Options = (test::EmplaceOptions)(test::EMPLACE_BACK | test::EMPLACE_FRONT | test::EMPLACE_BEFORE);
 
    if(!boost::interprocess::test::test_emplace<list<test::EmplaceInt>, Options>())

Modified: trunk/libs/interprocess/test/list_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/list_test.hpp (original)
+++ trunk/libs/interprocess/test/list_test.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -37,6 +37,8 @@
          IntType move_me(i);
          shmlist->push_back(boost::interprocess::move(move_me));
          stdlist->push_back(i);
+ shmlist->push_back(IntType(i));
+ stdlist->push_back(int(i));
       }
       if(!CheckEqualContainers(shmlist, stdlist))
          return 1;
@@ -55,6 +57,8 @@
          IntType move_me(i);
          shmlist->push_front(boost::interprocess::move(move_me));
          stdlist->push_front(i);
+ shmlist->push_front(IntType(i));
+ stdlist->push_front(int(i));
       }
       if(!CheckEqualContainers(shmlist, stdlist))
          return 1;
@@ -115,7 +119,7 @@
 
       MyStdList *stdlist = new MyStdList;
 
- if(push_data_t::execute(max, shmlist, stdlist)){
+ if(push_data_t::execute(max/2, shmlist, stdlist)){
          return 1;
       }
 
@@ -141,8 +145,8 @@
          for(int i = 0; i < 50; ++i){
             aux_vect2[i] = -1;
          }
- shmlist->assign(boost::interprocess::make_move_iterator(&aux_vect[0])
- ,boost::interprocess::make_move_iterator(&aux_vect[50]));
+ shmlist->assign(::boost::interprocess::make_move_iterator(&aux_vect[0])
+ ,::boost::interprocess::make_move_iterator(&aux_vect[50]));
          stdlist->assign(&aux_vect2[0], &aux_vect2[50]);
          if(!CheckEqualContainers(shmlist, stdlist)) return 1;
       }
@@ -172,8 +176,8 @@
             aux_vect2[i] = -1;
          }
          shmlist->insert(shmlist->begin()
- ,boost::interprocess::make_move_iterator(&aux_vect[0])
- ,boost::interprocess::make_move_iterator(&aux_vect[50]));
+ ,::boost::interprocess::make_move_iterator(&aux_vect[0])
+ ,::boost::interprocess::make_move_iterator(&aux_vect[50]));
          stdlist->insert(stdlist->begin(), &aux_vect2[0], &aux_vect2[50]);
       }
 
@@ -198,7 +202,7 @@
       if(!CheckEqualContainers(shmlist, stdlist))
          return 1;
 
- if(push_data_t::execute(max, shmlist, stdlist)){
+ if(push_data_t::execute(max/2, shmlist, stdlist)){
          return 1;
       }
       {
@@ -207,7 +211,7 @@
 
          int listsize = (int)shmlist->size();
 
- if(push_data_t::execute(listsize, shmlist, stdlist)){
+ if(push_data_t::execute(listsize/2, shmlist, stdlist)){
             return 1;
          }
 
@@ -220,11 +224,11 @@
 
          listsize = (int)shmlist->size();
 
- if(push_data_t::execute(listsize, shmlist, stdlist)){
+ if(push_data_t::execute(listsize/2, shmlist, stdlist)){
             return 1;
          }
 
- if(push_data_t::execute(listsize, &othershmlist, &otherstdlist)){
+ if(push_data_t::execute(listsize/2, &othershmlist, &otherstdlist)){
             return 1;
          }
 
@@ -244,6 +248,13 @@
             if(!CheckEqualContainers(shmlist, stdlist))
                return 1;
          }
+
+ for(int i = 0; i < max; ++i){
+ shmlist->insert(shmlist->begin(), IntType(i));
+ stdlist->insert(stdlist->begin(), int(i));
+ }
+ if(!CheckEqualContainers(shmlist, stdlist))
+ return 1;
       }
 
       segment.template destroy<MyShmList>("MyList");

Modified: trunk/libs/interprocess/test/managed_mapped_file_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/managed_mapped_file_test.cpp (original)
+++ trunk/libs/interprocess/test/managed_mapped_file_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/managed_shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/managed_shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/managed_shared_memory_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //
@@ -122,6 +122,7 @@
       if(!shmem_vect)
          return -1;
    }
+ #ifndef BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS_NO_GROW
    {
       std::size_t old_free_memory;
       {
@@ -196,14 +197,16 @@
          if(next_shmem_size <= final_shmem_size)
             return -1;
       }
- {
- //Now test move semantics
- managed_shared_memory original(open_only, ShmemName);
- managed_shared_memory move_ctor(boost::interprocess::move(original));
- managed_shared_memory move_assign;
- move_assign = boost::interprocess::move(move_ctor);
- move_assign.swap(original);
- }
+ }
+ #endif //ifndef BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS_NO_GROW
+
+ {
+ //Now test move semantics
+ managed_shared_memory original(open_only, ShmemName);
+ managed_shared_memory move_ctor(boost::interprocess::move(original));
+ managed_shared_memory move_assign;
+ move_assign = boost::interprocess::move(move_ctor);
+ move_assign.swap(original);
    }
 
    shared_memory_object::remove(ShmemName);

Modified: trunk/libs/interprocess/test/managed_windows_shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/managed_windows_shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/managed_windows_shared_memory_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/map_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/map_test.hpp (original)
+++ trunk/libs/interprocess/test/map_test.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -94,26 +94,75 @@
 
          MyShmMap *shmmap2 =
             segment.template construct<MyShmMap>("MyShmMap2")
- (boost::interprocess::make_move_iterator(&aux_vect[0])
- , boost::interprocess::make_move_iterator(aux_vect + 50)
+ ( ::boost::interprocess::make_move_iterator(&aux_vect[0])
+ , ::boost::interprocess::make_move_iterator(aux_vect + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdMap *stdmap2 = new MyStdMap(aux_vect2, aux_vect2 + 50);
 
          MyShmMultiMap *shmmultimap2 =
             segment.template construct<MyShmMultiMap>("MyShmMultiMap2")
- (boost::interprocess::make_move_iterator(&aux_vect3[0])
- , boost::interprocess::make_move_iterator(aux_vect3 + 50)
+ ( ::boost::interprocess::make_move_iterator(&aux_vect3[0])
+ , ::boost::interprocess::make_move_iterator(aux_vect3 + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdMultiMap *stdmultimap2 = new MyStdMultiMap(aux_vect2, aux_vect2 + 50);
          if(!CheckEqualContainers(shmmap2, stdmap2)) return 1;
          if(!CheckEqualContainers(shmmultimap2, stdmultimap2)) return 1;
 
+ //ordered range insertion
+ //This is really nasty, but we have no other simple choice
+ for(int i = 0; i < 50; ++i){
+ IntType i1(i);
+ IntType i2(i);
+ new(&aux_vect[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+
+ for(int i = 0; i < 50; ++i){
+ new(&aux_vect2[i])StdValueType(StdKeyType(i), StdMappedType(i));
+ }
+
+ for(int i = 0; i < 50; ++i){
+ IntType i1(i);
+ IntType i2(i);
+ new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+
+ MyShmMap *shmmap3 =
+ segment.template construct<MyShmMap>("MyShmMap3")
+ ( ordered_unique_range
+ , ::boost::interprocess::make_move_iterator(&aux_vect[0])
+ , ::boost::interprocess::make_move_iterator(aux_vect + 50)
+ , std::less<IntType>(), segment.get_segment_manager());
+
+ MyStdMap *stdmap3 = new MyStdMap(aux_vect2, aux_vect2 + 50);
+
+ MyShmMultiMap *shmmultimap3 =
+ segment.template construct<MyShmMultiMap>("MyShmMultiMap3")
+ ( ordered_range
+ , ::boost::interprocess::make_move_iterator(&aux_vect3[0])
+ , ::boost::interprocess::make_move_iterator(aux_vect3 + 50)
+ , std::less<IntType>(), segment.get_segment_manager());
+
+ MyStdMultiMap *stdmultimap3 = new MyStdMultiMap(aux_vect2, aux_vect2 + 50);
+
+ if(!CheckEqualContainers(shmmap3, stdmap3)){
+ std::cout << "Error in construct<MyShmMap>(MyShmMap3)" << std::endl;
+ return 1;
+ }
+ if(!CheckEqualContainers(shmmultimap3, stdmultimap3)){
+ std::cout << "Error in construct<MyShmMultiMap>(MyShmMultiMap3)" << std::endl;
+ return 1;
+ }
+
          segment.destroy_ptr(shmmap2);
          segment.destroy_ptr(shmmultimap2);
          delete stdmap2;
          delete stdmultimap2;
+ segment.destroy_ptr(shmmap3);
+ segment.destroy_ptr(shmmultimap3);
+ delete stdmap3;
+ delete stdmultimap3;
       }
       {
          //This is really nasty, but we have no other simple choice
@@ -191,8 +240,8 @@
             new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
          }
 
- shmmap->insert(boost::interprocess::make_move_iterator(&aux_vect[0]), boost::interprocess::make_move_iterator(aux_vect + 50));
- shmmultimap->insert(boost::interprocess::make_move_iterator(&aux_vect3[0]), boost::interprocess::make_move_iterator(aux_vect3 + 50));
+ shmmap->insert(::boost::interprocess::make_move_iterator(&aux_vect[0]), ::boost::interprocess::make_move_iterator(aux_vect + 50));
+ shmmultimap->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0]), ::boost::interprocess::make_move_iterator(aux_vect3 + 50));
          for(std::size_t i = 0; i != 50; ++i){
             StdPairType stdpairtype(-1, -1);
             stdmap->insert(stdpairtype);
@@ -239,10 +288,10 @@
             new(&aux_vect5[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
          }
 
- shmmap->insert(boost::interprocess::make_move_iterator(&aux_vect[0]), boost::interprocess::make_move_iterator(aux_vect + 50));
- shmmap->insert(boost::interprocess::make_move_iterator(&aux_vect3[0]), boost::interprocess::make_move_iterator(aux_vect3 + 50));
- shmmultimap->insert(boost::interprocess::make_move_iterator(&aux_vect4[0]), boost::interprocess::make_move_iterator(aux_vect4 + 50));
- shmmultimap->insert(boost::interprocess::make_move_iterator(&aux_vect5[0]), boost::interprocess::make_move_iterator(aux_vect5 + 50));
+ shmmap->insert(::boost::interprocess::make_move_iterator(&aux_vect[0]), ::boost::interprocess::make_move_iterator(aux_vect + 50));
+ shmmap->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0]), ::boost::interprocess::make_move_iterator(aux_vect3 + 50));
+ shmmultimap->insert(::boost::interprocess::make_move_iterator(&aux_vect4[0]), ::boost::interprocess::make_move_iterator(aux_vect4 + 50));
+ shmmultimap->insert(::boost::interprocess::make_move_iterator(&aux_vect5[0]), ::boost::interprocess::make_move_iterator(aux_vect5 + 50));
 
          for(std::size_t i = 0; i != 50; ++i){
             StdPairType stdpairtype(-1, -1);

Modified: trunk/libs/interprocess/test/mapped_file_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/mapped_file_test.cpp (original)
+++ trunk/libs/interprocess/test/mapped_file_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/message_queue_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/message_queue_test.cpp (original)
+++ trunk/libs/interprocess/test/message_queue_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/movable_int.hpp
==============================================================================
--- trunk/libs/interprocess/test/movable_int.hpp (original)
+++ trunk/libs/interprocess/test/movable_int.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -21,11 +21,9 @@
 
 class movable_int
 {
- movable_int(movable_int&);
- movable_int &operator= (movable_int&);
+ BOOST_INTERPROCESS_MOVABLE_BUT_NOT_COPYABLE(movable_int)
 
    public:
- BOOST_INTERPROCESS_ENABLE_MOVE_EMULATION(movable_int)
 
    movable_int()
       : m_int(0)
@@ -81,8 +79,8 @@
 
 class movable_and_copyable_int
 {
+ BOOST_COPYABLE_AND_MOVABLE(movable_and_copyable_int)
    public:
- BOOST_INTERPROCESS_ENABLE_MOVE_EMULATION(movable_and_copyable_int)
 
    movable_and_copyable_int()
       : m_int(0)
@@ -96,7 +94,7 @@
       : m_int(mmi.m_int)
    {}
    
- movable_and_copyable_int &operator= (const movable_and_copyable_int& mi)
+ movable_and_copyable_int &operator= (BOOST_INTERPROCESS_COPY_ASSIGN_REF(movable_and_copyable_int) mi)
    { this->m_int = mi.m_int; return *this; }
 
    movable_and_copyable_int(BOOST_INTERPROCESS_RV_REF(movable_and_copyable_int) mmi)
@@ -143,6 +141,64 @@
     return os;
 }
 
+
+class copyable_int
+{
+ public:
+ copyable_int()
+ : m_int(0)
+ {}
+
+ explicit copyable_int(int a)
+ : m_int(a)
+ {}
+
+ copyable_int(const copyable_int& mmi)
+ : m_int(mmi.m_int)
+ {}
+
+ copyable_int & operator= (const copyable_int &mi)
+ { this->m_int = mi.m_int; return *this; }
+
+ copyable_int & operator= (int i)
+ { this->m_int = i; return *this; }
+
+ bool operator ==(const copyable_int &mi) const
+ { return this->m_int == mi.m_int; }
+
+ bool operator !=(const copyable_int &mi) const
+ { return this->m_int != mi.m_int; }
+
+ bool operator <(const copyable_int &mi) const
+ { return this->m_int < mi.m_int; }
+
+ bool operator <=(const copyable_int &mi) const
+ { return this->m_int <= mi.m_int; }
+
+ bool operator >=(const copyable_int &mi) const
+ { return this->m_int >= mi.m_int; }
+
+ bool operator >(const copyable_int &mi) const
+ { return this->m_int > mi.m_int; }
+
+ int get_int() const
+ { return m_int; }
+
+ private:
+ int m_int;
+};
+
+template<class E, class T>
+std::basic_ostream<E, T> & operator<<
+ (std::basic_ostream<E, T> & os, copyable_int const & p)
+
+{
+ os << p.get_int();
+ return os;
+}
+
+
+
 } //namespace test {
 } //namespace interprocess {
 } //namespace boost {

Modified: trunk/libs/interprocess/test/multi_index_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/multi_index_test.cpp (original)
+++ trunk/libs/interprocess/test/multi_index_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2009. 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)
 //
@@ -37,6 +37,17 @@
    int id;
    int age;
    shm_string name;
+
+ employee(const employee &e)
+ : id(e.id), age(e.age), name(e.name)
+ {}
+
+ employee &operator=(const employee &e)
+ {
+ id = e.id; age = e.age; name = e.name;
+ return *this;
+ }
+
    employee( int id_
            , int age_
            , const char *name_

Modified: trunk/libs/interprocess/test/mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/mutex_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/mutex_test_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/mutex_test_template.hpp (original)
+++ trunk/libs/interprocess/test/mutex_test_template.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //
@@ -234,6 +234,7 @@
 
    //Wait completion
    tm1.join();
+ boost::thread::sleep(xsecs(1*BaseSeconds));
    tm2.join();
 
    assert(d1.m_value == 1);

Modified: trunk/libs/interprocess/test/named_condition_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_condition_test.cpp (original)
+++ trunk/libs/interprocess/test/named_condition_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/named_construct_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_construct_test.cpp (original)
+++ trunk/libs/interprocess/test/named_construct_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2008-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2008-2009. 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)
 //

Modified: trunk/libs/interprocess/test/named_creation_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/named_creation_template.hpp (original)
+++ trunk/libs/interprocess/test/named_creation_template.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/named_mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/named_mutex_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/named_recursive_mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_recursive_mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/named_recursive_mutex_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/named_semaphore_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_semaphore_test.cpp (original)
+++ trunk/libs/interprocess/test/named_semaphore_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/named_upgradable_mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_upgradable_mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/named_upgradable_mutex_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/node_allocator_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/node_allocator_test.cpp (original)
+++ trunk/libs/interprocess/test/node_allocator_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/node_pool_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/node_pool_test.cpp (original)
+++ trunk/libs/interprocess/test/node_pool_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -12,9 +12,8 @@
 #include <boost/interprocess/allocators/detail/node_pool.hpp>
 
 using namespace boost::interprocess;
-typedef managed_shared_memory::segment_manager segment_manager_t;
-template class detail::private_node_pool_impl<segment_manager_t>;
 
+typedef managed_shared_memory::segment_manager segment_manager_t;
 
 int main ()
 {

Modified: trunk/libs/interprocess/test/null_index_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/null_index_test.cpp (original)
+++ trunk/libs/interprocess/test/null_index_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2009. 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)
 //

Modified: trunk/libs/interprocess/test/print_container.hpp
==============================================================================
--- trunk/libs/interprocess/test/print_container.hpp (original)
+++ trunk/libs/interprocess/test/print_container.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/private_adaptive_pool_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/private_adaptive_pool_test.cpp (original)
+++ trunk/libs/interprocess/test/private_adaptive_pool_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/private_node_allocator_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/private_node_allocator_test.cpp (original)
+++ trunk/libs/interprocess/test/private_node_allocator_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/recursive_mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/recursive_mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/recursive_mutex_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/semaphore_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/semaphore_test.cpp (original)
+++ trunk/libs/interprocess/test/semaphore_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/semaphore_test_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/semaphore_test_template.hpp (original)
+++ trunk/libs/interprocess/test/semaphore_test_template.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/set_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/set_test.hpp (original)
+++ trunk/libs/interprocess/test/set_test.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 ////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //
@@ -77,16 +77,16 @@
 
          MyShmSet *shmset2 =
             segment.template construct<MyShmSet>("MyShmSet2")
- (boost::interprocess::make_move_iterator(&aux_vect[0])
- , boost::interprocess::make_move_iterator(aux_vect + 50)
+ ( ::boost::interprocess::make_move_iterator(&aux_vect[0])
+ , ::boost::interprocess::make_move_iterator(aux_vect + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdSet *stdset2 = new MyStdSet(aux_vect2, aux_vect2 + 50);
 
          MyShmMultiSet *shmmultiset2 =
             segment.template construct<MyShmMultiSet>("MyShmMultiSet2")
- (boost::interprocess::make_move_iterator(&aux_vect3[0])
- , boost::interprocess::make_move_iterator(aux_vect3 + 50)
+ ( ::boost::interprocess::make_move_iterator(&aux_vect3[0])
+ , ::boost::interprocess::make_move_iterator(aux_vect3 + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdMultiSet *stdmultiset2 = new MyStdMultiSet(aux_vect2, aux_vect2 + 50);
@@ -99,20 +99,88 @@
             return 1;
          }
 
+ //ordered range insertion
+ for(int i = 0; i < 50; ++i){
+ IntType move_me(i);
+ aux_vect[i] = boost::interprocess::move(move_me);
+ }
+
+ for(int i = 0; i < 50; ++i){
+ aux_vect2[i] = i;
+ }
+
+ for(int i = 0; i < 50; ++i){
+ IntType move_me(i);
+ aux_vect3[i] = boost::interprocess::move(move_me);
+ }
+
+ MyShmSet *shmset3 =
+ segment.template construct<MyShmSet>("MyShmSet3")
+ ( ordered_unique_range
+ , ::boost::interprocess::make_move_iterator(&aux_vect[0])
+ , ::boost::interprocess::make_move_iterator(aux_vect + 50)
+ , std::less<IntType>(), segment.get_segment_manager());
+
+ MyStdSet *stdset3 = new MyStdSet(aux_vect2, aux_vect2 + 50);
+
+ MyShmMultiSet *shmmultiset3 =
+ segment.template construct<MyShmMultiSet>("MyShmMultiSet3")
+ ( ordered_range
+ , ::boost::interprocess::make_move_iterator(&aux_vect3[0])
+ , ::boost::interprocess::make_move_iterator(aux_vect3 + 50)
+ , std::less<IntType>(), segment.get_segment_manager());
+
+ MyStdMultiSet *stdmultiset3 = new MyStdMultiSet(aux_vect2, aux_vect2 + 50);
+
+ if(!CheckEqualContainers(shmset3, stdset3)){
+ std::cout << "Error in construct<MyShmSet>(MyShmSet3)" << std::endl;
+ return 1;
+ }
+ if(!CheckEqualContainers(shmmultiset3, stdmultiset3)){
+ std::cout << "Error in construct<MyShmMultiSet>(MyShmMultiSet3)" << std::endl;
+ return 1;
+ }
+
          segment.destroy_ptr(shmset2);
          segment.destroy_ptr(shmmultiset2);
          delete stdset2;
          delete stdmultiset2;
+
+ segment.destroy_ptr(shmset3);
+ segment.destroy_ptr(shmmultiset3);
+ delete stdset3;
+ delete stdmultiset3;
+ }
+
+ if(!CheckEqualContainers(shmset, stdset)){
+ std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)" << std::endl;
+ return 1;
       }
 
       int i, j;
- for(i = 0; i < max; ++i){
+ for(i = 0; i < max/2; ++i){
          IntType move_me(i);
          shmset->insert(boost::interprocess::move(move_me));
          stdset->insert(i);
          IntType move_me2(i);
          shmmultiset->insert(boost::interprocess::move(move_me2));
          stdmultiset->insert(i);
+
+ if(!CheckEqualContainers(shmset, stdset)){
+ std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)" << std::endl;
+ return 1;
+ }
+ //
+ shmset->insert(IntType(i));
+ stdset->insert(i);
+ shmmultiset->insert(IntType(i));
+ stdmultiset->insert(i);
+
+ if(!CheckEqualContainers(shmset, stdset)){
+ std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)" << std::endl;
+ return 1;
+ }
+
       }
 
       if(!CheckEqualContainers(shmset, stdset)){
@@ -195,16 +263,16 @@
             aux_vect3[i] = boost::interprocess::move(move_me);
          }
 
- shmset->insert(boost::interprocess::make_move_iterator(&aux_vect[0]), boost::interprocess::make_move_iterator(aux_vect + 50));
+ shmset->insert(::boost::interprocess::make_move_iterator(&aux_vect[0]), ::boost::interprocess::make_move_iterator(aux_vect + 50));
          stdset->insert(aux_vect2, aux_vect2 + 50);
- shmmultiset->insert(boost::interprocess::make_move_iterator(&aux_vect3[0]), boost::interprocess::make_move_iterator(aux_vect3 + 50));
+ shmmultiset->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0]), ::boost::interprocess::make_move_iterator(aux_vect3 + 50));
          stdmultiset->insert(aux_vect2, aux_vect2 + 50);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(boost::interprocess::make_move_iterator(&aux_vect[0])..." << std::endl;
+ std::cout << "Error in shmset->insert(::boost::interprocess::make_move_iterator(&aux_vect[0])..." << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(boost::interprocess::make_move_iterator(&aux_vect3[0]), ..." << std::endl;
+ std::cout << "Error in shmmultiset->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0]), ..." << std::endl;
             return 1;
          }
 
@@ -252,20 +320,20 @@
             aux_vect5[i] = boost::interprocess::move(move_me);
          }
 
- shmset->insert(boost::interprocess::make_move_iterator(&aux_vect[0]), boost::interprocess::make_move_iterator(aux_vect + 50));
- shmset->insert(boost::interprocess::make_move_iterator(&aux_vect3[0]), boost::interprocess::make_move_iterator(aux_vect3 + 50));
+ shmset->insert(::boost::interprocess::make_move_iterator(&aux_vect[0]), ::boost::interprocess::make_move_iterator(aux_vect + 50));
+ shmset->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0]), ::boost::interprocess::make_move_iterator(aux_vect3 + 50));
          stdset->insert(aux_vect2, aux_vect2 + 50);
          stdset->insert(aux_vect2, aux_vect2 + 50);
- shmmultiset->insert(boost::interprocess::make_move_iterator(&aux_vect4[0]), boost::interprocess::make_move_iterator(aux_vect4 + 50));
- shmmultiset->insert(boost::interprocess::make_move_iterator(&aux_vect5[0]), boost::interprocess::make_move_iterator(aux_vect5 + 50));
+ shmmultiset->insert(::boost::interprocess::make_move_iterator(&aux_vect4[0]), ::boost::interprocess::make_move_iterator(aux_vect4 + 50));
+ shmmultiset->insert(::boost::interprocess::make_move_iterator(&aux_vect5[0]), ::boost::interprocess::make_move_iterator(aux_vect5 + 50));
          stdmultiset->insert(aux_vect2, aux_vect2 + 50);
          stdmultiset->insert(aux_vect2, aux_vect2 + 50);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(boost::interprocess::make_move_iterator(&aux_vect3[0])..." << std::endl;
+ std::cout << "Error in shmset->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0])..." << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(boost::interprocess::make_move_iterator(&aux_vect5[0])..." << std::endl;
+ std::cout << "Error in shmmultiset->insert(::boost::interprocess::make_move_iterator(&aux_vect5[0])..." << std::endl;
             return 1;
          }
 
@@ -283,13 +351,18 @@
          }
       }
 
- for(i = 0; i < max; ++i){
+ for(i = 0; i < max/2; ++i){
          IntType move_me(i);
- shmset->insert(boost::interprocess::move(move_me));
- stdset->insert(i);
+ shmset->insert(shmset->begin(), boost::interprocess::move(move_me));
+ stdset->insert(stdset->begin(), i);
          IntType move_me2(i);
- shmmultiset->insert(boost::interprocess::move(move_me2));
- stdmultiset->insert(i);
+ shmmultiset->insert(shmmultiset->begin(), boost::interprocess::move(move_me2));
+ stdmultiset->insert(stdmultiset->begin(), i);
+ //
+ shmset->insert(shmset->begin(), IntType(i));
+ stdset->insert(stdset->begin(), i);
+ shmmultiset->insert(shmmultiset->begin(), IntType(i));
+ stdmultiset->insert(stdmultiset->begin(), i);
       }
 
       if(!CheckEqualContainers(shmset, stdset)){

Modified: trunk/libs/interprocess/test/sharable_mutex_test_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/sharable_mutex_test_template.hpp (original)
+++ trunk/libs/interprocess/test/sharable_mutex_test_template.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -10,7 +10,7 @@
 // It is provided "as is" without express or implied warranty.
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2009. 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)
 //

Modified: trunk/libs/interprocess/test/shared_memory_mapping_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/shared_memory_mapping_test.cpp (original)
+++ trunk/libs/interprocess/test/shared_memory_mapping_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/shared_memory_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/shared_ptr_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/shared_ptr_test.cpp (original)
+++ trunk/libs/interprocess/test/shared_ptr_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 //////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Peter Dimov 2002-2005, 2007.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 // 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)

Modified: trunk/libs/interprocess/test/slist_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/slist_test.cpp (original)
+++ trunk/libs/interprocess/test/slist_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //
@@ -26,8 +26,8 @@
 typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocator;
 typedef slist<int, ShmemAllocator> MyList;
 
-typedef allocator<volatile int, managed_shared_memory::segment_manager> ShmemVolatileAllocator;
-typedef slist<volatile int, ShmemVolatileAllocator> MyVolatileList;
+//typedef allocator<volatile int, managed_shared_memory::segment_manager> ShmemVolatileAllocator;
+//typedef slist<volatile int, ShmemVolatileAllocator> MyVolatileList;
 
 typedef allocator<test::movable_int, managed_shared_memory::segment_manager> ShmemMoveAllocator;
 typedef slist<test::movable_int, ShmemMoveAllocator> MyMoveList;
@@ -35,6 +35,9 @@
 typedef allocator<test::movable_and_copyable_int, managed_shared_memory::segment_manager> ShmemCopyMoveAllocator;
 typedef slist<test::movable_and_copyable_int, ShmemCopyMoveAllocator> MyCopyMoveList;
 
+typedef allocator<test::copyable_int, managed_shared_memory::segment_manager> ShmemCopyAllocator;
+typedef slist<test::copyable_int, ShmemCopyAllocator> MyCopyList;
+
 class recursive_slist
 {
 public:
@@ -68,7 +71,10 @@
    if(test::list_test<managed_shared_memory, MyCopyMoveList, false>())
       return 1;
 
- if(test::list_test<managed_shared_memory, MyVolatileList, false>())
+// if(test::list_test<managed_shared_memory, MyVolatileList, false>())
+// return 1;
+
+ if(test::list_test<managed_shared_memory, MyCopyList, false>())
       return 1;
 
    const test::EmplaceOptions Options = (test::EmplaceOptions)

Modified: trunk/libs/interprocess/test/stable_vector_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/stable_vector_test.cpp (original)
+++ trunk/libs/interprocess/test/stable_vector_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //
@@ -71,6 +71,9 @@
    typedef allocator<test::movable_and_copyable_int, managed_shared_memory::segment_manager> ShmemCopyMoveAllocator;
    typedef stable_vector<test::movable_and_copyable_int, ShmemCopyMoveAllocator> MyCopyMoveVector;
 
+ typedef allocator<test::copyable_int, managed_shared_memory::segment_manager> ShmemCopyAllocator;
+ typedef stable_vector<test::copyable_int, ShmemCopyAllocator> MyCopyVector;
+
    if(test::vector_test<managed_shared_memory, MyVector>())
       return 1;
 
@@ -86,6 +89,9 @@
    if(test::vector_test<managed_shared_memory, MyCopyMoveVector>())
       return 1;
 
+ if(test::vector_test<managed_shared_memory, MyCopyVector>())
+ return 1;
+
    const test::EmplaceOptions Options = (test::EmplaceOptions)(test::EMPLACE_BACK | test::EMPLACE_BEFORE);
    if(!boost::interprocess::test::test_emplace
       < stable_vector<test::EmplaceInt>, Options>())

Modified: trunk/libs/interprocess/test/string_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/string_test.cpp (original)
+++ trunk/libs/interprocess/test/string_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/tree_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/tree_test.cpp (original)
+++ trunk/libs/interprocess/test/tree_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //
@@ -52,6 +52,8 @@
    shmem_movable_node_pair_allocator_t;
 typedef allocator<test::movable_and_copyable_int, my_managed_shared_memory::segment_manager>
    shmem_move_copy_allocator_t;
+typedef allocator<test::copyable_int, my_managed_shared_memory::segment_manager>
+ shmem_copy_allocator_t;
 typedef allocator<std::pair<const test::movable_and_copyable_int, test::movable_and_copyable_int>, my_managed_shared_memory::segment_manager>
    shmem_move_copy_node_pair_allocator_t;
 
@@ -86,6 +88,15 @@
 typedef multiset<test::movable_and_copyable_int,
       std::less<test::movable_and_copyable_int>,
       shmem_move_copy_allocator_t> MyMoveCopyShmMultiSet;
+
+typedef set<test::copyable_int
+ ,std::less<test::copyable_int>
+ ,shmem_copy_allocator_t> MyCopyShmSet;
+typedef multiset<test::copyable_int,
+ std::less<test::copyable_int>,
+ shmem_copy_allocator_t> MyCopyShmMultiSet;
+
+
 typedef map<test::movable_and_copyable_int
            ,test::movable_and_copyable_int
            ,std::less<test::movable_and_copyable_int>
@@ -194,6 +205,13 @@
       return 1;
    }
 
+ if(0 != test::set_test<my_managed_shared_memory
+ ,MyCopyShmSet
+ ,MyStdSet
+ ,MyCopyShmMultiSet
+ ,MyStdMultiSet>()){
+ return 1;
+ }
 
    if (0 != test::map_test<my_managed_shared_memory
                   ,MyShmMap

Modified: trunk/libs/interprocess/test/unordered_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/unordered_test.cpp (original)
+++ trunk/libs/interprocess/test/unordered_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2007-2009. 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)
 //

Modified: trunk/libs/interprocess/test/upgradable_mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/upgradable_mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/upgradable_mutex_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/user_buffer_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/user_buffer_test.cpp (original)
+++ trunk/libs/interprocess/test/user_buffer_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/util.hpp
==============================================================================
--- trunk/libs/interprocess/test/util.hpp (original)
+++ trunk/libs/interprocess/test/util.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/vector_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/vector_test.cpp (original)
+++ trunk/libs/interprocess/test/vector_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //
@@ -102,6 +102,9 @@
    typedef allocator<test::movable_and_copyable_int, managed_shared_memory::segment_manager> ShmemCopyMoveAllocator;
    typedef vector<test::movable_and_copyable_int, ShmemCopyMoveAllocator> MyCopyMoveVector;
 
+ typedef allocator<test::copyable_int, managed_shared_memory::segment_manager> ShmemCopyAllocator;
+ typedef vector<test::copyable_int, ShmemCopyAllocator> MyCopyVector;
+
    if(test::vector_test<managed_shared_memory, MyVector>())
       return 1;
 
@@ -114,6 +117,9 @@
    if(test::vector_test<managed_shared_memory, MyCopyMoveVector>())
       return 1;
 
+ if(test::vector_test<managed_shared_memory, MyCopyVector>())
+ return 1;
+
    if(test_expand_bwd())
       return 1;
 

Modified: trunk/libs/interprocess/test/vector_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/vector_test.hpp (original)
+++ trunk/libs/interprocess/test/vector_test.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //
@@ -44,7 +44,7 @@
    typedef typename V1::value_type IntType;
    std::size_t size = shmvector->size();
    stdvector->insert(stdvector->end(), 50, 1);
- shmvector->insert(shmvector->end(), 50, 1);
+ shmvector->insert(shmvector->end(), 50, IntType(1));
    if(!test::CheckEqualContainers(shmvector, stdvector)) return false;
 
    {
@@ -134,7 +134,7 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType new_int(-1);
- BOOST_STATIC_ASSERT((boost::interprocess::is_movable<boost::interprocess::test::movable_int>::value == true));
+ BOOST_STATIC_ASSERT((::boost::interprocess::is_movable<boost::interprocess::test::movable_int>::value == true));
                aux_vect[i] = boost::interprocess::move(new_int);
             }
             int aux_vect2[50];
@@ -143,8 +143,8 @@
             }
 
             shmvector->insert(shmvector->end()
- ,boost::interprocess::make_move_iterator(&aux_vect[0])
- ,boost::interprocess::make_move_iterator(aux_vect + 50));
+ ,::boost::interprocess::make_move_iterator(&aux_vect[0])
+ ,::boost::interprocess::make_move_iterator(aux_vect + 50));
             stdvector->insert(stdvector->end(), aux_vect2, aux_vect2 + 50);
             if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
@@ -165,8 +165,8 @@
                aux_vect2[i] = -1;
             }
             shmvector->insert(shmvector->begin()
- ,boost::interprocess::make_move_iterator(&aux_vect[0])
- ,boost::interprocess::make_move_iterator(aux_vect + 50));
+ ,::boost::interprocess::make_move_iterator(&aux_vect[0])
+ ,::boost::interprocess::make_move_iterator(aux_vect + 50));
             stdvector->insert(stdvector->begin(), aux_vect2, aux_vect2 + 50);
             if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
          }
@@ -178,6 +178,8 @@
          IntType push_back_this(1);
          shmvector->push_back(boost::interprocess::move(push_back_this));
          stdvector->push_back(int(1));
+ shmvector->push_back(IntType(1));
+ stdvector->push_back(int(1));
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
          if(!copyable_only(shmvector, stdvector
@@ -193,6 +195,8 @@
             IntType insert_this(i);
             shmvector->insert(shmvector->begin(), boost::interprocess::move(insert_this));
             stdvector->insert(stdvector->begin(), i);
+ shmvector->insert(shmvector->begin(), IntType(i));
+ stdvector->insert(stdvector->begin(), int(i));
          }
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 

Modified: trunk/libs/interprocess/test/windows_shared_memory_mapping_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/windows_shared_memory_mapping_test.cpp (original)
+++ trunk/libs/interprocess/test/windows_shared_memory_mapping_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/interprocess/test/windows_shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/windows_shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/windows_shared_memory_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2009. 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)
 //

Modified: trunk/libs/intrusive/CMakeLists.txt
==============================================================================
--- trunk/libs/intrusive/CMakeLists.txt (original)
+++ trunk/libs/intrusive/CMakeLists.txt 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,9 +1,3 @@
-#
-# Copyright Troy D. Straszheim
-#
-# Distributed under the Boost Software License, Version 1.0.
-# See http://www.boost.org/LICENSE_1_0.txt
-#
 #----------------------------------------------------------------------------
 # This file was automatically generated from the original CMakeLists.txt file
 # Add a variable to hold the headers for the library

Modified: trunk/libs/intrusive/doc/intrusive.qbk
==============================================================================
--- trunk/libs/intrusive/doc/intrusive.qbk (original)
+++ trunk/libs/intrusive/doc/intrusive.qbk 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,14 +1,14 @@
 [/
- / Copyright (c) 2007 Ion Gaztanaga
+ / Copyright (c) 2007-2009 Ion Gaztanaga
  /
  / 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)
  /]
 
 [library Boost.Intrusive
- [quickbook 1.3]
+ [quickbook 1.4]
     [authors [Krzikalla, Olaf], [Gaztanaga, Ion]]
- [copyright 2005 Olaf Krzikalla, 2006-2008 Ion Gaztanaga]
+ [copyright 2005 Olaf Krzikalla, 2006-2009 Ion Gaztanaga]
     [id intrusive]
     [dirname intrusive]
     [purpose Intrusive containers]
@@ -2071,11 +2071,36 @@
 
 [endsect]
 
+[section:positional_insertions Positional insertions]
+
+Some ordered associative containers offer low-level functions to bypass ordering
+checks and insert nodes directly in desired tree positions. These functions are
+provided for performance reasons when values to be inserted in the container are
+known to fulfill order (sets and multisets) and uniqueness (sets) invariants. A
+typical usage of these functions is when intrusive associative containers are used
+to build non-intrusive containers and the programmer wants to speed up assignments
+from other associative containers: if the ordering and uniqueness properties are the same,
+there is no need to waste time checking the position of each source value, because values
+are already ordered: back insertions will be much more efficient.
+
+[*Note:] These functions [*don't check preconditions] so they must used with care. These
+are functions are low-level operations [*will break container invariants if
+ordering and uniqueness preconditions are not assured by the caller.]
+
+Let's see an example:
+
+[import ../example/doc_positional_insertion.cpp]
+[doc_positional_insertion]
+
+
+[endsect]
+
 For more information about advanced lookup and insertion functions see
+associative containers' documentation (e.g.
 [classref boost::intrusive::set set],
 [classref boost::intrusive::multiset multiset],
 [classref boost::intrusive::unordered_set unordered_set] and
-[classref boost::intrusive::unordered_multiset unordered_multiset] references.
+[classref boost::intrusive::unordered_multiset unordered_multiset] references).
 
 [endsect]
 
@@ -2269,7 +2294,7 @@
 
 However, there is a more size-efficient alternative in [*Boost.Intrusive]: "any" hooks
 ([classref boost::intrusive::any_base_hook any_base_hook] and
-[classref boost::intrusive::any_member_hook any_member_hook].
+[classref boost::intrusive::any_member_hook any_member_hook]).
 These hooks can be used to store a type in several containers
 offered by [*Boost.Intrusive] minimizing the size of the class.
 
@@ -2288,8 +2313,8 @@
    internally in the hook and propagated to the container.
    Default: `void_pointer<void*>`.
 
-`auto_unlink` can't be supported because the hook does not know in which type of might
-be inserted container. Additionally, these hooks don't support `unlink()` and
+`auto_unlink` can't be supported because the hook does not know in which type of
+container might be currently inserted. Additionally, these hooks don't support `unlink()` and
 `swap_nodes()` operations for the same reason.
 
 Here is an example that creates a class with two any hooks, and uses one to insert the
@@ -3157,13 +3182,12 @@
 Until now all shown custom value traits are stateless, that is, [*the transformation between nodes
 and values is implemented in terms of static functions]. It's possible to use [*stateful] value traits
 so that we can separate nodes and values and [*avoid modifying types to insert nodes].
-[*Boost.Intrusive] differentiates between stateful and stateless value traits by checking if the ValueTraits
-class is empty:
+[*Boost.Intrusive] differentiates between stateful and stateless value traits by checking if all
+Node <-> Value transformation functions are static or not:
 
-* If the class is empty, a [*stateless] value traits is assumed.
- Node <-> Value transformations must be static functions.
-* If the class is not empty, a [*stateful] value traits is assumed.
- Node <-> Value transformations must be non-static functions.
+* If all Node <-> Value transformation functions are static , a [*stateless]
+ value traits is assumed. transformations must be static functions.
+* Otherwise a [*stateful] value traits is assumed.
 
 Using stateful value traits it's possible to create containers of non-copyable/movable objects [*without modifying]
 the definition of the class to be inserted. This interesting property is achieved without using global variables

Modified: trunk/libs/intrusive/example/doc_advanced_value_traits.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_advanced_value_traits.cpp (original)
+++ trunk/libs/intrusive/example/doc_advanced_value_traits.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_advanced_value_traits2.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_advanced_value_traits2.cpp (original)
+++ trunk/libs/intrusive/example/doc_advanced_value_traits2.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_assoc_optimized_code.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_assoc_optimized_code.cpp (original)
+++ trunk/libs/intrusive/example/doc_assoc_optimized_code.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_auto_unlink.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_auto_unlink.cpp (original)
+++ trunk/libs/intrusive/example/doc_auto_unlink.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_avl_set.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_avl_set.cpp (original)
+++ trunk/libs/intrusive/example/doc_avl_set.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_avltree_algorithms.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_avltree_algorithms.cpp (original)
+++ trunk/libs/intrusive/example/doc_avltree_algorithms.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_bucket_traits.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_bucket_traits.cpp (original)
+++ trunk/libs/intrusive/example/doc_bucket_traits.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_clone_from.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_clone_from.cpp (original)
+++ trunk/libs/intrusive/example/doc_clone_from.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_entity.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_entity.cpp (original)
+++ trunk/libs/intrusive/example/doc_entity.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_erasing_and_disposing.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_erasing_and_disposing.cpp (original)
+++ trunk/libs/intrusive/example/doc_erasing_and_disposing.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_external_value_traits.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_external_value_traits.cpp (original)
+++ trunk/libs/intrusive/example/doc_external_value_traits.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_how_to_use.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_how_to_use.cpp (original)
+++ trunk/libs/intrusive/example/doc_how_to_use.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_iterator_from_value.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_iterator_from_value.cpp (original)
+++ trunk/libs/intrusive/example/doc_iterator_from_value.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_list.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_list.cpp (original)
+++ trunk/libs/intrusive/example/doc_list.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_list_algorithms.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_list_algorithms.cpp (original)
+++ trunk/libs/intrusive/example/doc_list_algorithms.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_offset_ptr.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_offset_ptr.cpp (original)
+++ trunk/libs/intrusive/example/doc_offset_ptr.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Added: trunk/libs/intrusive/example/doc_positional_insertion.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/intrusive/example/doc_positional_insertion.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -0,0 +1,74 @@
+/////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2009-2009
+//
+// 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)
+//
+// See http://www.boost.org/libs/intrusive for documentation.
+//
+/////////////////////////////////////////////////////////////////////////////
+//[doc_positional_insertion
+#include <boost/intrusive/set.hpp>
+#include <vector>
+#include <algorithm>
+#include <cassert>
+
+using namespace boost::intrusive;
+
+//A simple class with a set hook
+class MyClass : public set_base_hook<>
+{
+ public:
+ int int_;
+
+ MyClass(int i) : int_(i) {}
+ friend bool operator< (const MyClass &a, const MyClass &b)
+ { return a.int_ < b.int_; }
+ friend bool operator> (const MyClass &a, const MyClass &b)
+ { return a.int_ > b.int_; }
+};
+
+int main()
+{
+ //Create some ORDERED elements
+ std::vector<MyClass> values;
+ for(int i = 0; i < 100; ++i) values.push_back(MyClass(i));
+
+ { //Data is naturally ordered in the vector with the same criteria
+ //as multiset's comparison predicate, so we can just push back
+ //all elements, which is more efficient than normal insertion
+ multiset<MyClass> mset;
+ for(int i = 0; i < 100; ++i) mset.push_back(values[i]);
+
+ //Now check orderd invariant
+ multiset<MyClass>::const_iterator next(mset.cbegin()), it(next++);
+ for(int i = 0; i < 99; ++i, ++it, ++next) assert(*it < *next);
+ }
+ { //Now the correct order for the set is the reverse order
+ //so let's push front all elements
+ multiset<MyClass, compare< std::greater<MyClass> > > mset;
+ for(int i = 0; i < 100; ++i) mset.push_front(values[i]);
+
+ //Now check orderd invariant
+ multiset<MyClass, compare< std::greater<MyClass> > >::
+ const_iterator next(mset.cbegin()), it(next++);
+ for(int i = 0; i < 99; ++i, ++it, ++next) assert(*it > *next);
+ }
+ { //Now push the first and the last and insert the rest
+ //before the last position using "insert_before"
+ multiset<MyClass> mset;
+ mset.insert_before(mset.begin(), values[0]);
+ multiset<MyClass>::const_iterator pos =
+ mset.insert_before(mset.end(), values[99]);
+ for(int i = 1; i < 99; ++i) mset.insert_before(pos, values[i]);
+
+ //Now check orderd invariant
+ multiset<MyClass>::const_iterator next(mset.cbegin()), it(next++);
+ for(int i = 0; i < 99; ++i, ++it, ++next) assert(*it < *next);
+ }
+
+ return 0;
+}
+//]

Modified: trunk/libs/intrusive/example/doc_rbtree_algorithms.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_rbtree_algorithms.cpp (original)
+++ trunk/libs/intrusive/example/doc_rbtree_algorithms.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_set.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_set.cpp (original)
+++ trunk/libs/intrusive/example/doc_set.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_sg_set.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_sg_set.cpp (original)
+++ trunk/libs/intrusive/example/doc_sg_set.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_slist.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_slist.cpp (original)
+++ trunk/libs/intrusive/example/doc_slist.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_slist_algorithms.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_slist_algorithms.cpp (original)
+++ trunk/libs/intrusive/example/doc_slist_algorithms.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_splay_algorithms.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_splay_algorithms.cpp (original)
+++ trunk/libs/intrusive/example/doc_splay_algorithms.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_splay_set.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_splay_set.cpp (original)
+++ trunk/libs/intrusive/example/doc_splay_set.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_splaytree_algorithms.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_splaytree_algorithms.cpp (original)
+++ trunk/libs/intrusive/example/doc_splaytree_algorithms.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_stateful_value_traits.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_stateful_value_traits.cpp (original)
+++ trunk/libs/intrusive/example/doc_stateful_value_traits.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_treap_algorithms.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_treap_algorithms.cpp (original)
+++ trunk/libs/intrusive/example/doc_treap_algorithms.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_treap_set.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_treap_set.cpp (original)
+++ trunk/libs/intrusive/example/doc_treap_set.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_unordered_set.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_unordered_set.cpp (original)
+++ trunk/libs/intrusive/example/doc_unordered_set.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_value_traits.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_value_traits.cpp (original)
+++ trunk/libs/intrusive/example/doc_value_traits.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/example/doc_window.cpp
==============================================================================
--- trunk/libs/intrusive/example/doc_window.cpp (original)
+++ trunk/libs/intrusive/example/doc_window.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/index.html
==============================================================================
--- trunk/libs/intrusive/index.html (original)
+++ trunk/libs/intrusive/index.html 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,5 +1,5 @@
 <!--
-Copyright 2005-2008 Ion Gaztanaga
+Copyright 2005-2009 Ion Gaztanaga
 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)
 -->

Modified: trunk/libs/intrusive/perf/perf_list.cpp
==============================================================================
--- trunk/libs/intrusive/perf/perf_list.cpp (original)
+++ trunk/libs/intrusive/perf/perf_list.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj
==============================================================================
--- trunk/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj (original)
+++ trunk/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -244,12 +244,18 @@
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\ebo_functor_holder.hpp">
                                 </File>
                                 <File
+ RelativePath="..\..\..\..\..\boost\intrusive\detail\function_detector.hpp">
+ </File>
+ <File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\generic_hook.hpp">
                                 </File>
                                 <File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\hashtable_node.hpp">
                                 </File>
                                 <File
+ RelativePath="..\..\..\..\..\boost\intrusive\detail\is_stateful_value_traits.hpp">
+ </File>
+ <File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\list_node.hpp">
                                 </File>
                                 <File
@@ -383,6 +389,9 @@
                                 RelativePath="..\..\..\example\doc_offset_ptr.cpp">
                         </File>
                         <File
+ RelativePath="..\..\..\example\doc_positional_insertion.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\example\doc_rbtree_algorithms.cpp">
                         </File>
                         <File

Modified: trunk/libs/intrusive/proj/vc7ide/to-do.txt
==============================================================================
--- trunk/libs/intrusive/proj/vc7ide/to-do.txt (original)
+++ trunk/libs/intrusive/proj/vc7ide/to-do.txt 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -9,20 +9,8 @@
 // See http://www.boost.org/libs/intrusive for documentation.
 //
 /////////////////////////////////////////////////////////////////////////////
--> Implement C++0x features (variadic templates & rvalue references)
+-> Implement C++0x features (rvalue references)
 -> Offer bidirectional iterator for hashtables
 -> Non-array buckets
 -> Document incremental<> option better
-
--> Revise treap's hooks should be restored if the operation throws
--> Revise treap help to add priority changes (throw, new functions, etc.)
--> Revise make_functions, and any hook tests to add missing containers
--> On exceptions, auto_unlink/safe_link hooks default state should be recovered
- (insert_equal, insert_lower_bound, insert_equal_upper_bound)
--> insert_unique_check should also compare priorities.
--> test insert_unique_check with hint in tests
--> revise strong exception safety concepts for treap::erase functions.
- What happens with range deletions?
 -> Assure stable order for optimize_multikey and inverse order otherwise
--> linear slist's splice_after(..., slist &x) can be optimized if *this is empty
--> optimize slist::merge like list::merge

Modified: trunk/libs/intrusive/test/any_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/any_test.cpp (original)
+++ trunk/libs/intrusive/test/any_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/avl_multiset_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/avl_multiset_test.cpp (original)
+++ trunk/libs/intrusive/test/avl_multiset_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -17,6 +17,26 @@
 #include "smart_ptr.hpp"
 #include "generic_multiset_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::avl_multiset<T,
+ #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+ O1, O2, O3, O4
+ #else
+ Options...
+ #endif
+> >
+{
+ static const bool value = true;
+};
+
+}}}
+
 using namespace boost::intrusive;
 
 struct my_tag;

Modified: trunk/libs/intrusive/test/avl_set_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/avl_set_test.cpp (original)
+++ trunk/libs/intrusive/test/avl_set_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -16,6 +16,27 @@
 #include "smart_ptr.hpp"
 #include "generic_set_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::avl_set<T,
+ #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+ O1, O2, O3, O4
+ #else
+ Options...
+ #endif
+> >
+{
+ static const bool value = true;
+};
+
+}}}
+
+
 using namespace boost::intrusive;
 
 struct my_tag;

Modified: trunk/libs/intrusive/test/common_functors.hpp
==============================================================================
--- trunk/libs/intrusive/test/common_functors.hpp (original)
+++ trunk/libs/intrusive/test/common_functors.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/custom_bucket_traits_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/custom_bucket_traits_test.cpp (original)
+++ trunk/libs/intrusive/test/custom_bucket_traits_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/default_hook_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/default_hook_test.cpp (original)
+++ trunk/libs/intrusive/test/default_hook_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/external_value_traits_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/external_value_traits_test.cpp (original)
+++ trunk/libs/intrusive/test/external_value_traits_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/generic_assoc_test.hpp
==============================================================================
--- trunk/libs/intrusive/test/generic_assoc_test.hpp (original)
+++ trunk/libs/intrusive/test/generic_assoc_test.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -35,6 +35,12 @@
    static const bool value = false;
 };
 
+template<class T>
+struct has_insert_before
+{
+ static const bool value = false;
+};
+
 template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
 struct test_generic_assoc
 {
@@ -52,6 +58,9 @@
    static void test_rebalance(std::vector<value_type>& values);
    static void test_rebalance(std::vector<value_type>& values, boost::intrusive::detail::true_type);
    static void test_rebalance(std::vector<value_type>& values, boost::intrusive::detail::false_type);
+ static void test_insert_before(std::vector<value_type>& values);
+ static void test_insert_before(std::vector<value_type>& values, boost::intrusive::detail::true_type);
+ static void test_insert_before(std::vector<value_type>& values, boost::intrusive::detail::false_type);
    static void test_container_from_iterator(std::vector<value_type>& values);
 };
 
@@ -149,6 +158,7 @@
    test_splay_up(values);
    test_splay_down(values);
    test_rebalance(values);
+ test_insert_before(values);
    test_insert_erase_burst();
    test_container_from_iterator(values);
 }
@@ -365,6 +375,73 @@
    test_rebalance(values, enabler());
 }
 
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_assoc<ValueTraits, ContainerDefiner>::test_insert_before
+(std::vector<typename ValueTraits::value_type>& values, boost::intrusive::detail::true_type)
+{
+ typedef typename ValueTraits::value_type value_type;
+ typedef typename ContainerDefiner
+ < value_type
+ , value_traits<ValueTraits>
+ , constant_time_size<value_type::constant_time_size>
+ >::type assoc_type;
+ {
+ assoc_type testset;
+ typedef typename std::vector<value_type>::iterator vec_iterator;
+ for(vec_iterator it(values.begin()), itend(values.end())
+ ; it != itend
+ ; ++it){
+ testset.push_back(*it);
+ }
+ BOOST_TEST(testset.size() == values.size());
+ TEST_INTRUSIVE_SEQUENCE_EXPECTED(values, testset.begin());
+ }
+ {
+ assoc_type testset;
+ typedef typename std::vector<value_type>::iterator vec_iterator;
+ for(vec_iterator it(--values.end()), itend(--values.begin())
+ ; it != itend
+ ; --it){
+ testset.push_front(*it);
+ }
+ BOOST_TEST(testset.size() == values.size());
+ TEST_INTRUSIVE_SEQUENCE_EXPECTED(values, testset.begin());
+ }
+ {
+ assoc_type testset;
+ typedef typename std::vector<value_type>::iterator vec_iterator;
+ typename assoc_type::iterator it_pos =
+ testset.insert_before(testset.end(), *values.rbegin());
+ testset.insert_before(testset.begin(), *values.begin());
+ for(vec_iterator it(++values.begin()), itend(--values.end())
+ ; it != itend
+ ; ++it){
+ testset.insert_before(it_pos, *it);
+ }
+ BOOST_TEST(testset.size() == values.size());
+ TEST_INTRUSIVE_SEQUENCE_EXPECTED(values, testset.begin());
+ }
+}
+
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_assoc<ValueTraits, ContainerDefiner>::test_insert_before
+(std::vector<typename ValueTraits::value_type>&, boost::intrusive::detail::false_type)
+{}
+
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_assoc<ValueTraits, ContainerDefiner>::test_insert_before
+(std::vector<typename ValueTraits::value_type>& values)
+{
+ typedef typename ContainerDefiner
+ < value_type
+ , value_traits<ValueTraits>
+ , constant_time_size<value_type::constant_time_size>
+ >::type assoc_type;
+ typedef typename detail::remove_const<assoc_type>::type Type;
+ typedef detail::bool_<has_insert_before<Type>::value> enabler;
+ test_insert_before(values, enabler());
+}
+
 }}} //namespace boost::intrusive::test
 
 #include <boost/intrusive/detail/config_end.hpp>

Modified: trunk/libs/intrusive/test/generic_multiset_test.hpp
==============================================================================
--- trunk/libs/intrusive/test/generic_multiset_test.hpp (original)
+++ trunk/libs/intrusive/test/generic_multiset_test.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/generic_set_test.hpp
==============================================================================
--- trunk/libs/intrusive/test/generic_set_test.hpp (original)
+++ trunk/libs/intrusive/test/generic_set_test.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -23,6 +23,12 @@
 namespace intrusive{
 namespace test{
 
+template<class T>
+struct is_treap
+{
+ static const bool value = false;
+};
+
 template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
 struct test_generic_set
 {
@@ -30,6 +36,9 @@
    static void test_all();
    static void test_sort(std::vector<value_type>& values);
    static void test_insert(std::vector<value_type>& values);
+ static void test_insert_advanced(std::vector<value_type>& values, boost::intrusive::detail::true_type);
+ static void test_insert_advanced(std::vector<value_type>& values, boost::intrusive::detail::false_type);
+ static void test_insert_advanced(std::vector<value_type>& values);
    static void test_swap(std::vector<value_type>& values);
    static void test_find(std::vector<value_type>& values);
    static void test_impl();
@@ -65,6 +74,7 @@
    }
    test_sort(values);
    test_insert(values);
+ test_insert_advanced(values);
    test_swap(values);
    test_find(values);
    test_impl();
@@ -139,32 +149,94 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
>::type set_type;
- set_type testset;
- testset.insert(&values[0] + 2, &values[0] + 5);
+ {
+ set_type testset;
+ testset.insert(&values[0] + 2, &values[0] + 5);
 
- const set_type& const_testset = testset;
- { int init_values [] = { 1, 4, 5 };
- TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); }
+ const set_type& const_testset = testset;
+ { int init_values [] = { 1, 4, 5 };
+ TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); }
 
- typename set_type::iterator i = testset.begin();
- BOOST_TEST (i->value_ == 1);
+ typename set_type::iterator i = testset.begin();
+ BOOST_TEST (i->value_ == 1);
 
- i = testset.insert (i, values[0]);
- BOOST_TEST (&*i == &values[0]);
+ i = testset.insert (i, values[0]);
+ BOOST_TEST (&*i == &values[0]);
 
- { int init_values [] = { 5, 4, 3, 1 };
- TEST_INTRUSIVE_SEQUENCE( init_values, testset.rbegin() ); }
+ { int init_values [] = { 5, 4, 3, 1 };
+ TEST_INTRUSIVE_SEQUENCE( init_values, testset.rbegin() ); }
 
- i = testset.iterator_to (values[2]);
- BOOST_TEST (&*i == &values[2]);
+ i = testset.iterator_to (values[2]);
+ BOOST_TEST (&*i == &values[2]);
 
- i = set_type::s_iterator_to(values[2]);
- BOOST_TEST (&*i == &values[2]);
+ i = set_type::s_iterator_to(values[2]);
+ BOOST_TEST (&*i == &values[2]);
+
+ testset.erase (i);
+ { int init_values [] = { 1, 3, 5 };
+ TEST_INTRUSIVE_SEQUENCE( init_values, testset.begin() ); }
+ }
+}
+
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_set<ValueTraits, ContainerDefiner>::test_insert_advanced
+(std::vector<typename ValueTraits::value_type>& values, boost::intrusive::detail::true_type)
+{
+ typedef typename ValueTraits::value_type value_type;
+ typedef typename ContainerDefiner
+ < value_type
+ , value_traits<ValueTraits>
+ , constant_time_size<value_type::constant_time_size>
+ >::type set_type;
+ {
+ set_type testset;
+ testset.insert(&values[0], &values[0] + values.size());
+ value_type v(1);
+ typename set_type::insert_commit_data data;
+ BOOST_TEST (!testset.insert_check(v, testset.value_comp(), testset.priority_comp(), data).second);
+ BOOST_TEST (!testset.insert_check(testset.begin(), v, testset.value_comp(), testset.priority_comp(), data).second);
+ }
+}
+
+
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_set<ValueTraits, ContainerDefiner>::test_insert_advanced
+(std::vector<typename ValueTraits::value_type>& values)
+{
+ typedef typename ValueTraits::value_type value_type;
+ typedef typename ContainerDefiner
+ < value_type
+ , value_traits<ValueTraits>
+ , constant_time_size<value_type::constant_time_size>
+ >::type set_type;
+ typedef typename detail::remove_const<set_type>::type Type;
+ typedef detail::bool_<is_treap<Type>::value> enabler;
+ test_insert_advanced(values, enabler());
+}
+
+
+//test: insert, const_iterator, const_reverse_iterator, erase, s_iterator_to:
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_set<ValueTraits, ContainerDefiner>::test_insert_advanced
+ ( std::vector<typename ValueTraits::value_type>& values
+ , boost::intrusive::detail::false_type)
+{
+ typedef typename ValueTraits::value_type value_type;
+ typedef typename ContainerDefiner
+ < value_type
+ , value_traits<ValueTraits>
+ , constant_time_size<value_type::constant_time_size>
+ >::type set_type;
+ {
+ set_type testset;
+ testset.insert(&values[0], &values[0] + values.size());
+ value_type v(1);
+ typename set_type::insert_commit_data data;
+ BOOST_TEST (!testset.insert_check(v, testset.value_comp(), data).second);
+ BOOST_TEST (!testset.insert_check(testset.begin(), v, testset.value_comp(), data).second);
+ }
+}
 
- testset.erase (i);
- { int init_values [] = { 1, 3, 5 };
- TEST_INTRUSIVE_SEQUENCE( init_values, testset.begin() ); }
-}
 
 //test: insert (seq-version), swap, erase (seq-version), size:
 template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>

Modified: trunk/libs/intrusive/test/itestvalue.hpp
==============================================================================
--- trunk/libs/intrusive/test/itestvalue.hpp (original)
+++ trunk/libs/intrusive/test/itestvalue.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -115,12 +115,13 @@
 }
 
 template<class Hooks, bool ConstantTimeSize>
-bool priority_order(const testvalue<Hooks, ConstantTimeSize> &t1, const testvalue<Hooks, ConstantTimeSize> &t2)
+bool priority_order( const testvalue<Hooks, ConstantTimeSize> &t1
+ , const testvalue<Hooks, ConstantTimeSize> &t2)
 {
    std::size_t hash1 = hash_value(t1);
- boost::hash_combine(hash1,&t1);
+ boost::hash_combine(hash1, &t1);
    std::size_t hash2 = hash_value(t2);
- boost::hash_combine(hash2,&t2);
+ boost::hash_combine(hash2, &t2);
    return hash1 < hash2;
 }
 
@@ -150,6 +151,31 @@
       (const testvalue<Hooks, constant_time_size>& v1) const
    { return (v1.value_ & 1) == 0; }
 };
+/*
+struct int_testvalue_comp
+{
+ template<class Hooks, bool constant_time_size>
+ bool operator()
+ (const testvalue<Hooks, constant_time_size>& v1, const int &i) const
+ { return v1.value_ < i; }
+ template<class Hooks, bool constant_time_size>
+ bool operator()
+ (const int &i, const testvalue<Hooks, constant_time_size>& v1) const
+ { return i < v1.value_; }
+};
+
+struct int_testvalue_pcomp
+{
+ template<class Hooks, bool constant_time_size>
+ bool operator()
+ (const testvalue<Hooks, constant_time_size>& v1, const int &i) const
+ { return v1.value_ < i; }
+ template<class Hooks, bool constant_time_size>
+ bool operator()
+ (const int &i, const testvalue<Hooks, constant_time_size>& v1) const
+ { return i < v1.value_; }
+};
+*/
 
 } //namespace boost{
 } //namespace intrusive{

Modified: trunk/libs/intrusive/test/list_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/list_test.cpp (original)
+++ trunk/libs/intrusive/test/list_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/make_functions_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/make_functions_test.cpp (original)
+++ trunk/libs/intrusive/test/make_functions_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/multiset_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/multiset_test.cpp (original)
+++ trunk/libs/intrusive/test/multiset_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -16,6 +16,26 @@
 #include "smart_ptr.hpp"
 #include "generic_multiset_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::multiset<T,
+ #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+ O1, O2, O3, O4
+ #else
+ Options...
+ #endif
+> >
+{
+ static const bool value = true;
+};
+
+}}}
+
 using namespace boost::intrusive;
 
 struct my_tag;

Modified: trunk/libs/intrusive/test/set_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/set_test.cpp (original)
+++ trunk/libs/intrusive/test/set_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -11,11 +11,32 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 #include <boost/intrusive/detail/config_begin.hpp>
+
 #include <boost/intrusive/set.hpp>
 #include "itestvalue.hpp"
 #include "smart_ptr.hpp"
 #include "generic_set_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::set<T,
+ #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+ O1, O2, O3, O4
+ #else
+ Options...
+ #endif
+> >
+{
+ static const bool value = true;
+};
+
+}}}
+
 struct my_tag;
 
 using namespace boost::intrusive;
@@ -134,4 +155,5 @@
    test_main_template<boost::intrusive::smart_ptr<void>, true>()();
    return boost::report_errors();
 }
+
 #include <boost/intrusive/detail/config_end.hpp>

Modified: trunk/libs/intrusive/test/sg_multiset_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/sg_multiset_test.cpp (original)
+++ trunk/libs/intrusive/test/sg_multiset_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -34,6 +34,23 @@
    static const bool value = true;
 };
 
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::sg_multiset<T,
+ #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+ O1, O2, O3, O4
+ #else
+ Options...
+ #endif
+> >
+{
+ static const bool value = true;
+};
+
 }}}
 
 using namespace boost::intrusive;

Modified: trunk/libs/intrusive/test/sg_set_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/sg_set_test.cpp (original)
+++ trunk/libs/intrusive/test/sg_set_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -33,6 +33,22 @@
    static const bool value = true;
 };
 
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::sg_set<T,
+ #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+ O1, O2, O3, O4
+ #else
+ Options...
+ #endif
+> >
+{
+ static const bool value = true;
+};
+
 }}}
 
 

Modified: trunk/libs/intrusive/test/slist_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/slist_test.cpp (original)
+++ trunk/libs/intrusive/test/slist_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/splay_multiset_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/splay_multiset_test.cpp (original)
+++ trunk/libs/intrusive/test/splay_multiset_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/stateful_value_traits_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/stateful_value_traits_test.cpp (original)
+++ trunk/libs/intrusive/test/stateful_value_traits_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/test_container.hpp
==============================================================================
--- trunk/libs/intrusive/test/test_container.hpp (original)
+++ trunk/libs/intrusive/test/test_container.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -21,6 +21,12 @@
 namespace test {
 
 template<class T>
+struct is_unordered
+{
+ static const bool value = false;
+};
+
+template<class T>
 struct has_const_overloads
 {
    static const bool value = true;
@@ -78,6 +84,7 @@
    BOOST_TEST( c.size() == 0 );
    BOOST_TEST( c.empty() );
 
+
    {
    typename Data::iterator i = d.begin();
    c.insert( c.begin(), *i );
@@ -87,7 +94,8 @@
    BOOST_TEST( c.size() == 2 );
    BOOST_TEST( !c.empty() );
 
- c.erase( c.begin() );
+ typename Container::iterator i;
+ i = c.erase( c.begin() );
 
    BOOST_TEST( c.size() == 1 );
 
@@ -97,7 +105,8 @@
    c.insert( c.begin(), *(i) );
    }
 
- c.erase( c.begin(), c.end() );
+ i = c.erase( c.begin(), c.end() );
+ BOOST_TEST( i == c.end() );
 
    BOOST_TEST( c.empty() );
 
@@ -107,7 +116,8 @@
 
    BOOST_TEST( c.begin() != c.end() );
 
- c.erase( c.begin() );
+ i = c.erase_and_dispose( c.begin(), detail::null_disposer() );
+ BOOST_TEST( i == c.begin() );
 
    c.assign(d.begin(), d.end());
 
@@ -120,8 +130,89 @@
 }
 
 template< class Container, class Data >
+void test_common_unordered_and_associative_container(Container & c, Data & d, boost::intrusive::detail::true_ unordered)
+{
+ (void)unordered;
+ typedef typename Container::size_type size_type;
+
+ assert( d.size() > 2 );
+
+ c.clear();
+ c.insert(d.begin(), d.end());
+
+ for( typename Data::const_iterator di = d.begin(), de = d.end();
+ di != de; ++di )
+ {
+ BOOST_TEST( c.find(*di) != c.end() );
+ }
+
+ typename Data::const_iterator db = d.begin();
+ typename Data::const_iterator da = db++;
+
+ size_type old_size = c.size();
+
+ c.erase(*da, c.hash_function(), c.key_eq());
+ BOOST_TEST( c.size() == old_size-1 );
+ //This should not eras anyone
+ size_type second_erase = c.erase_and_dispose
+ ( *da, c.hash_function(), c.key_eq(), detail::null_disposer() );
+ BOOST_TEST( second_erase == 0 );
+
+ BOOST_TEST( c.count(*da, c.hash_function(), c.key_eq()) == 0 );
+ BOOST_TEST( c.count(*db, c.hash_function(), c.key_eq()) != 0 );
+
+ BOOST_TEST( c.find(*da, c.hash_function(), c.key_eq()) == c.end() );
+ BOOST_TEST( c.find(*db, c.hash_function(), c.key_eq()) != c.end() );
+
+ BOOST_TEST( c.equal_range(*db, c.hash_function(), c.key_eq()).first != c.end() );
+
+ c.clear();
+
+ BOOST_TEST( c.equal_range(*da, c.hash_function(), c.key_eq()).first == c.end() );
+}
+
+template< class Container, class Data >
+void test_common_unordered_and_associative_container(Container & c, Data & d, boost::intrusive::detail::false_ unordered)
+{
+ (void)unordered;
+ typedef typename Container::size_type size_type;
+
+ assert( d.size() > 2 );
+
+ c.clear();
+ c.insert(d.begin(), d.end());
+
+ for( typename Data::const_iterator di = d.begin(), de = d.end();
+ di != de; ++di )
+ {
+ BOOST_TEST( c.find(*di, c.key_comp()) != c.end() );
+ }
+
+ typename Data::const_iterator db = d.begin();
+ typename Data::const_iterator da = db++;
+
+ size_type old_size = c.size();
+
+ c.erase(*da, c.key_comp());
+ BOOST_TEST( c.size() == old_size-1 );
+ //This should not eras anyone
+ size_type second_erase = c.erase_and_dispose( *da, c.key_comp(), detail::null_disposer() );
+ BOOST_TEST( second_erase == 0 );
+
+ BOOST_TEST( c.count(*da, c.key_comp()) == 0 );
+ BOOST_TEST( c.count(*db, c.key_comp()) != 0 );
+ BOOST_TEST( c.find(*da, c.key_comp()) == c.end() );
+ BOOST_TEST( c.find(*db, c.key_comp()) != c.end() );
+ BOOST_TEST( c.equal_range(*db, c.key_comp()).first != c.end() );
+ c.clear();
+ BOOST_TEST( c.equal_range(*da, c.key_comp()).first == c.end() );
+}
+
+
+template< class Container, class Data >
 void test_common_unordered_and_associative_container(Container & c, Data & d)
 {
+ {
    typedef typename Container::size_type size_type;
 
    assert( d.size() > 2 );
@@ -141,8 +232,10 @@
    size_type old_size = c.size();
 
    c.erase(*da);
-
    BOOST_TEST( c.size() == old_size-1 );
+ //This should not eras anyone
+ size_type second_erase = c.erase_and_dispose( *da, detail::null_disposer() );
+ BOOST_TEST( second_erase == 0 );
 
    BOOST_TEST( c.count(*da) == 0 );
    BOOST_TEST( c.count(*db) != 0 );
@@ -155,6 +248,9 @@
    c.clear();
 
    BOOST_TEST( c.equal_range(*da).first == c.end() );
+ }
+ typedef detail::bool_<is_unordered<Container>::value> enabler;
+ test_common_unordered_and_associative_container(c, d, enabler());
 }
 
 template< class Container, class Data >

Modified: trunk/libs/intrusive/test/test_macros.hpp
==============================================================================
--- trunk/libs/intrusive/test/test_macros.hpp (original)
+++ trunk/libs/intrusive/test/test_macros.hpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008
+// (C) Copyright Ion Gaztanaga 2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: trunk/libs/intrusive/test/treap_multiset_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/treap_multiset_test.cpp (original)
+++ trunk/libs/intrusive/test/treap_multiset_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -17,6 +17,26 @@
 #include "smart_ptr.hpp"
 #include "generic_multiset_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::treap_multiset<T,
+ #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+ O1, O2, O3, O4
+ #else
+ Options...
+ #endif
+> >
+{
+ static const bool value = true;
+};
+
+}}}
+
 using namespace boost::intrusive;
 
 struct my_tag;

Modified: trunk/libs/intrusive/test/treap_set_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/treap_set_test.cpp (original)
+++ trunk/libs/intrusive/test/treap_set_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -15,6 +15,43 @@
 #include "smart_ptr.hpp"
 #include "generic_set_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::treap_set<T,
+ #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+ O1, O2, O3, O4
+ #else
+ Options...
+ #endif
+> >
+{
+ static const bool value = true;
+};
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct is_treap<boost::intrusive::treap_set<T,
+ #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+ O1, O2, O3, O4
+ #else
+ Options...
+ #endif
+> >
+{
+ static const bool value = true;
+};
+
+}}}
+
+
 using namespace boost::intrusive;
 
 struct my_tag;

Modified: trunk/libs/intrusive/test/unordered_multiset_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/unordered_multiset_test.cpp (original)
+++ trunk/libs/intrusive/test/unordered_multiset_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -23,6 +23,26 @@
 #include "test_macros.hpp"
 #include "test_container.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4, class O5, class O6>
+#else
+template<class T, class ...Options>
+#endif
+struct is_unordered<boost::intrusive::unordered_multiset<T,
+ #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+ O1, O2, O3, O4, O5, O6
+ #else
+ Options...
+ #endif
+> >
+{
+ static const bool value = true;
+};
+
+}}}
+
 using namespace boost::intrusive;
 
 struct my_tag;

Modified: trunk/libs/intrusive/test/unordered_set_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/unordered_set_test.cpp (original)
+++ trunk/libs/intrusive/test/unordered_set_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -22,6 +22,26 @@
 #include "test_macros.hpp"
 #include "test_container.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4, class O5, class O6>
+#else
+template<class T, class ...Options>
+#endif
+struct is_unordered<boost::intrusive::unordered_set<T,
+ #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+ O1, O2, O3, O4, O5, O6
+ #else
+ Options...
+ #endif
+> >
+{
+ static const bool value = true;
+};
+
+}}}
+
 using namespace boost::intrusive;
 
 struct my_tag;

Modified: trunk/libs/intrusive/test/virtual_base_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/virtual_base_test.cpp (original)
+++ trunk/libs/intrusive/test/virtual_base_test.cpp 2009-10-14 09:08:04 EDT (Wed, 14 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk