Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r52033 - in branches/release/libs/interprocess: doc example proj proj/conceptgcc proj/cygwin proj/linux proj/mingw proj/qnx proj/vc7ide test
From: igaztanaga_at_[hidden]
Date: 2009-03-28 10:32:39


Author: igaztanaga
Date: 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
New Revision: 52033
URL: http://svn.boost.org/trac/boost/changeset/52033

Log:
Changes for Boost.1.39
Added:
   branches/release/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp
   branches/release/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp
   branches/release/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp
   branches/release/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp
   branches/release/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp
   branches/release/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp
   branches/release/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp
   branches/release/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp
   branches/release/libs/interprocess/example/comp_doc_message_queueA.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/comp_doc_message_queueA.cpp
   branches/release/libs/interprocess/example/comp_doc_message_queueB.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/comp_doc_message_queueB.cpp
   branches/release/libs/interprocess/example/doc_ipc_message.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/doc_ipc_message.cpp
   branches/release/libs/interprocess/example/doc_named_alloc.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/doc_named_alloc.cpp
   branches/release/libs/interprocess/example/doc_spawn_vector.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/example/doc_spawn_vector.cpp
   branches/release/libs/interprocess/proj/vc7ide/doc_ipc_message.vcproj
      - copied unchanged from r52031, /trunk/libs/interprocess/proj/vc7ide/doc_ipc_message.vcproj
   branches/release/libs/interprocess/proj/vc7ide/doc_named_alloc.vcproj
      - copied unchanged from r52031, /trunk/libs/interprocess/proj/vc7ide/doc_named_alloc.vcproj
   branches/release/libs/interprocess/proj/vc7ide/doc_spawn_vector.vcproj
      - copied unchanged from r52031, /trunk/libs/interprocess/proj/vc7ide/doc_spawn_vector.vcproj
   branches/release/libs/interprocess/proj/vc7ide/stable_vector_test.vcproj
      - copied unchanged from r52031, /trunk/libs/interprocess/proj/vc7ide/stable_vector_test.vcproj
   branches/release/libs/interprocess/test/heap_allocator_v1.hpp
      - copied unchanged from r52031, /trunk/libs/interprocess/test/heap_allocator_v1.hpp
   branches/release/libs/interprocess/test/stable_vector_test.cpp
      - copied unchanged from r52031, /trunk/libs/interprocess/test/stable_vector_test.cpp
Removed:
   branches/release/libs/interprocess/example/doc_anonymous_conditionA.cpp
   branches/release/libs/interprocess/example/doc_anonymous_conditionB.cpp
   branches/release/libs/interprocess/example/doc_anonymous_mutexA.cpp
   branches/release/libs/interprocess/example/doc_anonymous_mutexB.cpp
   branches/release/libs/interprocess/example/doc_anonymous_semaphoreA.cpp
   branches/release/libs/interprocess/example/doc_anonymous_semaphoreB.cpp
   branches/release/libs/interprocess/example/doc_anonymous_upgradable_mutexA.cpp
   branches/release/libs/interprocess/example/doc_anonymous_upgradable_mutexB.cpp
   branches/release/libs/interprocess/example/doc_contA.cpp
   branches/release/libs/interprocess/example/doc_contB.cpp
   branches/release/libs/interprocess/example/doc_file_mapping2.cpp
   branches/release/libs/interprocess/example/doc_ipc_messageA.cpp
   branches/release/libs/interprocess/example/doc_ipc_messageB.cpp
   branches/release/libs/interprocess/example/doc_message_queueA.cpp
   branches/release/libs/interprocess/example/doc_message_queueB.cpp
   branches/release/libs/interprocess/example/doc_named_allocA.cpp
   branches/release/libs/interprocess/example/doc_named_allocB.cpp
   branches/release/libs/interprocess/example/doc_shared_memory2.cpp
   branches/release/libs/interprocess/example/doc_windows_shared_memory2.cpp
   branches/release/libs/interprocess/proj/conceptgcc/
   branches/release/libs/interprocess/proj/cygwin/
   branches/release/libs/interprocess/proj/linux/
   branches/release/libs/interprocess/proj/mingw/
   branches/release/libs/interprocess/proj/qnx/
   branches/release/libs/interprocess/proj/vc7ide/doc_contA.vcproj
   branches/release/libs/interprocess/proj/vc7ide/doc_file_mapping2.vcproj
   branches/release/libs/interprocess/proj/vc7ide/doc_ipc_messageA.vcproj
   branches/release/libs/interprocess/proj/vc7ide/doc_ipc_messageB.vcproj
   branches/release/libs/interprocess/proj/vc7ide/doc_named_allocA.vcproj
   branches/release/libs/interprocess/proj/vc7ide/doc_named_allocB.vcproj
   branches/release/libs/interprocess/proj/vc7ide/doc_shared_memory2.vcproj
Text files modified:
   branches/release/libs/interprocess/doc/Jamfile.v2 | 9
   branches/release/libs/interprocess/doc/interprocess.qbk | 198 +++++++++---------
   branches/release/libs/interprocess/example/Jamfile.v2 | 13 +
   branches/release/libs/interprocess/example/doc_adaptive_pool.cpp | 76 +++---
   branches/release/libs/interprocess/example/doc_allocator.cpp | 7
   branches/release/libs/interprocess/example/doc_bufferstream.cpp | 119 +++++-----
   branches/release/libs/interprocess/example/doc_cached_adaptive_pool.cpp | 95 ++++----
   branches/release/libs/interprocess/example/doc_cached_node_allocator.cpp | 95 ++++----
   branches/release/libs/interprocess/example/doc_complex_map.cpp | 39 ++-
   branches/release/libs/interprocess/example/doc_cont.cpp | 83 +++----
   branches/release/libs/interprocess/example/doc_file_mapping.cpp | 81 +++++--
   branches/release/libs/interprocess/example/doc_intrusive.cpp | 69 +++---
   branches/release/libs/interprocess/example/doc_managed_aligned_allocation.cpp | 65 +++---
   branches/release/libs/interprocess/example/doc_managed_allocation_command.cpp | 124 +++++------
   branches/release/libs/interprocess/example/doc_managed_construction_info.cpp | 66 +++---
   branches/release/libs/interprocess/example/doc_managed_copy_on_write.cpp | 5
   branches/release/libs/interprocess/example/doc_managed_external_buffer.cpp | 4
   branches/release/libs/interprocess/example/doc_managed_grow.cpp | 81 +++---
   branches/release/libs/interprocess/example/doc_managed_mapped_file.cpp | 86 ++++---
   branches/release/libs/interprocess/example/doc_managed_multiple_allocation.cpp | 94 ++++-----
   branches/release/libs/interprocess/example/doc_managed_raw_allocation.cpp | 41 +--
   branches/release/libs/interprocess/example/doc_map.cpp | 91 ++++----
   branches/release/libs/interprocess/example/doc_move_containers.cpp | 97 ++++----
   branches/release/libs/interprocess/example/doc_multi_index.cpp | 39 +--
   branches/release/libs/interprocess/example/doc_named_mutex.cpp | 3
   branches/release/libs/interprocess/example/doc_node_allocator.cpp | 76 +++---
   branches/release/libs/interprocess/example/doc_offset_ptr.cpp | 70 +++---
   branches/release/libs/interprocess/example/doc_private_adaptive_pool.cpp | 68 +++---
   branches/release/libs/interprocess/example/doc_private_node_allocator.cpp | 68 +++---
   branches/release/libs/interprocess/example/doc_scoped_ptr.cpp | 93 ++++----
   branches/release/libs/interprocess/example/doc_shared_memory.cpp | 39 ++
   branches/release/libs/interprocess/example/doc_shared_ptr.cpp | 5
   branches/release/libs/interprocess/example/doc_shared_ptr_explicit.cpp | 10
   branches/release/libs/interprocess/example/doc_unique_ptr.cpp | 12
   branches/release/libs/interprocess/example/doc_unordered_map.cpp | 75 +++---
   branches/release/libs/interprocess/example/doc_vectorstream.cpp | 148 +++++++-------
   branches/release/libs/interprocess/example/doc_where_allocate.cpp | 77 +++---
   branches/release/libs/interprocess/example/doc_windows_shared_memory.cpp | 50 +++-
   branches/release/libs/interprocess/proj/to-do.txt | 26 +-
   branches/release/libs/interprocess/proj/vc7ide/Interprocess.sln | 122 ++++-------
   branches/release/libs/interprocess/proj/vc7ide/adaptive_node_pool_test.vcproj | 1
   branches/release/libs/interprocess/proj/vc7ide/doc_adaptive_pool.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_allocator.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_conditionA.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_conditionB.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_mutexA.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_mutexB.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_semaphoreA.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_semaphoreB.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_shared_memory.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_upgradable_mutexA.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_upgradable_mutexB.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_bufferstream.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_cached_adaptive_pool.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_cached_node_allocator.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_cont.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_contB.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_file_mapping.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_intrusive.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_managed_aligned_allocation.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_managed_allocation_command.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_managed_construction_info.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_managed_grow.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_managed_heap_memory.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_managed_mapped_file.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_managed_multiple_allocation.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_managed_raw_allocation.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_map.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_message_queueA.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_message_queueB.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_move_containers.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_named_conditionA.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_named_conditionB.vcproj | 7
   branches/release/libs/interprocess/proj/vc7ide/doc_named_mutex.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_node_allocator.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_offset_ptr.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_private_adaptive_pool.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_private_node_allocator.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_scoped_ptr.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_shared_memory.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_shared_ptr.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_shared_ptr_explicit.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_unique_ptr.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_vectorstream.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_where_allocate.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_windows_shared_memory.vcproj | 5
   branches/release/libs/interprocess/proj/vc7ide/doc_windows_shared_memory2.vcproj | 11
   branches/release/libs/interprocess/proj/vc7ide/interprocesslib.vcproj | 43 ---
   branches/release/libs/interprocess/proj/vc7ide/shared_memory_mappable_test.vcproj | 2
   branches/release/libs/interprocess/proj/vc7ide/string_test.vcproj | 1
   branches/release/libs/interprocess/proj/vc7ide/windows_shared_memory_mapping_test.vcproj | 8
   branches/release/libs/interprocess/proj/vc7ide/windows_shared_memory_test.vcproj | 4
   branches/release/libs/interprocess/test/adaptive_node_pool_test.cpp | 1
   branches/release/libs/interprocess/test/allocator_v1.hpp | 14
   branches/release/libs/interprocess/test/check_equal_containers.hpp | 6
   branches/release/libs/interprocess/test/data_test.cpp | 6
   branches/release/libs/interprocess/test/deque_test.cpp | 44 ++--
   branches/release/libs/interprocess/test/dummy_test_allocator.hpp | 8
   branches/release/libs/interprocess/test/emplace_test.hpp | 23 -
   branches/release/libs/interprocess/test/expand_bwd_test_allocator.hpp | 10
   branches/release/libs/interprocess/test/file_lock_test.cpp | 12
   branches/release/libs/interprocess/test/file_mapping_test.cpp | 17 +
   branches/release/libs/interprocess/test/flat_tree_test.cpp | 46 ++++
   branches/release/libs/interprocess/test/get_process_id_name.hpp | 4
   branches/release/libs/interprocess/test/list_test.cpp | 5
   branches/release/libs/interprocess/test/list_test.hpp | 18
   branches/release/libs/interprocess/test/managed_mapped_file_test.cpp | 11
   branches/release/libs/interprocess/test/managed_shared_memory_test.cpp | 5
   branches/release/libs/interprocess/test/managed_windows_shared_memory_test.cpp | 7
   branches/release/libs/interprocess/test/map_test.hpp | 415 +++++++++++++++++++++++++--------------
   branches/release/libs/interprocess/test/mapped_file_test.cpp | 11
   branches/release/libs/interprocess/test/memory_algorithm_test_template.hpp | 66 +++---
   branches/release/libs/interprocess/test/movable_int.hpp | 56 ----
   branches/release/libs/interprocess/test/multi_index_test.cpp | 56 -----
   branches/release/libs/interprocess/test/set_test.hpp | 102 ++++----
   branches/release/libs/interprocess/test/shared_memory_mapping_test.cpp | 13
   branches/release/libs/interprocess/test/shared_memory_test.cpp | 11
   branches/release/libs/interprocess/test/shared_ptr_test.cpp | 8
   branches/release/libs/interprocess/test/slist_test.cpp | 9
   branches/release/libs/interprocess/test/string_test.cpp | 4
   branches/release/libs/interprocess/test/tree_test.cpp | 45 ---
   branches/release/libs/interprocess/test/unique_ptr_test.cpp | 29 +-
   branches/release/libs/interprocess/test/upgradable_mutex_test.cpp | 70 +++---
   branches/release/libs/interprocess/test/user_buffer_test.cpp | 22 -
   branches/release/libs/interprocess/test/vector_test.cpp | 22 -
   branches/release/libs/interprocess/test/vector_test.hpp | 44 ++-
   branches/release/libs/interprocess/test/windows_shared_memory_mapping_test.cpp | 2
   branches/release/libs/interprocess/test/windows_shared_memory_test.cpp | 14
   128 files changed, 1982 insertions(+), 2194 deletions(-)

Modified: branches/release/libs/interprocess/doc/Jamfile.v2
==============================================================================
--- branches/release/libs/interprocess/doc/Jamfile.v2 (original)
+++ branches/release/libs/interprocess/doc/Jamfile.v2 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -25,8 +25,15 @@
         <doxygen:param>EXTRACT_ALL=NO
         <doxygen:param>HIDE_UNDOC_MEMBERS=YES
         <doxygen:param>EXTRACT_PRIVATE=NO
+ <doxygen:param>ENABLE_PREPROCESSING=YES
         <doxygen:param>EXPAND_ONLY_PREDEF=YES
- <doxygen:param>PREDEFINED=BOOST_INTERPROCESS_DOXYGEN_INVOKED
+ <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)=a &&\" \\
+ \"BOOST_INTERPROCESS_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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -94,13 +94,8 @@
 message to that buffer, send the offset of that portion of shared
 memory to another process, and you are done. Let's see the example:
 
-[import ../example/doc_ipc_messageA.cpp]
-[doc_ipc_messageA]
-
-In receiver process one just could write the following lines:
-
-[import ../example/doc_ipc_messageB.cpp]
-[doc_ipc_messageB]
+[import ../example/doc_ipc_message.cpp]
+[doc_ipc_message]
 
 [endsect]
 
@@ -108,15 +103,10 @@
 
 You want to create objects in a shared memory segment, giving a string name to them so that
 any other process can find, use and delete them from the segment when the objects are not
-needed anymore. Just write in one process:
-
-[import ../example/doc_named_allocA.cpp]
-[doc_named_allocA]
+needed anymore. Example:
 
-In other process execute the following:
-
-[import ../example/doc_named_allocB.cpp]
-[doc_named_allocB]
+[import ../example/doc_named_alloc.cpp]
+[doc_named_alloc]
 
 [endsect]
 
@@ -148,16 +138,19 @@
 mapped files. For example, we can construct STL-like containers in shared memory.
 To do this, we just need to create a special (managed) shared memory segment,
 declare a [*Boost.Interprocess] allocator and construct the vector in shared memory
-just if it was any other object. Just execute this first process:
-
-[import ../example/doc_contA.cpp]
-[doc_contA]
+just if it was any other object.
 
-After this process is executed we can search the constructed vector and use it with
-STL algorithms:
-
-[import ../example/doc_contB.cpp]
-[doc_contB]
+The class that allows this complex structures in shared memory is called
+[classref boost::interprocess::managed_shared_memory] and it's easy to use.
+Just execute this example without arguments:
+
+[import ../example/doc_spawn_vector.cpp]
+[doc_spawn_vector]
+
+The parent process will create an special shared memory class that allows easy construction
+of many complex data structures associated with a name. The parent process executes the same
+program with an additional argument so the child process opens the shared memory and uses
+the vector and erases it.
 
 [endsect]
 
@@ -498,16 +491,11 @@
 Let's see a simple example of shared memory use. A server process creates a
 shared memory object, maps it and initializes all the bytes to a value. After that,
 a client process opens the shared memory, maps it, and checks
-that the data is correctly initialized. This is the server process:
+that the data is correctly initialized:
 
 [import ../example/doc_shared_memory.cpp]
 [doc_shared_memory]
 
-Now the client process:
-
-[import ../example/doc_shared_memory2.cpp]
-[doc_shared_memory2]
-
 [endsect]
 
 [section:emulation Emulation for systems without shared memory objects]
@@ -521,12 +509,11 @@
    defined by POSIX (see [link interprocess.sharedmemorybetweenprocesses.sharedmemory.windows_shared_memory
    Native windows shared memory] section for more information).
 
-* Some UNIX systems don't support shared memory objects at all. MacOS is
- one of these operating systems.
+* Some UNIX systems don't fully support POSIX shared memory objects at all.
 
 In those platforms, shared memory is emulated with mapped files created
 in the temporary files directory. Because of this emulation, shared memory
-has filesystem lifetime in those systems.
+has filesystem lifetime in some of those systems.
 
 [endsect]
 
@@ -554,12 +541,9 @@
 shared memory object of this name exists (that is, trying to open an object
 with that name will fail and an object of the same name can be created again).
 
-In Windows operating systems, the function fails if the object is being used,
-so a programmer can't consider the UNIX behavior as the portable behavior:
-
-`shared_memory_object::remove` [*can] fail if the shared memory is still in use,
-but this does not mean that it [*will] fail if it's in use. Just the same
-behavior as the standard C (stdio.h) `int remove(const char *path)` function.
+In Windows operating systems, current version supports an usually acceptable emulation
+of the UNIX unlink behaviour: the file is randomly renamed and marked as to be deleted when
+the last open handle is closed.
 
 [endsect]
 
@@ -586,7 +570,6 @@
 
 [endsect]
 
-
 [section:windows_shared_memory Native windows shared memory]
 
 Windows operating system also offers shared memory, but the lifetime of this
@@ -624,20 +607,13 @@
 a client process opens the shared memory, maps it, and checks
 that the data is correctly initialized. Take in care that [*if the server exits before
 the client connects to the shared memory the client connection will fail], because
-the shared memory segment is destroyed when no processes are attached to the memory.
+the shared memory segment is destroyed when no proces is attached to the memory.
 
 This is the server process:
 
 [import ../example/doc_windows_shared_memory.cpp]
 [doc_windows_shared_memory]
 
-Now, before destroying the
-[classref boost::interprocess::windows_shared_memory windows_shared memory]
-object, launch the client process:
-
-[import ../example/doc_windows_shared_memory2.cpp]
-[doc_windows_shared_memory2]
-
 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.
 
@@ -801,16 +777,11 @@
 memory mapped files. A server process creates a shared
 memory segment, maps it and initializes all the bytes to a value. After that,
 a client process opens the shared memory, maps it, and checks
-that the data is correctly initialized. This is the server process:
+that the data is correctly initialized::
 
 [import ../example/doc_file_mapping.cpp]
 [doc_file_mapping]
 
-Now the client process:
-
-[import ../example/doc_file_mapping2.cpp]
-[doc_file_mapping2]
-
 [endsect]
 
 [endsect]
@@ -1478,17 +1449,17 @@
 This is the process main process. Creates the shared memory, constructs
 the cyclic buffer and start writing traces:
 
-[import ../example/doc_anonymous_mutexA.cpp]
+[import ../example/comp_doc_anonymous_mutexA.cpp]
 [doc_anonymous_mutexA]
 
 The second process opens the shared memory, obtains access to the cyclic buffer
 and starts writing traces:
 
-[import ../example/doc_anonymous_mutexB.cpp]
+[import ../example/comp_doc_anonymous_mutexB.cpp]
 [doc_anonymous_mutexB]
 
-As we can see, a mutex is useful to protect data but not to notify to another process
-an event. For this, we need a condition variable, as we will see in the next section.
+As we can see, a mutex is useful to protect data but not to notify an event to another
+process. For this, we need a condition variable, as we will see in the next section.
 
 [endsect]
 
@@ -1583,13 +1554,13 @@
 the buffer and starts writing messages one by one until it writes "last message"
 to indicate that there are no more messages to print:
 
-[import ../example/doc_anonymous_conditionA.cpp]
+[import ../example/comp_doc_anonymous_conditionA.cpp]
 [doc_anonymous_conditionA]
 
 The second process opens the shared memory and prints each message
 until the "last message" message is received:
 
-[import ../example/doc_anonymous_conditionB.cpp]
+[import ../example/comp_doc_anonymous_conditionB.cpp]
 [doc_anonymous_conditionB]
 
 With condition variables, a process can block if it can't continue the work,
@@ -1665,13 +1636,13 @@
 the integer array and starts integers one by one, blocking if the array
 is full:
 
-[import ../example/doc_anonymous_semaphoreA.cpp]
+[import ../example/comp_doc_anonymous_semaphoreA.cpp]
 [doc_anonymous_semaphoreA]
 
 The second process opens the shared memory and copies the received integers
 to it's own buffer:
 
-[import ../example/doc_anonymous_semaphoreB.cpp]
+[import ../example/comp_doc_anonymous_semaphoreB.cpp]
 [doc_anonymous_semaphoreB]
 
 The same interprocess communication can be achieved with a condition variables
@@ -2152,11 +2123,11 @@
 
 [/section:upgradable_mutexes_example Anonymous Upgradable Mutex Example]
 
-[/import ../example/doc_anonymous_upgradable_mutexA.cpp]
+[/import ../example/comp_doc_anonymous_upgradable_mutexA.cpp]
 [/doc_anonymous_upgradable_mutexA]
 
 
-[/import ../example/doc_anonymous_upgradable_mutexB.cpp]
+[/import ../example/comp_doc_anonymous_upgradable_mutexB.cpp]
 [/doc_anonymous_upgradable_mutexB]
 
 [/endsect]
@@ -2722,7 +2693,7 @@
 POSIX, when two file descriptors are used to lock a file if a descriptor is closed,
 all file locks set by the calling process are cleared.
 
-To sum up, if you plan to use file locking in your processes, use the following
+To sum up, if you plan to use portable file locking in your processes, use the following
 restrictions:
 
 * [*For each file, use a single `file_lock` object per process.]
@@ -2867,12 +2838,12 @@
 an array of integers on it. The other process just reads the array and checks that
 the sequence number is correct. This is the first process:
 
-[import ../example/doc_message_queueA.cpp]
+[import ../example/comp_doc_message_queueA.cpp]
 [doc_message_queueA]
 
 This is the second process:
 
-[import ../example/doc_message_queueB.cpp]
+[import ../example/comp_doc_message_queueB.cpp]
 [doc_message_queueB]
 
 To know more about this class and all its operations, please see the
@@ -3246,11 +3217,16 @@
    managed_mapped_file mfile (open_or_create, "MyMappedFile", //Mapped file name 65536); //Mapped file size
 When the `managed_mapped_file` object is destroyed, the file is
 automatically unmapped, and all the resources are freed. To remove
-the file from the filesystem you can use standard C `std::remove`
-or [*Boost.Filesystem]'s `remove()` functions. File removing might fail
+the file from the filesystem you could use standard C `std::remove`
+or [*Boost.Filesystem]'s `remove()` functions, but file removing might fail
 if any process still has the file mapped in memory or the file is open
 by any process.
 
+To obtain a more portable behaviour, use `file_mapping::remove(const char *)` operation, which
+will remove the file even if it's being mapped. However, removal will fail in some OS systems if
+the file (eg. by C++ file streams) and no delete share permission was granted to the file. But in
+most common cases `file_mapping::remove` is portable enough.
+
 [endsect]
 
 For more information about managed mapped file capabilities, see
@@ -3871,20 +3847,20 @@
 
 [c++]
 
- enum allocation_type
+ enum boost::interprocess::allocation_type
    {
       //Bitwise OR (|) combinable values
- allocate_new = ...,
- expand_fwd = ...,
- expand_bwd = ...,
- shrink_in_place = ...,
- nothrow_allocation = ...
+ boost::interprocess::allocate_new = ...,
+ boost::interprocess::expand_fwd = ...,
+ boost::interprocess::expand_bwd = ...,
+ boost::interprocess::shrink_in_place = ...,
+ boost::interprocess::nothrow_allocation = ...
    };
 
 
    template<class T>
    std::pair<T *, bool>
- allocation_command( allocation_type command
+ allocation_command( boost::interprocess::allocation_type command
                         , std::size_t limit_size
                         , std::size_t preferred_size
                         , std::size_t &received_size
@@ -3893,66 +3869,66 @@
 
 [*Preconditions for the function]:
 
-* If the parameter command contains the value `shrink_in_place` it can't
-contain any of these values: `expand_fwd`, `expand_bwd`.
+* If the parameter command contains the value `boost::interprocess::shrink_in_place` it can't
+contain any of these values: `boost::interprocess::expand_fwd`, `boost::interprocess::expand_bwd`.
 
-* If the parameter command contains `expand_fwd` or `expand_bwd`, the parameter
+* If the parameter command contains `boost::interprocess::expand_fwd` or `boost::interprocess::expand_bwd`, the parameter
    `reuse_ptr` must be non-null and returned by a previous allocation function.
 
-* If the parameter command contains the value `shrink_in_place`, the parameter
+* If the parameter command contains the value `boost::interprocess::shrink_in_place`, the parameter
    `limit_size` must be equal or greater than the parameter `preferred_size`.
 
-* If the parameter `command` contains any of these values: `expand_fwd` or `expand_bwd`,
+* If the parameter `command` contains any of these values: `boost::interprocess::expand_fwd` or `boost::interprocess::expand_bwd`,
    the parameter `limit_size` must be equal or less than the parameter `preferred_size`.
 
 [*Which are the effects of this function:]
 
-* If the parameter command contains the value `shrink_in_place`, the function
+* If the parameter command contains the value `boost::interprocess::shrink_in_place`, the function
    will try to reduce the size of the memory block referenced by pointer `reuse_ptr`
    to the value `preferred_size` moving only the end of the block.
    If it's not possible, it will try to reduce the size of the memory block as
    much as possible as long as this results in `size(p) <= limit_size`. Success
    is reported only if this results in `preferred_size <= size(p)` and `size(p) <= limit_size`.
 
-* If the parameter `command` only contains the value `expand_fwd` (with optional
- additional `nothrow_allocation`), the allocator will try to increase the size of the
+* If the parameter `command` only contains the value `boost::interprocess::expand_fwd` (with optional
+ additional `boost::interprocess::nothrow_allocation`), the allocator will try to increase the size of the
    memory block referenced by pointer reuse moving only the end of the block to the
    value `preferred_size`. If it's not possible, it will try to increase the size
    of the memory block as much as possible as long as this results in
    `size(p) >= limit_size`. Success is reported only if this results in `limit_size <= size(p)`.
 
-* If the parameter `command` only contains the value `expand_bwd` (with optional
- additional `nothrow_allocation`), the allocator will try to increase the size of
+* If the parameter `command` only contains the value `boost::interprocess::expand_bwd` (with optional
+ additional `boost::interprocess::nothrow_allocation`), the allocator will try to increase the size of
    the memory block referenced by pointer `reuse_ptr` only moving the start of the
    block to a returned new position `new_ptr`. If it's not possible, it will try to
    move the start of the block as much as possible as long as this results in
    `size(new_ptr) >= limit_size`. Success is reported only if this results in
    `limit_size <= size(new_ptr)`.
 
-* If the parameter `command` only contains the value `allocate_new` (with optional
- additional `nothrow_allocation`), the allocator will try to allocate memory for
+* If the parameter `command` only contains the value `boost::interprocess::allocate_new` (with optional
+ additional `boost::interprocess::nothrow_allocation`), the allocator will try to allocate memory for
    `preferred_size` objects. If it's not possible it will try to allocate memory for
    at least `limit_size` objects.
 
-* If the parameter `command` only contains a combination of `expand_fwd` and
- `allocate_new`, (with optional additional `nothrow_allocation`) the allocator will
+* If the parameter `command` only contains a combination of `boost::interprocess::expand_fwd` and
+ `boost::interprocess::allocate_new`, (with optional additional `boost::interprocess::nothrow_allocation`) the allocator will
    try first the forward expansion. If this fails, it would try a new allocation.
 
-* If the parameter `command` only contains a combination of `expand_bwd` and
- `allocate_new` (with optional additional `nothrow_allocation`), the allocator will
+* If the parameter `command` only contains a combination of `boost::interprocess::expand_bwd` and
+ `boost::interprocess::allocate_new` (with optional additional `boost::interprocess::nothrow_allocation`), the allocator will
    try first to obtain `preferred_size` objects using both methods if necessary.
    If this fails, it will try to obtain `limit_size` objects using both methods if
    necessary.
 
-* If the parameter `command` only contains a combination of `expand_fwd` and
- `expand_bwd` (with optional additional `nothrow_allocation`), the allocator will
+* If the parameter `command` only contains a combination of `boost::interprocess::expand_fwd` and
+ `boost::interprocess::expand_bwd` (with optional additional `boost::interprocess::nothrow_allocation`), the allocator will
    try first forward expansion. If this fails it will try to obtain preferred_size
    objects using backwards expansion or a combination of forward and backwards expansion.
    If this fails, it will try to obtain `limit_size` objects using both methods if
    necessary.
 
 * If the parameter `command` only contains a combination of allocation_new,
- `expand_fwd` and `expand_bwd`, (with optional additional `nothrow_allocation`)
+ `boost::interprocess::expand_fwd` and `boost::interprocess::expand_bwd`, (with optional additional `boost::interprocess::nothrow_allocation`)
    the allocator will try first forward expansion. If this fails it will try to obtain
    preferred_size objects using new allocation, backwards expansion or a combination of
    forward and backwards expansion. If this fails, it will try to obtain `limit_size`
@@ -3967,13 +3943,13 @@
 * The allocator is unable to allocate/expand/shrink the memory or there is an
    error in preconditions
 
-* The parameter command does not contain `nothrow_allocation`.
+* The parameter command does not contain `boost::interprocess::nothrow_allocation`.
 
 [*This function returns:]
 
 * The address of the allocated memory or the new address of the expanded memory
    as the first member of the pair. If the parameter command contains
- `nothrow_allocation` the first member will be 0
+ `boost::interprocess::nothrow_allocation` the first member will be 0
    if the allocation/expansion fails or there is an error in preconditions.
 
 * The second member of the pair will be false if the memory has been allocated,
@@ -5018,7 +4994,7 @@
 
 [endsect]
 
-[section:containers_and_move_semantics Move semantics in Interprocess containers]
+[section:containers_and_move Move semantics in Interprocess containers]
 
 [*Boost.Interprocess] containers support move semantics, which means that the contents
 of a container can be moved from a container two another one, without any copying. The
@@ -5030,7 +5006,7 @@
 
 
 To transfer the contents of a container to another one, use
-`boost::interprocess::move()` function, as shown in the example. For more details
+`boost::move()` function, as shown in the example. For more details
 about functions supporting move-semantics, see the reference section of
 Boost.Interprocess containers:
 
@@ -6541,13 +6517,35 @@
 
 [section:release_notes Release Notes]
 
+[section:release_notes_boost_1_39_00 Boost 1.39 Release]
+
+* Added experimental `stable_vector` container.
+* `shared_memory_object::remove` has now POSIX `unlink` semantics and
+ `file_mapping::remove` was added to obtain POSIX `unlink` semantics with mapped files.
+* Shared memory in windows has now kernel lifetime instead of filesystem lifetime: shared
+ memory will disappear when the system reboots.
+* Updated move semantics.
+* Fixed bugs
+ [@https://svn.boost.org/trac/boost/ticket/2722 #2722],
+ [@https://svn.boost.org/trac/boost/ticket/2729 #2729],
+ [@https://svn.boost.org/trac/boost/ticket/2766 #2766],
+ [@https://svn.boost.org/trac/boost/ticket/1390 #1390],
+ [@https://svn.boost.org/trac/boost/ticket/2589 #2589],
+
+[endsect]
+
 [section:release_notes_boost_1_38_00 Boost 1.38 Release]
 
 * Updated documentation to show rvalue-references funcions instead of emulation functions.
 * More non-copyable classes are now movable.
 * Move-constructor and assignments now leave moved object in default-constructed state
    instead of just swapping contents.
-* Several bugfixes (#2391, #2431, #1390, #2570, #2528).
+* Several bugfixes (
+ [@https://svn.boost.org/trac/boost/ticket/2391 #2391],
+ [@https://svn.boost.org/trac/boost/ticket/2431 #2431],
+ [@https://svn.boost.org/trac/boost/ticket/1390 #1390],
+ [@https://svn.boost.org/trac/boost/ticket/2570 #2570],
+ [@https://svn.boost.org/trac/boost/ticket/2528 #2528].
 
 [endsect]
 

Modified: branches/release/libs/interprocess/example/Jamfile.v2
==============================================================================
--- branches/release/libs/interprocess/example/Jamfile.v2 (original)
+++ branches/release/libs/interprocess/example/Jamfile.v2 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -19,7 +19,7 @@
 {
    local all_rules = ;
 
- for local fileb in [ glob *.cpp ]
+ for local fileb in [ glob comp*.cpp ]
    {
       all_rules += [ link $(fileb) /boost/thread//boost_thread
       : # additional args
@@ -28,6 +28,17 @@
       ] ;
    }
 
+ for local fileb in [ glob doc_*.cpp ]
+ {
+ all_rules += [ run $(fileb) /boost/thread//boost_thread
+ : # additional args
+ : # test-files
+ : # requirements
+ <toolset>acc:<linkflags>-lrt
+ <toolset>acc-pa_risc:<linkflags>-lrt
+ ] ;
+ }
+
    return $(all_rules) ;
 }
 

Modified: branches/release/libs/interprocess/example/doc_adaptive_pool.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_adaptive_pool.cpp (original)
+++ branches/release/libs/interprocess/example/doc_adaptive_pool.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -18,46 +18,44 @@
 
 int main ()
 {
- shared_memory_object::remove("MySharedMemory");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ //Create shared memory
+ managed_shared_memory segment(create_only,
+ "MySharedMemory", //segment name
+ 65536);
+
+ //Create a adaptive_pool that allocates ints from the managed segment
+ //The number of chunks per segment is the default value
+ typedef adaptive_pool<int, managed_shared_memory::segment_manager>
+ adaptive_pool_t;
+ adaptive_pool_t allocator_instance(segment.get_segment_manager());
+
+ //Create another adaptive_pool. Since the segment manager address
+ //is the same, this adaptive_pool will be
+ //attached to the same pool so "allocator_instance2" can deallocate
+ //nodes allocated by "allocator_instance"
+ adaptive_pool_t allocator_instance2(segment.get_segment_manager());
+
+ //Create another adaptive_pool using copy-constructor. This
+ //adaptive_pool will also be attached to the same pool
+ adaptive_pool_t allocator_instance3(allocator_instance2);
+
+ //All allocators are equal
+ assert(allocator_instance == allocator_instance2);
+ assert(allocator_instance2 == allocator_instance3);
+
+ //So memory allocated with one can be deallocated with another
+ allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
+ allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
 
- try{
- //Create shared memory
- managed_shared_memory segment(create_only,
- "MySharedMemory", //segment name
- 65536);
-
- //Create a adaptive_pool that allocates ints from the managed segment
- //The number of chunks per segment is the default value
- typedef adaptive_pool<int, managed_shared_memory::segment_manager>
- adaptive_pool_t;
- adaptive_pool_t allocator_instance(segment.get_segment_manager());
-
- //Create another adaptive_pool. Since the segment manager address
- //is the same, this adaptive_pool will be
- //attached to the same pool so "allocator_instance2" can deallocate
- //nodes allocated by "allocator_instance"
- adaptive_pool_t allocator_instance2(segment.get_segment_manager());
-
- //Create another adaptive_pool using copy-constructor. This
- //adaptive_pool will also be attached to the same pool
- adaptive_pool_t allocator_instance3(allocator_instance2);
-
- //All allocators are equal
- assert(allocator_instance == allocator_instance2);
- assert(allocator_instance2 == allocator_instance3);
-
- //So memory allocated with one can be deallocated with another
- allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
- allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
-
- //The common pool will be destroyed here, since no allocator is
- //attached to the pool
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
+ //The common pool will be destroyed here, since no allocator is
+ //attached to the pool
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_allocator.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_allocator.cpp (original)
+++ branches/release/libs/interprocess/example/doc_allocator.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -18,7 +18,12 @@
 
 int main ()
 {
- shared_memory_object::remove("MySharedMemory");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
 
    //Create shared memory
    managed_shared_memory segment(create_only,

Deleted: branches/release/libs/interprocess/example/doc_anonymous_conditionA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_conditionA.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,79 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-//[doc_anonymous_conditionA
-#include <boost/interprocess/shared_memory_object.hpp>
-#include <boost/interprocess/mapped_region.hpp>
-#include <boost/interprocess/sync/scoped_lock.hpp>
-#include <iostream>
-#include <cstdio>
-#include "doc_anonymous_condition_shared_data.hpp"
-
-using namespace boost::interprocess;
-
-int main ()
-{
-
- //Erase previous shared memory
- shared_memory_object::remove("shared_memory");
-
- //Create a shared memory object.
- shared_memory_object shm
- (create_only //only create
- ,"shared_memory" //name
- ,read_write //read-write mode
- );
- try{
- //Set size
- shm.truncate(sizeof(trace_queue));
-
- //Map the whole shared memory in this process
- mapped_region region
- (shm //What to map
- ,read_write //Map it as read-write
- );
-
- //Get the address of the mapped region
- void * addr = region.get_address();
-
- //Construct the shared structure in memory
- trace_queue * data = new (addr) trace_queue;
-
- const int NumMsg = 100;
-
- for(int i = 0; i < NumMsg; ++i){
- scoped_lock<interprocess_mutex> lock(data->mutex);
- if(data->message_in){
- data->cond_full.wait(lock);
- }
- if(i == (NumMsg-1))
- std::sprintf(data->items, "%s", "last message");
- else
- std::sprintf(data->items, "%s_%d", "my_trace", i);
-
- //Notify to the other process that there is a message
- data->cond_empty.notify_one();
-
- //Mark message buffer as full
- data->message_in = true;
- }
- }
- catch(interprocess_exception &ex){
- shared_memory_object::remove("shared_memory");
- std::cout << ex.what() << std::endl;
- return 1;
- }
-
- //Erase shared memory
- shared_memory_object::remove("shared_memory");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_anonymous_conditionB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_conditionB.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,74 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-//[doc_anonymous_conditionB
-#include <boost/interprocess/shared_memory_object.hpp>
-#include <boost/interprocess/mapped_region.hpp>
-#include <boost/interprocess/sync/scoped_lock.hpp>
-#include <iostream>
-#include <cstring>
-#include "doc_anonymous_condition_shared_data.hpp"
-
-using namespace boost::interprocess;
-
-int main ()
-{
- //Create a shared memory object.
- shared_memory_object shm
- (open_only //only create
- ,"shared_memory" //name
- ,read_write //read-write mode
- );
-
- try{
- //Map the whole shared memory in this process
- mapped_region region
- (shm //What to map
- ,read_write //Map it as read-write
- );
-
- //Get the address of the mapped region
- void * addr = region.get_address();
-
- //Obtain a pointer to the shared structure
- trace_queue * data = static_cast<trace_queue*>(addr);
-
- //Print messages until the other process marks the end
- bool end_loop = false;
- do{
- scoped_lock<interprocess_mutex> lock(data->mutex);
- if(!data->message_in){
- data->cond_empty.wait(lock);
- }
- if(std::strcmp(data->items, "last message") == 0){
- end_loop = true;
- }
- else{
- //Print the message
- std::cout << data->items << std::endl;
- //Notify the other process that the buffer is empty
- data->message_in = false;
- data->cond_full.notify_one();
- }
- }
- while(!end_loop);
- }
- catch(interprocess_exception &ex){
- shared_memory_object::remove("shared_memory");
- std::cout << ex.what() << std::endl;
- return 1;
- }
-
- //Erase shared memory
- shared_memory_object::remove("shared_memory");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_anonymous_mutexA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_mutexA.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,77 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-//[doc_anonymous_mutexA
-#include <boost/interprocess/shared_memory_object.hpp>
-#include <boost/interprocess/mapped_region.hpp>
-#include <boost/interprocess/sync/scoped_lock.hpp>
-#include "doc_anonymous_mutex_shared_data.hpp"
-#include <iostream>
-#include <cstdio>
-
-using namespace boost::interprocess;
-
-int main ()
-{
- try{
- //Erase previous shared memory
- shared_memory_object::remove("shared_memory");
-
- //Create a shared memory object.
- shared_memory_object shm
- (create_only //only create
- ,"shared_memory" //name
- ,read_write //read-write mode
- );
-
- //Set size
- shm.truncate(sizeof(shared_memory_log));
-
- //Map the whole shared memory in this process
- mapped_region region
- (shm //What to map
- ,read_write //Map it as read-write
- );
-
- //Get the address of the mapped region
- void * addr = region.get_address();
-
- //Construct the shared structure in memory
- shared_memory_log * data = new (addr) shared_memory_log;
-
- //Write some logs
- for(int i = 0; i < shared_memory_log::NumItems; ++i){
- //Lock the mutex
- scoped_lock<interprocess_mutex> lock(data->mutex);
- std::sprintf(data->items[(data->current_line++) % shared_memory_log::NumItems]
- ,"%s_%d", "process_a", i);
- if(i == (shared_memory_log::NumItems-1))
- data->end_a = true;
- //Mutex is released here
- }
-
- //Wait until the other process ends
- while(1){
- scoped_lock<interprocess_mutex> lock(data->mutex);
- if(data->end_b)
- break;
- }
- }
- catch(interprocess_exception &ex){
- shared_memory_object::remove("shared_memory");
- std::cout << ex.what() << std::endl;
- return 1;
- }
- //Erase shared memory
- shared_memory_object::remove("shared_memory");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_anonymous_mutexB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_mutexB.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,70 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-//[doc_anonymous_mutexB
-#include <boost/interprocess/shared_memory_object.hpp>
-#include <boost/interprocess/mapped_region.hpp>
-#include <boost/interprocess/sync/scoped_lock.hpp>
-#include "doc_anonymous_mutex_shared_data.hpp"
-#include <iostream>
-#include <cstdio>
-
-using namespace boost::interprocess;
-
-int main ()
-{
- try{
- //Open the shared memory object.
- shared_memory_object shm
- (open_only //only create
- ,"shared_memory" //name
- ,read_write //read-write mode
- );
-
- //Map the whole shared memory in this process
- mapped_region region
- (shm //What to map
- ,read_write //Map it as read-write
- );
-
- //Get the address of the mapped region
- void * addr = region.get_address();
-
- //Construct the shared structure in memory
- shared_memory_log * data = static_cast<shared_memory_log*>(addr);
-
- //Write some logs
- for(int i = 0; i < 100; ++i){
- //Lock the mutex
- scoped_lock<interprocess_mutex> lock(data->mutex);
- std::sprintf(data->items[(data->current_line++) % shared_memory_log::NumItems]
- ,"%s_%d", "process_a", i);
- if(i == (shared_memory_log::NumItems-1))
- data->end_b = true;
- //Mutex is released here
- }
-
- //Wait until the other process ends
- while(1){
- scoped_lock<interprocess_mutex> lock(data->mutex);
- if(data->end_a)
- break;
- }
- }
- catch(interprocess_exception &ex){
- shared_memory_object::remove("shared_memory");
- std::cout << ex.what() << std::endl;
- return 1;
- }
- shared_memory_object::remove("shared_memory");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_anonymous_semaphoreA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_semaphoreA.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,70 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-//[doc_anonymous_semaphoreA
-#include <boost/interprocess/shared_memory_object.hpp>
-#include <boost/interprocess/mapped_region.hpp>
-#include <iostream>
-#include "doc_anonymous_semaphore_shared_data.hpp"
-
-using namespace boost::interprocess;
-
-int main ()
-{
- try{
- //Erase previous shared memory
- shared_memory_object::remove("shared_memory");
-
- //Create a shared memory object.
- shared_memory_object shm
- (create_only //only create
- ,"shared_memory" //name
- ,read_write //read-write mode
- );
-
- //Set size
- shm.truncate(sizeof(shared_memory_buffer));
-
- //Map the whole shared memory in this process
- mapped_region region
- (shm //What to map
- ,read_write //Map it as read-write
- );
-
- //Get the address of the mapped region
- void * addr = region.get_address();
-
- //Construct the shared structure in memory
- shared_memory_buffer * data = new (addr) shared_memory_buffer;
-
- const int NumMsg = 100;
-
- //Insert data in the array
- for(int i = 0; i < NumMsg; ++i){
- data->nempty.wait();
- data->mutex.wait();
- data->items[i % shared_memory_buffer::NumItems] = i;
- data->mutex.post();
- data->nstored.post();
- }
- }
- catch(interprocess_exception &ex){
- shared_memory_object::remove("shared_memory");
- std::cout << ex.what() << std::endl;
- return 1;
- }
-
- //Erase shared memory
- shared_memory_object::remove("shared_memory");
-
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_anonymous_semaphoreB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_semaphoreB.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,66 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-//[doc_anonymous_semaphoreB
-#include <boost/interprocess/shared_memory_object.hpp>
-#include <boost/interprocess/mapped_region.hpp>
-#include <iostream>
-#include "doc_anonymous_semaphore_shared_data.hpp"
-
-using namespace boost::interprocess;
-
-int main ()
-{
- try{
- //Create a shared memory object.
- shared_memory_object shm
- (open_only //only create
- ,"shared_memory" //name
- ,read_write //read-write mode
- );
-
- //Map the whole shared memory in this process
- mapped_region region
- (shm //What to map
- ,read_write //Map it as read-write
- );
-
- //Get the address of the mapped region
- void * addr = region.get_address();
-
- //Obtain the shared structure
- shared_memory_buffer * data = static_cast<shared_memory_buffer*>(addr);
-
- const int NumMsg = 100;
-
- int extracted_data [NumMsg];
-
- //Extract the data
- for(int i = 0; i < NumMsg; ++i){
- data->nstored.wait();
- data->mutex.wait();
- extracted_data[i] = data->items[i % shared_memory_buffer::NumItems];
- data->mutex.post();
- data->nempty.post();
- }
- }
- catch(interprocess_exception &ex){
- shared_memory_object::remove("shared_memory");
- std::cout << ex.what() << std::endl;
- return 1;
- }
-
- //Erase shared memory
- shared_memory_object::remove("shared_memory");
-
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_anonymous_upgradable_mutexA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_upgradable_mutexA.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,79 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-//[doc_anonymous_upgradable_mutexA
-#include <boost/interprocess/shared_memory_object.hpp>
-#include <boost/interprocess/mapped_region.hpp>
-#include <boost/interprocess/sync/scoped_lock.hpp>
-#include "doc_upgradable_mutex_shared_data.hpp"
-#include <iostream>
-#include <cstdio>
-
-using namespace boost::interprocess;
-
-int main ()
-{
- try{
- //Erase previous shared memory
- shared_memory_object::remove("shared_memory");
-
- //Create a shared memory object.
- shared_memory_object shm
- (create_only //only create
- ,"shared_memory" //name
- ,read_write //read-write mode
- );
-
- //Set size
- shm.truncate(sizeof(shared_data));
-
- //Map the whole shared memory in this process
- mapped_region region
- (shm //What to map
- ,read_write //Map it as read-write
- );
-
- //Get the address of the mapped region
- void * addr = region.get_address();
-
- //Construct the shared structure in memory
- shared_data * data = new (addr) shared_data;
-
- //Write some logs
- for(int i = 0; i < shared_data::NumItems; ++i){
- //Lock the upgradable_mutex
- scoped_lock<interprocess_upgradable_mutex> lock(data->upgradable_mutex);
- std::sprintf(data->items[(data->current_line++) % shared_data::NumItems]
- ,"%s_%d", "process_a", i);
- if(i == (shared_data::NumItems-1))
- data->end_a = true;
- //Mutex is released here
- }
-
- //Wait until the other process ends
- while(1){
- scoped_lock<interprocess_upgradable_mutex> lock(data->upgradable_mutex);
- if(data->end_b)
- break;
- }
- }
- catch(interprocess_exception &ex){
- shared_memory_object::remove("shared_memory");
- std::cout << ex.what() << std::endl;
- return 1;
- }
-
- //Erase shared memory
- shared_memory_object::remove("shared_memory");
-
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_anonymous_upgradable_mutexB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_upgradable_mutexB.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,72 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-
-//[doc_anonymous_upgradable_mutexB
-#include <boost/interprocess/shared_memory_object.hpp>
-#include <boost/interprocess/mapped_region.hpp>
-#include <boost/interprocess/sync/scoped_lock.hpp>
-#include "doc_upgradable_mutex_shared_data.hpp"
-#include <iostream>
-#include <cstdio>
-
-using namespace boost::interprocess;
-
-int main ()
-{
- try{
- //Open the shared memory object.
- shared_memory_object shm
- (open_only //only create
- ,"shared_memory" //name
- ,read_write //read-write mode
- );
-
- //Map the whole shared memory in this process
- mapped_region region
- (shm //What to map
- ,read_write //Map it as read-write
- );
-
- //Get the address of the mapped region
- void * addr = region.get_address();
-
- //Construct the shared structure in memory
- shared_data * data = static_cast<shared_data*>(addr);
-
- //Write some logs
- for(int i = 0; i < 100; ++i){
- //Lock the upgradable_mutex
- scoped_lock<interprocess_upgradable_mutex> lock(data->upgradable_mutex);
- std::sprintf(data->items[(data->current_line++) % shared_data::NumItems]
- ,"%s_%d", "process_a", i);
- if(i == (shared_data::NumItems-1))
- data->end_b = true;
- //Mutex is released here
- }
-
- //Wait until the other process ends
- while(1){
- scoped_lock<interprocess_upgradable_mutex> lock(data->upgradable_mutex);
- if(data->end_a)
- break;
- }
- }
- catch(interprocess_exception &ex){
- shared_memory_object::remove("shared_memory");
- std::cout << ex.what() << std::endl;
- return 1;
- }
- shared_memory_object::remove("shared_memory");
- return 0;
-}
-//]
-
-#include <boost/interprocess/detail/config_end.hpp>

Modified: branches/release/libs/interprocess/example/doc_bufferstream.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_bufferstream.cpp (original)
+++ branches/release/libs/interprocess/example/doc_bufferstream.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -14,72 +14,73 @@
 #include <boost/interprocess/streams/bufferstream.hpp>
 #include <vector>
 #include <iterator>
+#include <cstddef>
 
 using namespace boost::interprocess;
 
 int main ()
 {
- shared_memory_object::remove("MySharedMemory");
- try{
- //Create shared memory
- managed_shared_memory segment(create_only,
- "MySharedMemory", //segment name
- 65536);
-
- //Fill data
- std::vector<int> data, data2;
- data.reserve(100);
- for(int i = 0; i < 100; ++i){
- data.push_back(i);
- }
-
- //Allocate a buffer in shared memory to write data
- char *my_cstring =
- segment.construct<char>("MyCString")[100*5](0);
- bufferstream mybufstream(my_cstring, 100*5);
-
- //Now write data to the buffer
- for(int i = 0; i < 100; ++i){
- mybufstream << data[i] << std::endl;
- }
-
- //Check there was no overflow attempt
- assert(mybufstream.good());
-
- //Extract all values from the shared memory string
- //directly to a vector.
- data2.reserve(100);
- std::istream_iterator<int> it(mybufstream), itend;
- std::copy(it, itend, std::back_inserter(data2));
-
- //This extraction should have ended will fail error since
- //the numbers formatted in the buffer end before the end
- //of the buffer. (Otherwise it would trigger eofbit)
- assert(mybufstream.fail());
-
- //Compare data
- assert(std::equal(data.begin(), data.end(), data2.begin()));
-
- //Clear errors and rewind
- mybufstream.clear();
- mybufstream.seekp(0, std::ios::beg);
-
- //Now write again the data trying to do a buffer overflow
- for(int i = 0; i < 500; ++i){
- mybufstream << data[i] << std::endl;
- }
-
- //Now make sure badbit is active
- //which means overflow attempt.
- assert(!mybufstream.good());
- assert(mybufstream.bad());
- segment.destroy_ptr(my_cstring);
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ //Create shared memory
+ managed_shared_memory segment(create_only,
+ "MySharedMemory", //segment name
+ 65536);
+
+ //Fill data
+ std::vector<int> data;
+ data.reserve(100);
+ for(int i = 0; i < 100; ++i){
+ data.push_back(i);
    }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
+ const std::size_t BufferSize = 100*5;
+
+ //Allocate a buffer in shared memory to write data
+ char *my_cstring =
+ segment.construct<char>("MyCString")[BufferSize](0);
+ bufferstream mybufstream(my_cstring, BufferSize);
+
+ //Now write data to the buffer
+ for(int i = 0; i < 100; ++i){
+ mybufstream << data[i] << std::endl;
    }
- shared_memory_object::remove("MySharedMemory");
+
+ //Check there was no overflow attempt
+ assert(mybufstream.good());
+
+ //Extract all values from the shared memory string
+ //directly to a vector.
+ std::vector<int> data2;
+ std::istream_iterator<int> it(mybufstream), itend;
+ std::copy(it, itend, std::back_inserter(data2));
+
+ //This extraction should have ended will fail error since
+ //the numbers formatted in the buffer end before the end
+ //of the buffer. (Otherwise it would trigger eofbit)
+ assert(mybufstream.fail());
+
+ //Compare data
+ assert(std::equal(data.begin(), data.end(), data2.begin()));
+
+ //Clear errors and rewind
+ mybufstream.clear();
+ mybufstream.seekp(0, std::ios::beg);
+
+ //Now write again the data trying to do a buffer overflow
+ for(int i = 0, m = data.size()*5; i < m; ++i){
+ mybufstream << data[i%5] << std::endl;
+ }
+
+ //Now make sure badbit is active
+ //which means overflow attempt.
+ assert(!mybufstream.good());
+ assert(mybufstream.bad());
+ segment.destroy_ptr(my_cstring);
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_cached_adaptive_pool.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_cached_adaptive_pool.cpp (original)
+++ branches/release/libs/interprocess/example/doc_cached_adaptive_pool.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -18,54 +18,53 @@
 
 int main ()
 {
- shared_memory_object::remove("MySharedMemory");
- try{
- //Create shared memory
- managed_shared_memory segment(create_only,
- "MySharedMemory", //segment name
- 65536);
-
- //Create a cached_adaptive_pool that allocates ints from the managed segment
- //The number of chunks per segment is the default value
- typedef cached_adaptive_pool<int, managed_shared_memory::segment_manager>
- cached_adaptive_pool_t;
- cached_adaptive_pool_t allocator_instance(segment.get_segment_manager());
-
- //The max cached nodes are configurable per instance
- allocator_instance.set_max_cached_nodes(3);
-
- //Create another cached_adaptive_pool. Since the segment manager address
- //is the same, this cached_adaptive_pool will be
- //attached to the same pool so "allocator_instance2" can deallocate
- //nodes allocated by "allocator_instance"
- cached_adaptive_pool_t allocator_instance2(segment.get_segment_manager());
-
- //The max cached nodes are configurable per instance
- allocator_instance2.set_max_cached_nodes(5);
-
- //Create another cached_adaptive_pool using copy-constructor. This
- //cached_adaptive_pool will also be attached to the same pool
- cached_adaptive_pool_t allocator_instance3(allocator_instance2);
-
- //We can clear the cache
- allocator_instance3.deallocate_cache();
-
- //All allocators are equal
- assert(allocator_instance == allocator_instance2);
- assert(allocator_instance2 == allocator_instance3);
-
- //So memory allocated with one can be deallocated with another
- allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
- allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
-
- //The common pool will be destroyed here, since no allocator is
- //attached to the pool
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ //Create shared memory
+ managed_shared_memory segment(create_only,
+ "MySharedMemory", //segment name
+ 65536);
+
+ //Create a cached_adaptive_pool that allocates ints from the managed segment
+ //The number of chunks per segment is the default value
+ typedef cached_adaptive_pool<int, managed_shared_memory::segment_manager>
+ cached_adaptive_pool_t;
+ cached_adaptive_pool_t allocator_instance(segment.get_segment_manager());
+
+ //The max cached nodes are configurable per instance
+ allocator_instance.set_max_cached_nodes(3);
+
+ //Create another cached_adaptive_pool. Since the segment manager address
+ //is the same, this cached_adaptive_pool will be
+ //attached to the same pool so "allocator_instance2" can deallocate
+ //nodes allocated by "allocator_instance"
+ cached_adaptive_pool_t allocator_instance2(segment.get_segment_manager());
+
+ //The max cached nodes are configurable per instance
+ allocator_instance2.set_max_cached_nodes(5);
+
+ //Create another cached_adaptive_pool using copy-constructor. This
+ //cached_adaptive_pool will also be attached to the same pool
+ cached_adaptive_pool_t allocator_instance3(allocator_instance2);
+
+ //We can clear the cache
+ allocator_instance3.deallocate_cache();
+
+ //All allocators are equal
+ assert(allocator_instance == allocator_instance2);
+ assert(allocator_instance2 == allocator_instance3);
+
+ //So memory allocated with one can be deallocated with another
+ allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
+ allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
+
+ //The common pool will be destroyed here, since no allocator is
+ //attached to the pool
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_cached_node_allocator.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_cached_node_allocator.cpp (original)
+++ branches/release/libs/interprocess/example/doc_cached_node_allocator.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -18,54 +18,53 @@
 
 int main ()
 {
- shared_memory_object::remove("MySharedMemory");
- try{
- //Create shared memory
- managed_shared_memory segment(create_only,
- "MySharedMemory", //segment name
- 65536);
-
- //Create a cached_node_allocator that allocates ints from the managed segment
- //The number of chunks per segment is the default value
- typedef cached_node_allocator<int, managed_shared_memory::segment_manager>
- cached_node_allocator_t;
- cached_node_allocator_t allocator_instance(segment.get_segment_manager());
-
- //The max cached nodes are configurable per instance
- allocator_instance.set_max_cached_nodes(3);
-
- //Create another cached_node_allocator. Since the segment manager address
- //is the same, this cached_node_allocator will be
- //attached to the same pool so "allocator_instance2" can deallocate
- //nodes allocated by "allocator_instance"
- cached_node_allocator_t allocator_instance2(segment.get_segment_manager());
-
- //The max cached nodes are configurable per instance
- allocator_instance2.set_max_cached_nodes(5);
-
- //Create another cached_node_allocator using copy-constructor. This
- //cached_node_allocator will also be attached to the same pool
- cached_node_allocator_t allocator_instance3(allocator_instance2);
-
- //We can clear the cache
- allocator_instance3.deallocate_cache();
-
- //All allocators are equal
- assert(allocator_instance == allocator_instance2);
- assert(allocator_instance2 == allocator_instance3);
-
- //So memory allocated with one can be deallocated with another
- allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
- allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
-
- //The common pool will be destroyed here, since no allocator is
- //attached to the pool
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ //Create shared memory
+ managed_shared_memory segment(create_only,
+ "MySharedMemory", //segment name
+ 65536);
+
+ //Create a cached_node_allocator that allocates ints from the managed segment
+ //The number of chunks per segment is the default value
+ typedef cached_node_allocator<int, managed_shared_memory::segment_manager>
+ cached_node_allocator_t;
+ cached_node_allocator_t allocator_instance(segment.get_segment_manager());
+
+ //The max cached nodes are configurable per instance
+ allocator_instance.set_max_cached_nodes(3);
+
+ //Create another cached_node_allocator. Since the segment manager address
+ //is the same, this cached_node_allocator will be
+ //attached to the same pool so "allocator_instance2" can deallocate
+ //nodes allocated by "allocator_instance"
+ cached_node_allocator_t allocator_instance2(segment.get_segment_manager());
+
+ //The max cached nodes are configurable per instance
+ allocator_instance2.set_max_cached_nodes(5);
+
+ //Create another cached_node_allocator using copy-constructor. This
+ //cached_node_allocator will also be attached to the same pool
+ cached_node_allocator_t allocator_instance3(allocator_instance2);
+
+ //We can clear the cache
+ allocator_instance3.deallocate_cache();
+
+ //All allocators are equal
+ assert(allocator_instance == allocator_instance2);
+ assert(allocator_instance2 == allocator_instance3);
+
+ //So memory allocated with one can be deallocated with another
+ allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
+ allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
+
+ //The common pool will be destroyed here, since no allocator is
+ //attached to the pool
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_complex_map.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_complex_map.cpp (original)
+++ branches/release/libs/interprocess/example/doc_complex_map.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -52,28 +52,31 @@
 
 int main ()
 {
- shared_memory_object::remove("MySharedMemory");
- remove_shared_memory_on_destroy remove_on_destroy("MySharedMemory");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
    {
- //Create shared memory
- managed_shared_memory segment(create_only,"MySharedMemory", 65536);
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
 
- //An allocator convertible to any allocator<T, segment_manager_t> type
- void_allocator alloc_inst (segment.get_segment_manager());
+ //Create shared memory
+ managed_shared_memory segment(create_only,"MySharedMemory", 65536);
 
- //Construct the shared memory map and fill it
- complex_map_type *mymap = segment.construct<complex_map_type>
- //(object name), (first ctor parameter, second ctor parameter)
- ("MyMap")(std::less<char_string>(), alloc_inst);
+ //An allocator convertible to any allocator<T, segment_manager_t> type
+ void_allocator alloc_inst (segment.get_segment_manager());
 
- for(int i = 0; i < 100; ++i){
- //Both key(string) and value(complex_data) need an allocator in their constructors
- char_string key_object(alloc_inst);
- complex_data mapped_object(i, "default_name", alloc_inst);
- map_value_type value(key_object, mapped_object);
- //Modify values and insert them in the map
- mymap->insert(value);
- }
+ //Construct the shared memory map and fill it
+ complex_map_type *mymap = segment.construct<complex_map_type>
+ //(object name), (first ctor parameter, second ctor parameter)
+ ("MyMap")(std::less<char_string>(), alloc_inst);
+
+ for(int i = 0; i < 100; ++i){
+ //Both key(string) and value(complex_data) need an allocator in their constructors
+ char_string key_object(alloc_inst);
+ complex_data mapped_object(i, "default_name", alloc_inst);
+ map_value_type value(key_object, mapped_object);
+ //Modify values and insert them in the map
+ mymap->insert(value);
    }
    return 0;
 }

Modified: branches/release/libs/interprocess/example/doc_cont.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_cont.cpp (original)
+++ branches/release/libs/interprocess/example/doc_cont.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -17,48 +17,47 @@
 int main ()
 {
    using namespace boost::interprocess;
- shared_memory_object::remove("MySharedMemory");
- try{
- //A managed shared memory where we can construct objects
- //associated with a c-string
- managed_shared_memory segment(create_only,
- "MySharedMemory", //segment name
- 65536);
-
- //Alias an STL-like allocator of ints that allocates ints from the segment
- typedef allocator<int, managed_shared_memory::segment_manager>
- ShmemAllocator;
-
- //Alias a vector that uses the previous STL-like allocator
- typedef vector<int, ShmemAllocator> MyVector;
-
- int initVal[] = {0, 1, 2, 3, 4, 5, 6 };
- const int *begVal = initVal;
- const int *endVal = initVal + sizeof(initVal)/sizeof(initVal[0]);
-
- //Initialize the STL-like allocator
- const ShmemAllocator alloc_inst (segment.get_segment_manager());
-
- //Construct the vector in the shared memory segment with the STL-like allocator
- //from a range of iterators
- MyVector *myvector =
- segment.construct<MyVector>
- ("MyVector")/*object name*/
- (begVal /*first ctor parameter*/,
- endVal /*second ctor parameter*/,
- alloc_inst /*third ctor parameter*/);
-
- //Use vector as your want
- std::sort(myvector->rbegin(), myvector->rend());
- // . . .
- //When done, destroy and delete vector from the segment
- segment.destroy<MyVector>("MyVector");
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ //A managed shared memory where we can construct objects
+ //associated with a c-string
+ managed_shared_memory segment(create_only,
+ "MySharedMemory", //segment name
+ 65536);
+
+ //Alias an STL-like allocator of ints that allocates ints from the segment
+ typedef allocator<int, managed_shared_memory::segment_manager>
+ ShmemAllocator;
+
+ //Alias a vector that uses the previous STL-like allocator
+ typedef vector<int, ShmemAllocator> MyVector;
+
+ int initVal[] = {0, 1, 2, 3, 4, 5, 6 };
+ const int *begVal = initVal;
+ const int *endVal = initVal + sizeof(initVal)/sizeof(initVal[0]);
+
+ //Initialize the STL-like allocator
+ const ShmemAllocator alloc_inst (segment.get_segment_manager());
+
+ //Construct the vector in the shared memory segment with the STL-like allocator
+ //from a range of iterators
+ MyVector *myvector =
+ segment.construct<MyVector>
+ ("MyVector")/*object name*/
+ (begVal /*first ctor parameter*/,
+ endVal /*second ctor parameter*/,
+ alloc_inst /*third ctor parameter*/);
+
+ //Use vector as your want
+ std::sort(myvector->rbegin(), myvector->rend());
+ // . . .
+ //When done, destroy and delete vector from the segment
+ segment.destroy<MyVector>("MyVector");
    return 0;
 }
 //]

Deleted: branches/release/libs/interprocess/example/doc_contA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_contA.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,60 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/interprocess/detail/workaround.hpp>
-//[doc_contA
-#include <boost/interprocess/managed_shared_memory.hpp>
-#include <boost/interprocess/containers/vector.hpp>
-#include <boost/interprocess/allocators/allocator.hpp>
-
-int main ()
-{
- using namespace boost::interprocess;
- try{
- //Shared memory front-end that is able to construct objects
- //associated with a c-string. Erase previous shared memory with the name
- //to be used and create the memory segment at the specified address and initialize resources
- shared_memory_object::remove("MySharedMemory");
- managed_shared_memory segment
- (create_only
- ,"MySharedMemory" //segment name
- ,65536); //segment size in bytes
-
- //Alias an STL compatible allocator of ints that allocates ints from the managed
- //shared memory segment. This allocator will allow to place containers
- //in managed shared memory segments
- typedef allocator<int, managed_shared_memory::segment_manager>
- ShmemAllocator;
-
- //Alias a vector that uses the previous STL-like allocator
- typedef vector<int, ShmemAllocator> MyVector;
-
- //Initialize shared memory STL-compatible allocator
- const ShmemAllocator alloc_inst (segment.get_segment_manager());
-
- //Construct a shared memory
- MyVector *myvector =
- segment.construct<MyVector>("MyVector") //object name
- (alloc_inst);//first ctor parameter
-
- //Insert data in the vector
- for(int i = 0; i < 100; ++i){
- myvector->push_back(i);
- }
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_contB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_contB.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,57 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/interprocess/detail/workaround.hpp>
-//[doc_contB
-#include <boost/interprocess/managed_shared_memory.hpp>
-#include <boost/interprocess/containers/vector.hpp>
-#include <boost/interprocess/allocators/allocator.hpp>
-#include <algorithm>
-
-int main ()
-{
- using namespace boost::interprocess;
- try{
- //A special shared memory where we can
- //construct objects associated with a name.
- //Connect to the already created shared memory segment
- //and initialize needed resources
- managed_shared_memory segment
- (open_only
- ,"MySharedMemory"); //segment name
-
- //Alias an STL compatible allocator of ints that allocates ints from the managed
- //shared memory segment. This allocator will allow to place containers
- //in managed shared memory segments
- typedef allocator<int, managed_shared_memory::segment_manager>
- ShmemAllocator;
-
- //Alias a vector that uses the previous STL-like allocator
- typedef vector<int, ShmemAllocator> MyVector;
-
- //Find the vector using the c-string name
- MyVector *myvector = segment.find<MyVector>("MyVector").first;
-
- //Use vector in reverse order
- std::sort(myvector->rbegin(), myvector->rend());
- // . . .
-
- //When done, destroy the vector from the segment
- segment.destroy<MyVector>("MyVector");
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Modified: branches/release/libs/interprocess/example/doc_file_mapping.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_file_mapping.cpp (original)
+++ branches/release/libs/interprocess/example/doc_file_mapping.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -13,35 +13,36 @@
 #include <boost/interprocess/mapped_region.hpp>
 #include <iostream>
 #include <fstream>
+#include <string>
+#include <vector>
 #include <cstring>
 #include <cstddef>
-#include <cstdio> //std::remove
+#include <cstdlib>
 
-int main ()
+int main(int argc, char *argv[])
 {
    using namespace boost::interprocess;
- try{
- //Create a file
- std::filebuf fbuf;
- fbuf.open("file.bin", std::ios_base::in | std::ios_base::out
- | std::ios_base::trunc | std::ios_base::binary);
-
- //Set the size
- fbuf.pubseekoff(9999, std::ios_base::beg);
- fbuf.sputc(0);
- fbuf.close();
+ const std::size_t FileSize = 10000;
+ if(argc == 1){ //Parent process executes this
+ { //Create a file
+ std::filebuf fbuf;
+ fbuf.open("file.bin", std::ios_base::in | std::ios_base::out
+ | std::ios_base::trunc | std::ios_base::binary);
+ //Set the size
+ fbuf.pubseekoff(FileSize-1, std::ios_base::beg);
+ fbuf.sputc(0);
+ }
+ //Remove file on exit
+ struct file_remove
+ {
+ ~file_remove (){ file_mapping::remove("file.bin"); }
+ } destroy_on_exit;
 
- //Create a file mapping.
+ //Create a file mapping
       file_mapping m_file("file.bin", read_write);
 
- //Map the whole file in this process
- mapped_region region
- (m_file //What to map
- ,read_write //Map it as read-write
- );
-
- if(region.get_size() != 10000)
- return 1;
+ //Map the whole file with read-write permissions in this process
+ mapped_region region(m_file, read_write);
 
       //Get the address of the mapped region
       void * addr = region.get_address();
@@ -50,12 +51,42 @@
       //Write all the memory to 1
       std::memset(addr, 1, size);
 
+ //Launch child process
+ std::string s(argv[0]); s += " child";
+ if(0 != std::system(s.c_str()))
+ return 1;
    }
- catch(interprocess_exception &ex){
- std::remove("file.bin");
- std::cout << ex.what() << std::endl;
- return 1;
+ else{ //Child process executes this
+ { //Open the file mapping and map it as read-only
+ file_mapping m_file ("file.bin", read_only);
+ mapped_region region(m_file, read_only);
+
+ //Get the address of the mapped region
+ void * addr = region.get_address();
+ std::size_t size = region.get_size();
+
+ //Check that memory was initialized to 1
+ const char *mem = static_cast<char*>(addr);
+ for(std::size_t i = 0; i < size; ++i)
+ if(*mem++ != 1)
+ return 1; //Error checking memory
+ }
+ { //Now test it reading the file
+ std::filebuf fbuf;
+ fbuf.open("file.bin", std::ios_base::in | std::ios_base::binary);
+
+ //Read it to memory
+ std::vector<char> vect(FileSize, 0);
+ fbuf.sgetn(&vect[0], std::streamsize(vect.size()));
+
+ //Check that memory was initialized to 1
+ const char *mem = static_cast<char*>(&vect[0]);
+ for(std::size_t i = 0; i < FileSize; ++i)
+ if(*mem++ != 1)
+ return 1; //Error checking memory
+ }
    }
+
    return 0;
 }
 //]

Deleted: branches/release/libs/interprocess/example/doc_file_mapping2.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_file_mapping2.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,74 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-//[doc_file_mapping2
-#include <boost/interprocess/file_mapping.hpp>
-#include <boost/interprocess/mapped_region.hpp>
-#include <iostream>
-#include <fstream>
-#include <cstddef>
-#include <cstdio> //std::remove
-#include <vector>
-
-int main ()
-{
- using namespace boost::interprocess;
- try{
- //Open the file mapping
- file_mapping m_file ("file.bin", read_only);
-
- //Map the whole file in this process
- mapped_region region
- (m_file //What to map
- ,read_only //Map it as read-only
- );
-
- //Get the address of the mapped region
- void * addr = region.get_address();
- std::size_t size = region.get_size();
-
- //Check that memory was initialized to 1
- const char *mem = static_cast<char*>(addr);
- for(std::size_t i = 0; i < size; ++i){
- if(*mem++ != 1){
- std::cout << "Error checking memory!" << std::endl;
- return 1;
- }
- }
-
- //Now test it reading the file
- std::filebuf fbuf;
- fbuf.open("file.bin", std::ios_base::in | std::ios_base::binary);
-
- //Read it to memory
- std::vector<char> vect(region.get_size(), 0);
- fbuf.sgetn(&vect[0], std::streamsize(vect.size()));
-
- //Check that memory was initialized to 1
- mem = static_cast<char*>(&vect[0]);
- for(std::size_t i = 0; i < size; ++i){
- if(*mem++ != 1){
- std::cout << "Error checking memory!" << std::endl;
- return 1;
- }
- }
-
- std::cout << "Test successful!" << std::endl;
- }
- catch(interprocess_exception &ex){
- std::remove("file.bin");
- std::cout << "Unexpected exception: " << ex.what() << std::endl;
- return 1;
- }
- std::remove("file.bin");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Modified: branches/release/libs/interprocess/example/doc_intrusive.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_intrusive.cpp (original)
+++ branches/release/libs/interprocess/example/doc_intrusive.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -7,6 +7,7 @@
 // See http://www.boost.org/libs/interprocess for documentation.
 //
 //////////////////////////////////////////////////////////////////////////////
+
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
 //[doc_intrusive
@@ -68,42 +69,40 @@
       : m_intrusive_ptr(ptr){}
 };
 
-int main ()
+int main()
 {
- shared_memory_object::remove("my_shmem");
-
- try{
- //Create shared memory
- managed_shared_memory shmem(create_only, "my_shmem", 10000);
-
- //Create the unique reference counted object in shared memory
- N::reference_counted_class *ref_counted =
- shmem.construct<N::reference_counted_class>
- ("ref_counted")(shmem.get_segment_manager());
-
- //Create an array of ten intrusive pointer owners in shared memory
- intrusive_ptr_owner *intrusive_owner_array =
- shmem.construct<intrusive_ptr_owner>
- (anonymous_instance)[10](ref_counted);
-
- //Now test that reference count is ten
- if(ref_counted->use_count() != 10)
- return 1;
-
- //Now destroy the array of intrusive pointer owners
- //This should destroy every intrusive_ptr and because of
- //that reference_counted_class will be destroyed
- shmem.destroy_ptr(intrusive_owner_array);
-
- //Now the reference counted object should have been destroyed
- if(shmem.find<intrusive_ptr_owner>("ref_counted").first)
- return 1;
- }
- catch(...){
- shared_memory_object::remove("my_shmem");
- throw;
- }
- shared_memory_object::remove("my_shmem");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ //Create shared memory
+ managed_shared_memory shmem(create_only, "MySharedMemory", 10000);
+
+ //Create the unique reference counted object in shared memory
+ N::reference_counted_class *ref_counted =
+ shmem.construct<N::reference_counted_class>
+ ("ref_counted")(shmem.get_segment_manager());
+
+ //Create an array of ten intrusive pointer owners in shared memory
+ intrusive_ptr_owner *intrusive_owner_array =
+ shmem.construct<intrusive_ptr_owner>
+ (anonymous_instance)[10](ref_counted);
+
+ //Now test that reference count is ten
+ if(ref_counted->use_count() != 10)
+ return 1;
+
+ //Now destroy the array of intrusive pointer owners
+ //This should destroy every intrusive_ptr and because of
+ //that reference_counted_class will be destroyed
+ shmem.destroy_ptr(intrusive_owner_array);
+
+ //Now the reference counted object should have been destroyed
+ if(shmem.find<intrusive_ptr_owner>("ref_counted").first)
+ return 1;
    //Success!
    return 0;
 }

Deleted: branches/release/libs/interprocess/example/doc_ipc_messageA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_ipc_messageA.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,55 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/interprocess/detail/workaround.hpp>
-//[doc_ipc_messageA
-#include <boost/interprocess/managed_shared_memory.hpp>
-
-int main ()
-{
- using namespace boost::interprocess;
-
- //A special shared memory from which we are
- //able to allocate raw memory buffers.
- //First remove any old shared memory of the same name, create
- //the shared memory segment and initialize needed resources
- shared_memory_object::remove("MySharedMemory");
- try{
- managed_shared_memory segment
- (create_only,
- "MySharedMemory", //segment name
- 65536); //segment size in bytes
-
- //Allocate a portion of the segment
- void * shptr = segment.allocate(1024/*bytes to allocate*/);
-
- //An handle from the base address can identify any byte of the shared
- //memory segment even if it is mapped in different base addresses
- managed_shared_memory::handle_t handle = segment.get_handle_from_address(shptr);
- (void)handle;
- // Copy message to buffer
- // . . .
- // Send handle to other process
- // . . .
- // Wait response from other process
- // . . .
-
- //Deallocate the portion previously allocated
- segment.deallocate(shptr);
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_ipc_messageB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_ipc_messageB.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,47 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/interprocess/detail/workaround.hpp>
-//[doc_ipc_messageB
-#include <boost/interprocess/managed_shared_memory.hpp>
-
-int main ()
-{
- using namespace boost::interprocess;
-
- try{
- //A special shared memory from which we are
- //able to allocate raw memory buffers.
- //Connect to the already created shared memory segment
- //and initialize needed resources
- managed_shared_memory segment(open_only, "MySharedMemory"); //segment name
-
- //An handle from the base address can identify any byte of the shared
- //memory segment even if it is mapped in different base addresses
- managed_shared_memory::handle_t handle = 0;
-
- //Wait handle msg from the other process and put it in
- //"handle" local variable
- //Get buffer local address from handle
- void *msg = segment.get_address_from_handle(handle);
- (void)msg;
- //Do anything with msg
- //. . .
- //Send ack to sender process
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Modified: branches/release/libs/interprocess/example/doc_managed_aligned_allocation.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_aligned_allocation.cpp (original)
+++ branches/release/libs/interprocess/example/doc_managed_aligned_allocation.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -16,53 +16,52 @@
 {
    using namespace boost::interprocess;
 
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
    //Managed memory segment that allocates portions of a shared memory
    //segment with the default management algorithm
- shared_memory_object::remove("MyManagedShm");
+ managed_shared_memory managed_shm(create_only, "MySharedMemory", 65536);
 
- try{
- managed_shared_memory managed_shm(create_only, "MyManagedShm", 65536);
+ const std::size_t Alignment = 128;
 
- const std::size_t Alignment = 128;
+ //Allocate 100 bytes aligned to Alignment from segment, throwing version
+ void *ptr = managed_shm.allocate_aligned(100, Alignment);
 
- //Allocate 100 bytes aligned to Alignment from segment, throwing version
- void *ptr = managed_shm.allocate_aligned(100, Alignment);
+ //Check alignment
+ assert((static_cast<char*>(ptr)-static_cast<char*>(0)) % Alignment == 0);
 
- //Check alignment
- assert((static_cast<char*>(ptr)-static_cast<char*>(0)) % Alignment == 0);
+ //Deallocate it
+ managed_shm.deallocate(ptr);
 
- //Deallocate it
- managed_shm.deallocate(ptr);
+ //Non throwing version
+ ptr = managed_shm.allocate_aligned(100, Alignment, std::nothrow);
 
- //Non throwing version
- ptr = managed_shm.allocate_aligned(100, Alignment, std::nothrow);
+ //Check alignment
+ assert((static_cast<char*>(ptr)-static_cast<char*>(0)) % Alignment == 0);
 
- //Check alignment
- assert((static_cast<char*>(ptr)-static_cast<char*>(0)) % Alignment == 0);
+ //Deallocate it
+ managed_shm.deallocate(ptr);
 
- //Deallocate it
- managed_shm.deallocate(ptr);
+ //If we want to efficiently allocate aligned blocks of memory
+ //use managed_shared_memory::PayloadPerAllocation value
+ assert(Alignment > managed_shared_memory::PayloadPerAllocation);
 
- //If we want to efficiently allocate aligned blocks of memory
- //use managed_shared_memory::PayloadPerAllocation value
- assert(Alignment > managed_shared_memory::PayloadPerAllocation);
+ //This allocation will maximize the size of the aligned memory
+ //and will increase the possibility of finding more aligned memory
+ ptr = managed_shm.allocate_aligned
+ (3*Alignment - managed_shared_memory::PayloadPerAllocation, Alignment);
 
- //This allocation will maximize the size of the aligned memory
- //and will increase the possibility of finding more aligned memory
- ptr = managed_shm.allocate_aligned
- (3*Alignment - managed_shared_memory::PayloadPerAllocation, Alignment);
+ //Check alignment
+ assert((static_cast<char*>(ptr)-static_cast<char*>(0)) % Alignment == 0);
 
- //Check alignment
- assert((static_cast<char*>(ptr)-static_cast<char*>(0)) % Alignment == 0);
+ //Deallocate it
+ managed_shm.deallocate(ptr);
 
- //Deallocate it
- managed_shm.deallocate(ptr);
- }
- catch(...){
- shared_memory_object::remove("MyManagedShm");
- throw;
- }
- shared_memory_object::remove("MyManagedShm");
    return 0;
 }
 //]

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -16,73 +16,71 @@
 {
    using namespace boost::interprocess;
 
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
    //Managed memory segment that allocates portions of a shared memory
    //segment with the default management algorithm
- shared_memory_object::remove("MyManagedShm");
+ managed_shared_memory managed_shm(create_only, "MySharedMemory", 10000*sizeof(std::size_t));
 
- try{
- managed_shared_memory managed_shm(create_only, "MyManagedShm", 10000*sizeof(std::size_t));
+ //Allocate at least 100 bytes, 1000 bytes if possible
+ std::size_t received_size, min_size = 100, preferred_size = 1000;
+ std::size_t *ptr = managed_shm.allocation_command<std::size_t>
+ (boost::interprocess::allocate_new, min_size, preferred_size, received_size).first;
+
+ //Received size must be bigger than min_size
+ assert(received_size >= min_size);
+
+ //Get free memory
+ std::size_t 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;
+
+ //Now try to triplicate the buffer. We won't admit an expansion
+ //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;
+ std::pair<std::size_t *, bool> ret = managed_shm.allocation_command
+ (boost::interprocess::expand_fwd, received_size*2, received_size*3, expanded_size, ptr);
+
+ //Check invariants
+ assert(ret.second == true);
+ assert(ret.first == ptr);
+ assert(expanded_size >= received_size*2);
+
+ //Get free memory and compare
+ std::size_t free_memory_after_expansion = managed_shm.get_free_memory();
+ assert(free_memory_after_expansion < free_memory_after_allocation);
+
+ //Write new values
+ for(std::size_t i = received_size; i < expanded_size; ++i) ptr[i] = i;
+
+ //Try to shrink approximately to min_size, but the new size
+ //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;
+ ret = managed_shm.allocation_command
+ (boost::interprocess::shrink_in_place, min_size*2, min_size, shrunk_size, ptr);
+
+ //Check invariants
+ assert(ret.second == true);
+ assert(ret.first == ptr);
+ assert(shrunk_size <= min_size*2);
+ assert(shrunk_size >= min_size);
+
+ //Get free memory and compare
+ std::size_t free_memory_after_shrinking = managed_shm.get_free_memory();
+ assert(free_memory_after_shrinking > free_memory_after_expansion);
 
- //Allocate at least 100 bytes, 1000 bytes if possible
- std::size_t received_size, min_size = 100, preferred_size = 1000;
- std::size_t *ptr = managed_shm.allocation_command<std::size_t>
- (allocate_new, min_size, preferred_size, received_size).first;
-
- //Received size must be bigger than min_size
- assert(received_size >= min_size);
-
- //Get free memory
- std::size_t 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;
-
- //Now try to triplicate the buffer. We won't admit an expansion
- //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;
- std::pair<std::size_t *, bool> ret = managed_shm.allocation_command
- (expand_fwd, received_size*2, received_size*3, expanded_size, ptr);
-
- //Check invariants
- assert(ret.second == true);
- assert(ret.first == ptr);
- assert(expanded_size >= received_size*2);
-
- //Get free memory and compare
- std::size_t free_memory_after_expansion = managed_shm.get_free_memory();
- assert(free_memory_after_expansion < free_memory_after_allocation);
-
- //Write new values
- for(std::size_t i = received_size; i < expanded_size; ++i) ptr[i] = i;
-
- //Try to shrink approximately to min_size, but the new size
- //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;
- ret = managed_shm.allocation_command
- (shrink_in_place, min_size*2, min_size, shrunk_size, ptr);
-
- //Check invariants
- assert(ret.second == true);
- assert(ret.first == ptr);
- assert(shrunk_size <= min_size*2);
- assert(shrunk_size >= min_size);
-
- //Get free memory and compare
- std::size_t free_memory_after_shrinking = managed_shm.get_free_memory();
- assert(free_memory_after_shrinking > free_memory_after_expansion);
-
- //Deallocate the buffer
- managed_shm.deallocate(ptr);
- }
- catch(...){
- shared_memory_object::remove("MyManagedShm");
- throw;
- }
- shared_memory_object::remove("MyManagedShm");
+ //Deallocate the buffer
+ managed_shm.deallocate(ptr);
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_managed_construction_info.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_construction_info.cpp (original)
+++ branches/release/libs/interprocess/example/doc_managed_construction_info.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -21,41 +21,39 @@
 int main()
 {
    using namespace boost::interprocess;
- typedef managed_shared_memory msm;
- shared_memory_object::remove("MyManagedShm");
 
- try{
- msm managed_shm(create_only, "MyManagedShm", 10000*sizeof(std::size_t));
-
- //Construct objects
- my_class *named_object = managed_shm.construct<my_class>("Object name")[1]();
- my_class *unique_object = managed_shm.construct<my_class>(unique_instance)[2]();
- my_class *anon_object = managed_shm.construct<my_class>(anonymous_instance)[3]();
-
- //Now test "get_instance_name" function.
- assert(0 == std::strcmp(msm::get_instance_name(named_object), "Object name"));
- assert(0 == msm::get_instance_name(unique_object));
- assert(0 == msm::get_instance_name(anon_object));
-
- //Now test "get_instance_type" function.
- assert(named_type == msm::get_instance_type(named_object));
- assert(unique_type == msm::get_instance_type(unique_object));
- assert(anonymous_type == msm::get_instance_type(anon_object));
-
- //Now test "get_instance_length" function.
- assert(1 == msm::get_instance_length(named_object));
- assert(2 == msm::get_instance_length(unique_object));
- assert(3 == msm::get_instance_length(anon_object));
-
- managed_shm.destroy_ptr(named_object);
- managed_shm.destroy_ptr(unique_object);
- managed_shm.destroy_ptr(anon_object);
- }
- catch(...){
- shared_memory_object::remove("MyManagedShm");
- throw;
- }
- shared_memory_object::remove("MyManagedShm");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ managed_shared_memory managed_shm(create_only, "MySharedMemory", 10000*sizeof(std::size_t));
+
+ //Construct objects
+ my_class *named_object = managed_shm.construct<my_class>("Object name")[1]();
+ my_class *unique_object = managed_shm.construct<my_class>(unique_instance)[2]();
+ my_class *anon_object = managed_shm.construct<my_class>(anonymous_instance)[3]();
+
+ //Now test "get_instance_name" function.
+ assert(0 == std::strcmp(managed_shared_memory::get_instance_name(named_object), "Object name"));
+ assert(0 == managed_shared_memory::get_instance_name(unique_object));
+ assert(0 == managed_shared_memory::get_instance_name(anon_object));
+
+ //Now test "get_instance_type" function.
+ assert(named_type == managed_shared_memory::get_instance_type(named_object));
+ assert(unique_type == managed_shared_memory::get_instance_type(unique_object));
+ assert(anonymous_type == managed_shared_memory::get_instance_type(anon_object));
+
+ //Now test "get_instance_length" function.
+ assert(1 == managed_shared_memory::get_instance_length(named_object));
+ assert(2 == managed_shared_memory::get_instance_length(unique_object));
+ assert(3 == managed_shared_memory::get_instance_length(anon_object));
+
+ managed_shm.destroy_ptr(named_object);
+ managed_shm.destroy_ptr(unique_object);
+ managed_shm.destroy_ptr(anon_object);
    return 0;
 }
 //]

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -11,7 +11,6 @@
 //[doc_managed_copy_on_write
 #include <boost/interprocess/managed_mapped_file.hpp>
 #include <fstream> //std::fstream
-#include <cstdio> //std::remove
 #include <iterator>//std::distance
 
 int main()
@@ -19,8 +18,8 @@
    using namespace boost::interprocess;
 
    //Try to erase any previous managed segment with the same name
- std::remove("MyManagedFile");
- std::remove("MyManagedFile2");
+ file_mapping::remove("MyManagedFile");
+ file_mapping::remove("MyManagedFile2");
    remove_file_on_destroy destroyer1("MyManagedFile");
    remove_file_on_destroy destroyer2("MyManagedFile2");
 

Modified: branches/release/libs/interprocess/example/doc_managed_external_buffer.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_external_buffer.cpp (original)
+++ branches/release/libs/interprocess/example/doc_managed_external_buffer.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -43,7 +43,9 @@
    //be stored in the static_buffer!
    MyBufferList *list = objects_in_static_memory.construct<MyBufferList>(L"MyList")
                            (objects_in_static_memory.get_segment_manager());
-
+ //<-
+ (void)list;
+ //->
    //Since the allocation algorithm from wmanaged_external_buffer uses relative
    //pointers and all the pointers constructed int the static memory point
    //to objects in the same segment, we can create another static buffer

Modified: branches/release/libs/interprocess/example/doc_managed_grow.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_grow.cpp (original)
+++ branches/release/libs/interprocess/example/doc_managed_grow.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -21,48 +21,49 @@
 int main()
 {
    using namespace boost::interprocess;
- try{
- { //Remove old shared memory if present
- shared_memory_object::remove("MyManagedShm");
- //Create a managed shared memory
- managed_shared_memory shm(create_only, "MyManagedShm", 1000);
- //Check size
- assert(shm.get_size() == 1000);
- //Construct a named object
- MyClass *myclass = shm.construct<MyClass>("MyClass")();
- //The managed segment is unmapped here
- }
- {
- //Now that the segment is not mapped grow it adding extra 500 bytes
- managed_shared_memory::grow("MyManagedShm", 500);
- //Map it again
- managed_shared_memory shm(open_only, "MyManagedShm");
- //Check size
- assert(shm.get_size() == 1500);
- //Check "MyClass" is still there
- MyClass *myclass = shm.find<MyClass>("MyClass").first;
- assert(myclass != 0);
- //The managed segment is unmapped here
- }
- {
- //Now minimize the size of the segment
- managed_shared_memory::shrink_to_fit("MyManagedShm");
- //Map it again
- managed_shared_memory shm(open_only, "MyManagedShm");
- //Check size
- assert(shm.get_size() < 1000);
- //Check "MyClass" is still there
- MyClass *myclass = shm.find<MyClass>("MyClass").first;
- assert(myclass != 0);
- //The managed segment is unmapped here
- }
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ {
+ //Create a managed shared memory
+ managed_shared_memory shm(create_only, "MySharedMemory", 1000);
+ //Check size
+ assert(shm.get_size() == 1000);
+ //Construct a named object
+ MyClass *myclass = shm.construct<MyClass>("MyClass")();
+ //The managed segment is unmapped here
+ //<-
+ (void)myclass;
+ //->
    }
- catch(...){
- shared_memory_object::remove("MyManagedShm");
- throw;
+ {
+ //Now that the segment is not mapped grow it adding extra 500 bytes
+ managed_shared_memory::grow("MySharedMemory", 500);
+ //Map it again
+ managed_shared_memory shm(open_only, "MySharedMemory");
+ //Check size
+ assert(shm.get_size() == 1500);
+ //Check "MyClass" is still there
+ MyClass *myclass = shm.find<MyClass>("MyClass").first;
+ assert(myclass != 0);
+ //The managed segment is unmapped here
+ }
+ {
+ //Now minimize the size of the segment
+ managed_shared_memory::shrink_to_fit("MySharedMemory");
+ //Map it again
+ managed_shared_memory shm(open_only, "MySharedMemory");
+ //Check size
+ assert(shm.get_size() < 1000);
+ //Check "MyClass" is still there
+ MyClass *myclass = shm.find<MyClass>("MyClass").first;
+ assert(myclass != 0);
+ //The managed segment is unmapped here
    }
- //Remove the managed segment
- shared_memory_object::remove("MyManagedShm");
    return 0;
 }
 //]

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -24,59 +24,67 @@
 {
    const char *FileName = "file_mapping";
    const std::size_t FileSize = 1000;
- std::remove(FileName);
+ file_mapping::remove(FileName);
    try{
- managed_mapped_file mfile_memory(create_only, FileName, FileSize);
- MyList * mylist = mfile_memory.construct<MyList>("MyList")
- (mfile_memory.get_segment_manager());
-
- //Obtain handle, that identifies the list in the buffer
- managed_mapped_file::handle_t list_handle = mfile_memory.get_handle_from_address(mylist);
-
- //Fill list until there is no more room in the file
- try{
- while(1) {
- mylist->insert(mylist->begin(), 0);
+ std::size_t old_size = 0;
+ managed_mapped_file::handle_t list_handle;
+ {
+ managed_mapped_file mfile_memory(create_only, FileName, FileSize);
+ MyList *mylist = mfile_memory.construct<MyList>("MyList")
+ (mfile_memory.get_segment_manager());
+
+ //Obtain handle, that identifies the list in the buffer
+ list_handle = mfile_memory.get_handle_from_address(mylist);
+
+ //Fill list until there is no more room in the file
+ try{
+ while(1) {
+ mylist->insert(mylist->begin(), 0);
+ }
          }
+ catch(const bad_alloc &){
+ //mapped file is full
+ }
+ //Let's obtain the size of the list
+ old_size = mylist->size();
       }
- catch(const bad_alloc &){
- //mapped file is full
- }
- //Let's obtain the size of the list
- std::size_t old_size = mylist->size();
-
       //To make the list bigger, let's increase the mapped file
       //in FileSize bytes more.
- //mfile_memory.grow(FileSize);
+ managed_mapped_file::grow(FileName, FileSize*2);
+
+ {
+ managed_mapped_file mfile_memory(open_only, FileName);
+
 
- //If mapping address has changed, the old pointer is invalid,
- //so use previously obtained handle to find the new pointer.
- mylist = static_cast<MyList *>
- (mfile_memory.get_address_from_handle(list_handle));
-
- //Fill list until there is no more room in the file
- try{
- while(1) {
- mylist->insert(mylist->begin(), 0);
+ //If mapping address has changed, the old pointer is invalid,
+ //so use previously obtained handle to find the new pointer.
+ MyList *mylist = static_cast<MyList *>
+ (mfile_memory.get_address_from_handle(list_handle));
+
+ //Fill list until there is no more room in the file
+ try{
+ while(1) {
+ mylist->insert(mylist->begin(), 0);
+ }
+ }
+ catch(const bad_alloc &){
+ //mapped file is full
          }
- }
- catch(const bad_alloc &){
- //mapped file is full
- }
 
- //Let's obtain the new size of the list
- std::size_t new_size = mylist->size();
+ //Let's obtain the new size of the list
+ std::size_t new_size = mylist->size();
 
- assert(new_size > old_size);
+ assert(new_size > old_size);
 
- //Destroy list
- mfile_memory.destroy_ptr(mylist);
+ //Destroy list
+ mfile_memory.destroy_ptr(mylist);
+ }
    }
    catch(...){
- std::remove(FileName);
+ file_mapping::remove(FileName);
       throw;
    }
- std::remove(FileName);
+ file_mapping::remove(FileName);
    return 0;
 }
 

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -10,69 +10,59 @@
 #include <boost/interprocess/detail/config_begin.hpp>
 //[doc_managed_multiple_allocation
 #include <boost/interprocess/managed_shared_memory.hpp>
+#include <boost/interprocess/detail/move.hpp> //boost::interprocess::move
 #include <cassert>//assert
 #include <cstring>//std::memset
 #include <new> //std::nothrow
 #include <vector> //std::vector
 
+
 int main()
 {
    using namespace boost::interprocess;
- typedef managed_shared_memory::multiallocation_iterator multiallocation_iterator;
-
- //Try to erase any previous managed segment with the same name
- shared_memory_object::remove("MyManagedShm");
-
- try{
- managed_shared_memory managed_shm(create_only, "MyManagedShm", 65536);
+ typedef managed_shared_memory::multiallocation_chain multiallocation_chain;
 
- //Allocate 16 elements of 100 bytes in a single call. Non-throwing version.
- multiallocation_iterator beg_it = managed_shm.allocate_many(100, 16, std::nothrow);
-
- //To check for an error, we can use a boolean expression
- //or compare it with a default constructed iterator
- assert(!beg_it == (beg_it == multiallocation_iterator()));
-
- //Check if the memory allocation was successful
- if(!beg_it) return 1;
-
- //Allocated buffers
- std::vector<char*> allocated_buffers;
-
- //Initialize our data
- for( multiallocation_iterator it = beg_it, end_it; it != end_it; ){
- allocated_buffers.push_back(&*it);
- //The iterator must be incremented before overwriting memory
- //because otherwise, the iterator is invalidated.
- std::memset(&*it++, 0, 100);
- }
-
- //Now deallocate
- while(!allocated_buffers.empty()){
- managed_shm.deallocate(allocated_buffers.back());
- allocated_buffers.pop_back();
- }
-
- //Allocate 10 buffers of different sizes in a single call. Throwing version
- std::size_t sizes[10];
- for(std::size_t i = 0; i < 10; ++i)
- sizes[i] = i*3;
-
- beg_it = managed_shm.allocate_many(sizes, 10);
-
- //Iterate each allocated buffer and deallocate
- //The "end" condition can be also checked with operator!
- for(multiallocation_iterator it = beg_it; it;){
- //The iterator must be incremented before overwriting memory
- //because otherwise, the iterator is invalidated.
- managed_shm.deallocate(&*it++);
- }
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ managed_shared_memory managed_shm(create_only, "MySharedMemory", 65536);
+
+ //Allocate 16 elements of 100 bytes in a single call. Non-throwing version.
+ multiallocation_chain chain(managed_shm.allocate_many(100, 16, std::nothrow));
+
+ //Check if the memory allocation was successful
+ if(chain.empty()) return 1;
+
+ //Allocated buffers
+ std::vector<void*> allocated_buffers;
+
+ //Initialize our data
+ while(!chain.empty()){
+ void *buf = chain.front();
+ chain.pop_front();
+ allocated_buffers.push_back(buf);
+ //The iterator must be incremented before overwriting memory
+ //because otherwise, the iterator is invalidated.
+ std::memset(buf, 0, 100);
    }
- catch(...){
- shared_memory_object::remove("MyManagedShm");
- throw;
+
+ //Now deallocate
+ while(!allocated_buffers.empty()){
+ managed_shm.deallocate(allocated_buffers.back());
+ allocated_buffers.pop_back();
    }
- shared_memory_object::remove("MyManagedShm");
+
+ //Allocate 10 buffers of different sizes in a single call. Throwing version
+ std::size_t sizes[10];
+ for(std::size_t i = 0; i < 10; ++i)
+ sizes[i] = i*3;
+
+ chain = managed_shm.allocate_many(sizes, 10);
+ managed_shm.deallocate_many(boost::interprocess::move(chain));
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_managed_raw_allocation.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_raw_allocation.cpp (original)
+++ branches/release/libs/interprocess/example/doc_managed_raw_allocation.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -15,29 +15,28 @@
 {
    using namespace boost::interprocess;
 
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
    //Managed memory segment that allocates portions of a shared memory
    //segment with the default management algorithm
- shared_memory_object::remove("MyManagedShm");
- try{
- managed_shared_memory managed_shm(create_only, "MyManagedShm", 65536);
-
- //Allocate 100 bytes of memory from segment, throwing version
- void *ptr = managed_shm.allocate(100);
-
- //Deallocate it
- managed_shm.deallocate(ptr);
-
- //Non throwing version
- ptr = managed_shm.allocate(100, std::nothrow);
-
- //Deallocate it
- managed_shm.deallocate(ptr);
- }
- catch(...){
- shared_memory_object::remove("MyManagedShm");
- throw;
- }
- shared_memory_object::remove("MyManagedShm");
+ managed_shared_memory managed_shm(create_only, "MySharedMemory", 65536);
+
+ //Allocate 100 bytes of memory from segment, throwing version
+ void *ptr = managed_shm.allocate(100);
+
+ //Deallocate it
+ managed_shm.deallocate(ptr);
+
+ //Non throwing version
+ ptr = managed_shm.allocate(100, std::nothrow);
+
+ //Deallocate it
+ managed_shm.deallocate(ptr);
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_map.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_map.cpp (original)
+++ branches/release/libs/interprocess/example/doc_map.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -19,56 +19,55 @@
 int main ()
 {
    using namespace boost::interprocess;
+
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
    //Shared memory front-end that is able to construct objects
    //associated with a c-string. Erase previous shared memory with the name
    //to be used and create the memory segment at the specified address and initialize resources
- shared_memory_object::remove("MySharedMemory");
-
- try{
- managed_shared_memory segment
- (create_only
- ,"MySharedMemory" //segment name
- ,65536); //segment size in bytes
-
- //Note that map<Key, MappedType>'s value_type is std::pair<const Key, MappedType>,
- //so the allocator must allocate that pair.
- typedef int KeyType;
- typedef float MappedType;
- typedef std::pair<const int, float> ValueType;
-
- //Alias an STL compatible allocator of for the map.
- //This allocator will allow to place containers
- //in managed shared memory segments
- typedef allocator<ValueType, managed_shared_memory::segment_manager>
- ShmemAllocator;
-
- //Alias a map of ints that uses the previous STL-like allocator.
- //Note that the third parameter argument is the ordering function
- //of the map, just like with std::map, used to compare the keys.
- typedef map<KeyType, MappedType, std::less<KeyType>, ShmemAllocator> MyMap;
-
- //Initialize the shared memory STL-compatible allocator
- ShmemAllocator alloc_inst (segment.get_segment_manager());
-
- //Construct a shared memory map.
- //Note that the first parameter is the comparison function,
- //and the second one the allocator.
- //This the same signature as std::map's constructor taking an allocator
- MyMap *mymap =
- segment.construct<MyMap>("MyMap") //object name
- (std::less<int>() //first ctor parameter
- ,alloc_inst); //second ctor parameter
-
- //Insert data in the map
- for(int i = 0; i < 100; ++i){
- mymap->insert(std::pair<const int, float>(i, (float)i));
- }
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
+ managed_shared_memory segment
+ (create_only
+ ,"MySharedMemory" //segment name
+ ,65536); //segment size in bytes
+
+ //Note that map<Key, MappedType>'s value_type is std::pair<const Key, MappedType>,
+ //so the allocator must allocate that pair.
+ typedef int KeyType;
+ typedef float MappedType;
+ typedef std::pair<const int, float> ValueType;
+
+ //Alias an STL compatible allocator of for the map.
+ //This allocator will allow to place containers
+ //in managed shared memory segments
+ typedef allocator<ValueType, managed_shared_memory::segment_manager>
+ ShmemAllocator;
+
+ //Alias a map of ints that uses the previous STL-like allocator.
+ //Note that the third parameter argument is the ordering function
+ //of the map, just like with std::map, used to compare the keys.
+ typedef map<KeyType, MappedType, std::less<KeyType>, ShmemAllocator> MyMap;
+
+ //Initialize the shared memory STL-compatible allocator
+ ShmemAllocator alloc_inst (segment.get_segment_manager());
+
+ //Construct a shared memory map.
+ //Note that the first parameter is the comparison function,
+ //and the second one the allocator.
+ //This the same signature as std::map's constructor taking an allocator
+ MyMap *mymap =
+ segment.construct<MyMap>("MyMap") //object name
+ (std::less<int>() //first ctor parameter
+ ,alloc_inst); //second ctor parameter
+
+ //Insert data in the map
+ for(int i = 0; i < 100; ++i){
+ mymap->insert(std::pair<const int, float>(i, (float)i));
    }
- shared_memory_object::remove("MySharedMemory");
    return 0;
 }
 //]

Deleted: branches/release/libs/interprocess/example/doc_message_queueA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_message_queueA.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,45 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-//[doc_message_queueA
-#include <boost/interprocess/ipc/message_queue.hpp>
-#include <iostream>
-#include <vector>
-
-using namespace boost::interprocess;
-
-int main ()
-{
- try{
- //Erase previous message queue
- message_queue::remove("message_queue");
-
- //Create a message_queue.
- message_queue mq
- (create_only //only create
- ,"message_queue" //name
- ,100 //max message number
- ,sizeof(int) //max message size
- );
-
- //Send 100 numbers
- for(int i = 0; i < 100; ++i){
- mq.send(&i, sizeof(i), 0);
- }
- }
- catch(interprocess_exception &ex){
- std::cout << ex.what() << std::endl;
- return 1;
- }
-
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_message_queueB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_message_queueB.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,47 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-//[doc_message_queueB
-#include <boost/interprocess/ipc/message_queue.hpp>
-#include <iostream>
-#include <vector>
-
-using namespace boost::interprocess;
-
-int main ()
-{
- try{
- //Open a message queue.
- message_queue mq
- (open_only //only create
- ,"message_queue" //name
- );
-
- unsigned int priority;
- std::size_t recvd_size;
-
- //Receive 100 numbers
- for(int i = 0; i < 100; ++i){
- int number;
- mq.receive(&number, sizeof(number), recvd_size, priority);
- if(number != i || recvd_size != sizeof(number))
- return 1;
- }
- }
- catch(interprocess_exception &ex){
- message_queue::remove("message_queue");
- std::cout << ex.what() << std::endl;
- return 1;
- }
- message_queue::remove("message_queue");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Modified: branches/release/libs/interprocess/example/doc_move_containers.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_move_containers.cpp (original)
+++ branches/release/libs/interprocess/example/doc_move_containers.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -28,58 +28,57 @@
    typedef allocator<MyShmString, SegmentManager> StringAllocator;
    typedef vector<MyShmString, StringAllocator> MyShmStringVector;
 
- //Remove old shared memory and create new one
- shared_memory_object::remove("myshm");
- try{
- managed_shared_memory shm(create_only, "myshm", 10000);
-
- //Create allocators
- CharAllocator charallocator (shm.get_segment_manager());
- StringAllocator stringallocator(shm.get_segment_manager());
-
- //Create a vector of strings in shared memory.
- MyShmStringVector *myshmvector =
- shm.construct<MyShmStringVector>("myshmvector")(stringallocator);
-
- //Insert 50 strings in shared memory. The strings will be allocated
- //only once and no string copy-constructor will be called when inserting
- //strings, leading to a great performance.
- MyShmString string_to_compare(charallocator);
- string_to_compare = "this is a long, long, long, long, long, long, string...";
-
- myshmvector->reserve(50);
- for(int i = 0; i < 50; ++i){
- MyShmString move_me(string_to_compare);
- //In the following line, no string copy-constructor will be called.
- //"move_me"'s contents will be transferred to the string created in
- //the vector
- myshmvector->push_back(boost::interprocess::move(move_me));
-
- //The source string is in default constructed state
- assert(move_me.empty());
-
- //The newly created string will be equal to the "move_me"'s old contents
- assert(myshmvector->back() == string_to_compare);
- }
-
- //Now erase a string...
- myshmvector->pop_back();
-
- //...And insert one in the first position.
- //No string copy-constructor or assignments will be called, but
- //move constructors and move-assignments. No memory allocation
- //function will be called in this operations!!
- myshmvector->insert(myshmvector->begin(), boost::interprocess::move(string_to_compare));
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ managed_shared_memory shm(create_only, "MySharedMemory", 10000);
+
+ //Create allocators
+ CharAllocator charallocator (shm.get_segment_manager());
+ StringAllocator stringallocator(shm.get_segment_manager());
+
+ //Create a vector of strings in shared memory.
+ MyShmStringVector *myshmvector =
+ shm.construct<MyShmStringVector>("myshmvector")(stringallocator);
+
+ //Insert 50 strings in shared memory. The strings will be allocated
+ //only once and no string copy-constructor will be called when inserting
+ //strings, leading to a great performance.
+ MyShmString string_to_compare(charallocator);
+ string_to_compare = "this is a long, long, long, long, long, long, string...";
+
+ myshmvector->reserve(50);
+ for(int i = 0; i < 50; ++i){
+ MyShmString move_me(string_to_compare);
+ //In the following line, no string copy-constructor will be called.
+ //"move_me"'s contents will be transferred to the string created in
+ //the vector
+ myshmvector->push_back(boost::interprocess::move(move_me));
 
- //Destroy vector. This will free all strings that the vector contains
- shm.destroy_ptr(myshmvector);
- }
- catch(...){
- shared_memory_object::remove("myshmvector");
- throw;
+ //The source string is in default constructed state
+ assert(move_me.empty());
+
+ //The newly created string will be equal to the "move_me"'s old contents
+ assert(myshmvector->back() == string_to_compare);
    }
- shared_memory_object::remove("myshmvector");
+
+ //Now erase a string...
+ myshmvector->pop_back();
+
+ //...And insert one in the first position.
+ //No string copy-constructor or assignments will be called, but
+ //move constructors and move-assignments. No memory allocation
+ //function will be called in this operations!!
+ myshmvector->insert(myshmvector->begin(), boost::interprocess::move(string_to_compare));
+
+ //Destroy vector. This will free all strings that the vector contains
+ shm.destroy_ptr(myshmvector);
    return 0;
 }
 //]
 #include <boost/interprocess/detail/config_end.hpp>
+

Modified: branches/release/libs/interprocess/example/doc_multi_index.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_multi_index.cpp (original)
+++ branches/release/libs/interprocess/example/doc_multi_index.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -61,30 +61,27 @@
 
 int main ()
 {
- //Erase previous shared memory with the name
- shared_memory_object::remove("MySharedMemory");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
 
- try{
- //Create shared memory
- managed_shared_memory segment(create_only,"MySharedMemory", 65536);
+ //Create shared memory
+ managed_shared_memory segment(create_only,"MySharedMemory", 65536);
 
- //Construct the multi_index in shared memory
- employee_set *es = segment.construct<employee_set>
- ("My MultiIndex Container") //Container's name in shared memory
- ( employee_set::ctor_args_list()
- , segment.get_allocator<employee>()); //Ctor parameters
+ //Construct the multi_index in shared memory
+ employee_set *es = segment.construct<employee_set>
+ ("My MultiIndex Container") //Container's name in shared memory
+ ( employee_set::ctor_args_list()
+ , segment.get_allocator<employee>()); //Ctor parameters
 
- //Now insert elements
- char_allocator ca(segment.get_allocator<char>());
- es->insert(employee(0,31, "Joe", ca));
- es->insert(employee(1,27, "Robert", ca));
- es->insert(employee(2,40, "John", ca));
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
+ //Now insert elements
+ char_allocator ca(segment.get_allocator<char>());
+ es->insert(employee(0,31, "Joe", ca));
+ es->insert(employee(1,27, "Robert", ca));
+ es->insert(employee(2,40, "John", ca));
    return 0;
 }
 //]

Deleted: branches/release/libs/interprocess/example/doc_named_allocA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_named_allocA.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,61 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/interprocess/detail/workaround.hpp>
-//[doc_named_allocA
-#include <boost/interprocess/managed_shared_memory.hpp>
-#include <utility>
-
-int main ()
-{
- using namespace boost::interprocess;
- typedef std::pair<double, int> MyType;
-
- try{
- //A special shared memory where we can
- //construct objects associated with a name.
- //First remove any old shared memory of the same name, create
- //the shared memory segment and initialize needed resources
- shared_memory_object::remove("MySharedMemory");
- managed_shared_memory segment
- //create segment name segment size
- (create_only, "MySharedMemory", 65536);
-
- //Create an object of MyType initialized to {0.0, 0}
- MyType *instance = segment.construct<MyType>
- ("MyType instance") //name of the object
- (0.0, 0); //ctor first argument
-
- //Create an array of 10 elements of MyType initialized to {0.0, 0}
- MyType *array = segment.construct<MyType>
- ("MyType array") //name of the object
- [10] //number of elements
- (0.0, 0); //Same two ctor arguments for all objects
-
- //Create an array of 3 elements of MyType initializing each one
- //to a different value {0.0, 0}, {1.0, 1}, {2.0, 2}...
- float float_initializer[3] = { 0.0, 1.0, 2.0 };
- int int_initializer[3] = { 0, 1, 2 };
-
- MyType *array_it = segment.construct_it<MyType>
- ("MyType array from it") //name of the object
- [3] //number of elements
- ( &float_initializer[0] //Iterator for the 1st ctor argument
- , &int_initializer[0]); //Iterator for the 2nd ctor argument
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_named_allocB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_named_allocB.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,63 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/interprocess/detail/workaround.hpp>
-//[doc_named_allocB
-#include <boost/interprocess/managed_shared_memory.hpp>
-#include <cstddef>
-#include <utility>
-#include <cassert>
-
-int main ()
-{
- using namespace boost::interprocess;
- typedef std::pair<double, int> MyType;
-
- try{
- //A special shared memory where we can
- //construct objects associated with a name.
- //Connect to the already created shared memory segment
- //and initialize needed resources
- managed_shared_memory segment(open_only, "MySharedMemory");
-
- std::pair<MyType*, std::size_t> res;
-
- //Find the array
- res = segment.find<MyType> ("MyType array");
- //Length should be 10
- assert(res.second == 10);
-
- //Find the object
- res = segment.find<MyType> ("MyType instance");
- //Length should be 1
- assert(res.second == 1);
-
- //Find the array constructed from iterators
- res = segment.find<MyType> ("MyType array from it");
- //Length should be 3
- assert(res.second == 3);
-
- //Use data
- // . . .
-
- //We're done, delete all the objects
- segment.destroy<MyType>("MyType array");
- segment.destroy<MyType>("MyType instance");
- segment.destroy<MyType>("MyType array from it");
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
- return 0;
-}
-//]
-#include <boost/interprocess/detail/config_end.hpp>

Modified: branches/release/libs/interprocess/example/doc_named_mutex.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_named_mutex.cpp (original)
+++ branches/release/libs/interprocess/example/doc_named_mutex.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -13,6 +13,7 @@
 #include <boost/interprocess/sync/named_mutex.hpp>
 #include <fstream>
 #include <iostream>
+#include <cstdio>
 
 int main ()
 {
@@ -37,10 +38,12 @@
    }
    catch(interprocess_exception &ex){
       named_mutex::remove("fstream_named_mutex");
+ std::remove("file_name");
       std::cout << ex.what() << std::endl;
       return 1;
    }
    named_mutex::remove("fstream_named_mutex");
+ std::remove("file_name");
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_node_allocator.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_node_allocator.cpp (original)
+++ branches/release/libs/interprocess/example/doc_node_allocator.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -18,46 +18,44 @@
 
 int main ()
 {
- shared_memory_object::remove("MySharedMemory");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ //Create shared memory
+ managed_shared_memory segment(create_only,
+ "MySharedMemory", //segment name
+ 65536);
+
+ //Create a node_allocator that allocates ints from the managed segment
+ //The number of chunks per segment is the default value
+ typedef node_allocator<int, managed_shared_memory::segment_manager>
+ node_allocator_t;
+ node_allocator_t allocator_instance(segment.get_segment_manager());
+
+ //Create another node_allocator. Since the segment manager address
+ //is the same, this node_allocator will be
+ //attached to the same pool so "allocator_instance2" can deallocate
+ //nodes allocated by "allocator_instance"
+ node_allocator_t allocator_instance2(segment.get_segment_manager());
+
+ //Create another node_allocator using copy-constructor. This
+ //node_allocator will also be attached to the same pool
+ node_allocator_t allocator_instance3(allocator_instance2);
+
+ //All allocators are equal
+ assert(allocator_instance == allocator_instance2);
+ assert(allocator_instance2 == allocator_instance3);
+
+ //So memory allocated with one can be deallocated with another
+ allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
+ allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
 
- try{
- //Create shared memory
- managed_shared_memory segment(create_only,
- "MySharedMemory", //segment name
- 65536);
-
- //Create a node_allocator that allocates ints from the managed segment
- //The number of chunks per segment is the default value
- typedef node_allocator<int, managed_shared_memory::segment_manager>
- node_allocator_t;
- node_allocator_t allocator_instance(segment.get_segment_manager());
-
- //Create another node_allocator. Since the segment manager address
- //is the same, this node_allocator will be
- //attached to the same pool so "allocator_instance2" can deallocate
- //nodes allocated by "allocator_instance"
- node_allocator_t allocator_instance2(segment.get_segment_manager());
-
- //Create another node_allocator using copy-constructor. This
- //node_allocator will also be attached to the same pool
- node_allocator_t allocator_instance3(allocator_instance2);
-
- //All allocators are equal
- assert(allocator_instance == allocator_instance2);
- assert(allocator_instance2 == allocator_instance3);
-
- //So memory allocated with one can be deallocated with another
- allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
- allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
-
- //The common pool will be destroyed here, since no allocator is
- //attached to the pool
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
+ //The common pool will be destroyed here, since no allocator is
+ //attached to the pool
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_offset_ptr.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_offset_ptr.cpp (original)
+++ branches/release/libs/interprocess/example/doc_offset_ptr.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -24,45 +24,41 @@
 
 int main ()
 {
- //Destroy any previous shared memory with the name to be used.
- //Create a special shared memory from which we can
- //allocate buffers of raw memory.
- shared_memory_object::remove("MySharedMemory");
- try{
- managed_shared_memory segment(
- create_only,
- "MySharedMemory", //segment name
- 65536); //segment size in bytes
-
- //Create linked list with 10 nodes in shared memory
- offset_ptr<list_node> prev = 0, current, first;
-
- int i;
- for(i = 0; i < 10; ++i, prev = current){
- current = static_cast<list_node*>(segment.allocate(sizeof(list_node)));
- current->value = i;
- current->next = 0;
-
- if(!prev)
- first = current;
- else
- prev->next = current;
- }
-
- //Communicate list to other processes
- //. . .
- //When done, destroy list
- for(current = first; current; /**/){
- prev = current;
- current = current->next;
- segment.deallocate(prev.get());
- }
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ managed_shared_memory segment(
+ create_only,
+ "MySharedMemory", //segment name
+ 65536); //segment size in bytes
+
+ //Create linked list with 10 nodes in shared memory
+ offset_ptr<list_node> prev = 0, current, first;
+
+ int i;
+ for(i = 0; i < 10; ++i, prev = current){
+ current = static_cast<list_node*>(segment.allocate(sizeof(list_node)));
+ current->value = i;
+ current->next = 0;
+
+ if(!prev)
+ first = current;
+ else
+ prev->next = current;
    }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
+
+ //Communicate list to other processes
+ //. . .
+ //When done, destroy list
+ for(current = first; current; /**/){
+ prev = current;
+ current = current->next;
+ segment.deallocate(prev.get());
    }
- shared_memory_object::remove("MySharedMemory");
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_private_adaptive_pool.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_private_adaptive_pool.cpp (original)
+++ branches/release/libs/interprocess/example/doc_private_adaptive_pool.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -18,42 +18,40 @@
 
 int main ()
 {
- shared_memory_object::remove("MySharedMemory");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ //Create shared memory
+ managed_shared_memory segment(create_only,
+ "MySharedMemory", //segment name
+ 65536);
+
+ //Create a private_adaptive_pool that allocates ints from the managed segment
+ //The number of chunks per segment is the default value
+ typedef private_adaptive_pool<int, managed_shared_memory::segment_manager>
+ private_adaptive_pool_t;
+ private_adaptive_pool_t allocator_instance(segment.get_segment_manager());
+
+ //Create another private_adaptive_pool.
+ private_adaptive_pool_t allocator_instance2(segment.get_segment_manager());
+
+ //Although the segment manager address
+ //is the same, this private_adaptive_pool will have its own pool so
+ //"allocator_instance2" CAN'T deallocate nodes allocated by "allocator_instance".
+ //"allocator_instance2" is NOT equal to "allocator_instance"
+ assert(allocator_instance != allocator_instance2);
 
- try{
- //Create shared memory
- managed_shared_memory segment(create_only,
- "MySharedMemory", //segment name
- 65536);
-
- //Create a private_adaptive_pool that allocates ints from the managed segment
- //The number of chunks per segment is the default value
- typedef private_adaptive_pool<int, managed_shared_memory::segment_manager>
- private_adaptive_pool_t;
- private_adaptive_pool_t allocator_instance(segment.get_segment_manager());
-
- //Create another private_adaptive_pool.
- private_adaptive_pool_t allocator_instance2(segment.get_segment_manager());
-
- //Although the segment manager address
- //is the same, this private_adaptive_pool will have its own pool so
- //"allocator_instance2" CAN'T deallocate nodes allocated by "allocator_instance".
- //"allocator_instance2" is NOT equal to "allocator_instance"
- assert(allocator_instance != allocator_instance2);
-
- //Create another adaptive_pool using copy-constructor.
- private_adaptive_pool_t allocator_instance3(allocator_instance2);
-
- //This allocator is also unequal to allocator_instance2
- assert(allocator_instance2 != allocator_instance3);
-
- //Pools are destroyed with the allocators
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
+ //Create another adaptive_pool using copy-constructor.
+ private_adaptive_pool_t allocator_instance3(allocator_instance2);
+
+ //This allocator is also unequal to allocator_instance2
+ assert(allocator_instance2 != allocator_instance3);
+
+ //Pools are destroyed with the allocators
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_private_node_allocator.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_private_node_allocator.cpp (original)
+++ branches/release/libs/interprocess/example/doc_private_node_allocator.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -18,42 +18,40 @@
 
 int main ()
 {
- shared_memory_object::remove("MySharedMemory");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ //Create shared memory
+ managed_shared_memory segment(create_only,
+ "MySharedMemory", //segment name
+ 65536);
+
+ //Create a private_node_allocator that allocates ints from the managed segment
+ //The number of chunks per segment is the default value
+ typedef private_node_allocator<int, managed_shared_memory::segment_manager>
+ private_node_allocator_t;
+ private_node_allocator_t allocator_instance(segment.get_segment_manager());
+
+ //Create another private_node_allocator.
+ private_node_allocator_t allocator_instance2(segment.get_segment_manager());
+
+ //Although the segment manager address
+ //is the same, this private_node_allocator will have its own pool so
+ //"allocator_instance2" CAN'T deallocate nodes allocated by "allocator_instance".
+ //"allocator_instance2" is NOT equal to "allocator_instance"
+ assert(allocator_instance != allocator_instance2);
 
- try{
- //Create shared memory
- managed_shared_memory segment(create_only,
- "MySharedMemory", //segment name
- 65536);
-
- //Create a private_node_allocator that allocates ints from the managed segment
- //The number of chunks per segment is the default value
- typedef private_node_allocator<int, managed_shared_memory::segment_manager>
- private_node_allocator_t;
- private_node_allocator_t allocator_instance(segment.get_segment_manager());
-
- //Create another private_node_allocator.
- private_node_allocator_t allocator_instance2(segment.get_segment_manager());
-
- //Although the segment manager address
- //is the same, this private_node_allocator will have its own pool so
- //"allocator_instance2" CAN'T deallocate nodes allocated by "allocator_instance".
- //"allocator_instance2" is NOT equal to "allocator_instance"
- assert(allocator_instance != allocator_instance2);
-
- //Create another node_allocator using copy-constructor.
- private_node_allocator_t allocator_instance3(allocator_instance2);
-
- //This allocator is also unequal to allocator_instance2
- assert(allocator_instance2 != allocator_instance3);
-
- //Pools are destroyed with the allocators
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
- }
- shared_memory_object::remove("MySharedMemory");
+ //Create another node_allocator using copy-constructor.
+ private_node_allocator_t allocator_instance3(allocator_instance2);
+
+ //This allocator is also unequal to allocator_instance2
+ assert(allocator_instance2 != allocator_instance3);
+
+ //Pools are destroyed with the allocators
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_scoped_ptr.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_scoped_ptr.cpp (original)
+++ branches/release/libs/interprocess/example/doc_scoped_ptr.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -47,60 +47,59 @@
 int main ()
 {
    //Create shared memory
- shared_memory_object::remove("my_shmem");
- try{
- managed_shared_memory shmem(create_only, "my_shmem", 10000);
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
 
- //In the first try, there will be no exceptions
- //in the second try we will throw an exception
- for(int i = 0; i < 2; ++i){
- //Create an object in shared memory
- my_class * my_object = shmem.construct<my_class>("my_object")();
- my_class * my_object2 = shmem.construct<my_class>(anonymous_instance)();
- shmem.destroy_ptr(my_object2);
-
- //Since the next shared memory allocation can throw
- //assign it to a scoped_ptr so that if an exception occurs
- //we destroy the object automatically
- my_deleter<my_class> d(shmem.get_segment_manager());
+ managed_shared_memory shmem(create_only, "MySharedMemory", 10000);
 
- try{
- scoped_ptr<my_class, my_deleter<my_class> > s_ptr(my_object, d);
- //Let's emulate a exception capable operation
- //In the second try, throw an exception
- if(i == 1){
- throw(my_exception());
- }
- //If we have passed the dangerous zone
- //we can release the scoped pointer
- //to avoid destruction
- s_ptr.release();
+ //In the first try, there will be no exceptions
+ //in the second try we will throw an exception
+ for(int i = 0; i < 2; ++i){
+ //Create an object in shared memory
+ my_class * my_object = shmem.construct<my_class>("my_object")();
+ my_class * my_object2 = shmem.construct<my_class>(anonymous_instance)();
+ shmem.destroy_ptr(my_object2);
+
+ //Since the next shared memory allocation can throw
+ //assign it to a scoped_ptr so that if an exception occurs
+ //we destroy the object automatically
+ my_deleter<my_class> d(shmem.get_segment_manager());
+
+ try{
+ scoped_ptr<my_class, my_deleter<my_class> > s_ptr(my_object, d);
+ //Let's emulate a exception capable operation
+ //In the second try, throw an exception
+ if(i == 1){
+ throw(my_exception());
          }
- catch(const my_exception &){}
- //Here, scoped_ptr is destroyed
- //so it we haven't thrown an exception
- //the object should be there, otherwise, destroyed
- if(i == 0){
- //Make sure the object is alive
- if(!shmem.find<my_class>("my_object").first){
- return 1;
- }
- //Now we can use it and delete it manually
- shmem.destroy<my_class>("my_object");
+ //If we have passed the dangerous zone
+ //we can release the scoped pointer
+ //to avoid destruction
+ s_ptr.release();
+ }
+ catch(const my_exception &){}
+ //Here, scoped_ptr is destroyed
+ //so it we haven't thrown an exception
+ //the object should be there, otherwise, destroyed
+ if(i == 0){
+ //Make sure the object is alive
+ if(!shmem.find<my_class>("my_object").first){
+ return 1;
          }
- else{
- //Make sure the object has been deleted
- if(shmem.find<my_class>("my_object").first){
- return 1;
- }
+ //Now we can use it and delete it manually
+ shmem.destroy<my_class>("my_object");
+ }
+ else{
+ //Make sure the object has been deleted
+ if(shmem.find<my_class>("my_object").first){
+ return 1;
          }
       }
    }
- catch(...){
- shared_memory_object::remove("my_shmem");
- throw;
- }
- shared_memory_object::remove("my_shmem");
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_shared_memory.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_shared_memory.cpp (original)
+++ branches/release/libs/interprocess/example/doc_shared_memory.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -11,18 +11,24 @@
 //[doc_shared_memory
 #include <boost/interprocess/shared_memory_object.hpp>
 #include <boost/interprocess/mapped_region.hpp>
-#include <iostream>
 #include <cstring>
+#include <cstdlib>
+#include <string>
 
-int main ()
+int main(int argc, char *argv[])
 {
    using namespace boost::interprocess;
- try{
- //Erase previous shared memory
- shared_memory_object::remove("shared_memory");
+
+ if(argc == 1){ //Parent process
+ //Remove shared memory on construction and destruction
+ struct shm_remove
+ {
+ shm_remove() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
 
       //Create a shared memory object.
- shared_memory_object shm (create_only, "shared_memory", read_write);
+ shared_memory_object shm (create_only, "MySharedMemory", read_write);
 
       //Set size
       shm.truncate(1000);
@@ -32,11 +38,24 @@
 
       //Write all the memory to 1
       std::memset(region.get_address(), 1, region.get_size());
+
+ //Launch child process
+ std::string s(argv[0]); s += " child";
+ if(0 != std::system(s.c_str()))
+ return 1;
    }
- catch(interprocess_exception &ex){
- shared_memory_object::remove("shared_memory");
- std::cout << ex.what() << std::endl;
- return 1;
+ else{
+ //Open already created shared memory object.
+ shared_memory_object shm (open_only, "MySharedMemory", read_only);
+
+ //Map the whole shared memory in this process
+ mapped_region region(shm, read_only);
+
+ //Check that memory was initialized to 1
+ char *mem = static_cast<char*>(region.get_address());
+ for(std::size_t i = 0; i < region.get_size(); ++i)
+ if(*mem++ != 1)
+ return 1; //Error checking memory
    }
    return 0;
 }

Deleted: branches/release/libs/interprocess/example/doc_shared_memory2.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_shared_memory2.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,48 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-//[doc_shared_memory2
-#include <boost/interprocess/shared_memory_object.hpp>
-#include <boost/interprocess/mapped_region.hpp>
-#include <iostream>
-#include <cstring>
-
-int main ()
-{
- using namespace boost::interprocess;
- shared_memory_object::remove("shared_memory");
- try{
- //Open already created shared memory object.
- shared_memory_object shm (open_only, "shared_memory", read_only);
-
- //Map the whole shared memory in this process
- mapped_region region(shm, read_only);
-
- //Check that memory was initialized to 1
- const char *mem = static_cast<char*>(region.get_address());
- for(std::size_t i = 0; i < region.get_size(); ++i){
- if(*mem++ != 1){
- std::cout << "Error checking memory!" << std::endl;
- return 1;
- }
- }
- std::cout << "Test successful!" << std::endl;
- }
- catch(interprocess_exception &ex){
- std::cout << "Unexpected exception: " << ex.what() << std::endl;
- shared_memory_object::remove("shared_memory");
- return 1;
- }
- shared_memory_object::remove("shared_memory");
- return 0;
-}
-//]
-
-#include <boost/interprocess/detail/config_end.hpp>

Modified: branches/release/libs/interprocess/example/doc_shared_ptr.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_shared_ptr.cpp (original)
+++ branches/release/libs/interprocess/example/doc_shared_ptr.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -16,7 +16,6 @@
 #include <boost/interprocess/smart_ptr/shared_ptr.hpp>
 #include <boost/interprocess/smart_ptr/weak_ptr.hpp>
 #include <cassert>
-#include <cstdio> //std::remove
 
 using namespace boost::interprocess;
 
@@ -47,7 +46,7 @@
 int main ()
 {
    //Destroy any previous file with the name to be used.
- std::remove("MyMappedFile");
+ file_mapping::remove("MyMappedFile");
    {
       managed_mapped_file file(create_only, "MyMappedFile", 4096);
 
@@ -114,7 +113,7 @@
       //The reference count will be deallocated when all weak pointers
       //disappear. After that, the file is unmapped.
    }
- std::remove("MyMappedFile");
+ file_mapping::remove("MyMappedFile");
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_shared_ptr_explicit.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_shared_ptr_explicit.cpp (original)
+++ branches/release/libs/interprocess/example/doc_shared_ptr_explicit.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -31,8 +31,13 @@
 
 int main ()
 {
- //Destroy any previous segment with the name to be used.
- shared_memory_object::remove("MySharedMemory");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
    managed_shared_memory segment(create_only, "MySharedMemory", 4096);
    
    //Create a shared pointer in shared memory
@@ -49,7 +54,6 @@
    //Destroy "shared ptr". "object to share" will be automatically destroyed
    segment.destroy_ptr(&shared_ptr_instance);
 
- shared_memory_object::remove("MySharedMemory");
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_unique_ptr.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_unique_ptr.cpp (original)
+++ branches/release/libs/interprocess/example/doc_unique_ptr.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -18,7 +18,6 @@
 #include <boost/interprocess/containers/list.hpp>
 #include <boost/interprocess/allocators/allocator.hpp>
 #include <cassert>
-#include <cstdio> //std::remove
 
 using namespace boost::interprocess;
 
@@ -49,7 +48,7 @@
 int main ()
 {
    //Destroy any previous file with the name to be used.
- std::remove("MyMappedFile");
+ file_mapping::remove("MyMappedFile");
    {
       managed_mapped_file file(create_only, "MyMappedFile", 65536);
 
@@ -72,9 +71,8 @@
 
       //Now insert all values
       for(int i = 0; i < 100; ++i){
- unique_vector->push_back(
- make_managed_unique_ptr(file.construct<MyType>(anonymous_instance)(i), file)
- );
+ unique_ptr_type p(make_managed_unique_ptr(file.construct<MyType>(anonymous_instance)(i), file));
+ unique_vector->push_back(boost::interprocess::move(p));
          assert(unique_vector->back()->number_ == i);
       }
       
@@ -84,7 +82,7 @@
    
       //Pass ownership of all values to the list
       for(int i = 99; !unique_vector->empty(); --i){
- unique_list->push_front(move(unique_vector->back()));
+ unique_list->push_front(boost::interprocess::move(unique_vector->back()));
          //The unique ptr of the vector is now empty...
          assert(unique_vector->back() == 0);
          unique_vector->pop_back();
@@ -114,7 +112,7 @@
       //Now destroy the list. All elements will be automatically deallocated.
       file.destroy_ptr(unique_list);
    }
- std::remove("MyMappedFile");
+ file_mapping::remove("MyMappedFile");
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_unordered_map.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_unordered_map.cpp (original)
+++ branches/release/libs/interprocess/example/doc_unordered_map.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -20,46 +20,43 @@
 int main ()
 {
    using namespace boost::interprocess;
- //Erase previous shared memory with the name
- shared_memory_object::remove("MySharedMemory");
-
- try{
- //Create shared memory
- managed_shared_memory segment(create_only ,"MySharedMemory" ,65536);
-
- //Note that unordered_map<Key, MappedType>'s value_type is std::pair<const Key, MappedType>,
- //so the allocator must allocate that pair.
- typedef int KeyType;
- typedef float MappedType;
- typedef std::pair<const int, float> ValueType;
-
- //Typedef the allocator
- typedef allocator<ValueType, managed_shared_memory::segment_manager> ShmemAllocator;
-
- //Alias an unordered_map of ints that uses the previous STL-like allocator.
- typedef boost::unordered_map
- < KeyType , MappedType
- , boost::hash<KeyType> ,std::equal_to<KeyType>
- , ShmemAllocator>
- MyHashMap;
-
- //Construct a shared memory hash map.
- //Note that the first parameter is the initial bucket count and
- //after that, the hash function, the equality function and the allocator
- MyHashMap *myhashmap = segment.construct<MyHashMap>("MyHashMap") //object name
- ( 3, boost::hash<int>(), std::equal_to<int>() //
- , segment.get_allocator<ValueType>()); //allocator instance
-
- //Insert data in the hash map
- for(int i = 0; i < 100; ++i){
- myhashmap->insert(ValueType(i, (float)i));
- }
- }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ //Create shared memory
+ managed_shared_memory segment(create_only ,"MySharedMemory" ,65536);
+
+ //Note that unordered_map<Key, MappedType>'s value_type is std::pair<const Key, MappedType>,
+ //so the allocator must allocate that pair.
+ typedef int KeyType;
+ typedef float MappedType;
+ typedef std::pair<const int, float> ValueType;
+
+ //Typedef the allocator
+ typedef allocator<ValueType, managed_shared_memory::segment_manager> ShmemAllocator;
+
+ //Alias an unordered_map of ints that uses the previous STL-like allocator.
+ typedef boost::unordered_map
+ < KeyType , MappedType
+ , boost::hash<KeyType> ,std::equal_to<KeyType>
+ , ShmemAllocator>
+ MyHashMap;
+
+ //Construct a shared memory hash map.
+ //Note that the first parameter is the initial bucket count and
+ //after that, the hash function, the equality function and the allocator
+ MyHashMap *myhashmap = segment.construct<MyHashMap>("MyHashMap") //object name
+ ( 3, boost::hash<int>(), std::equal_to<int>() //
+ , segment.get_allocator<ValueType>()); //allocator instance
+
+ //Insert data in the hash map
+ for(int i = 0; i < 100; ++i){
+ myhashmap->insert(ValueType(i, (float)i));
    }
- shared_memory_object::remove("MySharedMemory");
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_vectorstream.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_vectorstream.cpp (original)
+++ branches/release/libs/interprocess/example/doc_vectorstream.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -30,83 +30,81 @@
 
 int main ()
 {
- //Create shared memory
- shared_memory_object::remove("MySharedMemory");
- try{
- managed_shared_memory segment(
- create_only,
- "MySharedMemory", //segment name
- 65536); //segment size in bytes
-
- //Construct shared memory vector
- MyVector *myvector =
- segment.construct<MyVector>("MyVector")
- (IntAllocator(segment.get_segment_manager()));
-
- //Fill vector
- myvector->reserve(100);
- for(int i = 0; i < 100; ++i){
- myvector->push_back(i);
- }
-
- //Create the vectorstream. To create the internal shared memory
- //basic_string we need to pass the shared memory allocator as
- //a constructor argument
- MyVectorStream myvectorstream(CharAllocator(segment.get_segment_manager()));
-
- //Reserve the internal string
- myvectorstream.reserve(100*5);
-
- //Write all vector elements as text in the internal string
- //Data will be directly written in shared memory, because
- //internal string's allocator is a shared memory allocator
- for(std::size_t i = 0, max = myvector->size(); i < max; ++i){
- myvectorstream << (*myvector)[i] << std::endl;
- }
-
- //Auxiliary vector to compare original data
- MyVector *myvector2 =
- segment.construct<MyVector>("MyVector2")
- (IntAllocator(segment.get_segment_manager()));
-
- //Avoid reallocations
- myvector2->reserve(100);
-
- //Extract all values from the internal
- //string directly to a shared memory vector.
- std::istream_iterator<int> it(myvectorstream), itend;
- std::copy(it, itend, std::back_inserter(*myvector2));
-
- //Compare vectors
- assert(std::equal(myvector->begin(), myvector->end(), myvector2->begin()));
-
- //Create a copy of the internal string
- MyString stringcopy (myvectorstream.vector());
-
- //Now we create a new empty shared memory string...
- MyString *mystring =
- segment.construct<MyString>("MyString")
- (CharAllocator(segment.get_segment_manager()));
-
- //...and we swap vectorstream's internal string
- //with the new one: after this statement mystring
- //will be the owner of the formatted data.
- //No reallocations, no data copies
- myvectorstream.swap_vector(*mystring);
-
- //Let's compare both strings
- assert(stringcopy == *mystring);
-
- //Done, destroy and delete vectors and string from the segment
- segment.destroy_ptr(myvector2);
- segment.destroy_ptr(myvector);
- segment.destroy_ptr(mystring);
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ managed_shared_memory segment(
+ create_only,
+ "MySharedMemory", //segment name
+ 65536); //segment size in bytes
+
+ //Construct shared memory vector
+ MyVector *myvector =
+ segment.construct<MyVector>("MyVector")
+ (IntAllocator(segment.get_segment_manager()));
+
+ //Fill vector
+ myvector->reserve(100);
+ for(int i = 0; i < 100; ++i){
+ myvector->push_back(i);
    }
- catch(...){
- shared_memory_object::remove("MySharedMemory");
- throw;
+
+ //Create the vectorstream. To create the internal shared memory
+ //basic_string we need to pass the shared memory allocator as
+ //a constructor argument
+ MyVectorStream myvectorstream(CharAllocator(segment.get_segment_manager()));
+
+ //Reserve the internal string
+ myvectorstream.reserve(100*5);
+
+ //Write all vector elements as text in the internal string
+ //Data will be directly written in shared memory, because
+ //internal string's allocator is a shared memory allocator
+ for(std::size_t i = 0, max = myvector->size(); i < max; ++i){
+ myvectorstream << (*myvector)[i] << std::endl;
    }
- shared_memory_object::remove("MySharedMemory");
+
+ //Auxiliary vector to compare original data
+ MyVector *myvector2 =
+ segment.construct<MyVector>("MyVector2")
+ (IntAllocator(segment.get_segment_manager()));
+
+ //Avoid reallocations
+ myvector2->reserve(100);
+
+ //Extract all values from the internal
+ //string directly to a shared memory vector.
+ std::istream_iterator<int> it(myvectorstream), itend;
+ std::copy(it, itend, std::back_inserter(*myvector2));
+
+ //Compare vectors
+ assert(std::equal(myvector->begin(), myvector->end(), myvector2->begin()));
+
+ //Create a copy of the internal string
+ MyString stringcopy (myvectorstream.vector());
+
+ //Now we create a new empty shared memory string...
+ MyString *mystring =
+ segment.construct<MyString>("MyString")
+ (CharAllocator(segment.get_segment_manager()));
+
+ //...and we swap vectorstream's internal string
+ //with the new one: after this statement mystring
+ //will be the owner of the formatted data.
+ //No reallocations, no data copies
+ myvectorstream.swap_vector(*mystring);
+
+ //Let's compare both strings
+ assert(stringcopy == *mystring);
+
+ //Done, destroy and delete vectors and string from the segment
+ segment.destroy_ptr(myvector2);
+ segment.destroy_ptr(myvector);
+ segment.destroy_ptr(mystring);
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_where_allocate.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_where_allocate.cpp (original)
+++ branches/release/libs/interprocess/example/doc_where_allocate.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -29,45 +29,44 @@
       MyShmStringVector;
 
    //Open shared memory
- shared_memory_object::remove("myshm");
- try{
- managed_shared_memory shm(create_only, "myshm", 10000);
-
- //Create allocators
- CharAllocator charallocator (shm.get_segment_manager());
- StringAllocator stringallocator(shm.get_segment_manager());
-
- //This string is in only in this process (the pointer pointing to the
- //buffer that will hold the text is not in shared memory).
- //But the buffer that will hold "this is my text" is allocated from
- //shared memory
- MyShmString mystring(charallocator);
- mystring = "this is my text";
-
- //This vector is only in this process (the pointer pointing to the
- //buffer that will hold the MyShmString-s is not in shared memory).
- //But the buffer that will hold 10 MyShmString-s is allocated from
- //shared memory using StringAllocator. Since strings use a shared
- //memory allocator (CharAllocator) the 10 buffers that hold
- //"this is my text" text are also in shared memory.
- MyShmStringVector myvector(stringallocator);
- myvector.insert(myvector.begin(), 10, mystring);
-
- //This vector is fully constructed in shared memory. All pointers
- //buffers are constructed in the same shared memory segment
- //This vector can be safely accessed from other processes.
- MyShmStringVector *myshmvector =
- shm.construct<MyShmStringVector>("myshmvector")(stringallocator);
- myshmvector->insert(myshmvector->begin(), 10, mystring);
-
- //Destroy vector. This will free all strings that the vector contains
- shm.destroy_ptr(myshmvector);
- }
- catch(...){
- shared_memory_object::remove("myshm");
- throw;
- }
- shared_memory_object::remove("myshm");
+ //Remove shared memory on construction and destruction
+ struct shm_destroy
+ {
+ shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ managed_shared_memory shm(create_only, "MySharedMemory", 10000);
+
+ //Create allocators
+ CharAllocator charallocator (shm.get_segment_manager());
+ StringAllocator stringallocator(shm.get_segment_manager());
+
+ //This string is in only in this process (the pointer pointing to the
+ //buffer that will hold the text is not in shared memory).
+ //But the buffer that will hold "this is my text" is allocated from
+ //shared memory
+ MyShmString mystring(charallocator);
+ mystring = "this is my text";
+
+ //This vector is only in this process (the pointer pointing to the
+ //buffer that will hold the MyShmString-s is not in shared memory).
+ //But the buffer that will hold 10 MyShmString-s is allocated from
+ //shared memory using StringAllocator. Since strings use a shared
+ //memory allocator (CharAllocator) the 10 buffers that hold
+ //"this is my text" text are also in shared memory.
+ MyShmStringVector myvector(stringallocator);
+ myvector.insert(myvector.begin(), 10, mystring);
+
+ //This vector is fully constructed in shared memory. All pointers
+ //buffers are constructed in the same shared memory segment
+ //This vector can be safely accessed from other processes.
+ MyShmStringVector *myshmvector =
+ shm.construct<MyShmStringVector>("myshmvector")(stringallocator);
+ myshmvector->insert(myshmvector->begin(), 10, mystring);
+
+ //Destroy vector. This will free all strings that the vector contains
+ shm.destroy_ptr(myshmvector);
    return 0;
 }
 //]

Modified: branches/release/libs/interprocess/example/doc_windows_shared_memory.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_windows_shared_memory.cpp (original)
+++ branches/release/libs/interprocess/example/doc_windows_shared_memory.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -8,41 +8,61 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 #include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/interprocess/detail/workaround.hpp>
 
-#ifdef BOOST_WINDOWS
+#ifdef BOOST_INTERPROCESS_WINDOWS
+
 //[doc_windows_shared_memory
 #include <boost/interprocess/windows_shared_memory.hpp>
 #include <boost/interprocess/mapped_region.hpp>
-#include <iostream>
 #include <cstring>
+#include <cstdlib>
+#include <string>
 
-int main ()
+int main(int argc, char *argv[])
 {
    using namespace boost::interprocess;
- try{
+
+ if(argc == 1){ //Parent process
       //Create a native windows shared memory object.
- windows_shared_memory shm (create_only, "shared_memory", read_write, 1000);
+ windows_shared_memory shm (create_only, "MySharedMemory", read_write, 1000);
 
       //Map the whole shared memory in this process
       mapped_region region(shm, read_write);
 
       //Write all the memory to 1
- std::memset(region.get_address(), 1, 1000);
+ std::memset(region.get_address(), 1, region.get_size());
 
- //Launch the client process and wait until finishes...
- //...
+ //Launch child process
+ std::string s(argv[0]); s += " child";
+ if(0 != std::system(s.c_str()))
+ return 1;
+ //windows_shared_memory is destroyed when the last attached process dies...
    }
- catch(interprocess_exception &ex){
- std::cout << ex.what() << std::endl;
- return 1;
+ else{
+ //Open already created shared memory object.
+ windows_shared_memory shm (open_only, "MySharedMemory", read_only);
+
+ //Map the whole shared memory in this process
+ mapped_region region(shm, read_only);
+
+ //Check that memory was initialized to 1
+ char *mem = static_cast<char*>(region.get_address());
+ for(std::size_t i = 0; i < region.get_size(); ++i)
+ if(*mem++ != 1)
+ return 1; //Error checking memory
+ return 0;
    }
    return 0;
 }
 //]
-#else //#ifdef BOOST_WINDOWS
+
+#else //BOOST_INTERPROCESS_WINDOWS
+
 int main()
-{ return 0; }
-#endif//#ifdef BOOST_WINDOWS
+{
+ return 0;
+}
+
+#endif //BOOST_INTERPROCESS_WINDOWS
 
 #include <boost/interprocess/detail/config_end.hpp>

Deleted: branches/release/libs/interprocess/example/doc_windows_shared_memory2.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_windows_shared_memory2.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,55 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/interprocess/detail/workaround.hpp>
-
-#ifdef BOOST_WINDOWS
-//[doc_windows_shared_memory2
-#include <boost/interprocess/windows_shared_memory.hpp>
-#include <boost/interprocess/mapped_region.hpp>
-#include <iostream>
-#include <cstring>
-
-int main ()
-{
- using namespace boost::interprocess;
- try{
- //Open already created shared memory object.
- windows_shared_memory shm(open_only, "shared_memory", read_only);
-
- //Map the whole shared memory in this process
- mapped_region region (shm, read_only);
-
- //Check that memory was initialized to 1
- const char *mem = static_cast<char*>(region.get_address());
- for(std::size_t i = 0; i < 1000; ++i){
- if(*mem++ != 1){
- std::cout << "Error checking memory!" << std::endl;
- return 1;
- }
- }
-
- std::cout << "Test successful!" << std::endl;
- }
- catch(interprocess_exception &ex){
- std::cout << "Unexpected exception: " << ex.what() << std::endl;
- return 1;
- }
-
- return 0;
-}
-//]
-#else //#ifdef BOOST_WINDOWS
-int main()
-{ return 0; }
-#endif//#ifdef BOOST_WINDOWS
-
-#include <boost/interprocess/detail/config_end.hpp>
-

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -1,5 +1,3 @@
--> change rvalue reference signatures in all containers
-
 -> add private_read_only to mapped_region to support MAP_PRIVATE plus PROT_READ
 
 -> add contiguous_elements option to burst allocation
@@ -43,28 +41,26 @@
 
 -> barrier_test fails on MacOS X on PowerPC.
 
-->use virtual functions to minimize template explosion in managed classes
+-> use virtual functions to minimize template explosion in managed classes
 
-->Insertions with InpIt are not tested in containers
+-> Insertions with InpIt are not tested in containers
 
-->Run tests with rvalue reference compilers with no variadic insertions
+-> Run tests with rvalue reference compilers with no variadic insertions
 
-->find a way to pass security attributes to shared memory
+-> find a way to pass security attributes to shared memory
 
-->Explain in docs that shared memory can't be used between different users in windows
+-> Explain in docs that shared memory can't be used between different users in windows
 
 -> Implement vector with memcpy/memmove for trivially copyable types.
 
--> Update all swap() calls to work with rvalues in all classes
-
--> correct swap overloads for the documentation so that just appears a single rvalue swap
-
--> correct splice()/merg overloads for the documentation so that just appears a single rvalue splice
-
 -> flat_xxx constructors are not documented
 
 -> operator >> eta antzekoek moved_value behar dute
 
--> make file_lock movable
-
 -> 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?

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -103,18 +103,6 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_contA", "doc_contA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792652}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_contB", "doc_contB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792651}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_memory", "doc_shared_memory.vcproj", "{58CCE183-6032-12FE-4FC7-83A79F760B61}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unique_ptr_test", "unique_ptr_test.vcproj", "{571C3383-6092-A877-1238-B3786BAE7605}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
@@ -139,14 +127,6 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_memory2", "doc_shared_memory2.vcproj", "{58CE1D83-F31E-4FD7-6132-8A79F6307B61}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_file_mapping2", "doc_file_mapping2.vcproj", "{5CE19883-F413-7EFD-6342-B79639F7B611}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_file_mapping", "doc_file_mapping.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
@@ -223,10 +203,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}") = "adaptive_node_pool_test", "adaptive_node_pool_test.vcproj", "{CD57C283-1862-42FE-BF87-B96D3A2A7912}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
@@ -295,26 +271,10 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_ipc_messageA", "doc_ipc_messageA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792649}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_ipc_messageB", "doc_ipc_messageB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792648}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_mapped_file", "doc_managed_mapped_file.vcproj", "{58CCE183-5091-48FE-A4FC-BA0D3A792446}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_allocA", "doc_named_allocA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792645}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_allocB", "doc_named_allocB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792644}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_offset_ptr", "doc_offset_ptr.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792643}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
@@ -463,11 +423,33 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stable_vector_test", "stable_vector_test.vcproj", "{5E11C8D3-FA52-760A-84FE-943A6BA05A21}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_spawn_vector", "doc_spawn_vector.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792652}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_ipc_message", "doc_ipc_message.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792649}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_alloc", "doc_named_alloc.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792645}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_memory", "doc_shared_memory.vcproj", "{58CCE183-6032-12FE-4FC7-83A79F760B61}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
 Global
         GlobalSection(SolutionConfiguration) = preSolution
                 Debug = Debug
                 Release = Release
         EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
         GlobalSection(ProjectConfiguration) = postSolution
                 {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.ActiveCfg = Debug|Win32
                 {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.Build.0 = Debug|Win32
@@ -573,18 +555,6 @@
                 {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.ActiveCfg = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.Build.0 = Release|Win32
- {58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.Build.0 = Debug|Win32
- {58CCE183-6032-12FE-4FC7-83A79F760B61}.Release.ActiveCfg = Release|Win32
- {58CCE183-6032-12FE-4FC7-83A79F760B61}.Release.Build.0 = Release|Win32
                 {571C3383-6092-A877-1238-B3786BAE7605}.Debug.ActiveCfg = Debug|Win32
                 {571C3383-6092-A877-1238-B3786BAE7605}.Debug.Build.0 = Debug|Win32
                 {571C3383-6092-A877-1238-B3786BAE7605}.Release.ActiveCfg = Release|Win32
@@ -609,14 +579,6 @@
                 {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.Build.0 = Debug|Win32
                 {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.ActiveCfg = Release|Win32
                 {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.Build.0 = Release|Win32
- {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Debug.ActiveCfg = Debug|Win32
- {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Debug.Build.0 = Debug|Win32
- {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Release.ActiveCfg = Release|Win32
- {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Release.Build.0 = Release|Win32
- {5CE19883-F413-7EFD-6342-B79639F7B611}.Debug.ActiveCfg = Debug|Win32
- {5CE19883-F413-7EFD-6342-B79639F7B611}.Debug.Build.0 = Debug|Win32
- {5CE19883-F413-7EFD-6342-B79639F7B611}.Release.ActiveCfg = Release|Win32
- {5CE19883-F413-7EFD-6342-B79639F7B611}.Release.Build.0 = Release|Win32
                 {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.ActiveCfg = Debug|Win32
                 {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.Build.0 = Debug|Win32
                 {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.ActiveCfg = Release|Win32
@@ -693,10 +655,6 @@
                 {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Debug.Build.0 = Debug|Win32
                 {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Release.ActiveCfg = Release|Win32
                 {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.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
                 {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Debug.ActiveCfg = Debug|Win32
                 {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Debug.Build.0 = Debug|Win32
                 {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Release.ActiveCfg = Release|Win32
@@ -765,26 +723,10 @@
                 {5E18CC83-6092-48FE-A677-B832A0D3A650}.Debug.Build.0 = Debug|Win32
                 {5E18CC83-6092-48FE-A677-B832A0D3A650}.Release.ActiveCfg = Release|Win32
                 {5E18CC83-6092-48FE-A677-B832A0D3A650}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Release.Build.0 = Release|Win32
                 {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Debug.ActiveCfg = Debug|Win32
                 {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Debug.Build.0 = Debug|Win32
                 {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Release.ActiveCfg = Release|Win32
                 {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Release.Build.0 = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Debug.ActiveCfg = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Release.ActiveCfg = Release|Win32
@@ -933,6 +875,26 @@
                 {5183C8CE-F2E1-3620-237A-B765C9896390}.Debug.Build.0 = Debug|Win32
                 {5183C8CE-F2E1-3620-237A-B765C9896390}.Release.ActiveCfg = Release|Win32
                 {5183C8CE-F2E1-3620-237A-B765C9896390}.Release.Build.0 = Release|Win32
+ {5E11C8D3-FA52-760A-84FE-943A6BA05A21}.Debug.ActiveCfg = Debug|Win32
+ {5E11C8D3-FA52-760A-84FE-943A6BA05A21}.Debug.Build.0 = Debug|Win32
+ {5E11C8D3-FA52-760A-84FE-943A6BA05A21}.Release.ActiveCfg = Release|Win32
+ {5E11C8D3-FA52-760A-84FE-943A6BA05A21}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Release.Build.0 = Release|Win32
+ {58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6032-12FE-4FC7-83A79F760B61}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6032-12FE-4FC7-83A79F760B61}.Release.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(ExtensibilityGlobals) = postSolution
         EndGlobalSection

Modified: branches/release/libs/interprocess/proj/vc7ide/adaptive_node_pool_test.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/adaptive_node_pool_test.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/adaptive_node_pool_test.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -21,6 +21,7 @@
                                 Optimization="0"
                                 AdditionalIncludeDirectories="../../../.."
                                 PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
+ GeneratePreprocessedFile="0"
                                 MinimalRebuild="TRUE"
                                 BasicRuntimeChecks="3"
                                 RuntimeLibrary="3"

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_adaptive_pool.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_adaptive_pool.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_adaptive_pool.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_adaptive_pool.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{7D15CE80-A945-7643-19A6-6BB4B2F13597}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_allocator.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_allocator.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_allocator.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_allocator.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{7A713380-C945-4764-A066-625BE5EABBFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_conditionA.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_conditionA.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_conditionA.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{4BE2BEF1-C8A9-53BC-1A02-952FFA2D75A2}">
                         <File
- RelativePath="..\..\example\doc_anonymous_conditionA.cpp">
+ RelativePath="..\..\example\comp_doc_anonymous_conditionA.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{913380FA-5C7A-7644-A568-62F585B5FBCB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_conditionB.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_conditionB.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_conditionB.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{4B2EF711-14CA-5347-F025-7F75AF2D22A2}">
                         <File
- RelativePath="..\..\example\doc_anonymous_conditionB.cpp">
+ RelativePath="..\..\example\comp_doc_anonymous_conditionB.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{92431970-57CA-4ED4-85A6-624258635BFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_mutexA.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_mutexA.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_mutexA.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{4BE712F1-C98A-4537-12A0-72D752FFA2A2}">
                         <File
- RelativePath="..\..\example\doc_anonymous_mutexA.cpp">
+ RelativePath="..\..\example\comp_doc_anonymous_mutexA.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{91243380-C57A-4764-A856-625FEF585BFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_mutexB.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_mutexB.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_mutexB.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{4B712EF1-98CA-4537-A012-72D2FF75A2A2}">
                         <File
- RelativePath="..\..\example\doc_anonymous_mutexB.cpp">
+ RelativePath="..\..\example\comp_doc_anonymous_mutexB.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{91243970-C57A-4624-A856-625142585BFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_semaphoreA.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_semaphoreA.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_semaphoreA.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{4BEFCAB1-8AC0-3B5C-AF1B-9522D75AFFA2}">
                         <File
- RelativePath="..\..\example\doc_anonymous_semaphoreA.cpp">
+ RelativePath="..\..\example\comp_doc_anonymous_semaphoreA.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{918033FA-7644-7A5C-AFB8-62FB5FA585CB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_semaphoreB.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_semaphoreB.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_semaphoreB.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{4BCDF711-5717-14CA-F250-F2D8F75A22A2}">
                         <File
- RelativePath="..\..\example\doc_anonymous_semaphoreB.cpp">
+ RelativePath="..\..\example\comp_doc_anonymous_semaphoreB.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{94310A70-5A86-5BFA-4ED4-62FEF535B86B}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_shared_memory.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_shared_memory.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_shared_memory.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_anonymous_shared_memory.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{95431998-8EB8-9BCA-44D0-ECD5A7BE2B52}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_upgradable_mutexA.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_upgradable_mutexA.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_upgradable_mutexA.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{4BF1E712-4FB5-08CB-2A11-752DCD72F2B2}">
                         <File
- RelativePath="..\..\example\doc_anonymous_upgradable_mutexA.cpp">
+ RelativePath="..\..\example\comp_doc_anonymous_upgradable_mutexA.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{98238D43-76A8-57CB-4764-E5F572E85BFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_upgradable_mutexB.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_upgradable_mutexB.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_anonymous_upgradable_mutexB.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{4B712E2E-5347-A352-8C9F-FF72D27982A2}">
                         <File
- RelativePath="..\..\example\doc_anonymous_upgradable_mutexB.cpp">
+ RelativePath="..\..\example\comp_doc_anonymous_upgradable_mutexB.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{91991243-4624-C67A-B5A6-3E2DA5514BFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_bufferstream.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_bufferstream.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_bufferstream.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_bufferstream.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{94323380-C57A-4764-A066-625FBE585BFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_cached_adaptive_pool.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_cached_adaptive_pool.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_cached_adaptive_pool.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_cached_adaptive_pool.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{5CEE7180-8A7D-6473-19A6-6DC4B21C3597}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_cached_node_allocator.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_cached_node_allocator.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_cached_node_allocator.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_cached_node_allocator.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{715E8BE0-5A67-5863-6B26-295FE5A71C4A}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_cont.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_cont.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_cont.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_cont.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Deleted: branches/release/libs/interprocess/proj/vc7ide/doc_contA.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_contA.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="doc_contA"
- ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792652}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/doc_contA"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_contA_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_contA.pdb"
- SubSystem="1"
- TargetMachine="1"
- FixedBaseAddress="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="../../Bin/Win32/Release"
- IntermediateDirectory="Release/doc_contA"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- RuntimeLibrary="2"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_contA.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\..\example\doc_contA.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_contB.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_contB.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_contB.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
                         <File
- RelativePath="..\..\example\doc_contB.cpp">
+ RelativePath="..\..\example\comp_doc_contB.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_file_mapping.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_file_mapping.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_file_mapping.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_file_mapping.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{53F4F538-D8DB-D441-8EB8-E5A36242F2FB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Deleted: branches/release/libs/interprocess/proj/vc7ide/doc_file_mapping2.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_file_mapping2.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="doc_file_mapping2"
- ProjectGUID="{5CE19883-F413-7EFD-6342-B79639F7B611}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/doc_file_mapping2"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_file_mapping2_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_file_mapping2.pdb"
- SubSystem="1"
- TargetMachine="1"
- FixedBaseAddress="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="../../Bin/Win32/Release"
- IntermediateDirectory="Release/doc_file_mapping2"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- RuntimeLibrary="2"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_file_mapping2.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4051D7FF-CADB-4960-1663-2FE242B357FF}">
- <File
- RelativePath="..\..\example\doc_file_mapping2.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{94937728-D6AE-6637-8EB8-BF26E56AC2FB}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_intrusive.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_intrusive.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_intrusive.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_intrusive.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93295380-89BD-4b04-88EB-6225BE5faBFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Deleted: branches/release/libs/interprocess/proj/vc7ide/doc_ipc_messageA.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_ipc_messageA.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="doc_ipc_messageA"
- ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792649}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/doc_ipc_messageA"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_ipc_messageA_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_ipc_messageA.pdb"
- SubSystem="1"
- TargetMachine="1"
- FixedBaseAddress="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="../../Bin/Win32/Release"
- IntermediateDirectory="Release/doc_ipc_messageA"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- RuntimeLibrary="2"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_ipc_messageA.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\..\example\doc_ipc_messageA.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Deleted: branches/release/libs/interprocess/proj/vc7ide/doc_ipc_messageB.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_ipc_messageB.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="doc_ipc_messageB"
- ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792648}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/doc_ipc_messageB"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_ipc_messageB_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_ipc_messageB.pdb"
- SubSystem="1"
- TargetMachine="1"
- FixedBaseAddress="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="../../Bin/Win32/Release"
- IntermediateDirectory="Release/doc_ipc_messageB"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- RuntimeLibrary="2"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_ipc_messageB.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\..\example\doc_ipc_messageB.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_managed_aligned_allocation.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_managed_aligned_allocation.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_managed_aligned_allocation.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_managed_aligned_allocation.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{57613F38-DC8B-43D1-8EB8-E53642BF23FB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_managed_allocation_command.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_managed_allocation_command.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_managed_allocation_command.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_managed_allocation_command.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{53F54618-D3BA-1D51-A89E-E51FABD7E2FB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_managed_construction_info.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_managed_construction_info.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_managed_construction_info.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_managed_construction_info.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{55274F38-8C8B-D461-55EB-E53642BF23FB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_managed_grow.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_managed_grow.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_managed_grow.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -128,11 +128,6 @@
                                 RelativePath="..\..\example\doc_managed_grow.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{351E556C-18B7-6CD8-3B17-D31DEFB6F91B}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_managed_heap_memory.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_managed_heap_memory.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_managed_heap_memory.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_managed_heap_memory.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_managed_mapped_file.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_managed_mapped_file.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_managed_mapped_file.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_managed_mapped_file.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_managed_multiple_allocation.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_managed_multiple_allocation.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_managed_multiple_allocation.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -128,11 +128,6 @@
                                 RelativePath="..\..\example\doc_managed_multiple_allocation.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{53F36518-6D8C-3B17-8B71-D5632DF213FB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_managed_raw_allocation.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_managed_raw_allocation.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_managed_raw_allocation.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_managed_raw_allocation.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{3FE55338-8DCB-4D41-EB98-EA32F42724FB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_map.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_map.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_map.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_map.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{95918340-89BD-9E04-8B4C-6242E76FBEFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_message_queueA.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_message_queueA.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_message_queueA.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{42FBE7AD-C8A9-12A0-5347-72FFA25175A2}">
                         <File
- RelativePath="..\..\example\doc_message_queueA.cpp">
+ RelativePath="..\..\example\comp_doc_message_queueA.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{91434280-4764-C57A-B956-625855FEFCAB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_message_queueB.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_message_queueB.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_message_queueB.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{412EC7F1-45A7-98CA-A012-7952A2D2AFF2}">
                         <File
- RelativePath="..\..\example\doc_message_queueB.cpp">
+ RelativePath="..\..\example\comp_doc_message_queueB.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{92437370-6244-D57A-A856-645251825CDB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_move_containers.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_move_containers.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_move_containers.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_move_containers.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{942CA380-C57A-16A6-4764-625A25BD78FB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Deleted: branches/release/libs/interprocess/proj/vc7ide/doc_named_allocA.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_named_allocA.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="doc_named_allocA"
- ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792645}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/doc_named_allocA"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_named_allocA_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_named_allocA.pdb"
- SubSystem="1"
- TargetMachine="1"
- FixedBaseAddress="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="../../Bin/Win32/Release"
- IntermediateDirectory="Release/doc_named_allocA"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- RuntimeLibrary="2"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_named_allocA.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\..\example\doc_named_allocA.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Deleted: branches/release/libs/interprocess/proj/vc7ide/doc_named_allocB.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_named_allocB.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="doc_named_allocB"
- ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792644}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/doc_named_allocB"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_named_allocB_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_named_allocB.pdb"
- SubSystem="1"
- TargetMachine="1"
- FixedBaseAddress="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="../../Bin/Win32/Release"
- IntermediateDirectory="Release/doc_named_allocB"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- RuntimeLibrary="2"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_named_allocB.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\..\example\doc_named_allocB.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_named_conditionA.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_named_conditionA.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_named_conditionA.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{AB2F71E1-2E95-7FA3-2A10-741FA12A22F2}">
                         <File
- RelativePath="..\..\example\doc_named_conditionA.cpp">
+ RelativePath="..\..\example\comp_doc_named_conditionA.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{91553810-7ECB-6474-5A96-62EF51EBABFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_named_conditionB.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_named_conditionB.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_named_conditionB.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{AB712FE1-92E5-7543-12A0-74522FFA12A2}">
                         <File
- RelativePath="..\..\example\doc_named_conditionB.cpp">
+ RelativePath="..\..\example\comp_doc_named_conditionB.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{91815530-7C5B-6744-5A86-62EF51EEFBFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_named_mutex.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_named_mutex.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_named_mutex.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_named_mutex.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{91338150-57CA-4674-85A6-6216EFEF5BFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_node_allocator.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_node_allocator.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_node_allocator.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_node_allocator.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{7AED1580-4A95-7643-A066-625BFB21B49B}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_offset_ptr.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_offset_ptr.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_offset_ptr.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_offset_ptr.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_private_adaptive_pool.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_private_adaptive_pool.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_private_adaptive_pool.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_private_adaptive_pool.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{74CE8C10-A845-3F67-19A6-6BF1327B28B7}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_private_node_allocator.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_private_node_allocator.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_private_node_allocator.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_private_node_allocator.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{7D15E8B0-45A7-6573-26A6-25FE5EA7149B}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_scoped_ptr.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_scoped_ptr.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_scoped_ptr.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_scoped_ptr.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93295380-89BD-4b04-88EB-6225BE5faBFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_shared_memory.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_shared_memory.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_shared_memory.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_shared_memory.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93909538-DA9B-44D0-8EB8-E55F262BEBFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Deleted: branches/release/libs/interprocess/proj/vc7ide/doc_shared_memory2.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_shared_memory2.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
+++ (empty file)
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="doc_shared_memory2"
- ProjectGUID="{58CE1D83-F31E-4FD7-6132-8A79F6307B61}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/doc_shared_memory2"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_shared_memory2_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_shared_memory2.pdb"
- SubSystem="1"
- TargetMachine="1"
- FixedBaseAddress="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="../../Bin/Win32/Release"
- IntermediateDirectory="Release/doc_shared_memory2"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- RuntimeLibrary="2"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_shared_memory2.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{437F71DF-CA9B-6637-0366-35222AA2D7FF}">
- <File
- RelativePath="..\..\example\doc_shared_memory2.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{90954928-D6AD-44D0-8EB8-BF2E56AB26FB}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_shared_ptr.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_shared_ptr.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_shared_ptr.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_shared_ptr.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93483B80-D995-C044-8BEB-625F27A58BFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_shared_ptr_explicit.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_shared_ptr_explicit.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_shared_ptr_explicit.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_shared_ptr_explicit.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{483B9380-8BEB-D795-C194-6A5B62EF27FB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_unique_ptr.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_unique_ptr.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_unique_ptr.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_unique_ptr.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93B21880-3646-C044-BF6B-621F27BA58B2}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_vectorstream.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_vectorstream.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_vectorstream.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_vectorstream.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{94323380-89BD-4764-818B-625FBE585BFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_where_allocate.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_where_allocate.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_where_allocate.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_where_allocate.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93295380-89BD-4b04-88EB-6225BE5faBFB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_windows_shared_memory.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_windows_shared_memory.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_windows_shared_memory.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,11 +127,6 @@
                                 RelativePath="..\..\example\doc_windows_shared_memory.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93908538-DA9B-4D30-B88E-E5A22B4252FB}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/interprocess/proj/vc7ide/doc_windows_shared_memory2.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/doc_windows_shared_memory2.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/doc_windows_shared_memory2.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -39,7 +39,7 @@
                                 LinkIncremental="1"
                                 AdditionalLibraryDirectories="../../../../stage/lib"
                                 GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_windows_shared_memory2.pdb"
+ ProgramDatabaseFile="$(OutDir)/doc_windows_shared_memoryB.pdb"
                                 SubSystem="1"
                                 TargetMachine="1"
                                 FixedBaseAddress="1"/>
@@ -86,7 +86,7 @@
                         <Tool
                                 Name="VCLinkerTool"
                                 AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_windows_shared_memory2.exe"
+ OutputFile="$(OutDir)/doc_windows_shared_memoryB.exe"
                                 LinkIncremental="1"
                                 AdditionalLibraryDirectories="../../../../stage/lib"
                                 GenerateDebugInformation="TRUE"
@@ -124,14 +124,9 @@
                         Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{437F71DF-CA9B-6637-0366-3E52D735BAFF}">
                         <File
- RelativePath="..\..\example\doc_windows_shared_memory2.cpp">
+ RelativePath="..\..\example\comp_doc_windows_shared_memoryB.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{49819248-6ABD-4E40-B98E-6AC2EFB21B26}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -120,24 +120,14 @@
                                 RelativePath="..\..\..\..\boost\interprocess\containers\slist.hpp">
                         </File>
                         <File
+ RelativePath="..\..\..\..\boost\interprocess\containers\stable_vector.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\boost\interprocess\containers\string.hpp">
                         </File>
                         <File
                                 RelativePath="..\..\..\..\boost\interprocess\containers\vector.hpp">
                         </File>
- <Filter
- Name="detail"
- Filter="">
- <File
- RelativePath="..\..\..\..\boost\interprocess\containers\detail\flat_tree.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\interprocess\containers\detail\node_alloc_holder.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\interprocess\containers\detail\tree.hpp">
- </File>
- </Filter>
                 </Filter>
                 <Filter
                         Name="Allocators"
@@ -346,6 +336,9 @@
                                 RelativePath="..\..\..\..\boost\interprocess\managed_windows_shared_memory.hpp">
                         </File>
                         <File
+ RelativePath="..\..\..\..\boost\interprocess\managed_xsi_shared_memory.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\boost\interprocess\mapped_region.hpp">
                         </File>
                         <File
@@ -362,18 +355,9 @@
                         Name="Detail"
                         Filter="">
                         <File
- RelativePath="..\..\..\..\boost\interprocess\detail\advanced_insert_int.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\interprocess\detail\algorithms.hpp">
- </File>
- <File
                                 RelativePath="..\..\..\..\boost\interprocess\detail\atomic.hpp">
                         </File>
                         <File
- RelativePath="..\..\..\..\boost\interprocess\detail\basic_segment_manager.hpp">
- </File>
- <File
                                 RelativePath="..\..\..\..\boost\interprocess\detail\cast_tags.hpp">
                         </File>
                         <File
@@ -386,9 +370,6 @@
                                 RelativePath="..\..\..\..\boost\interprocess\detail\file_wrapper.hpp">
                         </File>
                         <File
- RelativePath="..\..\..\..\boost\interprocess\detail\gcd_lcm.hpp">
- </File>
- <File
                                 RelativePath="..\..\..\..\boost\interprocess\detail\in_place_interface.hpp">
                         </File>
                         <File
@@ -398,9 +379,6 @@
                                 RelativePath="..\..\..\..\boost\interprocess\detail\intersegment_ptr.hpp">
                         </File>
                         <File
- RelativePath="..\..\..\..\boost\interprocess\detail\iterators.hpp">
- </File>
- <File
                                 RelativePath="..\..\..\..\boost\interprocess\detail\managed_memory_impl.hpp">
                         </File>
                         <File
@@ -419,9 +397,6 @@
                                 RelativePath="..\..\..\..\boost\interprocess\detail\move.hpp">
                         </File>
                         <File
- RelativePath="..\..\..\..\boost\interprocess\detail\move_iterator.hpp">
- </File>
- <File
                                 RelativePath="..\..\..\..\boost\interprocess\detail\mpl.hpp">
                         </File>
                         <File
@@ -455,6 +430,9 @@
                                 RelativePath="..\..\..\..\boost\interprocess\detail\tmp_dir_helpers.hpp">
                         </File>
                         <File
+ RelativePath="..\..\..\..\boost\interprocess\detail\transform_iterator.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\boost\interprocess\detail\type_traits.hpp">
                         </File>
                         <File
@@ -464,9 +442,6 @@
                                 RelativePath="..\..\..\..\boost\interprocess\detail\variadic_templates_tools.hpp">
                         </File>
                         <File
- RelativePath="..\..\..\..\boost\interprocess\detail\version_type.hpp">
- </File>
- <File
                                 RelativePath="..\..\..\..\boost\interprocess\detail\win32_api.hpp">
                         </File>
                         <File

Modified: branches/release/libs/interprocess/proj/vc7ide/shared_memory_mappable_test.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/shared_memory_mappable_test.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/shared_memory_mappable_test.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -22,9 +22,11 @@
                                 AdditionalIncludeDirectories="../../../.."
                                 PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
                                 GeneratePreprocessedFile="0"
+ KeepComments="FALSE"
                                 MinimalRebuild="TRUE"
                                 BasicRuntimeChecks="3"
                                 RuntimeLibrary="3"
+ DisableLanguageExtensions="FALSE"
                                 TreatWChar_tAsBuiltInType="TRUE"
                                 ForceConformanceInForLoopScope="FALSE"
                                 UsePrecompiledHeader="0"

Modified: branches/release/libs/interprocess/proj/vc7ide/string_test.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/string_test.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/string_test.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -21,6 +21,7 @@
                                 Optimization="0"
                                 AdditionalIncludeDirectories="../../../.."
                                 PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
+ GeneratePreprocessedFile="0"
                                 MinimalRebuild="TRUE"
                                 BasicRuntimeChecks="3"
                                 RuntimeLibrary="3"

Modified: branches/release/libs/interprocess/proj/vc7ide/windows_shared_memory_mapping_test.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/windows_shared_memory_mapping_test.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/windows_shared_memory_mapping_test.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -13,7 +13,7 @@
                 <Configuration
                         Name="Debug|Win32"
                         OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/windows_windows_shared_memory_mapping_test"
+ IntermediateDirectory="Debug/windows_shared_memory_mapping_test"
                         ConfigurationType="1"
                         CharacterSet="2">
                         <Tool
@@ -39,7 +39,7 @@
                                 LinkIncremental="1"
                                 AdditionalLibraryDirectories="../../../../stage/lib"
                                 GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/windows_windows_shared_memory_mapping_test.pdb"
+ ProgramDatabaseFile="$(OutDir)/windows_shared_memory_mapping_test.pdb"
                                 SubSystem="1"
                                 TargetMachine="1"
                                 FixedBaseAddress="1"/>
@@ -67,7 +67,7 @@
                 <Configuration
                         Name="Release|Win32"
                         OutputDirectory="../../Bin/Win32/Release"
- IntermediateDirectory="Release/windows_windows_shared_memory_mapping_test"
+ IntermediateDirectory="Release/windows_shared_memory_mapping_test"
                         ConfigurationType="1"
                         CharacterSet="2">
                         <Tool
@@ -87,7 +87,7 @@
                         <Tool
                                 Name="VCLinkerTool"
                                 AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/windows_windows_shared_memory_mapping_test.exe"
+ OutputFile="$(OutDir)/windows_shared_memory_mapping_test.exe"
                                 LinkIncremental="1"
                                 AdditionalLibraryDirectories="../../../../stage/lib"
                                 GenerateDebugInformation="TRUE"

Modified: branches/release/libs/interprocess/proj/vc7ide/windows_shared_memory_test.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/windows_shared_memory_test.vcproj (original)
+++ branches/release/libs/interprocess/proj/vc7ide/windows_shared_memory_test.vcproj 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -3,7 +3,7 @@
         ProjectType="Visual C++"
         Version="7.10"
         Name="windows_shared_memory_test"
- ProjectGUID="{E385C28C-0691-4FA7-F48E-935BA0D06310}"
+ ProjectGUID="{E35C288C-F48E-6914-4FA7-5BA006383C10}"
         Keyword="Win32Proj">
         <Platforms>
                 <Platform
@@ -35,7 +35,7 @@
                         <Tool
                                 Name="VCLinkerTool"
                                 AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/shared_memory_test_d.exe"
+ OutputFile="$(OutDir)/windows_shared_memory_test_d.exe"
                                 LinkIncremental="1"
                                 AdditionalLibraryDirectories="../../../../stage/lib"
                                 GenerateDebugInformation="TRUE"

Modified: branches/release/libs/interprocess/test/adaptive_node_pool_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/adaptive_node_pool_test.cpp (original)
+++ branches/release/libs/interprocess/test/adaptive_node_pool_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -7,6 +7,7 @@
 // See http://www.boost.org/libs/interprocess for documentation.
 //
 //////////////////////////////////////////////////////////////////////////////
+
 #include <boost/interprocess/detail/config_begin.hpp>
 #include "node_pool_test.hpp"
 #include <boost/interprocess/allocators/detail/adaptive_node_pool.hpp>

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -18,10 +18,12 @@
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
 
+#include <boost/pointer_to_other.hpp>
+
 #include <boost/interprocess/interprocess_fwd.hpp>
-#include <boost/interprocess/allocators/allocation_type.hpp>
+#include <boost/interprocess/containers/allocation_type.hpp>
 #include <boost/interprocess/detail/utilities.hpp>
-#include <boost/interprocess/detail/version_type.hpp>
+#include <boost/interprocess/containers/version_type.hpp>
 #include <boost/interprocess/exceptions.hpp>
 #include <memory>
 #include <algorithm>
@@ -49,10 +51,10 @@
    typedef typename segment_manager::void_pointer aux_pointer_t;
 
    typedef typename
- detail::pointer_to_other
+ boost::pointer_to_other
          <aux_pointer_t, const void>::type cvoid_ptr;
 
- typedef typename detail::pointer_to_other
+ typedef typename boost::pointer_to_other
       <cvoid_ptr, segment_manager>::type alloc_ptr_t;
 
    template<class T2, class SegmentManager2>
@@ -64,9 +66,9 @@
 
  public:
    typedef T value_type;
- typedef typename detail::pointer_to_other
+ typedef typename boost::pointer_to_other
       <cvoid_ptr, T>::type pointer;
- typedef typename detail::
+ typedef typename boost::
       pointer_to_other<pointer, const T>::type const_pointer;
    typedef typename detail::add_reference
                      <value_type>::type reference;

Modified: branches/release/libs/interprocess/test/check_equal_containers.hpp
==============================================================================
--- branches/release/libs/interprocess/test/check_equal_containers.hpp (original)
+++ branches/release/libs/interprocess/test/check_equal_containers.hpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -32,10 +32,12 @@
 
    typename MyShmCont::iterator itshm(shmcont->begin()), itshmend(shmcont->end());
    typename MyStdCont::iterator itstd(stdcont->begin());
- if((typename MyStdCont::size_type)std::distance(itshm, itshmend) != shmcont->size()){
+ typename MyStdCont::size_type dist = (typename MyStdCont::size_type)std::distance(itshm, itshmend);
+ if(dist != shmcont->size()){
       return false;
    }
- for(; itshm != itshmend; ++itshm, ++itstd){
+ std::size_t i = 0;
+ for(; itshm != itshmend; ++itshm, ++itstd, ++i){
       value_type val(*itstd);
       const value_type &v = *itshm;
       if(v != val)

Modified: branches/release/libs/interprocess/test/data_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/data_test.cpp (original)
+++ branches/release/libs/interprocess/test/data_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -17,7 +17,6 @@
 #include <algorithm>
 #include <functional>
 #include <string>
-#include <cstdio> //std::remove
 #include "print_container.hpp"
 #include "get_process_id_name.hpp"
 
@@ -29,8 +28,6 @@
    std::string process_name;
    test::get_process_id_name(process_name);
    const char *const shMemName = process_name.c_str();
- std::string filename (test::get_process_id_name());
- filename += "_file";
 
    try{
    shared_memory_object::remove(shMemName);
@@ -90,12 +87,9 @@
       res = (0 == segment.find<MyVect>(allocName).first);
       if(!res)
          return 1;
-
- std::remove(filename.c_str());
    }
    }
    catch(...){
- std::remove(filename.c_str());
       shared_memory_object::remove(shMemName);
       throw;
    }

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -26,7 +26,6 @@
 #include <boost/interprocess/allocators/allocator.hpp>
 #include "allocator_v1.hpp"
 #include <boost/interprocess/exceptions.hpp>
-#include <boost/interprocess/detail/move_iterator.hpp>
 #include <boost/interprocess/detail/move.hpp>
 #include <boost/interprocess/detail/mpl.hpp>
 #include <boost/interprocess/detail/type_traits.hpp>
@@ -67,12 +66,12 @@
    {
       IntType move_me(1);
       stddeque->insert(stddeque->begin()+size/2, 50, 1);
- shmdeque->insert(shmdeque->begin()+size/2, 50, detail::move_impl(move_me));
+ shmdeque->insert(shmdeque->begin()+size/2, 50, boost::interprocess::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
    }
    {
       IntType move_me(2);
- shmdeque->assign(shmdeque->size()/2, detail::move_impl(move_me));
+ shmdeque->assign(shmdeque->size()/2, boost::interprocess::move(move_me));
       stddeque->assign(stddeque->size()/2, 2);
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
    }
@@ -81,13 +80,13 @@
       stddeque->clear();
       shmdeque->clear();
       stddeque->insert(stddeque->begin(), 50, 1);
- shmdeque->insert(shmdeque->begin(), 50, detail::move_impl(move_me));
+ shmdeque->insert(shmdeque->begin(), 50, boost::interprocess::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
       stddeque->insert(stddeque->begin()+20, 50, 1);
- shmdeque->insert(shmdeque->begin()+20, 50, detail::move_impl(move_me));
+ shmdeque->insert(shmdeque->begin()+20, 50, boost::interprocess::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
       stddeque->insert(stddeque->begin()+20, 20, 1);
- shmdeque->insert(shmdeque->begin()+20, 20, detail::move_impl(move_me));
+ shmdeque->insert(shmdeque->begin()+20, 20, boost::interprocess::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
    }
    {
@@ -95,13 +94,13 @@
       stddeque->clear();
       shmdeque->clear();
       stddeque->insert(stddeque->end(), 50, 1);
- shmdeque->insert(shmdeque->end(), 50, detail::move_impl(move_me));
+ shmdeque->insert(shmdeque->end(), 50, boost::interprocess::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
       stddeque->insert(stddeque->end()-20, 50, 1);
- shmdeque->insert(shmdeque->end()-20, 50, detail::move_impl(move_me));
+ shmdeque->insert(shmdeque->end()-20, 50, boost::interprocess::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
       stddeque->insert(stddeque->end()-20, 20, 1);
- shmdeque->insert(shmdeque->end()-20, 20, detail::move_impl(move_me));
+ shmdeque->insert(shmdeque->end()-20, 20, boost::interprocess::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
    }
 
@@ -127,10 +126,9 @@
    {
       //Now test move semantics
       deque<recursive_deque> original;
- deque<recursive_deque> move_ctor(detail::move_impl(original));
+ deque<recursive_deque> move_ctor(boost::interprocess::move(original));
       deque<recursive_deque> move_assign;
- move_assign = detail::move_impl(move_ctor);
- move_assign.swap(detail::move_impl(original));
+ move_assign = boost::interprocess::move(move_ctor);
       move_assign.swap(original);
    }
 
@@ -174,7 +172,7 @@
          int i;
          for(i = 0; i < max*100; ++i){
             IntType move_me(i);
- shmdeque->insert(shmdeque->end(), detail::move_impl(move_me));
+ shmdeque->insert(shmdeque->end(), boost::interprocess::move(move_me));
             stddeque->insert(stddeque->end(), i);
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
@@ -184,7 +182,7 @@
 
          for(i = 0; i < max*100; ++i){
             IntType move_me(i);
- shmdeque->push_back(detail::move_impl(move_me));
+ shmdeque->push_back(boost::interprocess::move(move_me));
             stddeque->push_back(i);
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
@@ -194,7 +192,7 @@
 
          for(i = 0; i < max*100; ++i){
             IntType move_me(i);
- shmdeque->push_front(detail::move_impl(move_me));
+ shmdeque->push_front(boost::interprocess::move(move_me));
             stddeque->push_front(i);
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
@@ -215,7 +213,7 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType move_me (-1);
- aux_vect[i] = detail::move_impl(move_me);
+ aux_vect[i] = boost::interprocess::move(move_me);
             }
             int aux_vect2[50];
             for(int i = 0; i < 50; ++i){
@@ -223,8 +221,8 @@
             }
 
             shmdeque->insert(shmdeque->end()
- ,detail::make_move_iterator(&aux_vect[0])
- ,detail::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;
 
@@ -238,21 +236,21 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType move_me(-1);
- aux_vect[i] = detail::move_impl(move_me);
+ aux_vect[i] = boost::interprocess::move(move_me);
             }
             int aux_vect2[50];
             for(int i = 0; i < 50; ++i){
                aux_vect2[i] = -1;
             }
             shmdeque->insert(shmdeque->begin()
- ,detail::make_move_iterator(&aux_vect[0])
- ,detail::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_<!is_movable<IntType>::value>())){
+ ,detail::bool_<!boost::interprocess::is_movable<IntType>::value>())){
             return false;
          }
 
@@ -263,7 +261,7 @@
 
          for(i = 0; i < max; ++i){
             IntType move_me(i);
- shmdeque->insert(shmdeque->begin(), detail::move_impl(move_me));
+ shmdeque->insert(shmdeque->begin(), boost::interprocess::move(move_me));
             stddeque->insert(stddeque->begin(), i);
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;

Modified: branches/release/libs/interprocess/test/dummy_test_allocator.hpp
==============================================================================
--- branches/release/libs/interprocess/test/dummy_test_allocator.hpp (original)
+++ branches/release/libs/interprocess/test/dummy_test_allocator.hpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -19,10 +19,10 @@
 #include <boost/interprocess/detail/workaround.hpp>
 
 #include <boost/interprocess/interprocess_fwd.hpp>
-#include <boost/interprocess/allocators/allocation_type.hpp>
+#include <boost/interprocess/containers/allocation_type.hpp>
 #include <boost/assert.hpp>
 #include <boost/interprocess/detail/utilities.hpp>
-#include <boost/interprocess/detail/version_type.hpp>
+#include <boost/interprocess/containers/version_type.hpp>
 #include <boost/interprocess/exceptions.hpp>
 #include <memory>
 #include <algorithm>
@@ -64,7 +64,7 @@
    typedef std::size_t size_type;
    typedef std::ptrdiff_t difference_type;
 
-// typedef detail::version_type<dummy_test_allocator, 2> version;
+// typedef boost::interprocess::version_type<dummy_test_allocator, 2> version;
 
    template<class T2>
    struct rebind
@@ -111,7 +111,7 @@
    //Experimental version 2 dummy_test_allocator functions
 
    std::pair<pointer, bool>
- allocation_command(allocation_type,
+ allocation_command(boost::interprocess::allocation_type,
                          size_type,
                          size_type,
                          size_type &, const pointer & = 0)

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -29,27 +29,18 @@
    EmplaceInt& operator=(const EmplaceInt &o);
 
    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)
    {}
 
- #ifdef BOOST_INTERPROCESS_RVALUE_REFERENCE
- EmplaceInt(EmplaceInt &&o)
+ EmplaceInt(BOOST_INTERPROCESS_RV_REF(EmplaceInt) o)
       : a_(o.a_), b_(o.b_), c_(o.c_), d_(o.d_), e_(o.e_)
- #else
- EmplaceInt(detail::moved_object<EmplaceInt> mo)
- : a_(mo.get().a_), b_(mo.get().b_), c_(mo.get().c_), d_(mo.get().d_), e_(mo.get().e_)
- #endif
    {}
 
- #ifdef BOOST_INTERPROCESS_RVALUE_REFERENCE
- EmplaceInt& operator=(EmplaceInt &&o)
- {
- #else
- EmplaceInt& operator=(detail::moved_object<EmplaceInt> mo)
+ EmplaceInt& operator=(BOOST_INTERPROCESS_RV_REF(EmplaceInt) o)
    {
- EmplaceInt &o = mo.get();
- #endif
       this->a_ = o.a_;
       this->b_ = o.b_;
       this->c_ = o.c_;
@@ -93,12 +84,6 @@
 
 } //namespace test {
 
-template<>
-struct is_movable<test::EmplaceInt>
-{
- static const bool value = true;
-};
-
 namespace test {
 
 enum EmplaceOptions{

Modified: branches/release/libs/interprocess/test/expand_bwd_test_allocator.hpp
==============================================================================
--- branches/release/libs/interprocess/test/expand_bwd_test_allocator.hpp (original)
+++ branches/release/libs/interprocess/test/expand_bwd_test_allocator.hpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -19,10 +19,10 @@
 #include <boost/interprocess/detail/workaround.hpp>
 
 #include <boost/interprocess/interprocess_fwd.hpp>
-#include <boost/interprocess/allocators/allocation_type.hpp>
+#include <boost/interprocess/containers/allocation_type.hpp>
 #include <boost/assert.hpp>
 #include <boost/interprocess/detail/utilities.hpp>
-#include <boost/interprocess/detail/version_type.hpp>
+#include <boost/interprocess/containers/version_type.hpp>
 #include <boost/interprocess/exceptions.hpp>
 #include <memory>
 #include <algorithm>
@@ -64,7 +64,7 @@
    typedef std::size_t size_type;
    typedef std::ptrdiff_t difference_type;
 
- typedef detail::version_type<expand_bwd_test_allocator, 2> version;
+ typedef boost::interprocess::version_type<expand_bwd_test_allocator, 2> version;
 
    template<class T2>
    struct rebind
@@ -118,14 +118,14 @@
    //Experimental version 2 expand_bwd_test_allocator functions
 
    std::pair<pointer, bool>
- allocation_command(allocation_type command,
+ allocation_command(boost::interprocess::allocation_type command,
                          size_type limit_size,
                          size_type preferred_size,
                          size_type &received_size, const pointer &reuse = 0)
    {
       (void)preferred_size; (void)reuse; (void)command;
       //This allocator only expands backwards!
- assert(m_allocations == 0 || (command & expand_bwd));
+ assert(m_allocations == 0 || (command & boost::interprocess::expand_bwd));
       
       received_size = limit_size;
 

Modified: branches/release/libs/interprocess/test/file_lock_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/file_lock_test.cpp (original)
+++ branches/release/libs/interprocess/test/file_lock_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -11,12 +11,13 @@
 #include <boost/interprocess/detail/workaround.hpp>
 #include <boost/interprocess/sync/file_lock.hpp>
 #include <boost/interprocess/sync/scoped_lock.hpp>
+#include <boost/interprocess/file_mapping.hpp>
 #include <boost/date_time/posix_time/posix_time_types.hpp>
 #include "mutex_test_template.hpp"
 #include "sharable_mutex_test_template.hpp"
 #include "get_process_id_name.hpp"
 #include <fstream>
-#include <cstdio>
+#include <cstdio> //std::remove
 
 using namespace boost::interprocess;
 //This wrapper is necessary to have a default constructor
@@ -49,16 +50,15 @@
       {
       scoped_lock<file_lock> sl(flock, test::delay(1));
       }
- }/*
+ }
    {
       //Now test move semantics
       file_lock mapping(test::get_process_id_name());
- file_lock move_ctor(detail::move_impl(mapping));
+ file_lock move_ctor(boost::interprocess::move(mapping));
       file_lock move_assign;
- move_assign = detail::move_impl(move_ctor);
- mapping.swap(detail::move_impl(move_assign));
+ move_assign = boost::interprocess::move(move_ctor);
       mapping.swap(move_assign);
- }*/
+ }
 
    //test::test_all_lock<file_lock_lock_test_wrapper>();
    //test::test_all_mutex<false, file_lock_lock_test_wrapper>();

Modified: branches/release/libs/interprocess/test/file_mapping_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/file_mapping_test.cpp (original)
+++ branches/release/libs/interprocess/test/file_mapping_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -16,12 +16,17 @@
 #include <boost/interprocess/mapped_region.hpp>
 #include <memory> //std::auto_ptr
 #include <stdexcept> //std::exception
-#include <cstdio> //std::remove
 #include <cstddef> //std::size_t
 #include "get_process_id_name.hpp"
 
 using namespace boost::interprocess;
 
+file_mapping get_file_mapping()
+{
+ file_mapping f;
+ return file_mapping(boost::interprocess::move(f));
+}
+
 int main ()
 {
    try{
@@ -125,19 +130,19 @@
       {
          //Now test move semantics
          file_mapping mapping(test::get_process_id_name(), read_only);
- file_mapping move_ctor(detail::move_impl(mapping));
+ file_mapping move_ctor(boost::interprocess::move(mapping));
          file_mapping move_assign;
- move_assign = detail::move_impl(move_ctor);
- mapping.swap(detail::move_impl(move_assign));
+ move_assign = boost::interprocess::move(move_ctor);
          mapping.swap(move_assign);
+ file_mapping ret(get_file_mapping());
       }
    }
    catch(std::exception &exc){
- std::remove(test::get_process_id_name());
+ file_mapping::remove(test::get_process_id_name());
       std::cout << "Unhandled exception: " << exc.what() << std::endl;
       throw;
    }
- std::remove(test::get_process_id_name());
+ file_mapping::remove(test::get_process_id_name());
    return 0;
 }
 

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -62,7 +62,7 @@
    <char,
     //simple_seq_fit<mutex_family>,
     rbtree_best_fit<mutex_family>,
- flat_map_index
+ iset_index
> my_managed_shared_memory;
 
 //Alias allocator type
@@ -132,10 +132,49 @@
    { return a.id_ < b.id_; }
 };
 
+//Test recursive structures
+class recursive_flat_multiset
+{
+public:
+ int id_;
+ flat_multiset<recursive_flat_multiset> flat_set_;
+ friend bool operator< (const recursive_flat_multiset &a, const recursive_flat_set &b)
+ { return a.id_ < b.id_; }
+};
+
+class recursive_flat_multimap
+{
+public:
+ int id_;
+ flat_map<recursive_flat_multimap, recursive_flat_multimap> map_;
+ friend bool operator< (const recursive_flat_multimap &a, const recursive_flat_multimap &b)
+ { return a.id_ < b.id_; }
+};
+
+template<class C>
+void test_move()
+{
+ //Now test move semantics
+ C original;
+ C move_ctor(boost::interprocess::move(original));
+ C move_assign;
+ move_assign = boost::interprocess::move(move_ctor);
+ move_assign.swap(original);
+}
+
 int main()
 {
    using namespace boost::interprocess::test;
 
+ //Now test move semantics
+ {
+ test_move<flat_set<recursive_flat_set> >();
+ test_move<flat_multiset<recursive_flat_multiset> >();
+ test_move<flat_map<recursive_flat_map, recursive_flat_map> >();
+ test_move<flat_multimap<recursive_flat_multimap, recursive_flat_multimap> >();
+ }
+
+
    if (0 != set_test<my_managed_shared_memory
                   ,MyShmSet
                   ,MyStdSet
@@ -207,7 +246,7 @@
       return 1;
    }
 
- #if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC_MINOR__ < 3)
+ //#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC_MINOR__ < 3)
    const test::EmplaceOptions SetOptions = (test::EmplaceOptions)(test::EMPLACE_HINT | test::EMPLACE_ASSOC);
    const test::EmplaceOptions MapOptions = (test::EmplaceOptions)(test::EMPLACE_HINT_PAIR | test::EMPLACE_ASSOC_PAIR);
 
@@ -219,8 +258,9 @@
       return 1;
    if(!boost::interprocess::test::test_emplace<flat_multiset<test::EmplaceInt>, SetOptions>())
       return 1;
- #endif //!defined(__GNUC__)
+ //#endif //!defined(__GNUC__)
    return 0;
+
 }
 
 #include <boost/interprocess/detail/config_end.hpp>

Modified: branches/release/libs/interprocess/test/get_process_id_name.hpp
==============================================================================
--- branches/release/libs/interprocess/test/get_process_id_name.hpp (original)
+++ branches/release/libs/interprocess/test/get_process_id_name.hpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -23,8 +23,8 @@
 inline void get_process_id_name(std::string &str)
 {
    std::stringstream sstr;
- sstr << "process_" << boost::interprocess::detail::get_current_process_id();
- str = sstr.str();
+ sstr << "process_" << boost::interprocess::detail::get_current_process_id() << std::ends;
+ str = sstr.str().c_str();
 }
 
 inline const char *get_process_id_name()

Modified: branches/release/libs/interprocess/test/list_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/list_test.cpp (original)
+++ branches/release/libs/interprocess/test/list_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -54,10 +54,9 @@
    {
       //Now test move semantics
       list<recursive_list> original;
- list<recursive_list> move_ctor(detail::move_impl(original));
+ list<recursive_list> move_ctor(boost::interprocess::move(original));
       list<recursive_list> move_assign;
- move_assign = detail::move_impl(move_ctor);
- move_assign.swap(detail::move_impl(original));
+ move_assign = boost::interprocess::move(move_ctor);
       move_assign.swap(original);
    }
    if(test::list_test<managed_shared_memory, MyList, true>())

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -19,7 +19,6 @@
 #include <functional>
 #include "print_container.hpp"
 #include <boost/interprocess/detail/move.hpp>
-#include <boost/interprocess/detail/move_iterator.hpp>
 #include <string>
 #include "get_process_id_name.hpp"
 
@@ -36,7 +35,7 @@
       typedef typename MyShmList::value_type IntType;
       for(int i = 0; i < max; ++i){
          IntType move_me(i);
- shmlist->push_back(detail::move_impl(move_me));
+ shmlist->push_back(boost::interprocess::move(move_me));
          stdlist->push_back(i);
       }
       if(!CheckEqualContainers(shmlist, stdlist))
@@ -54,7 +53,7 @@
       typedef typename MyShmList::value_type IntType;
       for(int i = 0; i < max; ++i){
          IntType move_me(i);
- shmlist->push_front(detail::move_impl(move_me));
+ shmlist->push_front(boost::interprocess::move(move_me));
          stdlist->push_front(i);
       }
       if(!CheckEqualContainers(shmlist, stdlist))
@@ -113,6 +112,7 @@
       MyShmList *shmlist = segment.template construct<MyShmList>("MyList")
                               (segment.get_segment_manager());
 
+
       MyStdList *stdlist = new MyStdList;
 
       if(push_data_t::execute(max, shmlist, stdlist)){
@@ -135,14 +135,14 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = detail::move_impl(move_me);
+ aux_vect[i] = boost::interprocess::move(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
             aux_vect2[i] = -1;
          }
- shmlist->assign(detail::make_move_iterator(&aux_vect[0])
- ,detail::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;
       }
@@ -165,15 +165,15 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = detail::move_impl(move_me);
+ aux_vect[i] = boost::interprocess::move(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
             aux_vect2[i] = -1;
          }
          shmlist->insert(shmlist->begin()
- ,detail::make_move_iterator(&aux_vect[0])
- ,detail::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]);
       }
 

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -31,7 +31,7 @@
 
    {
       //Remove the file it is already created
- std::remove(FileName);
+ file_mapping::remove(FileName);
 
       const int max = 100;
       void *array[max];
@@ -52,7 +52,7 @@
 
    {
       //Remove the file it is already created
- std::remove(FileName);
+ file_mapping::remove(FileName);
 
       //Named allocate capable memory mapped file managed memory class
       managed_mapped_file mfile(create_only, FileName, FileSize);
@@ -203,15 +203,14 @@
       {
          //Now test move semantics
          managed_mapped_file original(open_only, FileName);
- managed_mapped_file move_ctor(detail::move_impl(original));
+ managed_mapped_file move_ctor(boost::interprocess::move(original));
          managed_mapped_file move_assign;
- move_assign = detail::move_impl(move_ctor);
- move_assign.swap(detail::move_impl(original));
+ move_assign = boost::interprocess::move(move_ctor);
          move_assign.swap(original);
       }
    }
 
- std::remove(FileName);
+ file_mapping::remove(FileName);
    return 0;
 }
 

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -199,10 +199,9 @@
       {
          //Now test move semantics
          managed_shared_memory original(open_only, ShmemName);
- managed_shared_memory move_ctor(detail::move_impl(original));
+ managed_shared_memory move_ctor(boost::interprocess::move(original));
          managed_shared_memory move_assign;
- move_assign = detail::move_impl(move_ctor);
- move_assign.swap(detail::move_impl(original));
+ move_assign = boost::interprocess::move(move_ctor);
          move_assign.swap(original);
       }
    }

Modified: branches/release/libs/interprocess/test/managed_windows_shared_memory_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/managed_windows_shared_memory_test.cpp (original)
+++ branches/release/libs/interprocess/test/managed_windows_shared_memory_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -9,8 +9,9 @@
 //////////////////////////////////////////////////////////////////////////////
 
 #include <boost/interprocess/detail/config_begin.hpp>
+#include <boost/interprocess/detail/workaround.hpp>
 
-#ifdef BOOST_WINDOWS
+#ifdef BOOST_INTERPROCESS_WINDOWS
 
 #include <boost/interprocess/allocators/allocator.hpp>
 #include <boost/interprocess/containers/vector.hpp>
@@ -130,9 +131,9 @@
 
          //Now test move semantics
          managed_windows_shared_memory original(open_only, MemName);
- managed_windows_shared_memory move_ctor(detail::move_impl(original));
+ managed_windows_shared_memory move_ctor(boost::interprocess::move(original));
          managed_windows_shared_memory move_assign;
- move_assign = detail::move_impl(move_ctor);
+ move_assign = boost::interprocess::move(move_ctor);
       }
    }
 

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -17,9 +17,8 @@
 #include <functional>
 #include <utility>
 #include "print_container.hpp"
-#include <boost/interprocess/detail/move_iterator.hpp>
 #include <boost/interprocess/detail/utilities.hpp>
-#include <boost/interprocess/detail/iterators.hpp>
+#include <boost/interprocess/containers/pair.hpp>
 #include <string>
 #include "get_process_id_name.hpp"
 
@@ -41,7 +40,7 @@
 int map_test ()
 {
    typedef typename MyShmMap::key_type IntType;
- typedef std::pair<IntType, IntType> IntPairType;
+ typedef boost::interprocess::pair<IntType, IntType> IntPairType;
    typedef typename MyStdMap::value_type StdPairType;
    const int memsize = 65536;
    const char *const shMemName = test::get_process_id_name();
@@ -73,7 +72,9 @@
          //This is really nasty, but we have no other simple choice
          IntPairType aux_vect[50];
          for(int i = 0; i < 50; ++i){
- new(&aux_vect[i])IntPairType(IntType(i/2), IntType(i/2));
+ IntType i1(i/2);
+ IntType i2(i/2);
+ new(&aux_vect[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
          }
 
          typedef typename MyStdMap::value_type StdValueType;
@@ -86,21 +87,23 @@
 
          IntPairType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
- new(&aux_vect3[i])IntPairType(IntType(i/2), IntType(i/2));
+ IntType i1(i/2);
+ IntType i2(i/2);
+ new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
          }
 
          MyShmMap *shmmap2 =
             segment.template construct<MyShmMap>("MyShmMap2")
- (detail::make_move_iterator(&aux_vect[0])
- , detail::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")
- (detail::make_move_iterator(&aux_vect3[0])
- , detail::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);
@@ -112,71 +115,89 @@
          delete stdmap2;
          delete stdmultimap2;
       }
+ {
+ //This is really nasty, but we have no other simple choice
+ IntPairType aux_vect[max];
+ for(int i = 0; i < max; ++i){
+ IntType i1(i);
+ IntType i2(i);
+ new(&aux_vect[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ IntPairType aux_vect3[max];
+ for(int i = 0; i < max; ++i){
+ IntType i1(i);
+ IntType i2(i);
+ new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+
+ for(int i = 0; i < max; ++i){
+ shmmap->insert(boost::interprocess::move(aux_vect[i]));
+ stdmap->insert(StdPairType(i, i));
+ shmmultimap->insert(boost::interprocess::move(aux_vect3[i]));
+ stdmultimap->insert(StdPairType(i, i));
+ }
 
- int i, j;
- for(i = 0; i < max; ++i){
- shmmap->insert(detail::move_impl(IntPairType (detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmap->insert(StdPairType(i, i));
- shmmultimap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmultimap->insert(StdPairType(i, i));
- }
+ if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
+ if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
 
- if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
- if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
+ typename MyShmMap::iterator it;
+ typename MyShmMap::const_iterator cit = it;
 
- typename MyShmMap::iterator it;
- typename MyShmMap::const_iterator cit = it;
+ shmmap->erase(shmmap->begin()++);
+ stdmap->erase(stdmap->begin()++);
+ shmmultimap->erase(shmmultimap->begin()++);
+ stdmultimap->erase(stdmultimap->begin()++);
+ if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
+ if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
 
- shmmap->erase(shmmap->begin()++);
- stdmap->erase(stdmap->begin()++);
- shmmultimap->erase(shmmultimap->begin()++);
- stdmultimap->erase(stdmultimap->begin()++);
- if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
- if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
-
- shmmap->erase(shmmap->begin());
- stdmap->erase(stdmap->begin());
- shmmultimap->erase(shmmultimap->begin());
- stdmultimap->erase(stdmultimap->begin());
- if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
- if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
-
- //Swapping test
- std::less<IntType> lessfunc;
- MyShmMap tmpshmemap2 (lessfunc, segment.get_segment_manager());
- MyStdMap tmpstdmap2;
- MyShmMultiMap tmpshmemultimap2(lessfunc, segment.get_segment_manager());
- MyStdMultiMap tmpstdmultimap2;
- shmmap->swap(tmpshmemap2);
- stdmap->swap(tmpstdmap2);
- shmmultimap->swap(tmpshmemultimap2);
- stdmultimap->swap(tmpstdmultimap2);
- shmmap->swap(tmpshmemap2);
- stdmap->swap(tmpstdmap2);
- shmmultimap->swap(tmpshmemultimap2);
- stdmultimap->swap(tmpstdmultimap2);
- if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
- if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
+ shmmap->erase(shmmap->begin());
+ stdmap->erase(stdmap->begin());
+ shmmultimap->erase(shmmultimap->begin());
+ stdmultimap->erase(stdmultimap->begin());
+ if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
+ if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
 
+ //Swapping test
+ std::less<IntType> lessfunc;
+ MyShmMap tmpshmemap2 (lessfunc, segment.get_segment_manager());
+ MyStdMap tmpstdmap2;
+ MyShmMultiMap tmpshmemultimap2(lessfunc, segment.get_segment_manager());
+ MyStdMultiMap tmpstdmultimap2;
+ shmmap->swap(tmpshmemap2);
+ stdmap->swap(tmpstdmap2);
+ shmmultimap->swap(tmpshmemultimap2);
+ stdmultimap->swap(tmpstdmultimap2);
+ shmmap->swap(tmpshmemap2);
+ stdmap->swap(tmpstdmap2);
+ shmmultimap->swap(tmpshmemultimap2);
+ stdmultimap->swap(tmpstdmultimap2);
+ if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
+ if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
+ }
       //Insertion from other container
       //Initialize values
       {
          //This is really nasty, but we have no other simple choice
          IntPairType aux_vect[50];
          for(int i = 0; i < 50; ++i){
- new(&aux_vect[i])IntPairType(IntType(-1), IntType(-1));
+ IntType i1(-1);
+ IntType i2(-1);
+ new(&aux_vect[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
          }
          IntPairType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
- new(&aux_vect3[i])IntPairType(IntType(-1), IntType(-1));
+ IntType i1(-1);
+ IntType i2(-1);
+ new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
          }
 
- shmmap->insert(detail::make_move_iterator(&aux_vect[0]), detail::make_move_iterator(aux_vect + 50));
- StdPairType stdpairtype(-1, -1);
- constant_iterator<StdPairType> constant_beg(stdpairtype, 50), constant_end;
- stdmap->insert(constant_beg, constant_end);
- shmmultimap->insert(detail::make_move_iterator(&aux_vect3[0]), detail::make_move_iterator(aux_vect3 + 50));
- stdmultimap->insert(constant_beg, constant_end);
+ 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);
+ stdmultimap->insert(stdpairtype);
+ }
          if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
          if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
 
@@ -192,34 +213,44 @@
       {
          IntPairType aux_vect[50];
          for(int i = 0; i < 50; ++i){
- new(&aux_vect[i])IntPairType(IntType(-1), IntType(-1));
+ IntType i1(-1);
+ IntType i2(-1);
+ new(&aux_vect[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
          }
 
          IntPairType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
- new(&aux_vect3[i])IntPairType(IntType(-1), IntType(-1));
+ IntType i1(-1);
+ IntType i2(-1);
+ new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
          }
 
          IntPairType aux_vect4[50];
          for(int i = 0; i < 50; ++i){
- new(&aux_vect4[i])IntPairType(IntType(-1), IntType(-1));
+ IntType i1(-1);
+ IntType i2(-1);
+ new(&aux_vect4[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
          }
 
          IntPairType aux_vect5[50];
          for(int i = 0; i < 50; ++i){
- new(&aux_vect5[i])IntPairType(IntType(-1), IntType(-1));
+ IntType i1(-1);
+ IntType i2(-1);
+ 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));
+
+ for(std::size_t i = 0; i != 50; ++i){
+ StdPairType stdpairtype(-1, -1);
+ stdmap->insert(stdpairtype);
+ stdmultimap->insert(stdpairtype);
+ stdmap->insert(stdpairtype);
+ stdmultimap->insert(stdpairtype);
          }
-
- shmmap->insert(detail::make_move_iterator(&aux_vect[0]), detail::make_move_iterator(aux_vect + 50));
- shmmap->insert(detail::make_move_iterator(&aux_vect3[0]), detail::make_move_iterator(aux_vect3 + 50));
- StdPairType stdpairtype(-1, -1);
- constant_iterator<StdPairType> constant_beg(stdpairtype, 50), constant_end;
- stdmap->insert(constant_beg, constant_end);
- stdmap->insert(constant_beg, constant_end);
- shmmultimap->insert(detail::make_move_iterator(&aux_vect4[0]), detail::make_move_iterator(aux_vect4 + 50));
- shmmultimap->insert(detail::make_move_iterator(&aux_vect5[0]), detail::make_move_iterator(aux_vect5 + 50));
- stdmultimap->insert(constant_beg, constant_end);
- stdmultimap->insert(constant_beg, constant_end);
          if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
          if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
 
@@ -231,84 +262,158 @@
          if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
       }
 
- for(i = 0; i < max; ++i){
- shmmap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmap->insert(StdPairType(i, i));
- shmmultimap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmultimap->insert(StdPairType(i, i));
- }
-
- if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
- if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
-
- for(i = 0; i < max; ++i){
- shmmap->insert(shmmap->begin(), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmap->insert(stdmap->begin(), StdPairType(i, i));
- //PrintContainers(shmmap, stdmap);
- shmmultimap->insert(shmmultimap->begin(), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmultimap->insert(stdmultimap->begin(), StdPairType(i, i));
- //PrintContainers(shmmultimap, stdmultimap);
- if(!CheckEqualPairContainers(shmmap, stdmap))
- return 1;
- if(!CheckEqualPairContainers(shmmultimap, stdmultimap))
- return 1;
-
- shmmap->insert(shmmap->end(), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmap->insert(stdmap->end(), StdPairType(i, i));
- shmmultimap->insert(shmmultimap->end(), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmultimap->insert(stdmultimap->end(), StdPairType(i, i));
- if(!CheckEqualPairContainers(shmmap, stdmap))
- return 1;
- if(!CheckEqualPairContainers(shmmultimap, stdmultimap))
- return 1;
-
- shmmap->insert(shmmap->lower_bound(IntType(i)), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmap->insert(stdmap->lower_bound(i), StdPairType(i, i));
- //PrintContainers(shmmap, stdmap);
- shmmultimap->insert(shmmultimap->lower_bound(IntType(i)), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmultimap->insert(stdmultimap->lower_bound(i), StdPairType(i, i));
- //PrintContainers(shmmultimap, stdmultimap);
- if(!CheckEqualPairContainers(shmmap, stdmap))
- return 1;
- if(!CheckEqualPairContainers(shmmultimap, stdmultimap))
- return 1;
- shmmap->insert(shmmap->upper_bound(IntType(i)), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmap->insert(stdmap->upper_bound(i), StdPairType(i, i));
- //PrintContainers(shmmap, stdmap);
- shmmultimap->insert(shmmultimap->upper_bound(IntType(i)), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- stdmultimap->insert(stdmultimap->upper_bound(i), StdPairType(i, i));
- //PrintContainers(shmmultimap, stdmultimap);
- if(!CheckEqualPairContainers(shmmap, stdmap))
- return 1;
- if(!CheckEqualPairContainers(shmmultimap, stdmultimap))
- return 1;
- }
-
- //Compare count with std containers
- for(i = 0; i < max; ++i){
- if(shmmap->count(IntType(i)) != stdmap->count(i)){
- return -1;
+ {
+ //This is really nasty, but we have no other simple choice
+ IntPairType aux_vect[max];
+ for(int i = 0; i < max; ++i){
+ IntType i1(i);
+ IntType i2(i);
+ new(&aux_vect[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ IntPairType aux_vect3[max];
+ for(int i = 0; i < max; ++i){
+ IntType i1(i);
+ IntType i2(i);
+ new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+
+ for(int i = 0; i < max; ++i){
+ shmmap->insert(boost::interprocess::move(aux_vect[i]));
+ stdmap->insert(StdPairType(i, i));
+ shmmultimap->insert(boost::interprocess::move(aux_vect3[i]));
+ stdmultimap->insert(StdPairType(i, i));
          }
 
- if(shmmultimap->count(IntType(i)) != stdmultimap->count(i)){
- return -1;
- }
- }
+ if(!CheckEqualPairContainers(shmmap, stdmap)) return 1;
+ if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
 
- //Now do count exercise
- shmmap->erase(shmmap->begin(), shmmap->end());
- shmmultimap->erase(shmmultimap->begin(), shmmultimap->end());
- shmmap->clear();
- shmmultimap->clear();
-
- for(j = 0; j < 3; ++j)
- for(i = 0; i < 100; ++i){
- shmmap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- shmmultimap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
- if(shmmap->count(IntType(i)) != typename MyShmMultiMap::size_type(1))
- return 1;
- if(shmmultimap->count(IntType(i)) != typename MyShmMultiMap::size_type(j+1))
- return 1;
+ for(int i = 0; i < max; ++i){
+ IntPairType intpair;
+ {
+ IntType i1(i);
+ IntType i2(i);
+ new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ shmmap->insert(shmmap->begin(), boost::interprocess::move(intpair));
+ stdmap->insert(stdmap->begin(), StdPairType(i, i));
+ //PrintContainers(shmmap, stdmap);
+ {
+ IntType i1(i);
+ IntType i2(i);
+ new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ shmmultimap->insert(shmmultimap->begin(), boost::interprocess::move(intpair));
+ stdmultimap->insert(stdmultimap->begin(), StdPairType(i, i));
+ //PrintContainers(shmmultimap, stdmultimap);
+ if(!CheckEqualPairContainers(shmmap, stdmap))
+ return 1;
+ if(!CheckEqualPairContainers(shmmultimap, stdmultimap))
+ return 1;
+ {
+ IntType i1(i);
+ IntType i2(i);
+ new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ shmmap->insert(shmmap->end(), boost::interprocess::move(intpair));
+ stdmap->insert(stdmap->end(), StdPairType(i, i));
+ {
+ IntType i1(i);
+ IntType i2(i);
+ new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ shmmultimap->insert(shmmultimap->end(), boost::interprocess::move(intpair));
+ stdmultimap->insert(stdmultimap->end(), StdPairType(i, i));
+ if(!CheckEqualPairContainers(shmmap, stdmap))
+ return 1;
+ if(!CheckEqualPairContainers(shmmultimap, stdmultimap))
+ return 1;
+ {
+ IntType i1(i);
+ IntType i2(i);
+ new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ shmmap->insert(shmmap->lower_bound(IntType(i)), boost::interprocess::move(intpair));
+ stdmap->insert(stdmap->lower_bound(i), StdPairType(i, i));
+ //PrintContainers(shmmap, stdmap);
+ {
+ IntType i1(i);
+ IntType i2(i);
+ new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ {
+ IntType i1(i);
+ shmmultimap->insert(shmmultimap->lower_bound(boost::interprocess::move(i1)), boost::interprocess::move(intpair));
+ stdmultimap->insert(stdmultimap->lower_bound(i), StdPairType(i, i));
+ }
+
+ //PrintContainers(shmmultimap, stdmultimap);
+ if(!CheckEqualPairContainers(shmmap, stdmap))
+ return 1;
+ if(!CheckEqualPairContainers(shmmultimap, stdmultimap))
+ return 1;
+ {
+ IntType i1(i);
+ IntType i2(i);
+ new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ {
+ IntType i1(i);
+ shmmap->insert(shmmap->upper_bound(boost::interprocess::move(i1)), boost::interprocess::move(intpair));
+ stdmap->insert(stdmap->upper_bound(i), StdPairType(i, i));
+ }
+ //PrintContainers(shmmap, stdmap);
+ {
+ IntType i1(i);
+ IntType i2(i);
+ new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ {
+ IntType i1(i);
+ shmmultimap->insert(shmmultimap->upper_bound(boost::interprocess::move(i1)), boost::interprocess::move(intpair));
+ stdmultimap->insert(stdmultimap->upper_bound(i), StdPairType(i, i));
+ }
+ //PrintContainers(shmmultimap, stdmultimap);
+ if(!CheckEqualPairContainers(shmmap, stdmap))
+ return 1;
+ if(!CheckEqualPairContainers(shmmultimap, stdmultimap))
+ return 1;
+ }
+
+ //Compare count with std containers
+ for(int i = 0; i < max; ++i){
+ if(shmmap->count(IntType(i)) != stdmap->count(i)){
+ return -1;
+ }
+
+ if(shmmultimap->count(IntType(i)) != stdmultimap->count(i)){
+ return -1;
+ }
+ }
+
+ //Now do count exercise
+ shmmap->erase(shmmap->begin(), shmmap->end());
+ shmmultimap->erase(shmmultimap->begin(), shmmultimap->end());
+ shmmap->clear();
+ shmmultimap->clear();
+
+ for(int j = 0; j < 3; ++j)
+ for(int i = 0; i < 100; ++i){
+ IntPairType intpair;
+ {
+ IntType i1(i), i2(i);
+ new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ shmmap->insert(boost::interprocess::move(intpair));
+ {
+ IntType i1(i), i2(i);
+ new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ }
+ shmmultimap->insert(boost::interprocess::move(intpair));
+ if(shmmap->count(IntType(i)) != typename MyShmMultiMap::size_type(1))
+ return 1;
+ if(shmmultimap->count(IntType(i)) != typename MyShmMultiMap::size_type(j+1))
+ return 1;
+ }
       }
 
       segment.template destroy<MyShmMap>("MyShmMap");
@@ -337,7 +442,7 @@
 int map_test_copyable ()
 {
    typedef typename MyShmMap::key_type IntType;
- typedef std::pair<IntType, IntType> IntPairType;
+ typedef boost::interprocess::pair<IntType, IntType> IntPairType;
    typedef typename MyStdMap::value_type StdPairType;
 
    const int memsize = 65536;
@@ -367,10 +472,18 @@
 
    int i;
    for(i = 0; i < max; ++i){
- shmmap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
+ {
+ IntType i1(i), i2(i);
+ IntPairType intpair1(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ shmmap->insert(boost::interprocess::move(intpair1));
       stdmap->insert(StdPairType(i, i));
- shmmultimap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
+ }
+ {
+ IntType i1(i), i2(i);
+ IntPairType intpair2(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ shmmultimap->insert(boost::interprocess::move(intpair2));
       stdmultimap->insert(StdPairType(i, i));
+ }
    }
    if(!CheckEqualContainers(shmmap, stdmap)) return 1;
    if(!CheckEqualContainers(shmmultimap, stdmultimap)) return 1;

Modified: branches/release/libs/interprocess/test/mapped_file_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/mapped_file_test.cpp (original)
+++ branches/release/libs/interprocess/test/mapped_file_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -12,6 +12,7 @@
 #include <boost/interprocess/allocators/allocator.hpp>
 #include <boost/interprocess/containers/vector.hpp>
 #include <boost/interprocess/detail/file_wrapper.hpp>
+#include <boost/interprocess/file_mapping.hpp>
 #include <boost/interprocess/detail/managed_open_or_create_impl.hpp>
 #include "named_creation_template.hpp"
 #include <cstdio>
@@ -29,7 +30,7 @@
    ~file_destroyer()
    {
       //The last destructor will destroy the file
- std::remove(FileName);
+ file_mapping::remove(FileName);
    }
 };
 
@@ -60,7 +61,7 @@
 {
    typedef boost::interprocess::detail::managed_open_or_create_impl
       <boost::interprocess::detail::file_wrapper> mapped_file;
- std::remove(FileName);
+ file_mapping::remove(FileName);
    test::test_named_creation<mapped_file_creation_test_wrapper>();
 
    //Create and get name, size and address
@@ -76,11 +77,11 @@
       std::memset(file1.get_user_address(), 0, file1.get_user_size());
 
       //Now test move semantics
- mapped_file move_ctor(detail::move_impl(file1));
+ mapped_file move_ctor(boost::interprocess::move(file1));
       mapped_file move_assign;
- move_assign = detail::move_impl(move_ctor);
+ move_assign = boost::interprocess::move(move_ctor);
    }
- std::remove(FileName);
+ file_mapping::remove(FileName);
    return 0;
 }
 

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -17,7 +17,7 @@
 #include <new>
 #include <utility>
 #include <cstring> //std::memset
-#include <cstdio> //std::remove
+#include <boost/interprocess/containers/vector.hpp>
 
 namespace boost { namespace interprocess { namespace test {
 
@@ -107,7 +107,7 @@
       ; ++i){
       std::size_t received_size;
       if(a.template allocation_command<char>
- ( shrink_in_place | nothrow_allocation, i*2
+ ( boost::interprocess::shrink_in_place | boost::interprocess::nothrow_allocation, i*2
          , i, received_size, static_cast<char*>(buffers[i])).first){
          if(received_size > std::size_t(i*2)){
             return false;
@@ -159,7 +159,7 @@
       preferred_size = min_size > preferred_size ? min_size : preferred_size;
 
       while(a.template allocation_command<char>
- ( expand_fwd | nothrow_allocation, min_size
+ ( boost::interprocess::expand_fwd | boost::interprocess::nothrow_allocation, min_size
          , preferred_size, received_size, static_cast<char*>(buffers[i])).first){
          //Check received size is bigger than minimum
          if(received_size < min_size){
@@ -197,10 +197,10 @@
    for(int i = 0; true; ++i){
       std::size_t received_size;
       void *ptr = a.template allocation_command<char>
- ( allocate_new | nothrow_allocation, i, i*2, received_size).first;
+ ( boost::interprocess::allocate_new | boost::interprocess::nothrow_allocation, i, i*2, received_size).first;
       if(!ptr){
          ptr = a.template allocation_command<char>
- ( allocate_new | nothrow_allocation, 1, i*2, received_size).first;
+ ( boost::interprocess::allocate_new | boost::interprocess::nothrow_allocation, 1, i*2, received_size).first;
          if(!ptr)
             break;
       }
@@ -214,7 +214,7 @@
       ; ++i){
       std::size_t received_size;
       if(a.template allocation_command<char>
- ( shrink_in_place | nothrow_allocation, received_sizes[i]
+ ( boost::interprocess::shrink_in_place | boost::interprocess::nothrow_allocation, received_sizes[i]
          , i, received_size, static_cast<char*>(buffers[i])).first){
          if(received_size > std::size_t(received_sizes[i])){
             return false;
@@ -233,7 +233,7 @@
       std::size_t received_size;
       std::size_t request_size = received_sizes[i];
       if(a.template allocation_command<char>
- ( expand_fwd | nothrow_allocation, request_size
+ ( boost::interprocess::expand_fwd | boost::interprocess::nothrow_allocation, request_size
          , request_size, received_size, static_cast<char*>(buffers[i])).first){
          if(received_size != received_sizes[i]){
             return false;
@@ -298,7 +298,7 @@
          preferred_size = min_size > preferred_size ? min_size : preferred_size;
 
          while(a.template allocation_command<char>
- ( expand_fwd | nothrow_allocation, min_size
+ ( boost::interprocess::expand_fwd | boost::interprocess::nothrow_allocation, min_size
             , preferred_size, received_size, static_cast<char*>(buffers[i])).first){
             //Check received size is bigger than minimum
             if(received_size < min_size){
@@ -368,7 +368,7 @@
          std::size_t min_size = (received_size + 1);
          std::size_t prf_size = (received_size + (i+1)*2);
          std::pair<void*, bool> ret = a.raw_allocation_command
- ( expand_bwd | nothrow_allocation, min_size
+ ( boost::interprocess::expand_bwd | boost::interprocess::nothrow_allocation, min_size
             , prf_size, received_size, static_cast<char*>(ptr), sizeof_object);
          if(!ret.first)
             break;
@@ -631,7 +631,6 @@
 template<class Allocator>
 bool test_many_equal_allocation(Allocator &a)
 {
- typedef typename Allocator::multiallocation_iterator multiallocation_iterator;
    for( deallocation_type t = DirectDeallocation
       ; t != EndDeallocationType
       ; t = (deallocation_type)((int)t + 1)){
@@ -665,16 +664,17 @@
       if(!a.check_sanity())
          return false;
 
+ typedef typename Allocator::multiallocation_chain multiallocation_chain;
       std::vector<void*> buffers;
       for(int i = 0; true; ++i){
- multiallocation_iterator it = a.allocate_many(i+1, (i+1)*2, std::nothrow);
- if(!it)
+ multiallocation_chain chain(a.allocate_many(i+1, (i+1)*2, std::nothrow));
+ if(chain.empty())
             break;
- multiallocation_iterator itend;
 
- std::size_t n = 0;
- for(; it != itend; ++n){
- buffers.push_back(&*it++);
+ std::size_t n = chain.size();
+ while(!chain.empty()){
+ buffers.push_back(detail::get_pointer(chain.front()));
+ chain.pop_front();
          }
          if(n != std::size_t((i+1)*2))
             return false;
@@ -740,7 +740,7 @@
 template<class Allocator>
 bool test_many_different_allocation(Allocator &a)
 {
- typedef typename Allocator::multiallocation_iterator multiallocation_iterator;
+ typedef typename Allocator::multiallocation_chain multiallocation_chain;
    const std::size_t ArraySize = 11;
    std::size_t requested_sizes[ArraySize];
    for(std::size_t i = 0; i < ArraySize; ++i){
@@ -777,13 +777,13 @@
 
       std::vector<void*> buffers;
       for(int i = 0; true; ++i){
- multiallocation_iterator it = a.allocate_many(requested_sizes, ArraySize, 1, std::nothrow);
- if(!it)
+ multiallocation_chain chain(a.allocate_many(requested_sizes, ArraySize, 1, std::nothrow));
+ if(chain.empty())
             break;
- multiallocation_iterator itend;
- std::size_t n = 0;
- for(; it != itend; ++n){
- buffers.push_back(&*it++);
+ std::size_t n = chain.size();
+ while(!chain.empty()){
+ buffers.push_back(detail::get_pointer(chain.front()));
+ chain.pop_front();
          }
          if(n != ArraySize)
             return false;
@@ -846,9 +846,9 @@
 template<class Allocator>
 bool test_many_deallocation(Allocator &a)
 {
- typedef typename Allocator::multiallocation_iterator multiallocation_iterator;
+ typedef typename Allocator::multiallocation_chain multiallocation_chain;
    const std::size_t ArraySize = 11;
- std::vector<multiallocation_iterator> buffers;
+ vector<multiallocation_chain> buffers;
    std::size_t requested_sizes[ArraySize];
    for(std::size_t i = 0; i < ArraySize; ++i){
       requested_sizes[i] = 4*i;
@@ -857,13 +857,13 @@
 
    {
       for(int i = 0; true; ++i){
- multiallocation_iterator it = a.allocate_many(requested_sizes, ArraySize, 1, std::nothrow);
- if(!it)
+ multiallocation_chain chain = a.allocate_many(requested_sizes, ArraySize, 1, std::nothrow);
+ if(chain.empty())
             break;
- buffers.push_back(it);
+ buffers.push_back(boost::interprocess::move(chain));
       }
       for(int i = 0, max = (int)buffers.size(); i != max; ++i){
- a.deallocate_many(buffers[i]);
+ a.deallocate_many(boost::interprocess::move(buffers[i]));
       }
       buffers.clear();
       bool ok = free_memory == a.get_free_memory() &&
@@ -873,13 +873,13 @@
 
    {
       for(int i = 0; true; ++i){
- multiallocation_iterator it = a.allocate_many(i*4, ArraySize, std::nothrow);
- if(!it)
+ multiallocation_chain chain(a.allocate_many(i*4, ArraySize, std::nothrow));
+ if(chain.empty())
             break;
- buffers.push_back(it);
+ buffers.push_back(boost::interprocess::move(chain));
       }
       for(int i = 0, max = (int)buffers.size(); i != max; ++i){
- a.deallocate_many(buffers[i]);
+ a.deallocate_many(boost::interprocess::move(buffers[i]));
       }
       buffers.clear();
 

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -21,10 +21,11 @@
 
 class movable_int
 {
- movable_int(const movable_int&);
- movable_int &operator= (const movable_int&);
+ movable_int(movable_int&);
+ movable_int &operator= (movable_int&);
 
    public:
+ BOOST_INTERPROCESS_ENABLE_MOVE_EMULATION(movable_int)
 
    movable_int()
       : m_int(0)
@@ -34,23 +35,12 @@
       : m_int(a)
    {}
 
- #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- movable_int(detail::moved_object<movable_int> mmi)
- : m_int(mmi.get().m_int)
- { mmi.get().m_int = 0; }
- #else
- movable_int(movable_int &&mmi)
+ movable_int(BOOST_INTERPROCESS_RV_REF(movable_int) mmi)
       : m_int(mmi.m_int)
    { mmi.m_int = 0; }
- #endif
 
- #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- movable_int & operator= (detail::moved_object<movable_int> mmi)
- { this->m_int = mmi.get().m_int; mmi.get().m_int = 0; return *this; }
- #else
- movable_int & operator= (movable_int &&mmi)
+ movable_int & operator= (BOOST_INTERPROCESS_RV_REF(movable_int) mmi)
    { this->m_int = mmi.m_int; mmi.m_int = 0; return *this; }
- #endif
 
    movable_int & operator= (int i)
    { this->m_int = i; return *this; }
@@ -92,6 +82,7 @@
 class movable_and_copyable_int
 {
    public:
+ BOOST_INTERPROCESS_ENABLE_MOVE_EMULATION(movable_and_copyable_int)
 
    movable_and_copyable_int()
       : m_int(0)
@@ -108,23 +99,12 @@
    movable_and_copyable_int &operator= (const movable_and_copyable_int& mi)
    { this->m_int = mi.m_int; return *this; }
 
- #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- movable_and_copyable_int(detail::moved_object<movable_and_copyable_int> mmi)
- : m_int(mmi.get().m_int)
- { mmi.get().m_int = 0; }
- #else
- movable_and_copyable_int(movable_and_copyable_int &&mmi)
+ movable_and_copyable_int(BOOST_INTERPROCESS_RV_REF(movable_and_copyable_int) mmi)
       : m_int(mmi.m_int)
    { mmi.m_int = 0; }
- #endif
 
- #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- movable_and_copyable_int & operator= (detail::moved_object<movable_and_copyable_int> mmi)
- { this->m_int = mmi.get().m_int; mmi.get().m_int = 0; return *this; }
- #else
- movable_and_copyable_int & operator= (movable_and_copyable_int &&mmi)
+ movable_and_copyable_int & operator= (BOOST_INTERPROCESS_RV_REF(movable_and_copyable_int) mmi)
    { this->m_int = mmi.m_int; mmi.m_int = 0; return *this; }
- #endif
 
    movable_and_copyable_int & operator= (int i)
    { this->m_int = i; return *this; }
@@ -167,26 +147,6 @@
 } //namespace interprocess {
 } //namespace boost {
 
-namespace boost{
-namespace interprocess{
-
-template<>
-struct is_movable<test::movable_int>
-{
- public:
- enum { value = true };
-};
-
-template<>
-struct is_movable<test::movable_and_copyable_int>
-{
- public:
- enum { value = true };
-};
-
-} //namespace interprocess{
-} //namespace boost{
-
 #include <boost/interprocess/detail/config_end.hpp>
 
 #endif //#ifndef BOOST_INTERPROCESS_TEST_MOVABLE_INT_HEADER

Modified: branches/release/libs/interprocess/test/multi_index_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/multi_index_test.cpp (original)
+++ branches/release/libs/interprocess/test/multi_index_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -28,8 +28,8 @@
 using namespace boost::interprocess;
 namespace bmi = boost::multi_index;
 
-typedef managed_shared_memory::allocator<char>::type char_allocator;
-typedef basic_string<char, std::char_traits<char>, char_allocator>shm_string;
+typedef managed_shared_memory::allocator<char>::type char_allocator;
+typedef basic_string<char, std::char_traits<char>, char_allocator> shm_string;
 
 //Data to insert in shared memory
 struct employee
@@ -75,19 +75,6 @@
       <bmi::tag<age>, BOOST_MULTI_INDEX_MEMBER(employee,int,age)> >,
   adaptive_pool<employee,managed_shared_memory::segment_manager>
>;
-/*
-// Explicit instantiations to catch compile-time errors
-template class bmi::multi_index_container<
- employee,
- bmi::indexed_by<
- bmi::ordered_unique
- <bmi::tag<id>, BOOST_MULTI_INDEX_MEMBER(employee,int,id)>,
- bmi::ordered_non_unique<
- bmi::tag<name>,BOOST_MULTI_INDEX_MEMBER(employee,shm_string,name)>,
- bmi::ordered_non_unique
- <bmi::tag<age>, BOOST_MULTI_INDEX_MEMBER(employee,int,age)> >,
- cached_adaptive_pool<employee,managed_shared_memory::segment_manager>
->;
 
 // Explicit instantiations to catch compile-time errors
 template class bmi::multi_index_container<
@@ -99,48 +86,9 @@
       bmi::tag<name>,BOOST_MULTI_INDEX_MEMBER(employee,shm_string,name)>,
     bmi::ordered_non_unique
       <bmi::tag<age>, BOOST_MULTI_INDEX_MEMBER(employee,int,age)> >,
- private_adaptive_pool<employee,managed_shared_memory::segment_manager>
->;
-*/
-// Explicit instantiations to catch compile-time errors
-template class bmi::multi_index_container<
- employee,
- bmi::indexed_by<
- bmi::ordered_unique
- <bmi::tag<id>, BOOST_MULTI_INDEX_MEMBER(employee,int,id)>,
- bmi::ordered_non_unique<
- bmi::tag<name>,BOOST_MULTI_INDEX_MEMBER(employee,shm_string,name)>,
- bmi::ordered_non_unique
- <bmi::tag<age>, BOOST_MULTI_INDEX_MEMBER(employee,int,age)> >,
   node_allocator<employee,managed_shared_memory::segment_manager>
>;
-/*
-// Explicit instantiations to catch compile-time errors
-template class bmi::multi_index_container<
- employee,
- bmi::indexed_by<
- bmi::ordered_unique
- <bmi::tag<id>, BOOST_MULTI_INDEX_MEMBER(employee,int,id)>,
- bmi::ordered_non_unique<
- bmi::tag<name>,BOOST_MULTI_INDEX_MEMBER(employee,shm_string,name)>,
- bmi::ordered_non_unique
- <bmi::tag<age>, BOOST_MULTI_INDEX_MEMBER(employee,int,age)> >,
- cached_node_allocator<employee,managed_shared_memory::segment_manager>
->;
 
-// Explicit instantiations to catch compile-time errors
-template class bmi::multi_index_container<
- employee,
- bmi::indexed_by<
- bmi::ordered_unique
- <bmi::tag<id>, BOOST_MULTI_INDEX_MEMBER(employee,int,id)>,
- bmi::ordered_non_unique<
- bmi::tag<name>,BOOST_MULTI_INDEX_MEMBER(employee,shm_string,name)>,
- bmi::ordered_non_unique
- <bmi::tag<age>, BOOST_MULTI_INDEX_MEMBER(employee,int,age)> >,
- private_node_allocator<employee,managed_shared_memory::segment_manager>
->;
-*/
 int main ()
 {
    return 0;

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -17,7 +17,7 @@
 #include <set>
 #include <functional>
 #include "print_container.hpp"
-#include <boost/interprocess/detail/move_iterator.hpp>
+#include <boost/interprocess/detail/move.hpp>
 #include <string>
 #include "get_process_id_name.hpp"
 
@@ -63,7 +63,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(i/2);
- aux_vect[i] = detail::move_impl(move_me);
+ aux_vect[i] = boost::interprocess::move(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
@@ -72,21 +72,21 @@
          IntType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(i/2);
- aux_vect3[i] = detail::move_impl(move_me);
+ aux_vect3[i] = boost::interprocess::move(move_me);
          }
 
          MyShmSet *shmset2 =
             segment.template construct<MyShmSet>("MyShmSet2")
- (detail::make_move_iterator(&aux_vect[0])
- , detail::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")
- (detail::make_move_iterator(&aux_vect3[0])
- , detail::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);
@@ -108,20 +108,20 @@
       int i, j;
       for(i = 0; i < max; ++i){
          IntType move_me(i);
- shmset->insert(detail::move_impl(move_me));
+ shmset->insert(boost::interprocess::move(move_me));
          stdset->insert(i);
          IntType move_me2(i);
- shmmultiset->insert(detail::move_impl(move_me2));
+ shmmultiset->insert(boost::interprocess::move(move_me2));
          stdmultiset->insert(i);
       }
 
       if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(detail::move_impl(move_me)" << std::endl;
+ std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)" << std::endl;
          return 1;
       }
 
       if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(detail::move_impl(move_me)" << std::endl;
+ std::cout << "Error in shmmultiset->insert(boost::interprocess::move(move_me)" << std::endl;
          return 1;
       }
 
@@ -183,7 +183,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = detail::move_impl(move_me);
+ aux_vect[i] = boost::interprocess::move(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
@@ -192,19 +192,19 @@
          IntType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect3[i] = detail::move_impl(move_me);
+ aux_vect3[i] = boost::interprocess::move(move_me);
          }
 
- shmset->insert(detail::make_move_iterator(&aux_vect[0]), detail::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(detail::make_move_iterator(&aux_vect3[0]), detail::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(detail::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(detail::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;
          }
 
@@ -228,7 +228,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = detail::move_impl(move_me);
+ aux_vect[i] = boost::interprocess::move(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
@@ -237,35 +237,35 @@
          IntType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect3[i] = detail::move_impl(move_me);
+ aux_vect3[i] = boost::interprocess::move(move_me);
          }
 
          IntType aux_vect4[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect4[i] = detail::move_impl(move_me);
+ aux_vect4[i] = boost::interprocess::move(move_me);
          }
 
          IntType aux_vect5[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect5[i] = detail::move_impl(move_me);
+ aux_vect5[i] = boost::interprocess::move(move_me);
          }
 
- shmset->insert(detail::make_move_iterator(&aux_vect[0]), detail::make_move_iterator(aux_vect + 50));
- shmset->insert(detail::make_move_iterator(&aux_vect3[0]), detail::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(detail::make_move_iterator(&aux_vect4[0]), detail::make_move_iterator(aux_vect4 + 50));
- shmmultiset->insert(detail::make_move_iterator(&aux_vect5[0]), detail::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(detail::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(detail::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;
          }
 
@@ -285,88 +285,88 @@
 
       for(i = 0; i < max; ++i){
          IntType move_me(i);
- shmset->insert(detail::move_impl(move_me));
+ shmset->insert(boost::interprocess::move(move_me));
          stdset->insert(i);
          IntType move_me2(i);
- shmmultiset->insert(detail::move_impl(move_me2));
+ shmmultiset->insert(boost::interprocess::move(move_me2));
          stdmultiset->insert(i);
       }
 
       if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(detail::move_impl(move_me)) try 2" << std::endl;
+ std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)) try 2" << std::endl;
          return 1;
       }
       if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(detail::move_impl(move_me2)) try 2" << std::endl;
+ std::cout << "Error in shmmultiset->insert(boost::interprocess::move(move_me2)) try 2" << std::endl;
          return 1;
       }
 
       for(i = 0; i < max; ++i){
          IntType move_me(i);
- shmset->insert(shmset->begin(), detail::move_impl(move_me));
+ shmset->insert(shmset->begin(), boost::interprocess::move(move_me));
          stdset->insert(stdset->begin(), i);
          //PrintContainers(shmset, stdset);
          IntType move_me2(i);
- shmmultiset->insert(shmmultiset->begin(), detail::move_impl(move_me2));
+ shmmultiset->insert(shmmultiset->begin(), boost::interprocess::move(move_me2));
          stdmultiset->insert(stdmultiset->begin(), i);
          //PrintContainers(shmmultiset, stdmultiset);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(shmset->begin(), detail::move_impl(move_me))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->begin(), boost::interprocess::move(move_me))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->begin(), detail::move_impl(move_me2))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->begin(), boost::interprocess::move(move_me2))" << std::endl;
             return 1;
          }
 
          IntType move_me3(i);
- shmset->insert(shmset->end(), detail::move_impl(move_me3));
+ shmset->insert(shmset->end(), boost::interprocess::move(move_me3));
          stdset->insert(stdset->end(), i);
          IntType move_me4(i);
- shmmultiset->insert(shmmultiset->end(), detail::move_impl(move_me4));
+ shmmultiset->insert(shmmultiset->end(), boost::interprocess::move(move_me4));
          stdmultiset->insert(stdmultiset->end(), i);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(shmset->end(), detail::move_impl(move_me3))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->end(), boost::interprocess::move(move_me3))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->end(), detail::move_impl(move_me4))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->end(), boost::interprocess::move(move_me4))" << std::endl;
             return 1;
          }
          {
          IntType move_me(i);
- shmset->insert(shmset->upper_bound(move_me), detail::move_impl(move_me));
+ shmset->insert(shmset->upper_bound(move_me), boost::interprocess::move(move_me));
          stdset->insert(stdset->upper_bound(i), i);
          //PrintContainers(shmset, stdset);
          IntType move_me2(i);
- shmmultiset->insert(shmmultiset->upper_bound(move_me2), detail::move_impl(move_me2));
+ shmmultiset->insert(shmmultiset->upper_bound(move_me2), boost::interprocess::move(move_me2));
          stdmultiset->insert(stdmultiset->upper_bound(i), i);
          //PrintContainers(shmmultiset, stdmultiset);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(shmset->upper_bound(move_me), detail::move_impl(move_me))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->upper_bound(move_me), boost::interprocess::move(move_me))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->upper_bound(move_me2), detail::move_impl(move_me2))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->upper_bound(move_me2), boost::interprocess::move(move_me2))" << std::endl;
             return 1;
          }
 
          }
          {
          IntType move_me(i);
- shmset->insert(shmset->lower_bound(move_me), detail::move_impl(move_me2));
+ shmset->insert(shmset->lower_bound(move_me), boost::interprocess::move(move_me2));
          stdset->insert(stdset->lower_bound(i), i);
          //PrintContainers(shmset, stdset);
          IntType move_me2(i);
- shmmultiset->insert(shmmultiset->lower_bound(move_me2), detail::move_impl(move_me2));
+ shmmultiset->insert(shmmultiset->lower_bound(move_me2), boost::interprocess::move(move_me2));
          stdmultiset->insert(stdmultiset->lower_bound(i), i);
          //PrintContainers(shmmultiset, stdmultiset);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(shmset->lower_bound(move_me), detail::move_impl(move_me2))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->lower_bound(move_me), boost::interprocess::move(move_me2))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->lower_bound(move_me2), detail::move_impl(move_me2))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->lower_bound(move_me2), boost::interprocess::move(move_me2))" << std::endl;
             return 1;
          }
          }
@@ -392,9 +392,9 @@
       for(j = 0; j < 3; ++j)
       for(i = 0; i < 100; ++i){
          IntType move_me(i);
- shmset->insert(detail::move_impl(move_me));
+ shmset->insert(boost::interprocess::move(move_me));
          IntType move_me2(i);
- shmmultiset->insert(detail::move_impl(move_me2));
+ shmmultiset->insert(boost::interprocess::move(move_me2));
          IntType count_me(i);
          if(shmset->count(count_me) != typename MyShmMultiSet::size_type(1)){
             std::cout << "Error in shmset->count(count_me)" << std::endl;
@@ -461,10 +461,10 @@
       int i;
       for(i = 0; i < max; ++i){
          IntType move_me(i);
- shmset->insert(detail::move_impl(move_me));
+ shmset->insert(boost::interprocess::move(move_me));
          stdset->insert(i);
          IntType move_me2(i);
- shmmultiset->insert(detail::move_impl(move_me2));
+ shmmultiset->insert(boost::interprocess::move(move_me2));
          stdmultiset->insert(i);
       }
       if(!CheckEqualContainers(shmset, stdset)) return 1;

Modified: branches/release/libs/interprocess/test/shared_memory_mapping_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/shared_memory_mapping_test.cpp (original)
+++ branches/release/libs/interprocess/test/shared_memory_mapping_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -19,6 +19,12 @@
 
 using namespace boost::interprocess;
 
+shared_memory_object get_shared_memory_mapping()
+{
+ shared_memory_object sh;
+ return shared_memory_object(boost::interprocess::move(sh));
+}
+
 int main ()
 {
    try{
@@ -139,9 +145,10 @@
       {
          //Now test move semantics
          shared_memory_object mapping(open_only, test::get_process_id_name(), read_write);
- shared_memory_object move_ctor(detail::move_impl(mapping));
+ shared_memory_object move_ctor(boost::interprocess::move(mapping));
          shared_memory_object move_assign;
- move_assign = detail::move_impl(move_ctor);
+ move_assign = boost::interprocess::move(move_ctor);
+ shared_memory_object ret(get_shared_memory_mapping());
       }
    }
    catch(std::exception &exc){
@@ -152,5 +159,3 @@
    shared_memory_object::remove(test::get_process_id_name());
    return 0;
 }
-
-#include <boost/interprocess/detail/config_end.hpp>

Modified: branches/release/libs/interprocess/test/shared_memory_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/shared_memory_test.cpp (original)
+++ branches/release/libs/interprocess/test/shared_memory_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -31,13 +31,14 @@
    }
 };
 
+typedef detail::managed_open_or_create_impl<shared_memory_object> shared_memory;
+
 //This wrapper is necessary to have a common constructor
 //in generic named_creation_template functions
 class shared_memory_creation_test_wrapper
    : public eraser
- , public detail::managed_open_or_create_impl<shared_memory_object>
+ , public shared_memory
 {
- typedef detail::managed_open_or_create_impl<shared_memory_object> shared_memory;
 
    public:
    shared_memory_creation_test_wrapper(create_only_t)
@@ -56,8 +57,6 @@
 
 int main ()
 {
- typedef detail::managed_open_or_create_impl<shared_memory_object> shared_memory;
-
    try{
       shared_memory_object::remove(ShmName);
       test::test_named_creation<shared_memory_creation_test_wrapper>();
@@ -76,9 +75,9 @@
          std::memset(shm1.get_user_address(), 0, shm1.get_user_size());
 
          //Now test move semantics
- shared_memory move_ctor(detail::move_impl(shm1));
+ shared_memory move_ctor(boost::interprocess::move(shm1));
          shared_memory move_assign;
- move_assign = detail::move_impl(move_ctor);
+ move_assign = boost::interprocess::move(move_ctor);
       }
    }
    catch(std::exception &ex){

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -25,6 +25,10 @@
 #include <string>
 #include "get_process_id_name.hpp"
 
+
+#include <boost/interprocess/sync/upgradable_lock.hpp>
+#include <boost/interprocess/sync/interprocess_upgradable_mutex.hpp>
+
 using namespace boost::interprocess;
 
 class base_class
@@ -613,7 +617,6 @@
    shared_memory_object::remove(process_name.c_str());
 }
 
-
 int main()
 {
    if(0 != simple_test())
@@ -626,8 +629,7 @@
       return 1;
 
    test_alias();
-
- return 0;
 }
 
 #include <boost/interprocess/detail/config_end.hpp>
+

Modified: branches/release/libs/interprocess/test/slist_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/slist_test.cpp (original)
+++ branches/release/libs/interprocess/test/slist_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -7,7 +7,6 @@
 // See http://www.boost.org/libs/interprocess for documentation.
 //
 //////////////////////////////////////////////////////////////////////////////
-
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/managed_shared_memory.hpp>
 #include <boost/interprocess/containers/slist.hpp>
@@ -54,10 +53,9 @@
    {
       //Now test move semantics
       slist<recursive_slist> original;
- slist<recursive_slist> move_ctor(detail::move_impl(original));
+ slist<recursive_slist> move_ctor(boost::interprocess::move(original));
       slist<recursive_slist> move_assign;
- move_assign = detail::move_impl(move_ctor);
- move_assign.swap(detail::move_impl(original));
+ move_assign = boost::interprocess::move(move_ctor);
       move_assign.swap(original);
    }
 
@@ -79,8 +77,7 @@
    if(!boost::interprocess::test::test_emplace
       < slist<test::EmplaceInt>, Options>())
       return 1;
-
- return 0;
 }
 
 #include <boost/interprocess/detail/config_end.hpp>
+

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -127,7 +127,7 @@
          std::sprintf(buffer, "%i", i);
          auxShmString += buffer;
          auxStdString += buffer;
- shmStringVect->push_back(detail::move_impl(auxShmString));
+ shmStringVect->push_back(boost::interprocess::move(auxShmString));
          stdStringVect->push_back(auxStdString);
       }
 
@@ -157,7 +157,7 @@
          std::sprintf(buffer, "%i", i);
          auxShmString += buffer;
          auxStdString += buffer;
- shmStringVect->insert(shmStringVect->begin(), detail::move_impl(auxShmString));
+ shmStringVect->insert(shmStringVect->begin(), boost::interprocess::move(auxShmString));
          stdStringVect->insert(stdStringVect->begin(), auxStdString);
       }
 

Modified: branches/release/libs/interprocess/test/tree_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/tree_test.cpp (original)
+++ branches/release/libs/interprocess/test/tree_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -7,7 +7,6 @@
 // See http://www.boost.org/libs/interprocess for documentation.
 //
 //////////////////////////////////////////////////////////////////////////////
-
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <set>
 #include <boost/interprocess/managed_shared_memory.hpp>
@@ -33,32 +32,7 @@
 ///////////////////////////////////////////////////////////////////
 
 using namespace boost::interprocess;
-/*
-//Explicit instantiation to detect compilation errors
-template class boost::interprocess::set
- <test::movable_and_copyable_int
- ,std::less<test::movable_and_copyable_int>
- ,test::dummy_test_allocator<test::movable_and_copyable_int> >;
-
-template class boost::interprocess::map
- <test::movable_and_copyable_int
- ,test::movable_and_copyable_int
- ,std::less<test::movable_and_copyable_int>
- ,test::dummy_test_allocator<std::pair<const test::movable_and_copyable_int
- ,test::movable_and_copyable_int> > >;
-
-template class boost::interprocess::multiset
- <test::movable_and_copyable_int
- ,std::less<test::movable_and_copyable_int>
- ,test::dummy_test_allocator<test::movable_and_copyable_int> >;
-
-template class boost::interprocess::multimap
- <test::movable_and_copyable_int
- ,test::movable_and_copyable_int
- ,std::less<test::movable_and_copyable_int>
- ,test::dummy_test_allocator<std::pair<const test::movable_and_copyable_int
- ,test::movable_and_copyable_int> > >;
-*/
+
 //Customize managed_shared_memory class
 typedef basic_managed_shared_memory
    <char,
@@ -159,14 +133,13 @@
 };
 
 template<class C>
-void test_move_semantics()
+void test_move()
 {
    //Now test move semantics
    C original;
- C move_ctor(detail::move_impl(original));
+ C move_ctor(boost::interprocess::move(original));
    C move_assign;
- move_assign = detail::move_impl(move_ctor);
- move_assign.swap(detail::move_impl(original));
+ move_assign = boost::interprocess::move(move_ctor);
    move_assign.swap(original);
 }
 
@@ -181,10 +154,10 @@
    }
    //Now test move semantics
    {
- test_move_semantics<set<recursive_set> >();
- test_move_semantics<multiset<recursive_multiset> >();
- test_move_semantics<map<recursive_map, recursive_map> >();
- test_move_semantics<multimap<recursive_multimap, recursive_multimap> >();
+ test_move<set<recursive_set> >();
+ test_move<multiset<recursive_multiset> >();
+ test_move<map<recursive_map, recursive_map> >();
+ test_move<multimap<recursive_multimap, recursive_multimap> >();
    }
 
    using namespace boost::interprocess::detail;
@@ -221,6 +194,7 @@
       return 1;
    }
 
+
    if (0 != test::map_test<my_managed_shared_memory
                   ,MyShmMap
                   ,MyStdMap
@@ -263,6 +237,7 @@
       return 1;
    if(!boost::interprocess::test::test_emplace<multimap<test::EmplaceInt, test::EmplaceInt>, MapOptions>())
       return 1;
+
    return 0;
 }
 

Modified: branches/release/libs/interprocess/test/unique_ptr_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/unique_ptr_test.cpp (original)
+++ branches/release/libs/interprocess/test/unique_ptr_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -70,14 +70,14 @@
 
       //Test some copy constructors
       my_unique_ptr_class my_ptr3(0, segment.get_deleter<MyClass>());
- my_unique_ptr_class my_ptr4(detail::move_impl(my_ptr3));
+ my_unique_ptr_class my_ptr4(boost::interprocess::move(my_ptr3));
 
       //Construct a list and fill
       MyList list(segment.get_segment_manager());
 
       //Insert from my_unique_ptr_class
- list.push_front(detail::move_impl(my_ptr));
- list.push_back(detail::move_impl(my_ptr2));
+ list.push_front(boost::interprocess::move(my_ptr));
+ list.push_back(boost::interprocess::move(my_ptr2));
 
       //Check pointers
       assert(my_ptr.get() == 0);
@@ -85,20 +85,13 @@
       assert(list.begin()->get() == ptr1);
       assert(list.rbegin()->get() == ptr2);
    
- //MyList list2(detail::move_impl(list));
- //list2.swap(detail::move_impl(MyList(segment.get_segment_manager())));
- //list.swap(detail::move_impl(MyList(segment.get_segment_manager())));
-
- assert(list.begin()->get() == ptr1);
- assert(list.rbegin()->get() == ptr2);
-
       //Construct a set and fill
       typedef std::less<my_unique_ptr_class> set_less_t;
       MySet set(set_less_t(), segment.get_segment_manager());
 
       //Insert in set from list passing ownership
- set.insert(detail::move_impl(*list.begin()));
- set.insert(detail::move_impl(*list.rbegin()));
+ set.insert(boost::interprocess::move(*list.begin()));
+ set.insert(boost::interprocess::move(*list.rbegin()));
 
       //Check pointers
       assert(list.begin()->get() == 0);
@@ -120,12 +113,12 @@
 
       //Insert from my_unique_ptr_class
       if(ptr1 < ptr2){
- vector.insert(vector.begin(), detail::move_impl(*set.begin()));
- vector.insert(vector.end(), detail::move_impl(*set.rbegin()));
+ vector.insert(vector.begin(), boost::interprocess::move(*set.begin()));
+ vector.insert(vector.end(), boost::interprocess::move(*set.rbegin()));
       }
       else{
- vector.insert(vector.begin(), detail::move_impl(*set.rbegin()));
- vector.insert(vector.end(), detail::move_impl(*set.begin()));
+ vector.insert(vector.begin(), boost::interprocess::move(*set.rbegin()));
+ vector.insert(vector.end(), boost::interprocess::move(*set.begin()));
       }
 
       //Check pointers
@@ -134,14 +127,14 @@
       assert(vector.begin()->get() == ptr1);
       assert(vector.rbegin()->get() == ptr2);
 
- MyVector vector2(detail::move_impl(vector));
+ MyVector vector2(boost::interprocess::move(vector));
       vector2.swap(vector);
 
       assert(vector.begin()->get() == ptr1);
       assert(vector.rbegin()->get() == ptr2);
 
       my_unique_ptr_class a(0, segment.get_deleter<MyClass>()), b(0, segment.get_deleter<MyClass>());
- a = detail::move_impl(b);
+ a = boost::interprocess::move(b);
    }
    shared_memory_object::remove(process_name.c_str());
    return 0;

Modified: branches/release/libs/interprocess/test/upgradable_mutex_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/upgradable_mutex_test.cpp (original)
+++ branches/release/libs/interprocess/test/upgradable_mutex_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -35,135 +35,135 @@
       //Conversions to scoped_lock
       {
          scoped_lock<Mutex> lock(mut);
- scoped_lock<Mutex> e_lock(detail::move_impl(lock));
- lock.swap(detail::move_impl(e_lock));
+ scoped_lock<Mutex> e_lock(boost::interprocess::move(lock));
+ lock.swap(e_lock);
       }
       {
          scoped_lock<Mutex> lock(mut);
          scoped_lock<Mutex> e_lock(mut2);
- e_lock = detail::move_impl(lock);
+ e_lock = boost::interprocess::move(lock);
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls unlock_upgradable_and_lock()
- scoped_lock<Mutex> e_lock(detail::move_impl(u_lock));
+ scoped_lock<Mutex> e_lock(boost::interprocess::move(u_lock));
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls unlock_upgradable_and_lock()
          scoped_lock<Mutex> e_lock(mut2);
- scoped_lock<Mutex> moved(detail::move_impl(u_lock));
- e_lock = detail::move_impl(moved);
+ scoped_lock<Mutex> moved(boost::interprocess::move(u_lock));
+ e_lock = boost::interprocess::move(moved);
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls try_unlock_upgradable_and_lock()
- scoped_lock<Mutex> e_lock(detail::move_impl(u_lock), try_to_lock);
+ scoped_lock<Mutex> e_lock(boost::interprocess::move(u_lock), try_to_lock);
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls try_unlock_upgradable_and_lock()
          scoped_lock<Mutex> e_lock(mut2);
- scoped_lock<Mutex> moved(detail::move_impl(u_lock), try_to_lock);
- e_lock = detail::move_impl(moved);
+ scoped_lock<Mutex> moved(boost::interprocess::move(u_lock), try_to_lock);
+ e_lock = boost::interprocess::move(moved);
       }
       {
          boost::posix_time::ptime t = test::delay(100);
          upgradable_lock<Mutex> u_lock(mut);
          //This calls timed_unlock_upgradable_and_lock()
- scoped_lock<Mutex> e_lock(detail::move_impl(u_lock), t);
+ scoped_lock<Mutex> e_lock(boost::interprocess::move(u_lock), t);
       }
       {
          boost::posix_time::ptime t = test::delay(100);
          upgradable_lock<Mutex> u_lock(mut);
          //This calls timed_unlock_upgradable_and_lock()
          scoped_lock<Mutex> e_lock(mut2);
- scoped_lock<Mutex> moved(detail::move_impl(u_lock), t);
- e_lock = detail::move_impl(moved);
+ scoped_lock<Mutex> moved(boost::interprocess::move(u_lock), t);
+ e_lock = boost::interprocess::move(moved);
       }
       {
          sharable_lock<Mutex> s_lock(mut);
          //This calls try_unlock_sharable_and_lock()
- scoped_lock<Mutex> e_lock(detail::move_impl(s_lock), try_to_lock);
+ scoped_lock<Mutex> e_lock(boost::interprocess::move(s_lock), try_to_lock);
       }
       {
          sharable_lock<Mutex> s_lock(mut);
          //This calls try_unlock_sharable_and_lock()
          scoped_lock<Mutex> e_lock(mut2);
- scoped_lock<Mutex> moved(detail::move_impl(s_lock), try_to_lock);
- e_lock = detail::move_impl(moved);
+ scoped_lock<Mutex> moved(boost::interprocess::move(s_lock), try_to_lock);
+ e_lock = boost::interprocess::move(moved);
       }
       //Conversions to upgradable_lock
       {
          upgradable_lock<Mutex> lock(mut);
- upgradable_lock<Mutex> u_lock(detail::move_impl(lock));
- lock.swap(detail::move_impl(u_lock));
+ upgradable_lock<Mutex> u_lock(boost::interprocess::move(lock));
+ lock.swap(u_lock);
       }
       {
          upgradable_lock<Mutex> lock(mut);
          upgradable_lock<Mutex> u_lock(mut2);
- upgradable_lock<Mutex> moved(detail::move_impl(lock));
- u_lock = detail::move_impl(moved);
+ upgradable_lock<Mutex> moved(boost::interprocess::move(lock));
+ u_lock = boost::interprocess::move(moved);
       }
       {
          sharable_lock<Mutex> s_lock(mut);
          //This calls unlock_sharable_and_lock_upgradable()
- upgradable_lock<Mutex> u_lock(detail::move_impl(s_lock), try_to_lock);
+ upgradable_lock<Mutex> u_lock(boost::interprocess::move(s_lock), try_to_lock);
       }
       {
          sharable_lock<Mutex> s_lock(mut);
          //This calls unlock_sharable_and_lock_upgradable()
          upgradable_lock<Mutex> u_lock(mut2);
- upgradable_lock<Mutex> moved(detail::move_impl(s_lock), try_to_lock);
- u_lock = detail::move_impl(moved);
+ upgradable_lock<Mutex> moved(boost::interprocess::move(s_lock), try_to_lock);
+ u_lock = boost::interprocess::move(moved);
       }
       {
          scoped_lock<Mutex> e_lock(mut);
          //This calls unlock_and_lock_upgradable()
- upgradable_lock<Mutex> u_lock(detail::move_impl(e_lock));
+ upgradable_lock<Mutex> u_lock(boost::interprocess::move(e_lock));
       }
       {
          scoped_lock<Mutex> e_lock(mut);
          //This calls unlock_and_lock_upgradable()
          upgradable_lock<Mutex> u_lock(mut2);
- upgradable_lock<Mutex> moved(detail::move_impl(e_lock));
- u_lock = detail::move_impl(moved);
+ upgradable_lock<Mutex> moved(boost::interprocess::move(e_lock));
+ u_lock = boost::interprocess::move(moved);
       }
       //Conversions to sharable_lock
       {
          sharable_lock<Mutex> lock(mut);
- sharable_lock<Mutex> s_lock(detail::move_impl(lock));
- lock.swap(detail::move_impl(s_lock));
+ sharable_lock<Mutex> s_lock(boost::interprocess::move(lock));
+ lock.swap(s_lock);
       }
       {
          sharable_lock<Mutex> lock(mut);
          sharable_lock<Mutex> s_lock(mut2);
- sharable_lock<Mutex> moved(detail::move_impl(lock));
- s_lock = detail::move_impl(moved);
+ sharable_lock<Mutex> moved(boost::interprocess::move(lock));
+ s_lock = boost::interprocess::move(moved);
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls unlock_upgradable_and_lock_sharable()
- sharable_lock<Mutex> s_lock(detail::move_impl(u_lock));
+ sharable_lock<Mutex> s_lock(boost::interprocess::move(u_lock));
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls unlock_upgradable_and_lock_sharable()
          sharable_lock<Mutex> s_lock(mut2);
- sharable_lock<Mutex> moved(detail::move_impl(u_lock));
- s_lock = detail::move_impl(moved);
+ sharable_lock<Mutex> moved(boost::interprocess::move(u_lock));
+ s_lock = boost::interprocess::move(moved);
       }
       {
          scoped_lock<Mutex> e_lock(mut);
          //This calls unlock_and_lock_sharable()
- sharable_lock<Mutex> s_lock(detail::move_impl(e_lock));
+ sharable_lock<Mutex> s_lock(boost::interprocess::move(e_lock));
       }
       {
          scoped_lock<Mutex> e_lock(mut);
          //This calls unlock_and_lock_sharable()
          sharable_lock<Mutex> s_lock(mut2);
- sharable_lock<Mutex> moved(detail::move_impl(e_lock));
- s_lock = detail::move_impl(moved);
+ sharable_lock<Mutex> moved(boost::interprocess::move(e_lock));
+ s_lock = boost::interprocess::move(moved);
       }
    }
 

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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -59,19 +59,17 @@
    {
       //Now test move semantics
       managed_heap_memory original(memsize);
- managed_heap_memory move_ctor(detail::move_impl(original));
+ managed_heap_memory move_ctor(boost::interprocess::move(original));
       managed_heap_memory move_assign;
- move_assign = detail::move_impl(move_ctor);
- original.swap(detail::move_impl(move_assign));
+ move_assign = boost::interprocess::move(move_ctor);
       original.swap(move_assign);
    }
    {
       //Now test move semantics
       managed_external_buffer original(create_only, static_buffer, memsize);
- managed_external_buffer move_ctor(detail::move_impl(original));
+ managed_external_buffer move_ctor(boost::interprocess::move(original));
       managed_external_buffer move_assign;
- move_assign = detail::move_impl(move_ctor);
- original.swap(detail::move_impl(move_assign));
+ move_assign = boost::interprocess::move(move_ctor);
       original.swap(move_assign);
    }
 
@@ -84,13 +82,13 @@
    //Test move semantics
    {
       wmanaged_external_buffer user_default;
- wmanaged_external_buffer temp_external(detail::move_impl(user_buffer));
- user_default = detail::move_impl(temp_external);
- user_buffer = detail::move_impl(user_default);
+ wmanaged_external_buffer temp_external(boost::interprocess::move(user_buffer));
+ user_default = boost::interprocess::move(temp_external);
+ user_buffer = boost::interprocess::move(user_default);
       wmanaged_heap_memory heap_default;
- wmanaged_heap_memory temp_heap(detail::move_impl(heap_buffer));
- heap_default = detail::move_impl(temp_heap);
- heap_buffer = detail::move_impl(heap_default);
+ wmanaged_heap_memory temp_heap(boost::interprocess::move(heap_buffer));
+ heap_default = boost::interprocess::move(temp_heap);
+ heap_buffer = boost::interprocess::move(heap_default);
    }
 
    //Initialize memory

Modified: branches/release/libs/interprocess/test/vector_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/vector_test.cpp (original)
+++ branches/release/libs/interprocess/test/vector_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -44,16 +44,7 @@
 
    if(!test::test_all_expand_bwd<int_vector>())
       return 1;
-/*
- //First raw volatile ints
- typedef test::expand_bwd_test_allocator<volatile int>
- volatile_int_allocator_type;
- typedef vector<volatile int, volatile_int_allocator_type>
- volatile_int_vector;
 
- if(!test::test_all_expand_bwd<volatile_int_vector>())
- return 1;
-*/
    //Now user defined wrapped int
    typedef test::expand_bwd_test_allocator<test::int_holder>
       int_holder_allocator_type;
@@ -94,17 +85,16 @@
    {
       //Now test move semantics
       vector<recursive_vector> original;
- vector<recursive_vector> move_ctor(detail::move_impl(original));
+ vector<recursive_vector> move_ctor(boost::interprocess::move(original));
       vector<recursive_vector> move_assign;
- move_assign = detail::move_impl(move_ctor);
- move_assign.swap(detail::move_impl(original));
+ move_assign = boost::interprocess::move(move_ctor);
       move_assign.swap(original);
    }
    typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocator;
    typedef vector<int, ShmemAllocator> MyVector;
 
- //typedef allocator<volatile int, managed_shared_memory::segment_manager> ShmemVolatileAllocator;
- //typedef vector<volatile int, ShmemVolatileAllocator> MyVolatileVector;
+ typedef test::allocator_v1<int, managed_shared_memory::segment_manager> ShmemV1Allocator;
+ typedef vector<int, ShmemV1Allocator> MyV1Vector;
 
    typedef allocator<test::movable_int, managed_shared_memory::segment_manager> ShmemMoveAllocator;
    typedef vector<test::movable_int, ShmemMoveAllocator> MyMoveVector;
@@ -115,8 +105,8 @@
    if(test::vector_test<managed_shared_memory, MyVector>())
       return 1;
 
- //if(test::vector_test<managed_shared_memory, MyVolatileVector>())
- //return 1;
+ if(test::vector_test<managed_shared_memory, MyV1Vector>())
+ return 1;
 
    if(test::vector_test<managed_shared_memory, MyMoveVector>())
       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 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -17,8 +17,8 @@
 #include <list>
 
 #include <boost/interprocess/exceptions.hpp>
-#include <boost/interprocess/detail/move_iterator.hpp>
 #include <boost/interprocess/detail/move.hpp>
+#include <boost/interprocess/detail/mpl.hpp>
 #include "print_container.hpp"
 #include "check_equal_containers.hpp"
 #include "movable_int.hpp"
@@ -32,14 +32,14 @@
 namespace test{
 
 template<class V1, class V2>
-bool copyable_only(V1 *, V2 *, detail::false_type)
+bool copyable_only(V1 *, V2 *, boost::interprocess::detail::false_type)
 {
    return true;
 }
 
 //Function to check if both sets are equal
 template<class V1, class V2>
-bool copyable_only(V1 *shmvector, V2 *stdvector, detail::true_type)
+bool copyable_only(V1 *shmvector, V2 *stdvector, boost::interprocess::detail::true_type)
 {
    typedef typename V1::value_type IntType;
    std::size_t size = shmvector->size();
@@ -50,18 +50,18 @@
    {
       IntType move_me(1);
       stdvector->insert(stdvector->begin()+size/2, 50, 1);
- shmvector->insert(shmvector->begin()+size/2, 50, detail::move_impl(move_me));
+ shmvector->insert(shmvector->begin()+size/2, 50, boost::interprocess::move(move_me));
       if(!test::CheckEqualContainers(shmvector, stdvector)) return false;
    }
    {
       IntType move_me(2);
- shmvector->assign(shmvector->size()/2, detail::move_impl(move_me));
+ shmvector->assign(shmvector->size()/2, boost::interprocess::move(move_me));
       stdvector->assign(stdvector->size()/2, 2);
       if(!test::CheckEqualContainers(shmvector, stdvector)) return false;
    }
    {
       IntType move_me(3);
- shmvector->assign(shmvector->size()*3-1, detail::move_impl(move_me));
+ shmvector->assign(shmvector->size()*3-1, boost::interprocess::move(move_me));
       stdvector->assign(stdvector->size()*3-1, 3);
       if(!test::CheckEqualContainers(shmvector, stdvector)) return false;
    }
@@ -111,8 +111,9 @@
 
          for(int i = 0; i < max; ++i){
             IntType new_int(i);
- shmvector->insert(shmvector->end(), detail::move_impl(new_int));
+ shmvector->insert(shmvector->end(), boost::interprocess::move(new_int));
             stdvector->insert(stdvector->end(), i);
+ if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
          }
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
@@ -133,7 +134,8 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType new_int(-1);
- aux_vect[i] = detail::move_impl(new_int);
+ 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];
             for(int i = 0; i < 50; ++i){
@@ -141,8 +143,8 @@
             }
 
             shmvector->insert(shmvector->end()
- ,detail::make_move_iterator(&aux_vect[0])
- ,detail::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;
 
@@ -156,15 +158,15 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType new_int(-1);
- aux_vect[i] = detail::move_impl(new_int);
+ aux_vect[i] = boost::interprocess::move(new_int);
             }
             int aux_vect2[50];
             for(int i = 0; i < 50; ++i){
                aux_vect2[i] = -1;
             }
             shmvector->insert(shmvector->begin()
- ,detail::make_move_iterator(&aux_vect[0])
- ,detail::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;
          }
@@ -174,7 +176,7 @@
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
          IntType push_back_this(1);
- shmvector->push_back(detail::move_impl(push_back_this));
+ shmvector->push_back(boost::interprocess::move(push_back_this));
          stdvector->push_back(int(1));
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
@@ -189,7 +191,7 @@
 
          for(int i = 0; i < max; ++i){
             IntType insert_this(i);
- shmvector->insert(shmvector->begin(), detail::move_impl(insert_this));
+ shmvector->insert(shmvector->begin(), boost::interprocess::move(insert_this));
             stdvector->insert(stdvector->begin(), i);
          }
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
@@ -204,6 +206,18 @@
             stdvector->assign(l.begin(), l.end());
             if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
          }
+/*
+ std::size_t cap = shmvector->capacity();
+ shmvector->reserve(cap*2);
+ stdvector->reserve(cap*2);
+ if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
+ shmvector->resize(0);
+ stdvector->resize(0);
+ if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
+ shmvector->resize(cap*2);
+ stdvector->resize(cap*2);
+ if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
+*/
 
          delete stdvector;
          segment.template destroy<MyShmVector>("MyShmVector");

Modified: branches/release/libs/interprocess/test/windows_shared_memory_mapping_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/windows_shared_memory_mapping_test.cpp (original)
+++ branches/release/libs/interprocess/test/windows_shared_memory_mapping_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -10,7 +10,7 @@
 
 #include <boost/interprocess/detail/config_begin.hpp>
 
-#ifdef BOOST_WINDOWS
+#ifdef BOOST_INTERPROCESS_WINDOWS
 
 #include <fstream>
 #include <iostream>

Modified: branches/release/libs/interprocess/test/windows_shared_memory_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/windows_shared_memory_test.cpp (original)
+++ branches/release/libs/interprocess/test/windows_shared_memory_test.cpp 2009-03-28 10:32:26 EDT (Sat, 28 Mar 2009)
@@ -11,7 +11,7 @@
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
 
-#ifdef BOOST_WINDOWS
+#ifdef BOOST_INTERPROCESS_WINDOWS
 
 #include <boost/interprocess/windows_shared_memory.hpp>
 #include <boost/interprocess/detail/managed_open_or_create_impl.hpp>
@@ -32,16 +32,14 @@
 }
 
 static const std::size_t ShmSize = 1000;
+typedef detail::managed_open_or_create_impl
+ <windows_shared_memory, false> windows_shared_memory_t;
 
 //This wrapper is necessary to have a common constructor
 //in generic named_creation_template functions
 class shared_memory_creation_test_wrapper
- : public detail::managed_open_or_create_impl
- <windows_shared_memory, false>
+ : public windows_shared_memory_t
 {
- typedef detail::managed_open_or_create_impl
- <windows_shared_memory, false> windows_shared_memory_t;
-
    public:
    shared_memory_creation_test_wrapper(create_only_t)
       : windows_shared_memory_t(create_only, name_initialization_routine(), ShmSize)
@@ -59,8 +57,6 @@
 
 int main ()
 {
- typedef detail::managed_open_or_create_impl<windows_shared_memory, false> windows_shared_memory_t;
-
    try{
       test::test_named_creation<shared_memory_creation_test_wrapper>();
    }
@@ -79,6 +75,6 @@
    return 0;
 }
 
-#endif //#ifdef BOOST_WINDOWS
+#endif //#ifdef BOOST_INTERPROCESS_WINDOWS
 
 #include <boost/interprocess/detail/config_end.hpp>


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