Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r73278 - in branches/release/libs: interprocess interprocess/doc interprocess/example interprocess/proj interprocess/proj/vc7ide interprocess/test intrusive intrusive/doc intrusive/example intrusive/proj/vc7ide intrusive/proj/vc7ide/_intrusivelib intrusive/test
From: igaztanaga_at_[hidden]
Date: 2011-07-21 13:43:01


Author: igaztanaga
Date: 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
New Revision: 73278
URL: http://svn.boost.org/trac/boost/changeset/73278

Log:
Merged missed changes for 1.47 release
Added:
   branches/release/libs/interprocess/proj/vc7ide/pair_test.vcproj
      - copied unchanged from r73277, /trunk/libs/interprocess/proj/vc7ide/pair_test.vcproj
   branches/release/libs/interprocess/test/pair_test.cpp
      - copied unchanged from r73277, /trunk/libs/interprocess/test/pair_test.cpp
Properties modified:
   branches/release/libs/interprocess/ (props changed)
   branches/release/libs/intrusive/ (props changed)
Text files modified:
   branches/release/libs/interprocess/doc/Jamfile.v2 | 8
   branches/release/libs/interprocess/doc/interprocess.qbk | 60 ++++++++--
   branches/release/libs/interprocess/example/Jamfile.v2 | 6
   branches/release/libs/interprocess/example/comp_doc_message_queueB.cpp | 2
   branches/release/libs/interprocess/example/doc_ipc_message.cpp | 2
   branches/release/libs/interprocess/example/doc_managed_allocation_command.cpp | 13 +-
   branches/release/libs/interprocess/example/doc_managed_copy_on_write.cpp | 2
   branches/release/libs/interprocess/example/doc_managed_heap_memory.cpp | 4
   branches/release/libs/interprocess/example/doc_managed_mapped_file.cpp | 4
   branches/release/libs/interprocess/example/doc_managed_multiple_allocation.cpp | 2
   branches/release/libs/interprocess/example/doc_named_alloc.cpp | 2
   branches/release/libs/interprocess/proj/to-do.txt | 2
   branches/release/libs/interprocess/proj/vc7ide/Interprocess.sln | 8 +
   branches/release/libs/interprocess/proj/vc7ide/interprocesslib.vcproj | 215 +++++++++++++++++++++++++++++++++++++--
   branches/release/libs/interprocess/test/Jamfile.v2 | 2
   branches/release/libs/interprocess/test/allocator_v1.hpp | 4
   branches/release/libs/interprocess/test/deque_test.cpp | 10
   branches/release/libs/interprocess/test/emplace_test.hpp | 38 +++---
   branches/release/libs/interprocess/test/flat_tree_test.cpp | 1
   branches/release/libs/interprocess/test/heap_allocator_v1.hpp | 4
   branches/release/libs/interprocess/test/list_test.hpp | 8
   branches/release/libs/interprocess/test/managed_mapped_file_test.cpp | 4
   branches/release/libs/interprocess/test/managed_shared_memory_test.cpp | 4
   branches/release/libs/interprocess/test/map_test.hpp | 28 ++--
   branches/release/libs/interprocess/test/memory_algorithm_test.cpp | 4
   branches/release/libs/interprocess/test/memory_algorithm_test_template.hpp | 56 +++++-----
   branches/release/libs/interprocess/test/message_queue_test.cpp | 19 +-
   branches/release/libs/interprocess/test/movable_int.hpp | 54 ++++++++-
   branches/release/libs/interprocess/test/named_allocation_test_template.hpp | 2
   branches/release/libs/interprocess/test/named_construct_test.cpp | 6
   branches/release/libs/interprocess/test/node_pool_test.hpp | 4
   branches/release/libs/interprocess/test/set_test.hpp | 36 +++---
   branches/release/libs/interprocess/test/shared_ptr_test.cpp | 2
   branches/release/libs/interprocess/test/string_test.cpp | 2
   branches/release/libs/interprocess/test/user_buffer_test.cpp | 9
   branches/release/libs/interprocess/test/vector_test.hpp | 12 +-
   branches/release/libs/intrusive/doc/intrusive.qbk | 17 +++
   branches/release/libs/intrusive/example/doc_offset_ptr.cpp | 10 +
   branches/release/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj | 20 +-
   branches/release/libs/intrusive/proj/vc7ide/to-do.txt | 12 ++
   branches/release/libs/intrusive/test/test_container.hpp | 150 ++++++++++++++++-----------
   41 files changed, 596 insertions(+), 252 deletions(-)

Modified: branches/release/libs/interprocess/doc/Jamfile.v2
==============================================================================
--- branches/release/libs/interprocess/doc/Jamfile.v2 (original)
+++ branches/release/libs/interprocess/doc/Jamfile.v2 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -30,10 +30,10 @@
         <doxygen:param>MACRO_EXPANSION=YES
         <doxygen:param>"PREDEFINED=\"BOOST_INTERPROCESS_DOXYGEN_INVOKED\" \\
                                    \"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,b,c,d)=a &&\" \\
- \"BOOST_INTERPROCESS_FWD_REF(a)=a &&\""
+ \"BOOST_RV_REF(a)=a &&\" \\
+ \"BOOST_RV_REF_2_TEMPL_ARGS(a,b,c)=a &&\" \\
+ \"BOOST_RV_REF_3_TEMPL_ARGS(a,b,c,d)=a &&\" \\
+ \"BOOST_FWD_REF(a)=a &&\""
         <xsl:param>"boost.doxygen.reftitle=Boost.Interprocess Reference"
    ;
 

Modified: branches/release/libs/interprocess/doc/interprocess.qbk
==============================================================================
--- branches/release/libs/interprocess/doc/interprocess.qbk (original)
+++ branches/release/libs/interprocess/doc/interprocess.qbk 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -691,9 +691,6 @@
 [import ../example/doc_xsi_shared_memory.cpp]
 [doc_xsi_shared_memory]
 
-As we can see, native windows shared memory needs synchronization to make sure
-that the shared memory won't be destroyed before the client is launched.
-
 [endsect]
 
 [endsect]
@@ -2780,8 +2777,8 @@
 
 [section:file_lock_careful_iostream Be Careful With Iostream Writing]
 
-As we've seen file locking can be useful to synchronize two processes
-reading and writing to a file, but [*make sure data is written to the file]
+As we've seen file locking can be useful to synchronize two processes,
+but [*make sure data is written to the file]
 before unlocking the file lock. Take in care that iostream classes do some
 kind of buffering, so if you want to make sure that other processes can
 see the data you've written, you have the following alternatives:
@@ -2790,7 +2787,8 @@
    in Windows systems) instead of iostream.
 
 * Flush data before unlocking the file lock in writers using `fflush` if you are using
- standard C functions or the `flush()` member function when using C++ iostreams.
+ standard C functions or the `flush()` member function when using C++ iostreams. In windows
+ you can't even use another class to access the same file.
 
    //...
 
@@ -2799,7 +2797,7 @@
    // ...
    //Open the file lock
    fstream file("my_file")
- file_lock f_lock("my_file");
+ file_lock f_lock("my_lock_file");
 
    {
       scoped_lock<file_lock> e_lock(f_lock);
@@ -3153,8 +3151,8 @@
 [c++]
 
    //1. If the segment was previously created
- // equivalent to "open_only".
- //2. Otherwise, equivalent to "open_only" (size is ignored)
+ // equivalent to "open_only" (size is ignored).
+ //2. Otherwise, equivalent to "create_only"
    //!! If anything fails, throws interprocess_exception
    //
    managed_shared_memory segment ( open_or_create
@@ -3200,7 +3198,7 @@
 
 To communicate between system services and user applications using `managed_windows_shared_memory`,
 please read the explanations given in chapter
-[interprocess.sharedmemorybetweenprocesses.sharedmemory.windows_shared_memory Native windows shared memory]
+[link interprocess.sharedmemorybetweenprocesses.sharedmemory.windows_shared_memory Native windows shared memory].
 
 [endsect]
 
@@ -3222,8 +3220,8 @@
 
 [endsect]
 
-For more information about managed shared memory capabilities, see
-[classref boost::interprocess::basic_managed_shared_memory basic_managed_shared_memory] class reference.
+For more information about managed XSI shared memory capabilities, see
+[classref boost::interprocess::basic_managed_xsi_shared_memory basic_managed_xsi_shared_memory] class reference.
 
 [endsect]
 
@@ -6604,6 +6602,44 @@
 
 [section:release_notes Release Notes]
 
+[section:release_notes_boost_1_47_00 Boost 1.47 Release]
+
+* Fixed bugs
+ [@https://svn.boost.org/trac/boost/ticket/2796 #2796],
+ [@https://svn.boost.org/trac/boost/ticket/4031 #4031],
+ [@https://svn.boost.org/trac/boost/ticket/4251 #4251],
+ [@https://svn.boost.org/trac/boost/ticket/4452 #4452],
+ [@https://svn.boost.org/trac/boost/ticket/4895 #4895],
+ [@https://svn.boost.org/trac/boost/ticket/5077 #5077],
+ [@https://svn.boost.org/trac/boost/ticket/5120 #5120],
+ [@https://svn.boost.org/trac/boost/ticket/5123 #5123],
+ [@https://svn.boost.org/trac/boost/ticket/5230 #5230],
+ [@https://svn.boost.org/trac/boost/ticket/5197 #5197],
+ [@https://svn.boost.org/trac/boost/ticket/5287 #5287],
+ [@https://svn.boost.org/trac/boost/ticket/5294 #5294],
+ [@https://svn.boost.org/trac/boost/ticket/5306 #5306],
+ [@https://svn.boost.org/trac/boost/ticket/5308 #5308],
+ [@https://svn.boost.org/trac/boost/ticket/5392 #5392],
+ [@https://svn.boost.org/trac/boost/ticket/5409 #5409],
+
+* Added support to customize offset_ptr and allow
+ creating custom managed segments that might be shared between
+ 32 and 64 bit processes.
+
+* Shared memory in windows has again filesystem lifetime: kernel bootstamp
+ and WMI use to get a reliable timestamp was causing a lot of trouble.
+
+[endsect]
+
+[section:release_notes_boost_1_46_00 Boost 1.46 Release]
+
+* Fixed bugs
+ [@https://svn.boost.org/trac/boost/ticket/4979 #4979],
+ [@https://svn.boost.org/trac/boost/ticket/4907 #4907],
+ [@https://svn.boost.org/trac/boost/ticket/4895 #4895]
+
+[endsect]
+
 [section:release_notes_boost_1_45_00 Boost 1.45 Release]
 
 * Fixed bugs

Modified: branches/release/libs/interprocess/example/Jamfile.v2
==============================================================================
--- branches/release/libs/interprocess/example/Jamfile.v2 (original)
+++ branches/release/libs/interprocess/example/Jamfile.v2 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -25,7 +25,7 @@
       : # additional args
         <toolset>acc:<linkflags>-lrt
         <toolset>acc-pa_risc:<linkflags>-lrt
- <toolset>gcc-mingw:<linkflags>"-lole32 -loleaut32"
+ <toolset>gcc-mingw:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
         <host-os>hpux,<toolset>gcc:<linkflags>"-Wl,+as,mpas"
       : # test-files
       : # requirements
@@ -40,7 +40,7 @@
       : # requirements
         <toolset>acc:<linkflags>-lrt
         <toolset>acc-pa_risc:<linkflags>-lrt
- <toolset>gcc-mingw:<linkflags>"-lole32 -loleaut32"
+ <toolset>gcc-mingw:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
         <host-os>hpux,<toolset>gcc:<linkflags>"-Wl,+as,mpas"
       ] ;
    }
@@ -48,4 +48,4 @@
    return $(all_rules) ;
 }
 
-test-suite interprocess_example : [ test_all r ] : <threading>multi ;
\ No newline at end of file
+test-suite interprocess_example : [ test_all r ] : <threading>multi ;

Modified: branches/release/libs/interprocess/example/comp_doc_message_queueB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/comp_doc_message_queueB.cpp (original)
+++ branches/release/libs/interprocess/example/comp_doc_message_queueB.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -25,7 +25,7 @@
          );
 
       unsigned int priority;
- std::size_t recvd_size;
+ message_queue::size_type recvd_size;
 
       //Receive 100 numbers
       for(int i = 0; i < 100; ++i){

Modified: branches/release/libs/interprocess/example/doc_ipc_message.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_ipc_message.cpp (original)
+++ branches/release/libs/interprocess/example/doc_ipc_message.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -49,7 +49,7 @@
       //->
 
       //Allocate a portion of the segment (raw memory)
- std::size_t free_memory = segment.get_free_memory();
+ managed_shared_memory::size_type free_memory = segment.get_free_memory();
       void * shptr = segment.allocate(1024/*bytes to allocate*/);
 
       //Check invariant

Modified: branches/release/libs/interprocess/example/doc_managed_allocation_command.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_allocation_command.cpp (original)
+++ branches/release/libs/interprocess/example/doc_managed_allocation_command.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -48,7 +48,8 @@
    //->
 
    //Allocate at least 100 bytes, 1000 bytes if possible
- std::size_t received_size, min_size = 100, preferred_size = 1000;
+ managed_shared_memory::size_type min_size = 100, preferred_size = 1000;
+ managed_shared_memory::size_type received_size;
    std::size_t *ptr = managed_shm.allocation_command<std::size_t>
       (boost::interprocess::allocate_new, min_size, preferred_size, received_size).first;
 
@@ -56,7 +57,7 @@
    assert(received_size >= min_size);
 
    //Get free memory
- std::size_t free_memory_after_allocation = managed_shm.get_free_memory();
+ managed_shared_memory::size_type free_memory_after_allocation = managed_shm.get_free_memory();
 
    //Now write the data
    for(std::size_t i = 0; i < received_size; ++i) ptr[i] = i;
@@ -65,7 +66,7 @@
    //lower to the double of the original buffer.
    //This "should" be successful since no other class is allocating
    //memory from the segment
- std::size_t expanded_size;
+ managed_shared_memory::size_type expanded_size;
    std::pair<std::size_t *, bool> ret = managed_shm.allocation_command
       (boost::interprocess::expand_fwd, received_size*2, received_size*3, expanded_size, ptr);
 
@@ -75,7 +76,7 @@
    assert(expanded_size >= received_size*2);
 
    //Get free memory and compare
- std::size_t free_memory_after_expansion = managed_shm.get_free_memory();
+ managed_shared_memory::size_type free_memory_after_expansion = managed_shm.get_free_memory();
    assert(free_memory_after_expansion < free_memory_after_allocation);
 
    //Write new values
@@ -85,7 +86,7 @@
    //should be smaller than min_size*2.
    //This "should" be successful since no other class is allocating
    //memory from the segment
- std::size_t shrunk_size;
+ managed_shared_memory::size_type shrunk_size;
    ret = managed_shm.allocation_command
       (boost::interprocess::shrink_in_place, min_size*2, min_size, shrunk_size, ptr);
 
@@ -96,7 +97,7 @@
    assert(shrunk_size >= min_size);
 
    //Get free memory and compare
- std::size_t free_memory_after_shrinking = managed_shm.get_free_memory();
+ managed_shared_memory::size_type free_memory_after_shrinking = managed_shm.get_free_memory();
    assert(free_memory_after_shrinking > free_memory_after_expansion);
 
    //Deallocate the buffer

Modified: branches/release/libs/interprocess/example/doc_managed_copy_on_write.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_copy_on_write.cpp (original)
+++ branches/release/libs/interprocess/example/doc_managed_copy_on_write.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -70,7 +70,7 @@
          std::fstream file(ManagedFile2, std::ios_base::out | std::ios_base::binary);
          if(!file)
             throw int(0);
- file.write(static_cast<const char *>(managed_file_cow.get_address()), managed_file_cow.get_size());
+ file.write(static_cast<const char *>(managed_file_cow.get_address()), (std::streamsize)managed_file_cow.get_size());
       }
 
       //Now open the modified file and test changes

Modified: branches/release/libs/interprocess/example/doc_managed_heap_memory.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_heap_memory.cpp (original)
+++ branches/release/libs/interprocess/example/doc_managed_heap_memory.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -40,7 +40,7 @@
       //memory is full
    }
    //Let's obtain the size of the list
- std::size_t old_size = mylist->size();
+ MyList::size_type old_size = mylist->size();
 
    //To make the list bigger, let's increase the heap buffer
    //in 1000 bytes more.
@@ -62,7 +62,7 @@
    }
 
    //Let's obtain the new size of the list
- std::size_t new_size = mylist->size();
+ MyList::size_type new_size = mylist->size();
 
    assert(new_size > old_size);
 

Modified: branches/release/libs/interprocess/example/doc_managed_mapped_file.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_mapped_file.cpp (original)
+++ branches/release/libs/interprocess/example/doc_managed_mapped_file.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -43,7 +43,7 @@
    file_mapping::remove(FileName);
 
    try{
- std::size_t old_size = 0;
+ MyList::size_type old_size = 0;
       managed_mapped_file::handle_t list_handle;
       {
          managed_mapped_file mfile_memory(create_only, FileName, FileSize);
@@ -89,7 +89,7 @@
          }
 
          //Let's obtain the new size of the list
- std::size_t new_size = mylist->size();
+ MyList::size_type new_size = mylist->size();
 
          assert(new_size > old_size);
 

Modified: branches/release/libs/interprocess/example/doc_managed_multiple_allocation.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_multiple_allocation.cpp (original)
+++ branches/release/libs/interprocess/example/doc_managed_multiple_allocation.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -76,7 +76,7 @@
    }
 
    //Allocate 10 buffers of different sizes in a single call. Throwing version
- std::size_t sizes[10];
+ managed_shared_memory::size_type sizes[10];
    for(std::size_t i = 0; i < 10; ++i)
       sizes[i] = i*3;
 

Modified: branches/release/libs/interprocess/example/doc_named_alloc.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_named_alloc.cpp (original)
+++ branches/release/libs/interprocess/example/doc_named_alloc.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -106,7 +106,7 @@
       #endif
       //->
 
- std::pair<MyType*, std::size_t> res;
+ std::pair<MyType*, managed_shared_memory::size_type> res;
 
       //Find the array
       res = segment.find<MyType> ("MyType array");

Modified: branches/release/libs/interprocess/proj/to-do.txt
==============================================================================
--- branches/release/libs/interprocess/proj/to-do.txt (original)
+++ branches/release/libs/interprocess/proj/to-do.txt 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -97,7 +97,7 @@
 
 -> operator >> and similar need moved_value
 
--> rvalue reference enabled compilers are not optimized with is_movable and move_iterator
+-> rvalue reference enabled compilers are not optimized with has_move_emulation_enabled and move_iterator
 
 -> Add allocator test template that test all new functions (allocate_many, etc.)
 

Modified: branches/release/libs/interprocess/proj/vc7ide/Interprocess.sln
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/Interprocess.sln (original)
+++ branches/release/libs/interprocess/proj/vc7ide/Interprocess.sln 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -395,6 +395,10 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pair_test", "pair_test.vcproj", "{58CA17C5-A74F-9602-48FE-B06310DA7FA6}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
 Global
         GlobalSection(SolutionConfiguration) = preSolution
                 Debug = Debug
@@ -799,6 +803,10 @@
                 {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Debug.Build.0 = Debug|Win32
                 {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Release.ActiveCfg = Release|Win32
                 {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Release.Build.0 = Release|Win32
+ {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Debug.ActiveCfg = Debug|Win32
+ {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Debug.Build.0 = Debug|Win32
+ {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Release.ActiveCfg = Release|Win32
+ {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Release.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(ExtensibilityGlobals) = postSolution
         EndGlobalSection

Modified: branches/release/libs/interprocess/proj/vc7ide/interprocesslib.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/interprocesslib.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/interprocesslib.vcproj 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -99,6 +99,9 @@
                         Name="Containers"
                         Filter="">
                         <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\allocation_type.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\boost\interprocess\containers\containers_fwd.hpp">
                         </File>
                         <File
@@ -117,6 +120,9 @@
                                 RelativePath="..\..\..\..\boost\interprocess\containers\map.hpp">
                         </File>
                         <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\pair.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\boost\interprocess\containers\set.hpp">
                         </File>
                         <File
@@ -131,6 +137,128 @@
                         <File
                                 RelativePath="..\..\..\..\boost\interprocess\containers\vector.hpp">
                         </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\version_type.hpp">
+ </File>
+ <Filter
+ Name="container"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\container_fwd.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\deque.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\flat_map.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\flat_set.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\list.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\map.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\set.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\slist.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\stable_vector.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\string.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\vector.hpp">
+ </File>
+ <Filter
+ Name="detail"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\adaptive_node_pool_impl.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\advanced_insert_int.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\algorithms.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\allocation_type.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\config_begin.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\config_end.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\destroyers.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\flat_tree.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\iterators.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\math_functions.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\mpl.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\multiallocation_chain.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\node_alloc_holder.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\node_pool_impl.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\pair.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\pool_common.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\preprocessor.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\stored_ref.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\transform_iterator.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\tree.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\type_traits.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\utilities.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\value_init.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\variadic_templates_tools.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\version_type.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\container\detail\workaround.hpp">
+ </File>
+ </Filter>
+ </Filter>
                 </Filter>
                 <Filter
                         Name="Allocators"
@@ -283,6 +411,19 @@
                                         RelativePath="..\..\..\..\boost\interprocess\sync\emulation\semaphore.hpp">
                                 </File>
                         </Filter>
+ <Filter
+ Name="xsi"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\xsi\advanced_xsi_semaphore.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\xsi\simple_xsi_semaphore.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\xsi\xsi_named_mutex.hpp">
+ </File>
+ </Filter>
                 </Filter>
                 <Filter
                         Name="Memory algorithms"
@@ -502,17 +643,6 @@
                         </File>
                 </Filter>
                 <Filter
- Name="Jamfiles"
- Filter="">
- <Filter
- Name="Test"
- Filter="">
- <File
- RelativePath="..\..\test\Jamfile.v2">
- </File>
- </Filter>
- </Filter>
- <Filter
                         Name="Streams"
                         Filter="">
                         <File
@@ -553,6 +683,9 @@
                                 RelativePath="..\..\test\get_process_id_name.hpp">
                         </File>
                         <File
+ RelativePath="..\..\test\Jamfile.v2">
+ </File>
+ <File
                                 RelativePath="..\..\test\list_test.hpp">
                         </File>
                         <File
@@ -621,6 +754,36 @@
                         Name="Example"
                         Filter="">
                         <File
+ RelativePath="..\..\example\comp_doc_anonymous_conditionA.cpp">
+ </File>
+ <File
+ RelativePath="..\..\example\comp_doc_anonymous_conditionB.cpp">
+ </File>
+ <File
+ RelativePath="..\..\example\comp_doc_anonymous_mutexA.cpp">
+ </File>
+ <File
+ RelativePath="..\..\example\comp_doc_anonymous_mutexB.cpp">
+ </File>
+ <File
+ RelativePath="..\..\example\comp_doc_anonymous_semaphoreA.cpp">
+ </File>
+ <File
+ RelativePath="..\..\example\comp_doc_anonymous_semaphoreB.cpp">
+ </File>
+ <File
+ RelativePath="..\..\example\comp_doc_anonymous_upgradable_mutexA.cpp">
+ </File>
+ <File
+ RelativePath="..\..\example\comp_doc_anonymous_upgradable_mutexB.cpp">
+ </File>
+ <File
+ RelativePath="..\..\example\comp_doc_message_queueA.cpp">
+ </File>
+ <File
+ RelativePath="..\..\example\comp_doc_message_queueB.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\example\doc_adaptive_pool.cpp">
                                 <FileConfiguration
                                         Name="Debug|Win32"
@@ -720,6 +883,9 @@
                                 </FileConfiguration>
                         </File>
                         <File
+ RelativePath="..\..\example\doc_anonymous_shared_memory.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\example\doc_anonymous_upgradable_mutexA.cpp">
                                 <FileConfiguration
                                         Name="Debug|Win32"
@@ -765,6 +931,9 @@
                                 </FileConfiguration>
                         </File>
                         <File
+ RelativePath="..\..\example\doc_complex_map.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\example\doc_cont.cpp">
                                 <FileConfiguration
                                         Name="Debug|Win32"
@@ -819,6 +988,9 @@
                                 </FileConfiguration>
                         </File>
                         <File
+ RelativePath="..\..\example\doc_ipc_message.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\example\doc_ipc_messageA.cpp">
                                 <FileConfiguration
                                         Name="Debug|Win32"
@@ -864,6 +1036,9 @@
                                 </FileConfiguration>
                         </File>
                         <File
+ RelativePath="..\..\example\doc_managed_copy_on_write.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\example\doc_managed_external_buffer.cpp">
                                 <FileConfiguration
                                         Name="Debug|Win32"
@@ -873,6 +1048,9 @@
                                 </FileConfiguration>
                         </File>
                         <File
+ RelativePath="..\..\example\doc_managed_grow.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\example\doc_managed_heap_memory.cpp">
                                 <FileConfiguration
                                         Name="Debug|Win32"
@@ -945,6 +1123,12 @@
                                 </FileConfiguration>
                         </File>
                         <File
+ RelativePath="..\..\example\doc_multi_index.cpp">
+ </File>
+ <File
+ RelativePath="..\..\example\doc_named_alloc.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\example\doc_named_allocA.cpp">
                                 <FileConfiguration
                                         Name="Debug|Win32"
@@ -1062,6 +1246,9 @@
                                 </FileConfiguration>
                         </File>
                         <File
+ RelativePath="..\..\example\doc_spawn_vector.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\example\doc_unique_ptr.cpp">
                                 <FileConfiguration
                                         Name="Debug|Win32"
@@ -1071,6 +1258,9 @@
                                 </FileConfiguration>
                         </File>
                         <File
+ RelativePath="..\..\example\doc_unordered_map.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\example\doc_upgradable_mutex_shared_data.hpp">
                                 <FileConfiguration
                                         Name="Debug|Win32"
@@ -1116,6 +1306,9 @@
                                 </FileConfiguration>
                         </File>
                         <File
+ RelativePath="..\..\example\doc_xsi_shared_memory.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\example\Jamfile.v2">
                                 <FileConfiguration
                                         Name="Debug|Win32"

Modified: branches/release/libs/interprocess/test/Jamfile.v2
==============================================================================
--- branches/release/libs/interprocess/test/Jamfile.v2 (original)
+++ branches/release/libs/interprocess/test/Jamfile.v2 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -27,7 +27,7 @@
       : # requirements
         <toolset>acc:<linkflags>-lrt
         <toolset>acc-pa_risc:<linkflags>-lrt
- <toolset>gcc-mingw:<linkflags>"-lole32 -loleaut32"
+ <toolset>gcc-mingw:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
         <host-os>hpux,<toolset>gcc:<linkflags>"-Wl,+as,mpas"
       ] ;
    }

Modified: branches/release/libs/interprocess/test/allocator_v1.hpp
==============================================================================
--- branches/release/libs/interprocess/test/allocator_v1.hpp (original)
+++ branches/release/libs/interprocess/test/allocator_v1.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -74,8 +74,8 @@
                      <value_type>::type reference;
    typedef typename detail::add_reference
                      <const value_type>::type const_reference;
- typedef std::size_t size_type;
- typedef std::ptrdiff_t difference_type;
+ typedef typename segment_manager::size_type size_type;
+ typedef typename segment_manager::difference_type difference_type;
 
    //!Obtains an allocator_v1 of other type
    template<class T2>

Modified: branches/release/libs/interprocess/test/deque_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/deque_test.cpp (original)
+++ branches/release/libs/interprocess/test/deque_test.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -227,8 +227,8 @@
             }
 
             shmdeque->insert(shmdeque->end()
- ,::boost::interprocess::make_move_iterator(&aux_vect[0])
- ,::boost::interprocess::make_move_iterator(aux_vect + 50));
+ ,::boost::make_move_iterator(&aux_vect[0])
+ ,::boost::make_move_iterator(aux_vect + 50));
             stddeque->insert(stddeque->end(), aux_vect2, aux_vect2 + 50);
             if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
 
@@ -249,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::make_move_iterator(&aux_vect[0])
+ ,::boost::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_<!detail::is_same<IntType, test::movable_int>::value>())){
             return false;
          }
 

Modified: branches/release/libs/interprocess/test/emplace_test.hpp
==============================================================================
--- branches/release/libs/interprocess/test/emplace_test.hpp (original)
+++ branches/release/libs/interprocess/test/emplace_test.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -11,6 +11,7 @@
 #define BOOST_INTERPROCESS_TEST_EMPLACE_TEST_HPP
 
 #include <iostream>
+#include <typeinfo>
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
 #include <boost/interprocess/detail/mpl.hpp>
@@ -25,19 +26,21 @@
 class EmplaceInt
 {
    private:
- BOOST_INTERPROCESS_MOVABLE_BUT_NOT_COPYABLE(EmplaceInt)
+ BOOST_MOVABLE_BUT_NOT_COPYABLE(EmplaceInt)
 
    public:
-
- EmplaceInt(int a = 0, int b = 0, int c = 0, int d = 0, int e = 0)
+ EmplaceInt()
+ : a_(0), b_(0), c_(0), d_(0), e_(0)
+ {}
+ EmplaceInt(int a, int b = 0, int c = 0, int d = 0, int e = 0)
       : a_(a), b_(b), c_(c), d_(d), e_(e)
    {}
 
- EmplaceInt(BOOST_INTERPROCESS_RV_REF(EmplaceInt) o)
+ EmplaceInt(BOOST_RV_REF(EmplaceInt) o)
       : a_(o.a_), b_(o.b_), c_(o.c_), d_(o.d_), e_(o.e_)
    {}
 
- EmplaceInt& operator=(BOOST_INTERPROCESS_RV_REF(EmplaceInt) o)
+ EmplaceInt& operator=(BOOST_RV_REF(EmplaceInt) o)
    {
       this->a_ = o.a_;
       this->b_ = o.b_;
@@ -479,13 +482,14 @@
    new(&expected_pair[1].second) EmplaceInt();
    new(&expected_pair[2].first) EmplaceInt(2);
    new(&expected_pair[2].second) EmplaceInt(2);
- new(&expected_pair[3].first) EmplaceInt(3);
- new(&expected_pair[3].second) EmplaceInt(2, 3);
- new(&expected_pair[4].first) EmplaceInt(4);
- new(&expected_pair[4].second) EmplaceInt(2, 3, 4);
- new(&expected_pair[5].first) EmplaceInt(5);
- new(&expected_pair[5].second) EmplaceInt(2, 3, 4, 5);
- {
+// new(&expected_pair[3].first) EmplaceInt(3);
+// new(&expected_pair[3].second) EmplaceInt(2, 3);
+// new(&expected_pair[4].first) EmplaceInt(4);
+// new(&expected_pair[4].second) EmplaceInt(2, 3, 4);
+// new(&expected_pair[5].first) EmplaceInt(5);
+// new(&expected_pair[5].second) EmplaceInt(2, 3, 4, 5);
+ { //piecewise construct missing
+ /*
       Container c;
       c.emplace();
       if(!test_expected_container(c, &expected_pair[0], 1)){
@@ -516,7 +520,7 @@
       if(!test_expected_container(c, &expected_pair[0], 6)){
          std::cout << "Error after c.emplace(5, 2, 3, 4, 5);\n";
          return false;
- }
+ }*/
    }
    return true;
 }
@@ -536,14 +540,14 @@
    new(&expected_pair[1].first) EmplaceInt(1);
    new(&expected_pair[1].second) EmplaceInt();
    new(&expected_pair[2].first) EmplaceInt(2);
- new(&expected_pair[2].second) EmplaceInt(2);
+ new(&expected_pair[2].second) EmplaceInt(2);/*
    new(&expected_pair[3].first) EmplaceInt(3);
    new(&expected_pair[3].second) EmplaceInt(2, 3);
    new(&expected_pair[4].first) EmplaceInt(4);
    new(&expected_pair[4].second) EmplaceInt(2, 3, 4);
    new(&expected_pair[5].first) EmplaceInt(5);
- new(&expected_pair[5].second) EmplaceInt(2, 3, 4, 5);
- {
+ new(&expected_pair[5].second) EmplaceInt(2, 3, 4, 5);*/
+ {/*
       Container c;
       typename Container::const_iterator it;
       it = c.emplace_hint(c.begin());
@@ -575,7 +579,7 @@
       if(!test_expected_container(c, &expected_pair[0], 6)){
          std::cout << "Error after c.emplace(it, 5, 2, 3, 4, 5);\n";
          return false;
- }
+ }*/
    }
    return true;
 }

Modified: branches/release/libs/interprocess/test/flat_tree_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/flat_tree_test.cpp (original)
+++ branches/release/libs/interprocess/test/flat_tree_test.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -123,6 +123,7 @@
                 ,std::less<test::movable_and_copyable_int>
                 ,shmem_move_copy_pair_allocator_t> MyMoveCopyShmMultiMap;
 
+
 //Test recursive structures
 class recursive_flat_set
 {

Modified: branches/release/libs/interprocess/test/heap_allocator_v1.hpp
==============================================================================
--- branches/release/libs/interprocess/test/heap_allocator_v1.hpp (original)
+++ branches/release/libs/interprocess/test/heap_allocator_v1.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -74,8 +74,8 @@
                      <value_type>::type reference;
    typedef typename detail::add_reference
                      <const value_type>::type const_reference;
- typedef std::size_t size_type;
- typedef std::ptrdiff_t difference_type;
+ typedef typename SegmentManager::size_type size_type;
+ typedef typename SegmentManager::difference_type difference_type;
 
    //!Obtains an heap_allocator_v1 of other type
    template<class T2>

Modified: branches/release/libs/interprocess/test/list_test.hpp
==============================================================================
--- branches/release/libs/interprocess/test/list_test.hpp (original)
+++ branches/release/libs/interprocess/test/list_test.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -145,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::make_move_iterator(&aux_vect[0])
+ ,::boost::make_move_iterator(&aux_vect[50]));
          stdlist->assign(&aux_vect2[0], &aux_vect2[50]);
          if(!CheckEqualContainers(shmlist, stdlist)) return 1;
       }
@@ -176,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::make_move_iterator(&aux_vect[0])
+ ,::boost::make_move_iterator(&aux_vect[50]));
          stdlist->insert(stdlist->begin(), &aux_vect2[0], &aux_vect2[50]);
       }
 

Modified: branches/release/libs/interprocess/test/managed_mapped_file_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/managed_mapped_file_test.cpp (original)
+++ branches/release/libs/interprocess/test/managed_mapped_file_test.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -136,7 +136,7 @@
          return -1;
    }
    {
- std::size_t old_free_memory;
+ managed_mapped_file::size_type old_free_memory;
       {
          //Map preexisting file again in memory
          managed_mapped_file mfile(open_only, FileName);
@@ -160,7 +160,7 @@
          return -1;
    }
    {
- std::size_t old_free_memory, next_free_memory,
+ managed_mapped_file::size_type old_free_memory, next_free_memory,
                   old_file_size, next_file_size, final_file_size;
       {
          //Map preexisting file again in memory

Modified: branches/release/libs/interprocess/test/managed_shared_memory_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/managed_shared_memory_test.cpp (original)
+++ branches/release/libs/interprocess/test/managed_shared_memory_test.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -124,7 +124,7 @@
    }
    #ifndef BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS_NO_GROW
    {
- std::size_t old_free_memory;
+ managed_shared_memory::size_type old_free_memory;
       {
          //Map preexisting shmem again in memory
          managed_shared_memory shmem(open_only, ShmemName);
@@ -148,7 +148,7 @@
          return -1;
    }
    {
- std::size_t old_free_memory, next_free_memory,
+ managed_shared_memory::size_type old_free_memory, next_free_memory,
                   old_shmem_size, next_shmem_size, final_shmem_size;
       {
          //Map preexisting shmem again in memory

Modified: branches/release/libs/interprocess/test/map_test.hpp
==============================================================================
--- branches/release/libs/interprocess/test/map_test.hpp (original)
+++ branches/release/libs/interprocess/test/map_test.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -94,16 +94,16 @@
 
          MyShmMap *shmmap2 =
             segment.template construct<MyShmMap>("MyShmMap2")
- ( ::boost::interprocess::make_move_iterator(&aux_vect[0])
- , ::boost::interprocess::make_move_iterator(aux_vect + 50)
+ ( ::boost::make_move_iterator(&aux_vect[0])
+ , ::boost::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::make_move_iterator(&aux_vect3[0])
+ , ::boost::make_move_iterator(aux_vect3 + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdMultiMap *stdmultimap2 = new MyStdMultiMap(aux_vect2, aux_vect2 + 50);
@@ -131,8 +131,8 @@
          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)
+ , ::boost::make_move_iterator(&aux_vect[0])
+ , ::boost::make_move_iterator(aux_vect + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdMap *stdmap3 = new MyStdMap(aux_vect2, aux_vect2 + 50);
@@ -140,8 +140,8 @@
          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)
+ , ::boost::make_move_iterator(&aux_vect3[0])
+ , ::boost::make_move_iterator(aux_vect3 + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdMultiMap *stdmultimap3 = new MyStdMultiMap(aux_vect2, aux_vect2 + 50);
@@ -240,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::make_move_iterator(&aux_vect[0]), ::boost::make_move_iterator(aux_vect + 50));
+ shmmultimap->insert(::boost::make_move_iterator(&aux_vect3[0]), ::boost::make_move_iterator(aux_vect3 + 50));
          for(std::size_t i = 0; i != 50; ++i){
             StdPairType stdpairtype(-1, -1);
             stdmap->insert(stdpairtype);
@@ -288,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::make_move_iterator(&aux_vect[0]), ::boost::make_move_iterator(aux_vect + 50));
+ shmmap->insert(::boost::make_move_iterator(&aux_vect3[0]), ::boost::make_move_iterator(aux_vect3 + 50));
+ shmmultimap->insert(::boost::make_move_iterator(&aux_vect4[0]), ::boost::make_move_iterator(aux_vect4 + 50));
+ shmmultimap->insert(::boost::make_move_iterator(&aux_vect5[0]), ::boost::make_move_iterator(aux_vect5 + 50));
 
          for(std::size_t i = 0; i != 50; ++i){
             StdPairType stdpairtype(-1, -1);

Modified: branches/release/libs/interprocess/test/memory_algorithm_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/memory_algorithm_test.cpp (original)
+++ branches/release/libs/interprocess/test/memory_algorithm_test.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -15,6 +15,7 @@
 #include <boost/interprocess/indexes/null_index.hpp>
 #include <boost/interprocess/sync/mutex_family.hpp>
 #include <boost/interprocess/detail/type_traits.hpp>
+#include <boost/type_traits/alignment_of.hpp>
 #include "memory_algorithm_test_template.hpp"
 #include <iostream>
 #include <string>
@@ -68,7 +69,8 @@
 
 int main ()
 {
- const std::size_t void_ptr_align = detail::alignment_of<void*>::value;
+ const std::size_t void_ptr_align = ::boost::alignment_of<offset_ptr<void> >::value;
+
    if(test_simple_seq_fit()){
       return 1;
    }

Modified: branches/release/libs/interprocess/test/memory_algorithm_test_template.hpp
==============================================================================
--- branches/release/libs/interprocess/test/memory_algorithm_test_template.hpp (original)
+++ branches/release/libs/interprocess/test/memory_algorithm_test_template.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -32,13 +32,13 @@
       ; t != EndDeallocationType
       ; t = (deallocation_type)((int)t + 1)){
       std::vector<void*> buffers;
- std::size_t free_memory = a.get_free_memory();
+ typename Allocator::size_type free_memory = a.get_free_memory();
 
       for(int i = 0; true; ++i){
          void *ptr = a.allocate(i, std::nothrow);
          if(!ptr)
             break;
- std::size_t size = a.size(ptr);
+ std::size_t size = a.size(ptr);
          std::memset(ptr, 0, size);
          buffers.push_back(ptr);
       }
@@ -96,7 +96,7 @@
       void *ptr = a.allocate(i*2, std::nothrow);
       if(!ptr)
          break;
- std::size_t size = a.size(ptr);
+ std::size_t size = a.size(ptr);
       std::memset(ptr, 0, size);
       buffers.push_back(ptr);
    }
@@ -105,7 +105,7 @@
    for(int i = 0, max = (int)buffers.size()
       ;i < max
       ; ++i){
- std::size_t received_size;
+ typename Allocator::size_type received_size;
       if(a.template allocation_command<char>
          ( boost::interprocess::shrink_in_place | boost::interprocess::nothrow_allocation, i*2
          , i, received_size, static_cast<char*>(buffers[i])).first){
@@ -115,7 +115,7 @@
          if(received_size < std::size_t(i)){
             return false;
          }
- std::memset(buffers[i], 0, a.size(buffers[i]));
+ std::memset(buffers[i], 0, a.size(buffers[i]));
       }
    }
    
@@ -144,7 +144,7 @@
       void *ptr = a.allocate(i, std::nothrow);
       if(!ptr)
          break;
- std::size_t size = a.size(ptr);
+ std::size_t size = a.size(ptr);
       std::memset(ptr, 0, size);
       buffers.push_back(ptr);
    }
@@ -153,7 +153,7 @@
    for(int i = 0, max = (int)buffers.size()
       ;i < max
       ;++i){
- std::size_t received_size;
+ typename Allocator::size_type received_size;
       std::size_t min_size = i+1;
       std::size_t preferred_size = i*2;
       preferred_size = min_size > preferred_size ? min_size : preferred_size;
@@ -166,7 +166,7 @@
             return false;
          }
          //Now, try to expand further
- min_size = received_size+1;
+ min_size = received_size+1;
          preferred_size = min_size*2;
       }
    }
@@ -190,12 +190,12 @@
 bool test_allocation_shrink_and_expand(Allocator &a)
 {
    std::vector<void*> buffers;
- std::vector<std::size_t> received_sizes;
+ std::vector<typename Allocator::size_type> received_sizes;
    std::vector<bool> size_reduced;
 
    //Allocate buffers wand store received sizes
    for(int i = 0; true; ++i){
- std::size_t received_size;
+ typename Allocator::size_type received_size;
       void *ptr = a.template allocation_command<char>
          ( boost::interprocess::allocate_new | boost::interprocess::nothrow_allocation, i, i*2, received_size).first;
       if(!ptr){
@@ -212,7 +212,7 @@
    for(int i = 0, max = (int)buffers.size()
       ; i < max
       ; ++i){
- std::size_t received_size;
+ typename Allocator::size_type received_size;
       if(a.template allocation_command<char>
          ( boost::interprocess::shrink_in_place | boost::interprocess::nothrow_allocation, received_sizes[i]
          , i, received_size, static_cast<char*>(buffers[i])).first){
@@ -230,7 +230,7 @@
    for(int i = 0, max = (int)buffers.size()
       ;i < max
       ;++i){
- std::size_t received_size;
+ typename Allocator::size_type received_size;
       std::size_t request_size = received_sizes[i];
       if(a.template allocation_command<char>
          ( boost::interprocess::expand_fwd | boost::interprocess::nothrow_allocation, request_size
@@ -292,7 +292,7 @@
       ;++i){
       //
       if(buffers[i]){
- std::size_t received_size;
+ typename Allocator::size_type received_size;
          std::size_t min_size = i+1;
          std::size_t preferred_size = i*2;
          preferred_size = min_size > preferred_size ? min_size : preferred_size;
@@ -363,7 +363,7 @@
       buffers.clear();
 
       //Now allocate with reuse
- std::size_t received_size = 0;
+ typename Allocator::size_type received_size = 0;
       for(int i = 0; true; ++i){
          std::size_t min_size = (received_size + 1);
          std::size_t prf_size = (received_size + (i+1)*2);
@@ -540,16 +540,16 @@
 {
    std::vector<void*> buffers;
 
- std::size_t original_size = a.get_size();
- std::size_t original_free = a.get_free_memory();
+ typename Allocator::size_type original_size = a.get_size();
+ typename Allocator::size_type original_free = a.get_free_memory();
 
    a.shrink_to_fit();
 
    if(!a.all_memory_deallocated() && a.check_sanity())
       return false;
 
- std::size_t shrunk_size = a.get_size();
- std::size_t shrunk_free_memory = a.get_free_memory();
+ typename Allocator::size_type shrunk_size = a.get_size();
+ typename Allocator::size_type shrunk_free_memory = a.get_free_memory();
    if(shrunk_size != a.get_min_size())
       return 1;
 
@@ -595,7 +595,7 @@
          --pos;
       a.deallocate(buffers[pos]);
       buffers.erase(buffers.begin()+pos);
- std::size_t old_free = a.get_free_memory();
+ typename Allocator::size_type old_free = a.get_free_memory();
       a.shrink_to_fit();
       if(!a.check_sanity()) return false;
       if(original_size < a.get_size()) return false;
@@ -640,7 +640,7 @@
    for( deallocation_type t = DirectDeallocation
       ; t != EndDeallocationType
       ; t = (deallocation_type)((int)t + 1)){
- std::size_t free_memory = a.get_free_memory();
+ typename Allocator::size_type free_memory = a.get_free_memory();
 
       std::vector<void*> buffers2;
 
@@ -649,7 +649,7 @@
          void *ptr = a.allocate(i, std::nothrow);
          if(!ptr)
             break;
- std::size_t size = a.size(ptr);
+ std::size_t size = a.size(ptr);
          std::memset(ptr, 0, size);
          if(!a.check_sanity())
             return false;
@@ -677,7 +677,7 @@
          if(chain.empty())
             break;
 
- std::size_t n = chain.size();
+ typename multiallocation_chain::size_type n = chain.size();
          while(!chain.empty()){
             buffers.push_back(detail::get_pointer(chain.front()));
             chain.pop_front();
@@ -748,7 +748,7 @@
 {
    typedef typename Allocator::multiallocation_chain multiallocation_chain;
    const std::size_t ArraySize = 11;
- std::size_t requested_sizes[ArraySize];
+ typename Allocator::size_type requested_sizes[ArraySize];
    for(std::size_t i = 0; i < ArraySize; ++i){
       requested_sizes[i] = 4*i;
    }
@@ -756,7 +756,7 @@
    for( deallocation_type t = DirectDeallocation
       ; t != EndDeallocationType
       ; t = (deallocation_type)((int)t + 1)){
- std::size_t free_memory = a.get_free_memory();
+ typename Allocator::size_type free_memory = a.get_free_memory();
 
       std::vector<void*> buffers2;
 
@@ -765,7 +765,7 @@
          void *ptr = a.allocate(i, std::nothrow);
          if(!ptr)
             break;
- std::size_t size = a.size(ptr);
+ std::size_t size = a.size(ptr);
          std::memset(ptr, 0, size);
          buffers2.push_back(ptr);
       }
@@ -786,7 +786,7 @@
          multiallocation_chain chain(a.allocate_many(requested_sizes, ArraySize, 1, std::nothrow));
          if(chain.empty())
             break;
- std::size_t n = chain.size();
+ typename multiallocation_chain::size_type n = chain.size();
          while(!chain.empty()){
             buffers.push_back(detail::get_pointer(chain.front()));
             chain.pop_front();
@@ -855,11 +855,11 @@
    typedef typename Allocator::multiallocation_chain multiallocation_chain;
    const std::size_t ArraySize = 11;
    vector<multiallocation_chain> buffers;
- std::size_t requested_sizes[ArraySize];
+ typename Allocator::size_type requested_sizes[ArraySize];
    for(std::size_t i = 0; i < ArraySize; ++i){
       requested_sizes[i] = 4*i;
    }
- std::size_t free_memory = a.get_free_memory();
+ typename Allocator::size_type free_memory = a.get_free_memory();
 
    {
       for(int i = 0; true; ++i){

Modified: branches/release/libs/interprocess/test/message_queue_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/message_queue_test.cpp (original)
+++ branches/release/libs/interprocess/test/message_queue_test.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -45,7 +45,7 @@
 
       //We test that the queue is ordered by priority and in the
       //same priority, is a FIFO
- std::size_t recvd = 0;
+ message_queue::size_type recvd = 0;
       unsigned int priority = 0;
       std::size_t tstamp;
 
@@ -131,23 +131,23 @@
 
       //Data control data sending through the message queue
       std::size_t sent = 0;
- std::size_t recvd = 0;
- std::size_t total_recvd = 0;
+ message_queue::size_type recvd = 0;
+ message_queue::size_type total_recvd = 0;
       unsigned int priority;
 
       //Send whole first buffer through the mq1, read it
       //through mq2 to the second buffer
       while(1){
          //Send a fragment of buffer1 through mq1
- std::size_t bytes_to_send = MaxMsgSize < (db_origin.get_size() - sent) ?
+ std::size_t bytes_to_send = MaxMsgSize < (db_origin.get_size() - sent) ?
                                        MaxMsgSize : (db_origin.get_size() - sent);
          mq1.send( &static_cast<char*>(db_origin.get_address())[sent]
                , bytes_to_send
                , 0);
          sent += bytes_to_send;
          //Receive the fragment through mq2 to buffer_destiny
- mq2.receive( &buffer_destiny[total_recvd]
- , BufferSize - recvd
+ mq2.receive( &buffer_destiny[total_recvd]
+ , BufferSize - recvd
                   , recvd
                   , priority);
          total_recvd += recvd;
@@ -163,7 +163,7 @@
       managed_external_buffer db_destiny(open_only, &buffer_destiny[0], BufferSize);
 
       //Let's find the map
- std::pair<MyMap *, std::size_t> ret = db_destiny.find<MyMap>("MyMap");
+ std::pair<MyMap *, managed_external_buffer::size_type> ret = db_destiny.find<MyMap>("MyMap");
       MyMap *map2 = ret.first;
 
       //Check if we have found it
@@ -182,7 +182,8 @@
       }
 
       //Now let's compare all db values
- for(std::size_t i = 0, num_elements = map1->size(); i < num_elements; ++i){
+ MyMap::size_type num_elements = map1->size();
+ for(std::size_t i = 0; i < num_elements; ++i){
          if((*map1)[i] != (*map2)[i]){
             return false;
          }
@@ -206,7 +207,7 @@
 
 void receiver()
 {
- std::size_t recvd_size;
+ boost::interprocess::message_queue::size_type recvd_size;
    unsigned int priority;
    int nummsg = NumMsg;
 

Modified: branches/release/libs/interprocess/test/movable_int.hpp
==============================================================================
--- branches/release/libs/interprocess/test/movable_int.hpp (original)
+++ branches/release/libs/interprocess/test/movable_int.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -21,7 +21,7 @@
 
 class movable_int
 {
- BOOST_INTERPROCESS_MOVABLE_BUT_NOT_COPYABLE(movable_int)
+ BOOST_MOVABLE_BUT_NOT_COPYABLE(movable_int)
 
    public:
 
@@ -33,11 +33,11 @@
       : m_int(a)
    {}
 
- movable_int(BOOST_INTERPROCESS_RV_REF(movable_int) mmi)
+ movable_int(BOOST_RV_REF(movable_int) mmi)
       : m_int(mmi.m_int)
    { mmi.m_int = 0; }
 
- movable_int & operator= (BOOST_INTERPROCESS_RV_REF(movable_int) mmi)
+ movable_int & operator= (BOOST_RV_REF(movable_int) mmi)
    { this->m_int = mmi.m_int; mmi.m_int = 0; return *this; }
 
    movable_int & operator= (int i)
@@ -79,7 +79,7 @@
 
 class movable_and_copyable_int
 {
- BOOST_INTERPROCESS_COPYABLE_AND_MOVABLE(movable_and_copyable_int)
+ BOOST_COPYABLE_AND_MOVABLE(movable_and_copyable_int)
    public:
 
    movable_and_copyable_int()
@@ -94,14 +94,14 @@
       : m_int(mmi.m_int)
    {}
    
- movable_and_copyable_int &operator= (BOOST_INTERPROCESS_COPY_ASSIGN_REF(movable_and_copyable_int) mi)
+ movable_and_copyable_int &operator= (BOOST_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)
+ movable_and_copyable_int(BOOST_RV_REF(movable_and_copyable_int) mmi)
       : m_int(mmi.m_int)
    { mmi.m_int = 0; }
 
- movable_and_copyable_int & operator= (BOOST_INTERPROCESS_RV_REF(movable_and_copyable_int) mmi)
+ movable_and_copyable_int & operator= (BOOST_RV_REF(movable_and_copyable_int) mmi)
    { this->m_int = mmi.m_int; mmi.m_int = 0; return *this; }
 
    movable_and_copyable_int & operator= (int i)
@@ -141,7 +141,6 @@
     return os;
 }
 
-
 class copyable_int
 {
    public:
@@ -188,6 +187,45 @@
    int m_int;
 };
 
+class non_copymovable_int
+{
+ non_copymovable_int(const non_copymovable_int& mmi);
+ non_copymovable_int & operator= (const non_copymovable_int &mi);
+
+ public:
+ non_copymovable_int()
+ : m_int(0)
+ {}
+
+ explicit non_copymovable_int(int a)
+ : m_int(a)
+ {}
+
+ bool operator ==(const non_copymovable_int &mi) const
+ { return this->m_int == mi.m_int; }
+
+ bool operator !=(const non_copymovable_int &mi) const
+ { return this->m_int != mi.m_int; }
+
+ bool operator <(const non_copymovable_int &mi) const
+ { return this->m_int < mi.m_int; }
+
+ bool operator <=(const non_copymovable_int &mi) const
+ { return this->m_int <= mi.m_int; }
+
+ bool operator >=(const non_copymovable_int &mi) const
+ { return this->m_int >= mi.m_int; }
+
+ bool operator >(const non_copymovable_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)

Modified: branches/release/libs/interprocess/test/named_allocation_test_template.hpp
==============================================================================
--- branches/release/libs/interprocess/test/named_allocation_test_template.hpp (original)
+++ branches/release/libs/interprocess/test/named_allocation_test_template.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -129,7 +129,7 @@
    const_named_iterator named_beg = m.named_begin();
    const_named_iterator named_end = m.named_end();
 
- if(std::distance(named_beg, named_end) != (int)buffers.size()){
+ if((std::size_t)std::distance(named_beg, named_end) != (std::size_t)buffers.size()){
       return 1;
    }
 

Modified: branches/release/libs/interprocess/test/named_construct_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/named_construct_test.cpp (original)
+++ branches/release/libs/interprocess/test/named_construct_test.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -135,7 +135,7 @@
 
       if(NameGenerator::searchable){
          {
- std::pair<simple_type*, std::size_t> res;
+ std::pair<simple_type*, managed_shared_memory::size_type> res;
             //Find the object
             res = segment.find<simple_type> (NameGenerator::get_simple_name());
             //Length should be 1
@@ -147,7 +147,7 @@
                return 1;
          }
          {
- std::pair<array_type*, std::size_t> res;
+ std::pair<array_type*, managed_shared_memory::size_type> res;
 
             //Find the array
             res = segment.find<array_type> (NameGenerator::get_array_name());
@@ -160,7 +160,7 @@
                return 1;
          }
          {
- std::pair<array_it_type*, std::size_t> res;
+ std::pair<array_it_type*, managed_shared_memory::size_type> res;
             //Find the array constructed from iterators
             res = segment.find<array_it_type> (NameGenerator::get_array_it_name());
             //Length should be 3

Modified: branches/release/libs/interprocess/test/node_pool_test.hpp
==============================================================================
--- branches/release/libs/interprocess/test/node_pool_test.hpp (original)
+++ branches/release/libs/interprocess/test/node_pool_test.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -31,7 +31,7 @@
 template <class NodePool>
 bool test_node_pool<NodePool>::allocate_then_deallocate(NodePool &pool)
 {
- const std::size_t num_alloc = 1 + 3*pool.get_real_num_node();
+ const typename NodePool::size_type num_alloc = 1 + 3*pool.get_real_num_node();
 
    std::vector<void*> nodes;
 
@@ -136,7 +136,7 @@
    typedef boost::interprocess::test::test_node_pool<node_pool_t> test_node_pool_t;
    shared_memory_object::remove(test::get_process_id_name());
    {
- managed_shared_memory shm(create_only, test::get_process_id_name(), 4*1024*sizeof(void*));
+ managed_shared_memory shm(create_only, test::get_process_id_name(), 4*1024*sizeof(segment_manager::void_pointer));
 
       typedef deleter<node_pool_t, segment_manager> deleter_t;
       typedef unique_ptr<node_pool_t, deleter_t> unique_ptr_t;

Modified: branches/release/libs/interprocess/test/set_test.hpp
==============================================================================
--- branches/release/libs/interprocess/test/set_test.hpp (original)
+++ branches/release/libs/interprocess/test/set_test.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -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::make_move_iterator(&aux_vect[0])
+ , ::boost::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::make_move_iterator(&aux_vect3[0])
+ , ::boost::make_move_iterator(aux_vect3 + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdMultiSet *stdmultiset2 = new MyStdMultiSet(aux_vect2, aux_vect2 + 50);
@@ -117,8 +117,8 @@
          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)
+ , ::boost::make_move_iterator(&aux_vect[0])
+ , ::boost::make_move_iterator(aux_vect + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdSet *stdset3 = new MyStdSet(aux_vect2, aux_vect2 + 50);
@@ -126,8 +126,8 @@
          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)
+ , ::boost::make_move_iterator(&aux_vect3[0])
+ , ::boost::make_move_iterator(aux_vect3 + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdMultiSet *stdmultiset3 = new MyStdMultiSet(aux_vect2, aux_vect2 + 50);
@@ -263,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::make_move_iterator(&aux_vect[0]), ::boost::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::make_move_iterator(&aux_vect3[0]), ::boost::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::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::make_move_iterator(&aux_vect3[0]), ..." << std::endl;
             return 1;
          }
 
@@ -320,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::make_move_iterator(&aux_vect[0]), ::boost::make_move_iterator(aux_vect + 50));
+ shmset->insert(::boost::make_move_iterator(&aux_vect3[0]), ::boost::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::make_move_iterator(&aux_vect4[0]), ::boost::make_move_iterator(aux_vect4 + 50));
+ shmmultiset->insert(::boost::make_move_iterator(&aux_vect5[0]), ::boost::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::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::make_move_iterator(&aux_vect5[0])..." << std::endl;
             return 1;
          }
 

Modified: branches/release/libs/interprocess/test/shared_ptr_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/shared_ptr_test.cpp (original)
+++ branches/release/libs/interprocess/test/shared_ptr_test.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -612,6 +612,8 @@
          BOOST_TEST( !!p2 );
          BOOST_TEST( p2.use_count() == p.use_count() );
          BOOST_TEST( !( p < p2 ) && !( p2 < p ) );
+ int_shared_ptr p_nothrow(make_managed_shared_ptr
+ (shmem.construct<int>(anonymous_instance)(), shmem, std::nothrow));
       }
    }
    shared_memory_object::remove(process_name.c_str());

Modified: branches/release/libs/interprocess/test/string_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/string_test.cpp (original)
+++ branches/release/libs/interprocess/test/string_test.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -52,7 +52,7 @@
       if(string1.size() != string2.size())
          return false;
       return std::char_traits<typename Str1::value_type>::compare
- (string1.c_str(), string2.c_str(), string1.size()) == 0;
+ (string1.c_str(), string2.c_str(), (std::size_t)string1.size()) == 0;
    }
 };
 

Modified: branches/release/libs/interprocess/test/user_buffer_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/user_buffer_test.cpp (original)
+++ branches/release/libs/interprocess/test/user_buffer_test.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -19,6 +19,7 @@
 #include <boost/interprocess/containers/list.hpp>
 #include <boost/interprocess/detail/type_traits.hpp>
 #include <boost/interprocess/allocators/node_allocator.hpp>
+#include <boost/type_traits/type_with_alignment.hpp>
 #include "print_container.hpp"
 
 /******************************************************************************/
@@ -52,9 +53,9 @@
 int main ()
 {
    //Create the user memory who will store all objects
- const int size_aligner = sizeof(detail::max_align);
+ const int size_aligner = sizeof(::boost::detail::max_align);
    const int memsize = 65536/size_aligner*size_aligner;
- static detail::max_align static_buffer[memsize/size_aligner];
+ static ::boost::detail::max_align static_buffer[memsize/size_aligner];
 
    {
       //Now test move semantics
@@ -212,7 +213,7 @@
    }
    catch(boost::interprocess::bad_alloc &){}
    
- std::size_t heap_list_size = heaplist->size();
+ MyHeapList::size_type heap_list_size = heaplist->size();
 
    //Copy heap buffer to another
    const char *insert_beg = static_cast<char*>(heap_buffer.get_address());
@@ -245,7 +246,7 @@
    }
    catch(boost::interprocess::bad_alloc &){}
 
- std::size_t user_list_size = userlist->size();
+ MyUserList::size_type user_list_size = userlist->size();
 
    if(user_list_size <= heap_list_size){
       return 1;

Modified: branches/release/libs/interprocess/test/vector_test.hpp
==============================================================================
--- branches/release/libs/interprocess/test/vector_test.hpp (original)
+++ branches/release/libs/interprocess/test/vector_test.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -137,7 +137,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::move_detail::is_copy_constructible<boost::interprocess::test::movable_int>::value == false));
                aux_vect[i] = boost::interprocess::move(new_int);
             }
             int aux_vect2[50];
@@ -146,8 +146,8 @@
             }
 
             shmvector->insert(shmvector->end()
- ,::boost::interprocess::make_move_iterator(&aux_vect[0])
- ,::boost::interprocess::make_move_iterator(aux_vect + 50));
+ ,::boost::make_move_iterator(&aux_vect[0])
+ ,::boost::make_move_iterator(aux_vect + 50));
             stdvector->insert(stdvector->end(), aux_vect2, aux_vect2 + 50);
             if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
@@ -168,8 +168,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::make_move_iterator(&aux_vect[0])
+ ,::boost::make_move_iterator(aux_vect + 50));
             stdvector->insert(stdvector->begin(), aux_vect2, aux_vect2 + 50);
             if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
          }
@@ -186,7 +186,7 @@
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
          if(!copyable_only(shmvector, stdvector
- ,detail::bool_<!is_movable<IntType>::value>())){
+ ,detail::bool_<!detail::is_same<IntType, test::movable_int>::value>())){
             return 1;
          }
 

Modified: branches/release/libs/intrusive/doc/intrusive.qbk
==============================================================================
--- branches/release/libs/intrusive/doc/intrusive.qbk (original)
+++ branches/release/libs/intrusive/doc/intrusive.qbk 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -3831,6 +3831,23 @@
 
 [section:release_notes Release Notes]
 
+[section:release_notes_boost_1_47_00 Boost 1.47 Release]
+
+* Fixed bugs
+ [@https://svn.boost.org/trac/boost/ticket/4797 #4797],
+ [@https://svn.boost.org/trac/boost/ticket/5165 #5165],
+ [@https://svn.boost.org/trac/boost/ticket/5183 #5183],
+ [@https://svn.boost.org/trac/boost/ticket/5191 #5191].
+
+[endsect]
+
+[section:release_notes_boost_1_46_00 Boost 1.46 Release]
+
+* Fixed bug
+ [@https://svn.boost.org/trac/boost/ticket/4980 #4980],
+
+[endsect]
+
 [section:release_notes_boost_1_45_00 Boost 1.45 Release]
 
 * Added `function_hook` option.

Modified: branches/release/libs/intrusive/example/doc_offset_ptr.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_offset_ptr.cpp (original)
+++ branches/release/libs/intrusive/example/doc_offset_ptr.cpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009
+// (C) Copyright Ion Gaztanaga 2006-2011
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -51,7 +51,7 @@
 #include <boost/interprocess/allocators/allocator.hpp>
 
 //Definition of the shared memory friendly intrusive list
-typedef ip::list<shared_memory_data> shm_list_t;
+typedef list<shared_memory_data> intrusive_list_t;
 
 int main()
 {
@@ -80,12 +80,14 @@
       for(int i = 0; i < MaxElem; ++i) (*pshm_vect)[i].set(i);
 
       //Now create the shared memory intrusive list
- shm_list_t *plist = shm.construct<shm_list_t>(ip::anonymous_instance)();
+ intrusive_list_t *plist = shm.construct<intrusive_list_t>(ip::anonymous_instance)();
+
+ //Insert objects stored in shared memory vector in the intrusive list
       plist->insert(plist->end(), pshm_vect->begin(), pshm_vect->end());
 
       //Check all the inserted nodes
       int checker = 0;
- for( shm_list_t::const_iterator it = plist->begin(), itend(plist->end())
+ for( intrusive_list_t::const_iterator it = plist->begin(), itend(plist->end())
          ; it != itend; ++it, ++checker){
          if(it->get() != checker) return false;
       }

Modified: branches/release/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj
==============================================================================
--- branches/release/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj (original)
+++ branches/release/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -291,19 +291,19 @@
                                 <File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\workaround.hpp">
                                 </File>
+ <Filter
+ Name="doc"
+ Filter="">
+ <File
+ RelativePath="..\..\..\doc\intrusive.qbk">
+ </File>
+ <File
+ RelativePath="..\..\..\doc\Jamfile.v2">
+ </File>
+ </Filter>
                         </Filter>
                 </Filter>
                 <Filter
- Name="doc"
- Filter="">
- <File
- RelativePath="..\..\..\doc\intrusive.qbk">
- </File>
- <File
- RelativePath="..\..\..\doc\Jamfile.v2">
- </File>
- </Filter>
- <Filter
                         Name="Test headers"
                         Filter="">
                         <File

Modified: branches/release/libs/intrusive/proj/vc7ide/to-do.txt
==============================================================================
--- branches/release/libs/intrusive/proj/vc7ide/to-do.txt (original)
+++ branches/release/libs/intrusive/proj/vc7ide/to-do.txt 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -15,3 +15,15 @@
 -> Document incremental<> option better
 -> Assure stable order for optimize_multikey and inverse order otherwise
 -> add an option to unordered containers to get O(1) traversal and begin()/end() even with very low load factors
+
+
+The article explains it quite well: Linear Hashing The cost of hash table expansion is spread out across each hash table insertion operation, as opposed to being incurred all at once. Linear hashing is therefore well suited for interactive applications.
+
+Linear hashing typically requires power of two length for bucket arrays, but those buckets are not fully used from the beginning, as it is when using non-linear hashing (which typically requires prime bucket length). Although the bucket array hash, say, has 16 buckets, the implementation uses first just one or two, then when after incremental rehashing uses three, etc.. incrementally, until it fills those 16 buckets. Then for a new incremental rehash, it allocates a new bucket array with length 32, but starts using only 17, and continues with incremental hashing. I think Dinkum STL used this incremental rehashing. The key is that in each incremental hashing, not all elements are rehashed, but just elements of a single bucket, distributing hashing impact in all allocations.
+
+For more information on hashing alternatives see the original standard hashing container proposal (chapter Control of Hash Resizing):
+
+http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1456.html
+
+Now, intrusive containers don't allocate memory at all, so incremental rehashing must be trigered by the user using
+"incremental_rehash(bool)" (use an additional bucket, that is, incremental rehash) and "incremental_rehash(bucket_traits)" (to update the new bucket array with an array that should be twice/half the size of the previous one). I admit that this is not explained at all with an example, so I will note this issue in my to do list.

Modified: branches/release/libs/intrusive/test/test_container.hpp
==============================================================================
--- branches/release/libs/intrusive/test/test_container.hpp (original)
+++ branches/release/libs/intrusive/test/test_container.hpp 2011-07-21 13:42:55 EDT (Thu, 21 Jul 2011)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2009
+// (C) Copyright Ion Gaztanaga 2007-2011
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -15,6 +15,7 @@
 
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/intrusive/detail/mpl.hpp>
+#include <boost/move/move.hpp>
 
 namespace boost {
 namespace intrusive {
@@ -78,55 +79,67 @@
 void test_sequence_container(Container & c, Data & d)
 {
    assert( d.size() > 2 );
+ {
+ c.clear();
 
- c.clear();
-
- BOOST_TEST( c.size() == 0 );
- BOOST_TEST( c.empty() );
+ BOOST_TEST( c.size() == 0 );
+ BOOST_TEST( c.empty() );
 
 
- {
- typename Data::iterator i = d.begin();
- c.insert( c.begin(), *i );
- c.insert( c.end(), *(++i) );
- }
+ {
+ typename Data::iterator i = d.begin();
+ c.insert( c.begin(), *i );
+ c.insert( c.end(), *(++i) );
+ }
 
- BOOST_TEST( c.size() == 2 );
- BOOST_TEST( !c.empty() );
+ BOOST_TEST( c.size() == 2 );
+ BOOST_TEST( !c.empty() );
 
- typename Container::iterator i;
- i = c.erase( c.begin() );
+ typename Container::iterator i;
+ i = c.erase( c.begin() );
 
- BOOST_TEST( c.size() == 1 );
+ BOOST_TEST( c.size() == 1 );
 
- {
- typename Data::iterator i = d.begin();
- ++++i;
- c.insert( c.begin(), *(i) );
- }
+ {
+ typename Data::iterator i = d.begin();
+ ++++i;
+ c.insert( c.begin(), *(i) );
+ }
 
- i = c.erase( c.begin(), c.end() );
- BOOST_TEST( i == c.end() );
+ i = c.erase( c.begin(), c.end() );
+ BOOST_TEST( i == c.end() );
 
- BOOST_TEST( c.empty() );
+ BOOST_TEST( c.empty() );
 
- c.insert( c.begin(), *d.begin() );
+ c.insert( c.begin(), *d.begin() );
 
- BOOST_TEST( c.size() == 1 );
+ BOOST_TEST( c.size() == 1 );
 
- BOOST_TEST( c.begin() != c.end() );
+ BOOST_TEST( c.begin() != c.end() );
 
- i = c.erase_and_dispose( c.begin(), detail::null_disposer() );
- BOOST_TEST( i == c.begin() );
+ i = c.erase_and_dispose( c.begin(), detail::null_disposer() );
+ BOOST_TEST( i == c.begin() );
 
- c.assign(d.begin(), d.end());
+ c.assign(d.begin(), d.end());
 
- BOOST_TEST( c.size() == d.size() );
+ BOOST_TEST( c.size() == d.size() );
 
- c.clear();
+ c.clear();
 
- BOOST_TEST( c.size() == 0 );
- BOOST_TEST( c.empty() );
+ BOOST_TEST( c.size() == 0 );
+ BOOST_TEST( c.empty() );
+ }
+ {
+ c.clear();
+ c.insert( c.begin(), d.begin(), d.end() );
+ Container move_c(::boost::move(c));
+ BOOST_TEST( move_c.size() == d.size() );
+ BOOST_TEST( c.empty());
+
+ c = ::boost::move(move_c);
+ BOOST_TEST( c.size() == d.size() );
+ BOOST_TEST( move_c.empty());
+ }
 }
 
 template< class Container, class Data >
@@ -212,42 +225,55 @@
 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 );
-
- 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);
- 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 );
+ assert( d.size() > 2 );
 
- BOOST_TEST( c.count(*da) == 0 );
- BOOST_TEST( c.count(*db) != 0 );
+ c.clear();
+ c.insert(d.begin(), d.end());
 
- BOOST_TEST( c.find(*da) == c.end() );
- BOOST_TEST( c.find(*db) != c.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);
+ BOOST_TEST( c.size() == old_size-1 );
+ //This should erase nothing
+ size_type second_erase = c.erase_and_dispose( *da, detail::null_disposer() );
+ BOOST_TEST( second_erase == 0 );
 
- BOOST_TEST( c.equal_range(*db).first != c.end() );
+ BOOST_TEST( c.count(*da) == 0 );
+ BOOST_TEST( c.count(*db) != 0 );
 
- c.clear();
+ BOOST_TEST( c.find(*da) == c.end() );
+ BOOST_TEST( c.find(*db) != c.end() );
 
- BOOST_TEST( c.equal_range(*da).first == c.end() );
+ BOOST_TEST( c.equal_range(*db).first != c.end() );
+ BOOST_TEST( c.equal_range(*da).first == c.equal_range(*da).second );
+ }
+ {
+ c.clear();
+ c.insert( d.begin(), d.end() );
+ size_type orig_size = c.size();
+ Container move_c(::boost::move(c));
+ BOOST_TEST(orig_size == move_c.size());
+ BOOST_TEST( c.empty());
+ for( typename Data::const_iterator di = d.begin(), de = d.end();
+ di != de; ++di )
+ { BOOST_TEST( move_c.find(*di) != move_c.end() ); }
+
+ c = ::boost::move(move_c);
+ for( typename Data::const_iterator di = d.begin(), de = d.end();
+ di != de; ++di )
+ { BOOST_TEST( c.find(*di) != c.end() ); }
+ BOOST_TEST( move_c.empty());
    }
    typedef detail::bool_<is_unordered<Container>::value> enabler;
    test_common_unordered_and_associative_container(c, d, enabler());


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