Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r76107 - in trunk/libs: container/proj/vc7ide container/test interprocess interprocess/doc interprocess/example interprocess/proj interprocess/proj/vc7ide interprocess/test intrusive/doc intrusive/proj/vc7ide intrusive/proj/vc7ide/_intrusivelib intrusive/proj/vc7ide/has_member_function_callable_with intrusive/proj/vc7ide/pointer_traits intrusive/test move
From: igaztanaga_at_[hidden]
Date: 2011-12-22 15:16:14


Author: igaztanaga
Date: 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
New Revision: 76107
URL: http://svn.boost.org/trac/boost/changeset/76107

Log:
Introducing allocator_traits and pointer_traits changes into several libraries.
Added:
   trunk/libs/container/proj/vc7ide/allocator_traits_test.vcproj (contents, props changed)
   trunk/libs/container/proj/vc7ide/list_test.vcproj (contents, props changed)
   trunk/libs/container/proj/vc7ide/pair_test.vcproj (contents, props changed)
   trunk/libs/container/test/allocator_traits_test.cpp (contents, props changed)
   trunk/libs/container/test/pair_test.cpp (contents, props changed)
   trunk/libs/container/test/propagate_allocator_test.hpp (contents, props changed)
   trunk/libs/interprocess/Interprocess_sync_windows_emulation.txt (contents, props changed)
   trunk/libs/interprocess/proj/vc7ide/Interprocess_backup.sln (contents, props changed)
   trunk/libs/interprocess/proj/vc7ide/list_test.vcproj (contents, props changed)
   trunk/libs/intrusive/proj/vc7ide/Intrusive.ncb (contents, props changed)
   trunk/libs/intrusive/proj/vc7ide/has_member_function_callable_with/
   trunk/libs/intrusive/proj/vc7ide/has_member_function_callable_with/has_member_function_callable_with.vcproj (contents, props changed)
   trunk/libs/intrusive/proj/vc7ide/pointer_traits/
   trunk/libs/intrusive/proj/vc7ide/pointer_traits/pointer_traits.vcproj (contents, props changed)
   trunk/libs/intrusive/test/has_member_function_callable_with.cpp (contents, props changed)
   trunk/libs/intrusive/test/pointer_traits_test.cpp (contents, props changed)
Removed:
   trunk/libs/container/proj/vc7ide/list_ex.vcproj
   trunk/libs/interprocess/proj/vc7ide/doc_contB.vcproj
   trunk/libs/interprocess/proj/vc7ide/doc_named_conditionA.vcproj
   trunk/libs/interprocess/proj/vc7ide/doc_named_conditionB.vcproj
   trunk/libs/interprocess/proj/vc7ide/list_ex.vcproj
   trunk/libs/interprocess/proj/vc7ide/pair_test.vcproj
   trunk/libs/interprocess/test/pair_test.cpp
   trunk/libs/interprocess/test/semaphore_test_template.hpp
Text files modified:
   trunk/libs/container/proj/vc7ide/container.sln | 48 +
   trunk/libs/container/proj/vc7ide/container.vcproj | 270 +++++------
   trunk/libs/container/test/check_equal_containers.hpp | 6
   trunk/libs/container/test/deque_test.cpp | 44 +
   trunk/libs/container/test/dummy_test_allocator.hpp | 232 +++++++++
   trunk/libs/container/test/emplace_test.hpp | 92 +--
   trunk/libs/container/test/expand_bwd_test_allocator.hpp | 12
   trunk/libs/container/test/flat_tree_test.cpp | 148 ++++++
   trunk/libs/container/test/heap_allocator_v1.hpp | 2
   trunk/libs/container/test/list_test.cpp | 17
   trunk/libs/container/test/list_test.hpp | 6
   trunk/libs/container/test/map_test.hpp | 25 +
   trunk/libs/container/test/movable_int.hpp | 39 +
   trunk/libs/container/test/set_test.hpp | 1
   trunk/libs/container/test/slist_test.cpp | 15
   trunk/libs/container/test/stable_vector_test.cpp | 27 +
   trunk/libs/container/test/string_test.cpp | 221 ++++++++-
   trunk/libs/container/test/tree_test.cpp | 157 ++++++
   trunk/libs/container/test/vector_test.cpp | 19
   trunk/libs/container/test/vector_test.hpp | 7
   trunk/libs/interprocess/doc/Jamfile.v2 | 3
   trunk/libs/interprocess/doc/interprocess.qbk | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp | 2
   trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp | 2
   trunk/libs/interprocess/example/comp_doc_message_queueA.cpp | 2
   trunk/libs/interprocess/example/comp_doc_message_queueB.cpp | 2
   trunk/libs/interprocess/example/doc_adaptive_pool.cpp | 2
   trunk/libs/interprocess/example/doc_allocator.cpp | 2
   trunk/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp | 2
   trunk/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp | 2
   trunk/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp | 2
   trunk/libs/interprocess/example/doc_anonymous_shared_memory.cpp | 2
   trunk/libs/interprocess/example/doc_bufferstream.cpp | 2
   trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp | 2
   trunk/libs/interprocess/example/doc_cached_node_allocator.cpp | 2
   trunk/libs/interprocess/example/doc_complex_map.cpp | 2
   trunk/libs/interprocess/example/doc_cont.cpp | 2
   trunk/libs/interprocess/example/doc_file_mapping.cpp | 2
   trunk/libs/interprocess/example/doc_intrusive.cpp | 2
   trunk/libs/interprocess/example/doc_ipc_message.cpp | 2
   trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp | 2
   trunk/libs/interprocess/example/doc_managed_allocation_command.cpp | 2
   trunk/libs/interprocess/example/doc_managed_construction_info.cpp | 2
   trunk/libs/interprocess/example/doc_managed_copy_on_write.cpp | 2
   trunk/libs/interprocess/example/doc_managed_external_buffer.cpp | 2
   trunk/libs/interprocess/example/doc_managed_grow.cpp | 2
   trunk/libs/interprocess/example/doc_managed_heap_memory.cpp | 2
   trunk/libs/interprocess/example/doc_managed_mapped_file.cpp | 2
   trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp | 6
   trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp | 2
   trunk/libs/interprocess/example/doc_map.cpp | 2
   trunk/libs/interprocess/example/doc_move_containers.cpp | 6
   trunk/libs/interprocess/example/doc_multi_index.cpp | 2
   trunk/libs/interprocess/example/doc_named_alloc.cpp | 2
   trunk/libs/interprocess/example/doc_named_condition_shared_data.hpp | 2
   trunk/libs/interprocess/example/doc_named_mutex.cpp | 2
   trunk/libs/interprocess/example/doc_node_allocator.cpp | 2
   trunk/libs/interprocess/example/doc_offset_ptr.cpp | 2
   trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp | 2
   trunk/libs/interprocess/example/doc_private_node_allocator.cpp | 2
   trunk/libs/interprocess/example/doc_scoped_ptr.cpp | 2
   trunk/libs/interprocess/example/doc_shared_memory.cpp | 2
   trunk/libs/interprocess/example/doc_shared_ptr.cpp | 2
   trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp | 2
   trunk/libs/interprocess/example/doc_spawn_vector.cpp | 2
   trunk/libs/interprocess/example/doc_unique_ptr.cpp | 6
   trunk/libs/interprocess/example/doc_unordered_map.cpp | 2
   trunk/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp | 2
   trunk/libs/interprocess/example/doc_vectorstream.cpp | 2
   trunk/libs/interprocess/example/doc_where_allocate.cpp | 2
   trunk/libs/interprocess/example/doc_windows_shared_memory.cpp | 2
   trunk/libs/interprocess/example/doc_xsi_shared_memory.cpp | 2
   trunk/libs/interprocess/proj/to-do.txt | 10
   trunk/libs/interprocess/proj/vc7ide/Interprocess.sln | 894 ++++++++++++++++++++++-----------------
   trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj | 116 ++--
   trunk/libs/interprocess/test/adaptive_pool_test.cpp | 12
   trunk/libs/interprocess/test/allocator_v1.hpp | 8
   trunk/libs/interprocess/test/allocexcept_test.cpp | 2
   trunk/libs/interprocess/test/anonymous_shared_memory_test.cpp | 2
   trunk/libs/interprocess/test/boost_interprocess_check.hpp | 4
   trunk/libs/interprocess/test/bufferstream_test.cpp | 7
   trunk/libs/interprocess/test/cached_adaptive_pool_test.cpp | 12
   trunk/libs/interprocess/test/cached_node_allocator_test.cpp | 12
   trunk/libs/interprocess/test/condition_test.cpp | 21
   trunk/libs/interprocess/test/condition_test_template.hpp | 74 +-
   trunk/libs/interprocess/test/data_test.cpp | 2
   trunk/libs/interprocess/test/deque_test.cpp | 56 -
   trunk/libs/interprocess/test/dummy_test_allocator.hpp | 2
   trunk/libs/interprocess/test/enable_shared_from_this_test.cpp | 2
   trunk/libs/interprocess/test/expand_bwd_test_allocator.hpp | 2
   trunk/libs/interprocess/test/file_lock_test.cpp | 6
   trunk/libs/interprocess/test/file_mapping_test.cpp | 8
   trunk/libs/interprocess/test/flat_tree_test.cpp | 99 ----
   trunk/libs/interprocess/test/get_process_id_name.hpp | 2
   trunk/libs/interprocess/test/heap_allocator_v1.hpp | 8
   trunk/libs/interprocess/test/intermodule_singleton_test.cpp | 2
   trunk/libs/interprocess/test/intersegment_ptr_test.cpp | 14
   trunk/libs/interprocess/test/intrusive_ptr_test.cpp | 20
   trunk/libs/interprocess/test/list_test.cpp | 28 -
   trunk/libs/interprocess/test/list_test.hpp | 8
   trunk/libs/interprocess/test/managed_mapped_file_test.cpp | 6
   trunk/libs/interprocess/test/managed_shared_memory_test.cpp | 6
   trunk/libs/interprocess/test/managed_windows_shared_memory_test.cpp | 6
   trunk/libs/interprocess/test/managed_xsi_shared_memory_test.cpp | 6
   trunk/libs/interprocess/test/map_test.hpp | 85 +-
   trunk/libs/interprocess/test/mapped_file_test.cpp | 6
   trunk/libs/interprocess/test/memory_algorithm_test_template.hpp | 12
   trunk/libs/interprocess/test/message_queue_test.cpp | 2
   trunk/libs/interprocess/test/multi_index_test.cpp | 7
   trunk/libs/interprocess/test/mutex_test.cpp | 15
   trunk/libs/interprocess/test/mutex_test_template.hpp | 24
   trunk/libs/interprocess/test/mutex_timeout_test.cpp | 1
   trunk/libs/interprocess/test/named_condition_test.cpp | 15
   trunk/libs/interprocess/test/named_construct_test.cpp | 2
   trunk/libs/interprocess/test/named_creation_template.hpp | 2
   trunk/libs/interprocess/test/named_mutex_test.cpp | 2
   trunk/libs/interprocess/test/named_recursive_mutex_test.cpp | 2
   trunk/libs/interprocess/test/named_semaphore_test.cpp | 2
   trunk/libs/interprocess/test/named_upgradable_mutex_test.cpp | 2
   trunk/libs/interprocess/test/node_allocator_test.cpp | 12
   trunk/libs/interprocess/test/null_index_test.cpp | 2
   trunk/libs/interprocess/test/offset_ptr_test.cpp | 120 ++++
   trunk/libs/interprocess/test/print_container.hpp | 2
   trunk/libs/interprocess/test/private_adaptive_pool_test.cpp | 12
   trunk/libs/interprocess/test/private_node_allocator_test.cpp | 12
   trunk/libs/interprocess/test/recursive_mutex_test.cpp | 19
   trunk/libs/interprocess/test/robust_emulation_test.cpp | 6
   trunk/libs/interprocess/test/robust_mutex_test.hpp | 2
   trunk/libs/interprocess/test/robust_recursive_emulation_test.cpp | 6
   trunk/libs/interprocess/test/semaphore_test.cpp | 2
   trunk/libs/interprocess/test/set_test.hpp | 85 +-
   trunk/libs/interprocess/test/sharable_mutex_test_template.hpp | 25
   trunk/libs/interprocess/test/shared_memory_mapping_test.cpp | 8
   trunk/libs/interprocess/test/shared_memory_test.cpp | 6
   trunk/libs/interprocess/test/shared_ptr_test.cpp | 6
   trunk/libs/interprocess/test/slist_test.cpp | 28 -
   trunk/libs/interprocess/test/stable_vector_test.cpp | 27 -
   trunk/libs/interprocess/test/string_test.cpp | 13
   trunk/libs/interprocess/test/tree_test.cpp | 65 --
   trunk/libs/interprocess/test/unique_ptr_test.cpp | 23
   trunk/libs/interprocess/test/unordered_test.cpp | 6
   trunk/libs/interprocess/test/upgradable_mutex_test.cpp | 66 +-
   trunk/libs/interprocess/test/user_buffer_test.cpp | 22
   trunk/libs/interprocess/test/util.hpp | 16
   trunk/libs/interprocess/test/vector_test.cpp | 27 -
   trunk/libs/interprocess/test/vector_test.hpp | 19
   trunk/libs/interprocess/test/vectorstream_test.cpp | 1
   trunk/libs/interprocess/test/windows_shared_memory_mapping_test.cpp | 2
   trunk/libs/interprocess/test/windows_shared_memory_test.cpp | 4
   trunk/libs/interprocess/test/xsi_shared_memory_mapping_test.cpp | 2
   trunk/libs/intrusive/doc/intrusive.qbk | 29
   trunk/libs/intrusive/proj/vc7ide/Intrusive.sln | 98 ++-
   trunk/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj | 11
   trunk/libs/intrusive/proj/vc7ide/to-do.txt | 4
   trunk/libs/intrusive/test/avl_multiset_test.cpp | 2
   trunk/libs/intrusive/test/common_functors.hpp | 2
   trunk/libs/intrusive/test/default_hook_test.cpp | 4
   trunk/libs/intrusive/test/external_value_traits_test.cpp | 21
   trunk/libs/intrusive/test/generic_assoc_test.hpp | 3
   trunk/libs/intrusive/test/list_test.cpp | 5
   trunk/libs/intrusive/test/make_functions_test.cpp | 4
   trunk/libs/intrusive/test/slist_test.cpp | 2
   trunk/libs/intrusive/test/smart_ptr.hpp | 84 ++-
   trunk/libs/intrusive/test/splay_multiset_test.cpp | 2
   trunk/libs/intrusive/test/stateful_value_traits_test.cpp | 11
   trunk/libs/intrusive/test/test_container.hpp | 12
   trunk/libs/intrusive/test/unordered_multiset_test.cpp | 130 ++++-
   trunk/libs/intrusive/test/unordered_set_test.cpp | 114 +++-
   trunk/libs/intrusive/test/virtual_base_test.cpp | 3
   trunk/libs/move/index.html | 4
   176 files changed, 2657 insertions(+), 1687 deletions(-)

Added: trunk/libs/container/proj/vc7ide/allocator_traits_test.vcproj
==============================================================================
--- (empty file)
+++ trunk/libs/container/proj/vc7ide/allocator_traits_test.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="allocator_traits_test"
+ ProjectGUID="{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="../../Bin/Win32/Debug"
+ IntermediateDirectory="Debug/allocator_traits_test"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
+ GeneratePreprocessedFile="0"
+ 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)/allocator_traits_test_d.exe"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="../../../../stage/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/allocator_traits_test.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/allocator_traits_test"
+ 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)/allocator_traits_test.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="{41737BCF-4312-7AC5-A066-32D75A32A2AF}">
+ <File
+ RelativePath="..\..\test\allocator_traits_test.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93815995-89BD-b043-5E8B-65FBE52E2AFB}">
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>

Modified: trunk/libs/container/proj/vc7ide/container.sln
==============================================================================
--- trunk/libs/container/proj/vc7ide/container.sln (original)
+++ trunk/libs/container/proj/vc7ide/container.sln 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,4 +1,12 @@
 Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_containerlib", "container.vcproj", "{FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "allocator_traits_test", "allocator_traits_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deque_test", "deque_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792655}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
@@ -7,7 +15,7 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list_test", "list_ex.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist_test", "slist_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
@@ -23,15 +31,15 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist_test", "slist_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vector_test", "vector_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vector_test", "vector_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pair_test", "pair_test.vcproj", "{58CA17C5-A74F-9602-48FE-B06310DA7FA6}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_containerlib", "container.vcproj", "{FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list_test", "list_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
@@ -43,6 +51,14 @@
         GlobalSection(ProjectDependencies) = postSolution
         EndGlobalSection
         GlobalSection(ProjectConfiguration) = postSolution
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Debug.ActiveCfg = Debug|Win32
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Debug.Build.0 = Debug|Win32
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Release.ActiveCfg = Release|Win32
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Release.Build.0 = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.ActiveCfg = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.ActiveCfg = Release|Win32
@@ -51,10 +67,10 @@
                 {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.ActiveCfg = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.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
@@ -67,18 +83,18 @@
                 {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.ActiveCfg = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.Build.0 = Release|Win32
                 {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
                 {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
                 {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
                 {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
- {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Debug.ActiveCfg = Debug|Win32
- {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Debug.Build.0 = Debug|Win32
- {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Release.ActiveCfg = Release|Win32
- {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Release.Build.0 = Release|Win32
+ {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Debug.ActiveCfg = Debug|Win32
+ {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Debug.Build.0 = Debug|Win32
+ {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Release.ActiveCfg = Release|Win32
+ {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(ExtensibilityGlobals) = postSolution
         EndGlobalSection

Modified: trunk/libs/container/proj/vc7ide/container.vcproj
==============================================================================
--- trunk/libs/container/proj/vc7ide/container.vcproj (original)
+++ trunk/libs/container/proj/vc7ide/container.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -96,86 +96,7 @@
         </References>
         <Files>
                 <Filter
- Name="detail"
- Filter="">
- <File
- RelativePath="..\..\..\..\boost\container\detail\adaptive_node_pool_impl.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\advanced_insert_int.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\algorithms.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\allocation_type.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\config_begin.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\config_end.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\destroyers.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\flat_tree.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\iterators.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\math_functions.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\mpl.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\multiallocation_chain.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\node_alloc_holder.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\node_pool_impl.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\pair.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\pool_common.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\preprocessor.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\transform_iterator.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\tree.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\type_traits.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\utilities.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\value_init.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\variadic_templates_tools.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\version_type.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\detail\workaround.hpp">
- </File>
- </Filter>
- <Filter
- Name="Documentation"
+ Name="doc"
                         Filter="">
                         <File
                                 RelativePath="..\..\doc\container.qbk">
@@ -210,15 +131,9 @@
                         Name="test"
                         Filter="">
                         <File
- RelativePath="..\..\test\boost_interprocess_check.hpp">
- </File>
- <File
                                 RelativePath="..\..\test\check_equal_containers.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\deque_test.cpp">
- </File>
- <File
                                 RelativePath="..\..\test\dummy_test_allocator.hpp">
                         </File>
                         <File
@@ -231,18 +146,12 @@
                                 RelativePath="..\..\test\expand_bwd_test_template.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\flat_tree_test.cpp">
- </File>
- <File
                                 RelativePath="..\..\test\heap_allocator_v1.hpp">
                         </File>
                         <File
                                 RelativePath="..\..\test\Jamfile.v2">
                         </File>
                         <File
- RelativePath="..\..\test\list_test.cpp">
- </File>
- <File
                                 RelativePath="..\..\test\list_test.hpp">
                         </File>
                         <File
@@ -255,66 +164,153 @@
                                 RelativePath="..\..\test\print_container.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\set_test.hpp">
+ RelativePath="..\..\test\propagate_allocator_test.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\slist_test.cpp">
+ RelativePath="..\..\test\set_test.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\stable_vector_test.cpp">
+ RelativePath="..\..\test\util.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\string_test.cpp">
+ RelativePath="..\..\test\vector_test.hpp">
                         </File>
+ </Filter>
+ <Filter
+ Name="container"
+ Filter="">
                         <File
- RelativePath="..\..\test\tree_test.cpp">
+ RelativePath="..\..\..\..\boost\container\container_fwd.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\util.hpp">
+ RelativePath="..\..\..\..\boost\container\deque.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\vector_test.cpp">
+ RelativePath="..\..\..\..\boost\container\flat_map.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\vector_test.hpp">
- </File>
+ RelativePath="..\..\..\..\boost\container\flat_set.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\list.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\map.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\set.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\slist.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\stable_vector.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\string.hpp">
+ </File>
+ <File
+ RelativePath="..\to-do.txt">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\vector.hpp">
+ </File>
+ <Filter
+ Name="allocator"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\boost\container\allocator\allocator_traits.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\allocator\memory_util.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\allocator\scoped_allocator.hpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="detail"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\adaptive_node_pool_impl.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\advanced_insert_int.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\algorithms.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\allocation_type.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\config_begin.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\config_end.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\destroyers.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\flat_tree.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\function_detector.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\iterators.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\math_functions.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\mpl.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\multiallocation_chain.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\node_alloc_holder.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\node_pool_impl.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\pair.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\pool_common.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\preprocessor.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\transform_iterator.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\tree.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\type_traits.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\utilities.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\value_init.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\variadic_templates_tools.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\version_type.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\container\detail\workaround.hpp">
+ </File>
+ </Filter>
                 </Filter>
- <File
- RelativePath="..\..\..\..\boost\container\container_fwd.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\deque.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\flat_map.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\flat_set.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\list.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\map.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\set.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\slist.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\stable_vector.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\string.hpp">
- </File>
- <File
- RelativePath="..\to-do.txt">
- </File>
- <File
- RelativePath="..\..\..\..\boost\container\vector.hpp">
- </File>
         </Files>
         <Globals>
         </Globals>

Deleted: trunk/libs/container/proj/vc7ide/list_ex.vcproj
==============================================================================
--- trunk/libs/container/proj/vc7ide/list_ex.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
+++ (empty file)
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="list_test"
- ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/list_ex"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- GeneratePreprocessedFile="0"
- KeepComments="FALSE"
- 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)/list_ex_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/list_ex.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/list_ex"
- 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)/list_ex.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="..\..\test\list_test.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>

Added: trunk/libs/container/proj/vc7ide/list_test.vcproj
==============================================================================
--- (empty file)
+++ trunk/libs/container/proj/vc7ide/list_test.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="list_test"
+ ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="../../Bin/Win32/Debug"
+ IntermediateDirectory="Debug/list_ex"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
+ GeneratePreprocessedFile="0"
+ KeepComments="FALSE"
+ 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)/list_ex_d.exe"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="../../../../stage/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/list_ex.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/list_ex"
+ 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)/list_ex.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="..\..\test\list_test.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>

Added: trunk/libs/container/proj/vc7ide/pair_test.vcproj
==============================================================================
--- (empty file)
+++ trunk/libs/container/proj/vc7ide/pair_test.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="pair_test"
+ ProjectGUID="{58CA17C5-A74F-9602-48FE-B06310DA7FA6}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="../../Bin/Win32/Debug"
+ IntermediateDirectory="Debug/pair_test"
+ 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)/pair_test_d.exe"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="../../../../stage/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/pair_test.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/pair_test"
+ 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)/pair_test.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-A8E6-2A3E52EBA2FF}">
+ <File
+ RelativePath="..\..\test\pair_test.cpp">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>

Added: trunk/libs/container/test/allocator_traits_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/container/test/allocator_traits_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,355 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2011-2011. 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/container for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+#include <boost/container/detail/config_begin.hpp>
+#include <cstddef>
+#include <boost/container/allocator/allocator_traits.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/container/detail/function_detector.hpp>
+#include <boost/move/move.hpp>
+
+template<class T>
+class SimpleAllocator
+{
+ bool allocate_called_;
+ bool deallocate_called_;
+ public:
+ typedef T value_type;
+
+ SimpleAllocator()
+ : allocate_called_(false)
+ , deallocate_called_(false)
+ {}
+
+ T* allocate(std::size_t)
+ { allocate_called_ = true; return 0; }
+
+ void deallocate(T*, std::size_t)
+ { deallocate_called_ = true; }
+
+ bool allocate_called() const
+ { return allocate_called_; }
+
+ bool deallocate_called() const
+ { return deallocate_called_; }
+};
+
+template<class T>
+class SimpleSmartPtr
+{
+ public:
+
+ SimpleSmartPtr()
+ : ptr_(0)
+ {}
+
+ SimpleSmartPtr(const SimpleSmartPtr &c)
+ { this->ptr_ = c.ptr_; }
+
+ SimpleSmartPtr & operator=(const SimpleSmartPtr &c)
+ { this->ptr_ = c.ptr_; }
+
+ typedef T* pointer;
+
+ private:
+ T *ptr_;
+};
+
+template<class T, class Arg>
+class ComplexAllocator
+{
+ bool allocate_called_;
+ bool deallocate_called_;
+ bool allocate_hint_called_;
+ bool destroy_called_;
+ mutable bool max_size_called_;
+ mutable bool select_on_container_copy_construction_called_;
+ bool construct_called_;
+
+ public:
+ typedef T value_type;
+ typedef SimpleSmartPtr<T> pointer;
+ typedef SimpleSmartPtr<const T> const_pointer;
+ typedef T & reference;
+ typedef const T & const_reference;
+ typedef SimpleSmartPtr<void> void_pointer;
+ typedef SimpleSmartPtr<const void> const_void_pointer;
+ typedef signed short difference_type;
+ typedef unsigned short size_type;
+ typedef boost::true_type propagate_on_container_copy_assignment;
+ typedef boost::true_type propagate_on_container_move_assignment;
+ typedef boost::true_type propagate_on_container_swap;
+
+ ComplexAllocator()
+ : allocate_called_(false)
+ , deallocate_called_(false)
+ , allocate_hint_called_(false)
+ , destroy_called_(false)
+ , max_size_called_(false)
+ , select_on_container_copy_construction_called_(false)
+ , construct_called_(false)
+ {}
+
+ pointer allocate(size_type)
+ { allocate_called_ = true; return pointer(); }
+
+ void deallocate(pointer, size_type)
+ { deallocate_called_ = true; }
+
+ //optional
+ ComplexAllocator select_on_container_copy_construction() const
+ { select_on_container_copy_construction_called_ = true; return *this; }
+
+ pointer allocate(size_type n, const const_void_pointer &)
+ { allocate_hint_called_ = true; return allocate(n); }
+
+ template<class U>
+ void destroy(U*)
+ { destroy_called_ = true; }
+
+ size_type max_size() const
+ { max_size_called_ = true; return size_type(size_type(0)-1); }
+
+ #define BOOST_PP_LOCAL_MACRO(n) \
+ template<class U BOOST_PP_ENUM_TRAILING_PARAMS(n, class P) > \
+ void construct(U *p BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
+ { \
+ construct_called_ = true; \
+ ::new (p) U (BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
+ } \
+ //
+ #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
+ #include BOOST_PP_LOCAL_ITERATE()
+
+ //getters
+ bool allocate_called() const
+ { return allocate_called_; }
+
+ bool deallocate_called() const
+ { return deallocate_called_; }
+
+ bool allocate_hint_called() const
+ { return allocate_hint_called_; }
+
+ bool destroy_called() const
+ { return destroy_called_; }
+
+ bool max_size_called() const
+ { return max_size_called_; }
+
+ bool select_on_container_copy_construction_called() const
+ { return select_on_container_copy_construction_called_; }
+
+ bool construct_called() const
+ { return construct_called_; }
+};
+
+class copymovable
+{
+ bool copymoveconstructed_;
+ bool moved_;
+
+ BOOST_COPYABLE_AND_MOVABLE(copymovable)
+
+ public:
+
+ copymovable(int, int, int)
+ : copymoveconstructed_(false), moved_(false)
+ {}
+
+ copymovable()
+ : copymoveconstructed_(false), moved_(false)
+ {}
+
+ copymovable(const copymovable &)
+ : copymoveconstructed_(true), moved_(false)
+ {}
+
+ copymovable(BOOST_RV_REF(copymovable))
+ : copymoveconstructed_(true), moved_(true)
+ {}
+
+ copymovable & operator=(BOOST_COPY_ASSIGN_REF(copymovable) ){ return *this; }
+ copymovable & operator=(BOOST_RV_REF(copymovable) ){ return *this; }
+
+ bool copymoveconstructed() const
+ { return copymoveconstructed_; }
+
+ bool moved() const
+ { return moved_; }
+};
+
+int main()
+{
+ //SimpleAllocator
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < SimpleAllocator<int> >::value_type, int>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < SimpleAllocator<int> >::pointer, int*>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < SimpleAllocator<int> >::const_pointer, const int*>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < SimpleAllocator<int> >::void_pointer, void*>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < SimpleAllocator<int> >::const_void_pointer, const void*>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < SimpleAllocator<int> >::difference_type, std::ptrdiff_t>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < SimpleAllocator<int> >::size_type, std::size_t>::value ));
+ BOOST_STATIC_ASSERT(( boost::container::allocator_traits
+ < SimpleAllocator<int> >::propagate_on_container_copy_assignment::value == false ));
+ BOOST_STATIC_ASSERT(( boost::container::allocator_traits
+ < SimpleAllocator<int> >::propagate_on_container_move_assignment::value == false ));
+ BOOST_STATIC_ASSERT(( boost::container::allocator_traits
+ < SimpleAllocator<int> >::propagate_on_container_swap::value == false ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < SimpleAllocator<int> >::rebind_traits<double>::allocator_type
+ , SimpleAllocator<double> >::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < SimpleAllocator<int> >::rebind_alloc<double>::value_type
+ , double >::value ));
+
+ //ComplexAllocator
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::value_type, int>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::pointer, SimpleSmartPtr<int> >::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::const_pointer, SimpleSmartPtr<const int> >::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::void_pointer, SimpleSmartPtr<void> >::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::const_void_pointer, SimpleSmartPtr<const void> >::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::difference_type, signed short>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::size_type, unsigned short>::value ));
+ BOOST_STATIC_ASSERT(( boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::propagate_on_container_copy_assignment::value == true ));
+ BOOST_STATIC_ASSERT(( boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::propagate_on_container_move_assignment::value == true ));
+ BOOST_STATIC_ASSERT(( boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::propagate_on_container_swap::value == true ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::rebind_traits<double>::allocator_type
+ , ComplexAllocator<double, void> >::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::container::allocator_traits
+ < ComplexAllocator<int, void> >::rebind_alloc<double>::value_type
+ , double >::value ));
+
+ typedef ComplexAllocator<int, void> CAlloc;
+ typedef SimpleAllocator<int> SAlloc;
+ typedef boost::container::allocator_traits<CAlloc> CAllocTraits;
+ typedef boost::container::allocator_traits<SAlloc> SAllocTraits;
+ CAlloc c_alloc;
+ SAlloc s_alloc;
+
+ //allocate
+ CAllocTraits::allocate(c_alloc, 1);
+ if(!c_alloc.allocate_called()){
+ return 1;
+ }
+ SAllocTraits::allocate(s_alloc, 1);
+ if(!s_alloc.allocate_called()){
+ return 1;
+ }
+
+ //deallocate
+ CAllocTraits::deallocate(c_alloc, CAllocTraits::pointer(), 1);
+ if(!c_alloc.deallocate_called()){
+ return 1;
+ }
+ SAllocTraits::deallocate(s_alloc, SAllocTraits::pointer(), 1);
+ if(!s_alloc.deallocate_called()){
+ return 1;
+ }
+
+ //allocate with hint
+ CAllocTraits::allocate(c_alloc, 1, CAllocTraits::const_void_pointer());
+ if(!c_alloc.allocate_hint_called()){
+ return 1;
+ }
+ SAllocTraits::allocate(s_alloc, 1, SAllocTraits::const_void_pointer());
+
+ //destroy
+ float dummy;
+ CAllocTraits::destroy(c_alloc, &dummy);
+ if(!c_alloc.destroy_called()){
+ return 1;
+ }
+ SAllocTraits::destroy(s_alloc, &dummy);
+
+ //max_size
+ CAllocTraits::max_size(c_alloc);
+ if(!c_alloc.max_size_called()){
+ return 1;
+ }
+ SAllocTraits::max_size(s_alloc);
+
+ //select_on_container_copy_construction
+ CAllocTraits::select_on_container_copy_construction(c_alloc);
+ if(!c_alloc.select_on_container_copy_construction_called()){
+ return 1;
+ }
+ SAllocTraits::select_on_container_copy_construction(s_alloc);
+
+ //construct
+ {
+ copymovable c;
+ copymovable c2;
+ CAllocTraits::construct(c_alloc, &c, c2);
+ if(!c_alloc.construct_called() || !c.copymoveconstructed() || c.moved()){
+ return 1;
+ }
+ }
+ {
+ copymovable c;
+ copymovable c2;
+ CAllocTraits::construct(c_alloc, &c, ::boost::move(c2));
+ if(!c_alloc.construct_called() || !c.copymoveconstructed() || !c.moved()){
+ return 1;
+ }
+ }
+ {
+ copymovable c;
+ copymovable c2;
+ SAllocTraits::construct(s_alloc, &c, c2);
+ if(!c.copymoveconstructed() || c.moved()){
+ return 1;
+ }
+ }
+ {
+ copymovable c;
+ copymovable c2;
+ SAllocTraits::construct(s_alloc, &c, ::boost::move(c2));
+ if(!c.copymoveconstructed() || !c.moved()){
+ return 1;
+ }
+ }
+ {
+ copymovable c;
+ CAllocTraits::construct(c_alloc, &c, 0, 1, 2);
+ if(!c_alloc.construct_called() || c.copymoveconstructed() || c.moved()){
+ return 1;
+ }
+ }
+ {
+ copymovable c;
+ copymovable c2;
+ SAllocTraits::construct(s_alloc, &c, 0, 1, 2);
+ if(c.copymoveconstructed() || c.moved()){
+ return 1;
+ }
+ }
+
+ return 0;
+}
+#include <boost/container/detail/config_end.hpp>

Modified: trunk/libs/container/test/check_equal_containers.hpp
==============================================================================
--- trunk/libs/container/test/check_equal_containers.hpp (original)
+++ trunk/libs/container/test/check_equal_containers.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -8,8 +8,8 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
-#ifndef BOOST_CONTAINER_TEST_CHECK_EQUAL_CONTAINERS_HPP
-#define BOOST_CONTAINER_TEST_CHECK_EQUAL_CONTAINERS_HPP
+#ifndef BOOST_CONTAINER_TEST_CHECK_EQUAL_CONTAINER_HPP
+#define BOOST_CONTAINER_TEST_CHECK_EQUAL_CONTAINER_HPP
 
 #include <boost/container/detail/config_begin.hpp>
 #include <functional>
@@ -73,4 +73,4 @@
 
 #include <boost/container/detail/config_end.hpp>
 
-#endif //#ifndef BOOST_CONTAINER_TEST_CHECK_EQUAL_CONTAINERS_HPP
+#endif //#ifndef BOOST_CONTAINER_TEST_CHECK_EQUAL_CONTAINER_HPP

Modified: trunk/libs/container/test/deque_test.cpp
==============================================================================
--- trunk/libs/container/test/deque_test.cpp (original)
+++ trunk/libs/container/test/deque_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -26,26 +26,39 @@
 #include <boost/container/detail/type_traits.hpp>
 #include <string>
 #include "emplace_test.hpp"
+#include "propagate_allocator_test.hpp"
 #include "vector_test.hpp"
 
-
 using namespace boost::container;
 
+namespace boost {
+namespace container {
+
 //Explicit instantiation to detect compilation errors
 template class boost::container::deque
  < test::movable_and_copyable_int
+ , test::simple_allocator<test::movable_and_copyable_int> >;
+
+template class boost::container::deque
+ < test::movable_and_copyable_int
  , test::dummy_test_allocator<test::movable_and_copyable_int> >;
 
+template class boost::container::deque
+ < test::movable_and_copyable_int
+ , std::allocator<test::movable_and_copyable_int> >;
+
+}}
+
 //Function to check if both sets are equal
 template<class V1, class V2>
-bool deque_copyable_only(V1 *, V2 *, containers_detail::false_type)
+bool deque_copyable_only(V1 *, V2 *, container_detail::false_type)
 {
    return true;
 }
 
 //Function to check if both sets are equal
 template<class V1, class V2>
-bool deque_copyable_only(V1 *cntdeque, V2 *stddeque, containers_detail::true_type)
+bool deque_copyable_only(V1 *cntdeque, V2 *stddeque, container_detail::true_type)
 {
    typedef typename V1::value_type IntType;
    std::size_t size = cntdeque->size();
@@ -100,6 +113,10 @@
 class recursive_deque
 {
 public:
+
+ recursive_deque & operator=(const recursive_deque &x)
+ { this->deque_ = x.deque_; return *this; }
+
    int id_;
    deque<recursive_deque> deque_;
 };
@@ -161,6 +178,7 @@
 
       typename MyCntDeque::iterator it;
       typename MyCntDeque::const_iterator cit = it;
+ (void)cit;
 
       cntdeque->erase(cntdeque->begin()++);
       stddeque->erase(stddeque->begin()++);
@@ -212,7 +230,7 @@
       }
 
       if(!deque_copyable_only(cntdeque, stddeque
- ,containers_detail::bool_<boost::container::test::is_copyable<IntType>::value>())){
+ ,container_detail::bool_<boost::container::test::is_copyable<IntType>::value>())){
          return false;
       }
 
@@ -268,6 +286,21 @@
    if(!do_test<test::movable_int>())
       return 1;
 
+ if(!do_test<test::movable_and_copyable_int>())
+ return 1;
+
+ if(!do_test<test::copyable_int>())
+ return 1;
+
+ //Test non-copy-move operations
+ {
+ deque<test::non_copymovable_int> d;
+ d.emplace_back();
+ d.emplace_front(1);
+ d.resize(10);
+ d.resize(1);
+ }
+
    {
       typedef deque<int> MyDeque;
       typedef deque<test::movable_int> MyMoveDeque;
@@ -289,6 +322,9 @@
       < deque<test::EmplaceInt>, Options>())
       return 1;
 
+ if(!boost::container::test::test_propagate_allocator<deque>())
+ return 1;
+
    return 0;
 }
 

Modified: trunk/libs/container/test/dummy_test_allocator.hpp
==============================================================================
--- trunk/libs/container/test/dummy_test_allocator.hpp (original)
+++ trunk/libs/container/test/dummy_test_allocator.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -23,7 +23,10 @@
 #include <boost/assert.hpp>
 #include <boost/container/detail/utilities.hpp>
 #include <boost/container/detail/type_traits.hpp>
+#include <boost/container/detail/mpl.hpp>
 #include <boost/container/detail/version_type.hpp>
+#include <boost/container/detail/multiallocation_chain.hpp>
+#include <boost/move/move.hpp>
 #include <memory>
 #include <algorithm>
 #include <cstddef>
@@ -37,34 +40,59 @@
 namespace container {
 namespace test {
 
-//This allocator just allows two allocations. The first one will return
-//mp_buffer + m_offset configured in the constructor. The second one
-//will return mp_buffer.
+//Very simple version 1 allocator
+template<class T>
+class simple_allocator
+{
+ public:
+ typedef T value_type;
+
+ simple_allocator()
+ {}
+
+ template<class U>
+ simple_allocator(const simple_allocator<U> &)
+ {}
+
+ T* allocate(std::size_t n)
+ { return (T*)::new char[sizeof(T)*n]; }
+
+ void deallocate(T*p, std::size_t)
+ { delete[] ((char*)p);}
+
+ friend bool operator==(const simple_allocator &, const simple_allocator &)
+ { return true; }
+
+ friend bool operator!=(const simple_allocator &, const simple_allocator &)
+ { return false; }
+};
+
+//Version 2 allocator with rebind
 template<class T>
 class dummy_test_allocator
 {
  private:
- typedef dummy_test_allocator<T> self_t;
+ typedef dummy_test_allocator<T> self_t;
    typedef void * aux_pointer_t;
    typedef const void * cvoid_ptr;
 
- template<class T2>
- dummy_test_allocator& operator=(const dummy_test_allocator<T2>&);
-
- dummy_test_allocator& operator=(const dummy_test_allocator&);
-
    public:
    typedef T value_type;
    typedef T * pointer;
    typedef const T * const_pointer;
- typedef typename containers_detail::add_reference
+ typedef typename container_detail::add_reference
                      <value_type>::type reference;
- typedef typename containers_detail::add_reference
+ typedef typename container_detail::add_reference
                      <const value_type>::type const_reference;
    typedef std::size_t size_type;
    typedef std::ptrdiff_t difference_type;
 
-// typedef boost::container::version_type<dummy_test_allocator, 2> version;
+ typedef container_detail::basic_multiallocation_chain
+ <void*> multialloc_cached_counted;
+ typedef boost::container::container_detail::transform_multiallocation_chain
+ <multialloc_cached_counted, value_type> multiallocation_chain;
+
+ typedef boost::container::container_detail::version_type<dummy_test_allocator, 2> version;
 
    template<class T2>
    struct rebind
@@ -115,7 +143,7 @@
                          size_type,
                          size_type,
                          size_type &, const pointer & = 0)
- { return std::pair<pointer, bool>(pointer(0), true); }
+ { return std::pair<pointer, bool>(pointer(), true); }
 
    //!Returns maximum the number of objects the previously allocated memory
    //!pointed by p can hold.
@@ -126,26 +154,198 @@
    //!must be deallocated only with deallocate_one().
    //!Throws boost::container::bad_alloc if there is no enough memory
    pointer allocate_one()
- { return pointer(0); }
+ { return pointer(); }
 
    //!Deallocates memory previously allocated with allocate_one().
    //!You should never use deallocate_one to deallocate memory allocated
    //!with other functions different from allocate_one(). Never throws
    void deallocate_one(const pointer &)
    {}
+
+ //!Allocates many elements of size == 1 in a contiguous block
+ //!of memory. The minimum number to be allocated is min_elements,
+ //!the preferred and maximum number is
+ //!preferred_elements. The number of actually allocated elements is
+ //!will be assigned to received_size. Memory allocated with this function
+ //!must be deallocated only with deallocate_one().
+ multiallocation_chain allocate_individual(size_type)
+ { return multiallocation_chain(); }
+
+ //!Allocates many elements of size == 1 in a contiguous block
+ //!of memory. The minimum number to be allocated is min_elements,
+ //!the preferred and maximum number is
+ //!preferred_elements. The number of actually allocated elements is
+ //!will be assigned to received_size. Memory allocated with this function
+ //!must be deallocated only with deallocate_one().
+ void deallocate_individual(multiallocation_chain)
+ {}
+
+ //!Allocates many elements of size elem_size in a contiguous block
+ //!of memory. The minimum number to be allocated is min_elements,
+ //!the preferred and maximum number is
+ //!preferred_elements. The number of actually allocated elements is
+ //!will be assigned to received_size. The elements must be deallocated
+ //!with deallocate(...)
+ void deallocate_many(multiallocation_chain)
+ {}
 };
 
 //!Equality test for same type of dummy_test_allocator
 template<class T> inline
 bool operator==(const dummy_test_allocator<T> &,
                 const dummy_test_allocator<T> &)
-{ return false; }
+{ return true; }
 
 //!Inequality test for same type of dummy_test_allocator
 template<class T> inline
 bool operator!=(const dummy_test_allocator<T> &,
                 const dummy_test_allocator<T> &)
-{ return true; }
+{ return false; }
+
+
+template< class T
+ , bool PropagateOnContCopyAssign
+ , bool PropagateOnContMoveAssign
+ , bool PropagateOnContSwap
+ , bool CopyOnPropagateOnContSwap
+ >
+class propagation_test_allocator
+{
+ BOOST_COPYABLE_AND_MOVABLE(propagation_test_allocator)
+
+ public:
+ typedef T value_type;
+ typedef boost::container::container_detail::bool_<PropagateOnContCopyAssign>
+ propagate_on_container_copy_assignment;
+ typedef boost::container::container_detail::bool_<PropagateOnContMoveAssign>
+ propagate_on_container_move_assignment;
+ typedef boost::container::container_detail::bool_<PropagateOnContSwap>
+ propagate_on_container_swap;
+
+ template<class T2>
+ struct rebind
+ { typedef propagation_test_allocator
+ < T2
+ , PropagateOnContCopyAssign
+ , PropagateOnContMoveAssign
+ , PropagateOnContSwap
+ , CopyOnPropagateOnContSwap> other;
+ };
+
+ propagation_test_allocator select_on_container_copy_construction() const
+ { return CopyOnPropagateOnContSwap ? propagation_test_allocator(*this) : propagation_test_allocator(); }
+
+ explicit propagation_test_allocator()
+ : id_(unique_id_++)
+ , ctr_copies_(0)
+ , ctr_moves_(0)
+ , assign_copies_(0)
+ , assign_moves_(0)
+ , swaps_(0)
+ {}
+
+ propagation_test_allocator(const propagation_test_allocator &x)
+ : id_(x.id_)
+ , ctr_copies_(x.ctr_copies_+1)
+ , ctr_moves_(x.ctr_moves_)
+ , assign_copies_(x.assign_copies_)
+ , assign_moves_(x.assign_moves_)
+ , swaps_(x.swaps_)
+ {}
+
+ template<class U>
+ propagation_test_allocator(const propagation_test_allocator
+ < U
+ , PropagateOnContCopyAssign
+ , PropagateOnContMoveAssign
+ , PropagateOnContSwap
+ , CopyOnPropagateOnContSwap> &x)
+ : id_(x.id_)
+ , ctr_copies_(0)
+ , ctr_moves_(0)
+ , assign_copies_(0)
+ , assign_moves_(0)
+ , swaps_(0)
+ {}
+
+ propagation_test_allocator(BOOST_RV_REF(propagation_test_allocator) x)
+ : id_(x.id_)
+ , ctr_copies_(x.ctr_copies_)
+ , ctr_moves_(x.ctr_moves_ + 1)
+ , assign_copies_(x.assign_copies_)
+ , assign_moves_(x.assign_moves_)
+ , swaps_(x.swaps_)
+ {}
+
+ propagation_test_allocator &operator=(BOOST_COPY_ASSIGN_REF(propagation_test_allocator) x)
+ {
+ id_ = x.id_;
+ ctr_copies_ = x.ctr_copies_;
+ ctr_moves_ = x.ctr_moves_;
+ assign_copies_ = x.assign_copies_+1;
+ assign_moves_ = x.assign_moves_;
+ swaps_ = x.swaps_;
+ return *this;
+ }
+
+ propagation_test_allocator &operator=(BOOST_RV_REF(propagation_test_allocator) x)
+ {
+ id_ = x.id_;
+ ctr_copies_ = x.ctr_copies_;
+ ctr_moves_ = x.ctr_moves_;
+ assign_copies_ = x.assign_copies_;
+ assign_moves_ = x.assign_moves_+1;
+ swaps_ = x.swaps_;
+ return *this;
+ }
+
+ static void reset_unique_id()
+ { unique_id_ = 0; }
+
+ T* allocate(std::size_t n)
+ { return (T*)::new char[sizeof(T)*n]; }
+
+ void deallocate(T*p, std::size_t)
+ { delete[] ((char*)p);}
+
+ friend bool operator==(const propagation_test_allocator &, const propagation_test_allocator &)
+ { return true; }
+
+ friend bool operator!=(const propagation_test_allocator &, const propagation_test_allocator &)
+ { return false; }
+
+ friend void swap(propagation_test_allocator &l, propagation_test_allocator &r)
+ {
+ ++l.swaps_; ++r.swaps_;
+ container_detail::do_swap(l.id_, r.id_);
+ container_detail::do_swap(l.ctr_copies_, r.ctr_copies_);
+ container_detail::do_swap(l.ctr_moves_, r.ctr_moves_);
+ container_detail::do_swap(l.assign_copies_, r.assign_copies_);
+ container_detail::do_swap(l.assign_moves_, r.assign_moves_);
+ container_detail::do_swap(l.swaps_, r.swaps_);
+ }
+
+ unsigned int id_;
+ unsigned int ctr_copies_;
+ unsigned int ctr_moves_;
+ unsigned int assign_copies_;
+ unsigned int assign_moves_;
+ unsigned int swaps_;
+ static unsigned unique_id_;
+};
+
+template< class T
+ , bool PropagateOnContCopyAssign
+ , bool PropagateOnContMoveAssign
+ , bool PropagateOnContSwap
+ , bool CopyOnPropagateOnContSwap
+ >
+unsigned int propagation_test_allocator< T
+ , PropagateOnContCopyAssign
+ , PropagateOnContMoveAssign
+ , PropagateOnContSwap
+ , CopyOnPropagateOnContSwap>::unique_id_ = 0;
+
 
 } //namespace test {
 } //namespace container {

Modified: trunk/libs/container/test/emplace_test.hpp
==============================================================================
--- trunk/libs/container/test/emplace_test.hpp (original)
+++ trunk/libs/container/test/emplace_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -157,7 +157,7 @@
 
 
 template<class Container>
-bool test_emplace_back(containers_detail::true_)
+bool test_emplace_back(container_detail::true_)
 {
    std::cout << "Starting test_emplace_back." << std::endl << " Class: "
       << typeid(Container).name() << std::endl;
@@ -194,11 +194,11 @@
 }
 
 template<class Container>
-bool test_emplace_back(containers_detail::false_)
+bool test_emplace_back(container_detail::false_)
 { return true; }
 
 template<class Container>
-bool test_emplace_front(containers_detail::true_)
+bool test_emplace_front(container_detail::true_)
 {
    std::cout << "Starting test_emplace_front." << std::endl << " Class: "
       << typeid(Container).name() << std::endl;
@@ -234,11 +234,11 @@
 }
 
 template<class Container>
-bool test_emplace_front(containers_detail::false_)
+bool test_emplace_front(container_detail::false_)
 { return true; }
 
 template<class Container>
-bool test_emplace_before(containers_detail::true_)
+bool test_emplace_before(container_detail::true_)
 {
    std::cout << "Starting test_emplace_before." << std::endl << " Class: "
       << typeid(Container).name() << std::endl;
@@ -309,11 +309,11 @@
 }
 
 template<class Container>
-bool test_emplace_before(containers_detail::false_)
+bool test_emplace_before(container_detail::false_)
 { return true; }
 
 template<class Container>
-bool test_emplace_after(containers_detail::true_)
+bool test_emplace_after(container_detail::true_)
 {
    std::cout << "Starting test_emplace_after." << std::endl << " Class: "
       << typeid(Container).name() << std::endl;
@@ -383,11 +383,11 @@
 }
 
 template<class Container>
-bool test_emplace_after(containers_detail::false_)
+bool test_emplace_after(container_detail::false_)
 { return true; }
 
 template<class Container>
-bool test_emplace_assoc(containers_detail::true_)
+bool test_emplace_assoc(container_detail::true_)
 {
    std::cout << "Starting test_emplace_assoc." << std::endl << " Class: "
       << typeid(Container).name() << std::endl;
@@ -423,11 +423,11 @@
 }
 
 template<class Container>
-bool test_emplace_assoc(containers_detail::false_)
+bool test_emplace_assoc(container_detail::false_)
 { return true; }
 
 template<class Container>
-bool test_emplace_hint(containers_detail::true_)
+bool test_emplace_hint(container_detail::true_)
 {
    std::cout << "Starting test_emplace_hint." << std::endl << " Class: "
       << typeid(Container).name() << std::endl;
@@ -466,11 +466,11 @@
 }
 
 template<class Container>
-bool test_emplace_hint(containers_detail::false_)
+bool test_emplace_hint(container_detail::false_)
 { return true; }
 
 template<class Container>
-bool test_emplace_assoc_pair(containers_detail::true_)
+bool test_emplace_assoc_pair(container_detail::true_)
 {
    std::cout << "Starting test_emplace_assoc_pair." << std::endl << " Class: "
       << typeid(Container).name() << std::endl;
@@ -478,15 +478,9 @@
    new(&expected_pair[0].first) EmplaceInt();
    new(&expected_pair[0].second) EmplaceInt();
    new(&expected_pair[1].first) EmplaceInt(1);
- new(&expected_pair[1].second) EmplaceInt();
+ new(&expected_pair[1].second) EmplaceInt(1);
    new(&expected_pair[2].first) EmplaceInt(2);
    new(&expected_pair[2].second) EmplaceInt(2);
- new(&expected_pair[3].first) EmplaceInt(3);
- new(&expected_pair[3].second) EmplaceInt(2, 3);
- new(&expected_pair[4].first) EmplaceInt(4);
- new(&expected_pair[4].second) EmplaceInt(2, 3, 4);
- new(&expected_pair[5].first) EmplaceInt(5);
- new(&expected_pair[5].second) EmplaceInt(2, 3, 4, 5);
    {
       Container c;
       c.emplace();
@@ -494,7 +488,7 @@
          std::cout << "Error after c.emplace();\n";
          return false;
       }
- c.emplace(1);
+ c.emplace(1, 1);
       if(!test_expected_container(c, &expected_pair[0], 2)){
          std::cout << "Error after c.emplace(1);\n";
          return false;
@@ -504,31 +498,16 @@
          std::cout << "Error after c.emplace(2, 2);\n";
          return false;
       }
- c.emplace(3, 2, 3);
- if(!test_expected_container(c, &expected_pair[0], 4)){
- std::cout << "Error after c.emplace(3, 2, 3);\n";
- return false;
- }
- c.emplace(4, 2, 3, 4);
- if(!test_expected_container(c, &expected_pair[0], 5)){
- std::cout << "Error after c.emplace(4, 2, 3, 4);\n";
- return false;
- }
- c.emplace(5, 2, 3, 4, 5);
- if(!test_expected_container(c, &expected_pair[0], 6)){
- std::cout << "Error after c.emplace(5, 2, 3, 4, 5);\n";
- return false;
- }
    }
    return true;
 }
 
 template<class Container>
-bool test_emplace_assoc_pair(containers_detail::false_)
+bool test_emplace_assoc_pair(container_detail::false_)
 { return true; }
 
 template<class Container>
-bool test_emplace_hint_pair(containers_detail::true_)
+bool test_emplace_hint_pair(container_detail::true_)
 {
    std::cout << "Starting test_emplace_hint_pair." << std::endl << " Class: "
       << typeid(Container).name() << std::endl;
@@ -536,15 +515,9 @@
    new(&expected_pair[0].first) EmplaceInt();
    new(&expected_pair[0].second) EmplaceInt();
    new(&expected_pair[1].first) EmplaceInt(1);
- new(&expected_pair[1].second) EmplaceInt();
+ new(&expected_pair[1].second) EmplaceInt(1);
    new(&expected_pair[2].first) EmplaceInt(2);
    new(&expected_pair[2].second) EmplaceInt(2);
- new(&expected_pair[3].first) EmplaceInt(3);
- new(&expected_pair[3].second) EmplaceInt(2, 3);
- new(&expected_pair[4].first) EmplaceInt(4);
- new(&expected_pair[4].second) EmplaceInt(2, 3, 4);
- new(&expected_pair[5].first) EmplaceInt(5);
- new(&expected_pair[5].second) EmplaceInt(2, 3, 4, 5);
    {
       Container c;
       typename Container::const_iterator it;
@@ -553,7 +526,7 @@
          std::cout << "Error after c.emplace(1);\n";
          return false;
       }
- it = c.emplace_hint(it, 1);
+ it = c.emplace_hint(it, 1, 1);
       if(!test_expected_container(c, &expected_pair[0], 2)){
          std::cout << "Error after c.emplace(it, 1);\n";
          return false;
@@ -563,44 +536,29 @@
          std::cout << "Error after c.emplace(it, 2, 2);\n";
          return false;
       }
- it = c.emplace_hint(it, 3, 2, 3);
- if(!test_expected_container(c, &expected_pair[0], 4)){
- std::cout << "Error after c.emplace(it, 3, 2, 3);\n";
- return false;
- }
- it = c.emplace_hint(it, 4, 2, 3, 4);
- if(!test_expected_container(c, &expected_pair[0], 5)){
- std::cout << "Error after c.emplace(it, 4, 2, 3, 4);\n";
- return false;
- }
- it = c.emplace_hint(it, 5, 2, 3, 4, 5);
- if(!test_expected_container(c, &expected_pair[0], 6)){
- std::cout << "Error after c.emplace(it, 5, 2, 3, 4, 5);\n";
- return false;
- }
    }
    return true;
 }
 
 template<class Container>
-bool test_emplace_hint_pair(containers_detail::false_)
+bool test_emplace_hint_pair(container_detail::false_)
 { return true; }
 
 template <EmplaceOptions O, EmplaceOptions Mask>
 struct emplace_active
 {
    static const bool value = (0 != (O & Mask));
- typedef containers_detail::bool_<value> type;
+ typedef container_detail::bool_<value> type;
    operator type() const{ return type(); }
 };
 
 template<class Container, EmplaceOptions O>
 bool test_emplace()
 {
-// if(!test_emplace_back<Container>(emplace_active<O, EMPLACE_BACK>()))
-// return false;
+ if(!test_emplace_back<Container>(emplace_active<O, EMPLACE_BACK>()))
+ return false;
    if(!test_emplace_front<Container>(emplace_active<O, EMPLACE_FRONT>()))
- return false;/*
+ return false;
    if(!test_emplace_before<Container>(emplace_active<O, EMPLACE_BEFORE>()))
       return false;
    if(!test_emplace_after<Container>(emplace_active<O, EMPLACE_AFTER>()))
@@ -612,7 +570,7 @@
    if(!test_emplace_assoc_pair<Container>(emplace_active<O, EMPLACE_ASSOC_PAIR>()))
       return false;
    if(!test_emplace_hint_pair<Container>(emplace_active<O, EMPLACE_HINT_PAIR>()))
- return false;*/
+ return false;
    return true;
 }
 

Modified: trunk/libs/container/test/expand_bwd_test_allocator.hpp
==============================================================================
--- trunk/libs/container/test/expand_bwd_test_allocator.hpp (original)
+++ trunk/libs/container/test/expand_bwd_test_allocator.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -56,14 +56,14 @@
    typedef T value_type;
    typedef T * pointer;
    typedef const T * const_pointer;
- typedef typename containers_detail::add_reference
+ typedef typename container_detail::add_reference
                      <value_type>::type reference;
- typedef typename containers_detail::add_reference
+ typedef typename container_detail::add_reference
                      <const value_type>::type const_reference;
    typedef std::size_t size_type;
    typedef std::ptrdiff_t difference_type;
 
- typedef boost::container::containers_detail::version_type<expand_bwd_test_allocator, 2> version;
+ typedef boost::container::container_detail::version_type<expand_bwd_test_allocator, 2> version;
 
    template<class T2>
    struct rebind
@@ -109,9 +109,9 @@
 
    friend void swap(self_t &alloc1, self_t &alloc2)
    {
- containers_detail::do_swap(alloc1.mp_buffer, alloc2.mp_buffer);
- containers_detail::do_swap(alloc1.m_size, alloc2.m_size);
- containers_detail::do_swap(alloc1.m_offset, alloc2.m_offset);
+ container_detail::do_swap(alloc1.mp_buffer, alloc2.mp_buffer);
+ container_detail::do_swap(alloc1.m_size, alloc2.m_size);
+ container_detail::do_swap(alloc1.m_offset, alloc2.m_offset);
    }
 
    //Experimental version 2 expand_bwd_test_allocator functions

Modified: trunk/libs/container/test/flat_tree_test.cpp
==============================================================================
--- trunk/libs/container/test/flat_tree_test.cpp (original)
+++ trunk/libs/container/test/flat_tree_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -17,10 +17,106 @@
 #include "movable_int.hpp"
 #include "set_test.hpp"
 #include "map_test.hpp"
+#include "propagate_allocator_test.hpp"
 #include "emplace_test.hpp"
 
 using namespace boost::container;
 
+namespace boost {
+namespace container {
+
+//Explicit instantiation to detect compilation errors
+
+//flat_map
+template class flat_map
+ < test::movable_and_copyable_int
+ , test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::dummy_test_allocator
+ < std::pair<test::movable_and_copyable_int, test::movable_and_copyable_int> >
+ >;
+
+template class flat_map
+ < test::movable_and_copyable_int
+ , test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::simple_allocator
+ < std::pair<test::movable_and_copyable_int, test::movable_and_copyable_int> >
+ >;
+
+template class flat_map
+ < test::movable_and_copyable_int
+ , test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , std::allocator
+ < std::pair<test::movable_and_copyable_int, test::movable_and_copyable_int> >
+ >;
+
+//flat_multimap
+template class flat_multimap
+ < test::movable_and_copyable_int
+ , test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::dummy_test_allocator
+ < std::pair<test::movable_and_copyable_int, test::movable_and_copyable_int> >
+ >;
+
+template class flat_multimap
+ < test::movable_and_copyable_int
+ , test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::simple_allocator
+ < std::pair<test::movable_and_copyable_int, test::movable_and_copyable_int> >
+ >;
+
+template class flat_multimap
+ < test::movable_and_copyable_int
+ , test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , std::allocator
+ < std::pair<test::movable_and_copyable_int, test::movable_and_copyable_int> >
+ >;
+//flat_set
+template class flat_set
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::dummy_test_allocator<test::movable_and_copyable_int>
+ >;
+
+template class flat_set
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::simple_allocator<test::movable_and_copyable_int>
+ >;
+
+template class flat_set
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , std::allocator<test::movable_and_copyable_int>
+ >;
+
+//flat_multiset
+template class flat_multiset
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::dummy_test_allocator<test::movable_and_copyable_int>
+ >;
+
+template class flat_multiset
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::simple_allocator<test::movable_and_copyable_int>
+ >;
+
+template class flat_multiset
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , std::allocator<test::movable_and_copyable_int>
+ >;
+
+}} //boost::container
+
+
 //Alias allocator type
 typedef std::allocator<int> allocator_t;
 typedef std::allocator<test::movable_int>
@@ -84,7 +180,6 @@
                 ,copy_pair_allocator_t> MyCopyBoostMultiMap;
 
 
-
 //Test recursive structures
 class recursive_flat_set
 {
@@ -178,6 +273,36 @@
    move_assign.swap(original);
 }
 
+template<class T, class A>
+class flat_tree_propagate_test_wrapper
+ : public container_detail::flat_tree<T, T, container_detail::identity<T>, std::less<T>, A>
+{
+ BOOST_COPYABLE_AND_MOVABLE(flat_tree_propagate_test_wrapper)
+ typedef container_detail::flat_tree<T, T, container_detail::identity<T>, std::less<T>, A> Base;
+ public:
+ flat_tree_propagate_test_wrapper()
+ : Base()
+ {}
+
+ flat_tree_propagate_test_wrapper(const flat_tree_propagate_test_wrapper &x)
+ : Base(x)
+ {}
+
+ flat_tree_propagate_test_wrapper(BOOST_RV_REF(flat_tree_propagate_test_wrapper) x)
+ : Base(boost::move(static_cast<Base&>(x)))
+ {}
+
+ flat_tree_propagate_test_wrapper &operator=(BOOST_COPY_ASSIGN_REF(flat_tree_propagate_test_wrapper) x)
+ { this->Base::operator=(x); return *this; }
+
+ flat_tree_propagate_test_wrapper &operator=(BOOST_RV_REF(flat_tree_propagate_test_wrapper) x)
+ { this->Base::operator=(boost::move(static_cast<Base&>(x))); return *this; }
+
+ void swap(flat_tree_propagate_test_wrapper &x)
+ { this->Base::swap(x); }
+};
+
+
 int main()
 {
    using namespace boost::container::test;
@@ -272,13 +397,13 @@
       return 1;
    }
 
-// if (0 != map_test<
-// MyMovableBoostMap
-// ,MyStdMap
-// ,MyMovableBoostMultiMap
-// ,MyStdMultiMap>()){
-// return 1;
-// }
+ if (0 != map_test<
+ MyMovableBoostMap
+ ,MyStdMap
+ ,MyMovableBoostMultiMap
+ ,MyStdMultiMap>()){
+ return 1;
+ }
 
    if (0 != map_test<
                   MyMoveCopyBoostMap
@@ -319,14 +444,17 @@
    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);
 
-// if(!boost::container::test::test_emplace<flat_map<test::EmplaceInt, test::EmplaceInt>, MapOptions>())
-// return 1;
+ if(!boost::container::test::test_emplace<flat_map<test::EmplaceInt, test::EmplaceInt>, MapOptions>())
+ return 1;
    if(!boost::container::test::test_emplace<flat_multimap<test::EmplaceInt, test::EmplaceInt>, MapOptions>())
       return 1;
    if(!boost::container::test::test_emplace<flat_set<test::EmplaceInt>, SetOptions>())
       return 1;
    if(!boost::container::test::test_emplace<flat_multiset<test::EmplaceInt>, SetOptions>())
       return 1;
+ if(!boost::container::test::test_propagate_allocator<flat_tree_propagate_test_wrapper>())
+ return 1;
+
    return 0;
 }
 

Modified: trunk/libs/container/test/heap_allocator_v1.hpp
==============================================================================
--- trunk/libs/container/test/heap_allocator_v1.hpp (original)
+++ trunk/libs/container/test/heap_allocator_v1.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -18,7 +18,7 @@
 #include <boost/container/detail/config_begin.hpp>
 #include <boost/container/detail/workaround.hpp>
 
-#include <boost/pointer_to_other.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 
 #include <boost/container/container_fwd.hpp>
 #include <boost/container/detail/allocation_type.hpp>

Modified: trunk/libs/container/test/list_test.cpp
==============================================================================
--- trunk/libs/container/test/list_test.cpp (original)
+++ trunk/libs/container/test/list_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -11,15 +11,29 @@
 #include <boost/container/detail/config_begin.hpp>
 #include <boost/container/list.hpp>
 #include "dummy_test_allocator.hpp"
+#include <memory>
 #include "movable_int.hpp"
 #include "list_test.hpp"
+#include "propagate_allocator_test.hpp"
 #include "emplace_test.hpp"
 
 using namespace boost::container;
 
+namespace boost {
+namespace container {
+
 //Explicit instantiation to detect compilation errors
 template class boost::container::list<test::movable_and_copyable_int,
+ test::simple_allocator<test::movable_and_copyable_int> >;
+
+template class boost::container::list<test::movable_and_copyable_int,
    test::dummy_test_allocator<test::movable_and_copyable_int> >;
+
+template class boost::container::list<test::movable_and_copyable_int,
+ std::allocator<test::movable_and_copyable_int> >;
+
+}}
+
 typedef list<int> MyList;
 
 typedef list<test::movable_int> MyMoveList;
@@ -72,6 +86,9 @@
    if(!boost::container::test::test_emplace<list<test::EmplaceInt>, Options>())
       return 1;
 
+ if(!boost::container::test::test_propagate_allocator<list>())
+ return 1;
+
    return 0;
 }
 

Modified: trunk/libs/container/test/list_test.hpp
==============================================================================
--- trunk/libs/container/test/list_test.hpp (original)
+++ trunk/libs/container/test/list_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -26,14 +26,14 @@
 namespace test{
 
 template<class V1, class V2>
-bool list_copyable_only(V1 *, V2 *, boost::container::containers_detail::false_type)
+bool list_copyable_only(V1 *, V2 *, boost::container::container_detail::false_type)
 {
    return true;
 }
 
 //Function to check if both sets are equal
 template<class V1, class V2>
-bool list_copyable_only(V1 *boostlist, V2 *stdlist, boost::container::containers_detail::true_type)
+bool list_copyable_only(V1 *boostlist, V2 *stdlist, boost::container::container_detail::true_type)
 {
    typedef typename V1::value_type IntType;
    boostlist->insert(boostlist->end(), 50, IntType(1));
@@ -289,7 +289,7 @@
          }
 
          if(!list_copyable_only(boostlist, stdlist
- ,containers_detail::bool_<boost::container::test::is_copyable<IntType>::value>())){
+ ,container_detail::bool_<boost::container::test::is_copyable<IntType>::value>())){
             return 1;
          }
       }

Modified: trunk/libs/container/test/map_test.hpp
==============================================================================
--- trunk/libs/container/test/map_test.hpp (original)
+++ trunk/libs/container/test/map_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -38,7 +38,7 @@
 int map_test ()
 {
    typedef typename MyBoostMap::key_type IntType;
- typedef containers_detail::pair<IntType, IntType> IntPairType;
+ typedef container_detail::pair<IntType, IntType> IntPairType;
    typedef typename MyStdMap::value_type StdPairType;
    const int max = 100;
 
@@ -101,6 +101,9 @@
             IntType i2(i);
             new(&aux_vect3[i])IntPairType(boost::move(i1), boost::move(i2));
          }
+ if(!CheckEqualContainers(boostmap2, stdmap2)) return 1;
+ if(!CheckEqualContainers(boostmultimap2, stdmultimap2)) return 1;
+
 /*
          MyBoostMap *boostmap3 = new MyBoostMap
                ( ordered_unique_range
@@ -122,6 +125,23 @@
             return 1;
          }
 */
+ IntType i0(0);
+ boostmap2->erase(i0);
+ boostmultimap2->erase(i0);
+ stdmap2->erase(0);
+ stdmultimap2->erase(0);
+ {
+ IntType i0(0);
+ IntType i1(1);
+ (*boostmap2)[::boost::move(i0)] = ::boost::move(i1);
+ }
+ {
+ IntType i1(1);
+ (*boostmap2)[IntType(0)] = ::boost::move(i1);
+ }
+ (*stdmap2)[0] = 1;
+ if(!CheckEqualContainers(boostmap2, stdmap2)) return 1;
+
          delete boostmap2;
          delete boostmultimap2;
          delete stdmap2;
@@ -158,6 +178,7 @@
 
          typename MyBoostMap::iterator it;
          typename MyBoostMap::const_iterator cit = it;
+ (void)cit;
 
          boostmap->erase(boostmap->begin()++);
          stdmap->erase(stdmap->begin()++);
@@ -449,7 +470,7 @@
 int map_test_copyable ()
 {
    typedef typename MyBoostMap::key_type IntType;
- typedef containers_detail::pair<IntType, IntType> IntPairType;
+ typedef container_detail::pair<IntType, IntType> IntPairType;
    typedef typename MyStdMap::value_type StdPairType;
 
    const int max = 100;

Modified: trunk/libs/container/test/movable_int.hpp
==============================================================================
--- trunk/libs/container/test/movable_int.hpp (original)
+++ trunk/libs/container/test/movable_int.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -221,6 +221,45 @@
    static const bool value = true;
 };
 
+class non_copymovable_int
+{
+ non_copymovable_int(const non_copymovable_int& mmi);
+ non_copymovable_int & operator= (const non_copymovable_int &mi);
+
+ public:
+ non_copymovable_int()
+ : m_int(0)
+ {}
+
+ explicit non_copymovable_int(int a)
+ : m_int(a)
+ {}
+
+ bool operator ==(const non_copymovable_int &mi) const
+ { return this->m_int == mi.m_int; }
+
+ bool operator !=(const non_copymovable_int &mi) const
+ { return this->m_int != mi.m_int; }
+
+ bool operator <(const non_copymovable_int &mi) const
+ { return this->m_int < mi.m_int; }
+
+ bool operator <=(const non_copymovable_int &mi) const
+ { return this->m_int <= mi.m_int; }
+
+ bool operator >=(const non_copymovable_int &mi) const
+ { return this->m_int >= mi.m_int; }
+
+ bool operator >(const non_copymovable_int &mi) const
+ { return this->m_int > mi.m_int; }
+
+ int get_int() const
+ { return m_int; }
+
+ private:
+ int m_int;
+};
+
 } //namespace test {
 } //namespace container {
 } //namespace boost {

Added: trunk/libs/container/test/pair_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/container/test/pair_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,54 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2011-2011. 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/container for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+#include <boost/container/detail/config_begin.hpp>
+#include <boost/container/detail/pair.hpp>
+#include "movable_int.hpp"
+#include "emplace_test.hpp"
+#include<boost/move/move.hpp>
+
+//non_copymovable_int
+//copyable_int
+//movable_int
+//movable_and_copyable_int
+
+
+using namespace ::boost::container;
+
+int main ()
+{
+ {
+ container_detail::pair<test::non_copymovable_int, test::non_copymovable_int> p1;
+ container_detail::pair<test::copyable_int, test::copyable_int> p2;
+ container_detail::pair<test::movable_int, test::movable_int> p3;
+ container_detail::pair<test::movable_and_copyable_int, test::movable_and_copyable_int> p4;
+ }
+ { //Constructible from two values
+ container_detail::pair<test::non_copymovable_int, test::non_copymovable_int> p1(1, 2);
+ container_detail::pair<test::copyable_int, test::copyable_int> p2(1, 2);
+ container_detail::pair<test::movable_int, test::movable_int> p3(1, 2);
+ container_detail::pair<test::movable_and_copyable_int, test::movable_and_copyable_int> p4(1, 2);
+ }
+
+ { //Constructible from internal types
+ container_detail::pair<test::copyable_int, test::copyable_int> p2(test::copyable_int(1), test::copyable_int(2));
+ {
+ test::movable_int a(1), b(2);
+ container_detail::pair<test::movable_int, test::movable_int> p3(::boost::move(a), ::boost::move(b));
+ }
+ {
+ test::movable_and_copyable_int a(1), b(2);
+ container_detail::pair<test::movable_and_copyable_int, test::movable_and_copyable_int> p4(::boost::move(a), ::boost::move(b));
+ }
+ }
+ //piecewise_construct missing...
+ return 0;
+}
+
+#include <boost/container/detail/config_end.hpp>

Added: trunk/libs/container/test/propagate_allocator_test.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/container/test/propagate_allocator_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,181 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2008. 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/container for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_CONTAINER_PROPAGATE_ALLOCATOR_TEST_HPP
+#define BOOST_CONTAINER_PROPAGATE_ALLOCATOR_TEST_HPP
+
+#include <boost/container/detail/config_begin.hpp>
+#include <boost/detail/lightweight_test.hpp>
+#include "dummy_test_allocator.hpp"
+
+#include <iostream>
+
+namespace boost{
+namespace container {
+namespace test{
+
+template<template<class, class> class ContainerWrapper>
+bool test_propagate_allocator()
+{
+ {
+ typedef propagation_test_allocator<char, true, true, true, true> AlwaysPropagate;
+ typedef ContainerWrapper<char, AlwaysPropagate> PropagateCont;
+
+ //////////////////////////////////////////
+ //Test AlwaysPropagate allocator propagation
+ //////////////////////////////////////////
+ AlwaysPropagate::reset_unique_id();
+
+ //default constructor
+ PropagateCont c;
+ BOOST_TEST (c.get_stored_allocator().id_ == 0);
+ BOOST_TEST (c.get_stored_allocator().ctr_copies_ == 0);
+ BOOST_TEST (c.get_stored_allocator().ctr_moves_ == 0);
+ BOOST_TEST (c.get_stored_allocator().assign_copies_ == 0);
+ BOOST_TEST (c.get_stored_allocator().assign_moves_ == 0);
+ BOOST_TEST (c.get_stored_allocator().swaps_ == 0);
+
+ //copy constructor
+ PropagateCont c2(c);
+ //propagate_on_copy_constructor produces copies, moves or RVO (depending on the compiler).
+ //For allocators that copy in select_on_container_copy_construction, at least we must have a copy
+ unsigned int ctr_copies = c2.get_stored_allocator().ctr_copies_;
+ unsigned int ctr_moves = c2.get_stored_allocator().ctr_moves_;
+ BOOST_TEST (c2.get_stored_allocator().id_ == 0);
+ BOOST_TEST (ctr_copies > 0);
+ BOOST_TEST (c2.get_stored_allocator().ctr_moves_ >= 0);
+ BOOST_TEST (c2.get_stored_allocator().assign_copies_ == 0);
+ BOOST_TEST (c2.get_stored_allocator().assign_moves_ == 0);
+ BOOST_TEST (c2.get_stored_allocator().swaps_ == 0);
+
+ //move constructor
+ PropagateCont c3(boost::move(c2));
+ BOOST_TEST (c3.get_stored_allocator().id_ == 0);
+ BOOST_TEST (c3.get_stored_allocator().ctr_copies_ == ctr_copies);
+ BOOST_TEST (c3.get_stored_allocator().ctr_moves_ > ctr_moves);
+ ctr_moves = c3.get_stored_allocator().ctr_moves_;
+ BOOST_TEST (ctr_moves > 0);
+ BOOST_TEST (c3.get_stored_allocator().assign_copies_ == 0);
+ BOOST_TEST (c3.get_stored_allocator().assign_moves_ == 0);
+ BOOST_TEST (c3.get_stored_allocator().swaps_ == 0);
+
+ //copy assign
+ c2 = c3;
+ unsigned int assign_copies = c2.get_stored_allocator().assign_copies_;
+ BOOST_TEST (c2.get_stored_allocator().id_ == 0);
+ BOOST_TEST (c2.get_stored_allocator().ctr_copies_ == ctr_copies);
+ BOOST_TEST (c2.get_stored_allocator().ctr_moves_ == ctr_moves);
+ BOOST_TEST (assign_copies == 1);
+ BOOST_TEST (c2.get_stored_allocator().assign_moves_ == 0);
+ BOOST_TEST (c2.get_stored_allocator().swaps_ == 0);
+
+ //move assign
+ c = boost::move(c2);
+ unsigned int assign_moves = c.get_stored_allocator().assign_moves_;
+ BOOST_TEST (c.get_stored_allocator().id_ == 0);
+ BOOST_TEST (c.get_stored_allocator().ctr_copies_ == ctr_copies);
+ BOOST_TEST (c.get_stored_allocator().ctr_moves_ == ctr_moves);
+ BOOST_TEST (c.get_stored_allocator().assign_copies_ == assign_copies);
+ BOOST_TEST (assign_moves == 1);
+ BOOST_TEST (c.get_stored_allocator().swaps_ == 0);
+
+ //swap
+ c.get_stored_allocator().id_ = 999;
+ c.swap(c2);
+ unsigned int swaps = c2.get_stored_allocator().swaps_;
+ BOOST_TEST (c2.get_stored_allocator().id_ == 999);
+ BOOST_TEST (c2.get_stored_allocator().ctr_copies_ == ctr_copies);
+ BOOST_TEST (c2.get_stored_allocator().ctr_moves_ == ctr_moves);
+ BOOST_TEST (c2.get_stored_allocator().assign_copies_ == assign_copies);
+ BOOST_TEST (c2.get_stored_allocator().assign_moves_ == assign_moves);
+ BOOST_TEST (swaps == 1);
+ }
+
+ //////////////////////////////////////////
+ //Test NeverPropagate allocator propagation
+ //////////////////////////////////////////
+ {
+ typedef propagation_test_allocator<char, false, false, false, false> NeverPropagate;
+ typedef ContainerWrapper<char, NeverPropagate> NoPropagateCont;
+ NeverPropagate::reset_unique_id();
+
+ //default constructor
+ NoPropagateCont c;
+ BOOST_TEST (c.get_stored_allocator().id_ == 0);
+ BOOST_TEST (c.get_stored_allocator().ctr_copies_ == 0);
+ BOOST_TEST (c.get_stored_allocator().ctr_moves_ == 0);
+ BOOST_TEST (c.get_stored_allocator().assign_copies_ == 0);
+ BOOST_TEST (c.get_stored_allocator().assign_moves_ == 0);
+ BOOST_TEST (c.get_stored_allocator().swaps_ == 0);
+
+ //copy constructor
+ //propagate_on_copy_constructor produces copies, moves or RVO (depending on the compiler)
+ //For allocators that don't copy in select_on_container_copy_construction we must have a default
+ //construction
+ NoPropagateCont c2(c);
+ unsigned int ctr_copies = c2.get_stored_allocator().ctr_copies_;
+ unsigned int ctr_moves = c2.get_stored_allocator().ctr_moves_;
+ BOOST_TEST (c2.get_stored_allocator().id_ == 1);
+ BOOST_TEST (ctr_copies >= 0);
+ BOOST_TEST (ctr_moves >= 0);
+ BOOST_TEST (c2.get_stored_allocator().assign_copies_ == 0);
+ BOOST_TEST (c2.get_stored_allocator().assign_moves_ == 0);
+ BOOST_TEST (c2.get_stored_allocator().swaps_ == 0);
+
+ //move constructor
+ NoPropagateCont c3(boost::move(c2));
+ BOOST_TEST (c3.get_stored_allocator().id_ == 1);
+ BOOST_TEST (c3.get_stored_allocator().ctr_copies_ == ctr_copies);
+ BOOST_TEST (c3.get_stored_allocator().ctr_moves_ > ctr_moves);
+ unsigned int ctr_moves2 = ctr_moves;
+ ctr_moves = c3.get_stored_allocator().ctr_moves_;
+ BOOST_TEST (c3.get_stored_allocator().assign_copies_ == 0);
+ BOOST_TEST (c3.get_stored_allocator().assign_moves_ == 0);
+ BOOST_TEST (c3.get_stored_allocator().swaps_ == 0);
+
+ //copy assign
+ c2 = c3;
+ BOOST_TEST (c2.get_stored_allocator().id_ == 1);
+ BOOST_TEST (c2.get_stored_allocator().ctr_copies_ == ctr_copies);
+ BOOST_TEST (c2.get_stored_allocator().ctr_moves_ == ctr_moves2);
+ BOOST_TEST (c2.get_stored_allocator().assign_copies_ == 0);
+ BOOST_TEST (c2.get_stored_allocator().assign_moves_ == 0);
+ BOOST_TEST (c2.get_stored_allocator().swaps_ == 0);
+
+ //move assign
+ c = boost::move(c2);
+ BOOST_TEST (c.get_stored_allocator().id_ == 0);
+ BOOST_TEST (c.get_stored_allocator().ctr_copies_ == 0);
+ BOOST_TEST (c.get_stored_allocator().ctr_moves_ == 0);
+ BOOST_TEST (c.get_stored_allocator().assign_copies_ == 0);
+ BOOST_TEST (c.get_stored_allocator().assign_moves_ == 0);
+ BOOST_TEST (c.get_stored_allocator().swaps_ == 0);
+
+ //swap
+ c.get_stored_allocator().id_ = 999;
+ c2.swap(c);
+ BOOST_TEST (c2.get_stored_allocator().id_ == 1);
+ BOOST_TEST (c.get_stored_allocator().id_ == 999);
+ BOOST_TEST (c2.get_stored_allocator().ctr_copies_ == ctr_copies);
+ BOOST_TEST (c2.get_stored_allocator().ctr_moves_ == ctr_moves2);
+ BOOST_TEST (c2.get_stored_allocator().assign_copies_ == 0);
+ BOOST_TEST (c2.get_stored_allocator().assign_moves_ == 0);
+ BOOST_TEST (c2.get_stored_allocator().swaps_ == 0);
+ }
+
+ return report_errors() == 0;
+}
+
+} //namespace test{
+} //namespace container {
+} //namespace boost{
+
+#include <boost/container/detail/config_end.hpp>
+
+#endif //#ifndef BOOST_CONTAINER_PROPAGATE_ALLOCATOR_TEST_HPP

Modified: trunk/libs/container/test/set_test.hpp
==============================================================================
--- trunk/libs/container/test/set_test.hpp (original)
+++ trunk/libs/container/test/set_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -145,6 +145,7 @@
 
    typename MyBoostSet::iterator it;
    typename MyBoostSet::const_iterator cit = it;
+ (void)cit;
 
    boostset->erase(boostset->begin()++);
    stdset->erase(stdset->begin()++);

Modified: trunk/libs/container/test/slist_test.cpp
==============================================================================
--- trunk/libs/container/test/slist_test.cpp (original)
+++ trunk/libs/container/test/slist_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -9,17 +9,29 @@
 //////////////////////////////////////////////////////////////////////////////
 #include <boost/container/detail/config_begin.hpp>
 #include <boost/container/slist.hpp>
+#include <memory>
 #include "dummy_test_allocator.hpp"
 #include "movable_int.hpp"
 #include "list_test.hpp"
+#include "propagate_allocator_test.hpp"
 #include "emplace_test.hpp"
 
 using namespace boost::container;
 
+namespace boost {
+namespace container {
+
 //Explicit instantiation to detect compilation errors
 template class boost::container::slist<test::movable_and_copyable_int,
+ test::simple_allocator<test::movable_and_copyable_int> >;
+
+template class boost::container::slist<test::movable_and_copyable_int,
    test::dummy_test_allocator<test::movable_and_copyable_int> >;
 
+template class boost::container::slist<test::movable_and_copyable_int,
+ std::allocator<test::movable_and_copyable_int> >;
+}}
+
 typedef slist<int> MyList;
 typedef slist<test::movable_int> MyMoveList;
 typedef slist<test::movable_and_copyable_int> MyCopyMoveList;
@@ -76,6 +88,9 @@
    if(!boost::container::test::test_emplace
       < slist<test::EmplaceInt>, Options>())
       return 1;
+
+ if(!boost::container::test::test_propagate_allocator<slist>())
+ return 1;
 }
 
 #include <boost/container/detail/config_end.hpp>

Modified: trunk/libs/container/test/stable_vector_test.cpp
==============================================================================
--- trunk/libs/container/test/stable_vector_test.cpp (original)
+++ trunk/libs/container/test/stable_vector_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -21,13 +21,25 @@
 #include "expand_bwd_test_allocator.hpp"
 #include "expand_bwd_test_template.hpp"
 #include "dummy_test_allocator.hpp"
+#include "propagate_allocator_test.hpp"
 #include "vector_test.hpp"
 
 using namespace boost::container;
 
+namespace boost {
+namespace container {
+
 //Explicit instantiation to detect compilation errors
-//template class stable_vector<test::movable_and_copyable_int,
- //test::dummy_test_allocator<test::movable_and_copyable_int> >;
+template class stable_vector<test::movable_and_copyable_int,
+ test::dummy_test_allocator<test::movable_and_copyable_int> >;
+
+template class stable_vector<test::movable_and_copyable_int,
+ test::simple_allocator<test::movable_and_copyable_int> >;
+
+template class stable_vector<test::movable_and_copyable_int,
+ std::allocator<test::movable_and_copyable_int> >;
+
+}}
 
 class recursive_vector
 {
@@ -58,6 +70,14 @@
       move_assign = boost::move(move_ctor);
       move_assign.swap(original);
    }
+
+ //Test non-copy-move operations
+ {
+ stable_vector<test::non_copymovable_int> sv;
+ sv.emplace_back();
+ sv.resize(10);
+ sv.resize(1);
+ }
    typedef stable_vector<int> MyVector;
    typedef stable_vector<test::movable_int> MyMoveVector;
    typedef stable_vector<test::movable_and_copyable_int> MyCopyMoveVector;
@@ -80,6 +100,9 @@
       < stable_vector<test::EmplaceInt>, Options>())
       return 1;
 
+ if(!boost::container::test::test_propagate_allocator<stable_vector>())
+ return 1;
+
    return 0;
 }
 

Modified: trunk/libs/container/test/string_test.cpp
==============================================================================
--- trunk/libs/container/test/string_test.cpp (original)
+++ trunk/libs/container/test/string_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -22,6 +22,7 @@
 #include "check_equal_containers.hpp"
 #include "expand_bwd_test_allocator.hpp"
 #include "expand_bwd_test_template.hpp"
+#include "propagate_allocator_test.hpp"
 
 using namespace boost::container;
 
@@ -32,13 +33,23 @@
 typedef basic_string<wchar_t, std::char_traits<wchar_t>, DummyWCharAllocator> DummyWString;
 typedef test::dummy_test_allocator<DummyWString> DummyWStringAllocator;
 
+namespace boost {
+namespace container {
+
 //Explicit instantiations of container::basic_string
-template class basic_string<char, std::char_traits<char>, DummyCharAllocator>;
+template class basic_string<char, std::char_traits<char>, DummyCharAllocator>;
 template class basic_string<wchar_t, std::char_traits<wchar_t>, DummyWCharAllocator>;
+template class basic_string<char, std::char_traits<char>, test::simple_allocator<char> >;
+template class basic_string<wchar_t, std::char_traits<wchar_t>, test::simple_allocator<wchar_t> >;
+template class basic_string<char, std::char_traits<char>, std::allocator<char> >;
+template class basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >;
+
 //Explicit instantiation of container::vectors of container::strings
 template class vector<DummyString, DummyStringAllocator>;
 template class vector<DummyWString, DummyWStringAllocator>;
 
+}}
+
 struct StringEqual
 {
    template<class Str1, class Str2>
@@ -61,9 +72,63 @@
 }
 
 template<class CharType>
+struct string_literals;
+
+template<>
+struct string_literals<char>
+{
+ static const char *String()
+ { return "String"; }
+ static const char *Prefix()
+ { return "Prefix"; }
+ static const char *Suffix()
+ { return "Suffix"; }
+ static const char *LongString()
+ { return "LongLongLongLongLongLongLongLongLongLongLongLongLongString"; }
+
+ static void sprintf_number(char *buf, int number)
+ {
+ std::sprintf(buf, "%i", number);
+ }
+};
+
+template<>
+struct string_literals<wchar_t>
+{
+ static const wchar_t *String()
+ { return L"String"; }
+ static const wchar_t *Prefix()
+ { return L"Prefix"; }
+ static const wchar_t *Suffix()
+ { return L"Suffix"; }
+ static const wchar_t *LongString()
+ { return L"LongLongLongLongLongLongLongLongLongLongLongLongLongString"; }
+
+ static void sprintf_number(wchar_t *buffer, unsigned int number)
+ {
+ //For compilers without wsprintf, print it backwards
+ const wchar_t *digits = L"0123456789";
+ wchar_t *buf = buffer;
+
+ while(1){
+ int rem = number % 10;
+ number = number / 10;
+
+ *buf = digits[rem];
+ ++buf;
+ if(!number){
+ *buf = 0;
+ break;
+ }
+ }
+
+ }
+};
+
+template<class CharType>
 int string_test()
 {
- typedef std::string StdString;
+ typedef std::basic_string<CharType> StdString;
    typedef vector<StdString> StdStringVector;
    typedef basic_string<CharType> BoostString;
    typedef vector<BoostString> BoostStringVector;
@@ -81,9 +146,9 @@
 
       //First, push back
       for(int i = 0; i < MaxSize; ++i){
- auxBoostString = "String";
- auxStdString = "String";
- std::sprintf(buffer, "%i", i);
+ auxBoostString = string_literals<CharType>::String();
+ auxStdString = string_literals<CharType>::String();
+ string_literals<CharType>::sprintf_number(buffer, i);
          auxBoostString += buffer;
          auxStdString += buffer;
          boostStringVect->push_back(auxBoostString);
@@ -96,9 +161,9 @@
 
       //Now push back moving
       for(int i = 0; i < MaxSize; ++i){
- auxBoostString = "String";
- auxStdString = "String";
- std::sprintf(buffer, "%i", i);
+ auxBoostString = string_literals<CharType>::String();
+ auxStdString = string_literals<CharType>::String();
+ string_literals<CharType>::sprintf_number(buffer, i);
          auxBoostString += buffer;
          auxStdString += buffer;
          boostStringVect->push_back(boost::move(auxBoostString));
@@ -111,9 +176,9 @@
 
       //push front
       for(int i = 0; i < MaxSize; ++i){
- auxBoostString = "String";
- auxStdString = "String";
- std::sprintf(buffer, "%i", i);
+ auxBoostString = string_literals<CharType>::String();
+ auxStdString = string_literals<CharType>::String();
+ string_literals<CharType>::sprintf_number(buffer, i);
          auxBoostString += buffer;
          auxStdString += buffer;
          boostStringVect->insert(boostStringVect->begin(), auxBoostString);
@@ -126,9 +191,9 @@
 
       //Now push front moving
       for(int i = 0; i < MaxSize; ++i){
- auxBoostString = "String";
- auxStdString = "String";
- std::sprintf(buffer, "%i", i);
+ auxBoostString = string_literals<CharType>::String();
+ auxStdString = string_literals<CharType>::String();
+ string_literals<CharType>::sprintf_number(buffer, i);
          auxBoostString += buffer;
          auxStdString += buffer;
          boostStringVect->insert(boostStringVect->begin(), boost::move(auxBoostString));
@@ -142,8 +207,8 @@
       //Now test long and short representation swapping
 
       //Short first
- auxBoostString = "String";
- auxStdString = "String";
+ auxBoostString = string_literals<CharType>::String();
+ auxStdString = string_literals<CharType>::String();
       BoostString boost_swapper;
       StdString std_swapper;
       boost_swapper.swap(auxBoostString);
@@ -177,8 +242,8 @@
          return 1;
 
       //Long string
- auxBoostString = "LongLongLongLongLongLongLongLongLongLongLongLongLongString";
- auxStdString = "LongLongLongLongLongLongLongLongLongLongLongLongLongString";
+ auxBoostString = string_literals<CharType>::LongString();
+ auxStdString = string_literals<CharType>::LongString();
       boost_swapper = BoostString();
       std_swapper = StdString();
       boost_swapper.swap(auxBoostString);
@@ -208,9 +273,9 @@
       std::sort(stdStringVect->begin(), stdStringVect->end());
       if(!CheckEqualStringVector(boostStringVect, stdStringVect)) return 1;
 
- const CharType prefix [] = "Prefix";
- const int prefix_size = sizeof(prefix)/sizeof(prefix[0])-1;
- const CharType sufix [] = "Suffix";
+ const CharType *prefix = string_literals<CharType>::Prefix();
+ const int prefix_size = std::char_traits<CharType>::length(prefix);
+ const CharType *sufix = string_literals<CharType>::Suffix();
 
       for(int i = 0; i < MaxSize; ++i){
          (*boostStringVect)[i].append(sufix);
@@ -247,10 +312,10 @@
       for(int i = 0; i < MaxSize; ++i){
          (*boostStringVect)[i].replace((*boostStringVect)[i].begin(),
                                     (*boostStringVect)[i].end(),
- "String");
+ string_literals<CharType>::String());
          (*stdStringVect)[i].replace((*stdStringVect)[i].begin(),
                                     (*stdStringVect)[i].end(),
- "String");
+ string_literals<CharType>::String());
       }
 
       if(!CheckEqualStringVector(boostStringVect, stdStringVect)) return 1;
@@ -261,6 +326,80 @@
                            stdStringVect->end());
       if(!CheckEqualStringVector(boostStringVect, stdStringVect)) return 1;
 
+ //Check addition
+ {
+ typedef std::basic_string<CharType> StdString;
+ typedef basic_string<CharType> BoostString;
+
+ BoostString bs2 = string_literals<CharType>::String();
+ StdString ss2 = string_literals<CharType>::String();
+ BoostString bs3 = string_literals<CharType>::Suffix();
+ StdString ss3 = string_literals<CharType>::Suffix();
+ BoostString bs4 = bs2 + bs3;
+ StdString ss4 = ss2 + ss3;
+ if(!StringEqual()(bs4, ss4)){
+ return 1;
+ }
+
+ bs4 = bs2 + BoostString();
+ ss4 = ss2 + StdString();
+ if(!StringEqual()(bs4, ss4)){
+ return 1;
+ }
+
+ bs4 = BoostString() + bs2;
+ ss4 = StdString() + ss2;
+ if(!StringEqual()(bs4, ss4)){
+ return 1;
+ }
+
+ bs4 = BoostString() + boost::move(bs2);
+ ss4 = StdString() + boost::move(ss2);
+ if(!StringEqual()(bs4, ss4)){
+ return 1;
+ }
+
+ bs2 = string_literals<CharType>::String();
+ ss2 = string_literals<CharType>::String();
+ bs4 = boost::move(bs2) + BoostString();
+ ss4 = boost::move(ss2) + StdString();
+ if(!StringEqual()(bs4, ss4)){
+ return 1;
+ }
+
+ bs2 = string_literals<CharType>::String();
+ ss2 = string_literals<CharType>::String();
+ bs4 = string_literals<CharType>::Prefix() + boost::move(bs2);
+ ss4 = string_literals<CharType>::Prefix() + boost::move(ss2);
+ if(!StringEqual()(bs4, ss4)){
+ return 1;
+ }
+
+ bs2 = string_literals<CharType>::String();
+ ss2 = string_literals<CharType>::String();
+ bs4 = boost::move(bs2) + string_literals<CharType>::Suffix();
+ ss4 = boost::move(ss2) + string_literals<CharType>::Suffix();
+ if(!StringEqual()(bs4, ss4)){
+ return 1;
+ }
+
+ bs2 = string_literals<CharType>::String();
+ ss2 = string_literals<CharType>::String();
+ bs4 = string_literals<CharType>::Prefix() + bs2;
+ ss4 = string_literals<CharType>::Prefix() + ss2;
+ if(!StringEqual()(bs4, ss4)){
+ return 1;
+ }
+
+ bs2 = string_literals<CharType>::String();
+ ss2 = string_literals<CharType>::String();
+ bs4 = bs2 + string_literals<CharType>::Suffix();
+ ss4 = ss2 + string_literals<CharType>::Suffix();
+ if(!StringEqual()(bs4, ss4)){
+ return 1;
+ }
+ }
+
       //When done, delete vector
       delete boostStringVect;
       delete stdStringVect;
@@ -278,15 +417,51 @@
    return test::test_all_expand_bwd<string_type>();
 }
 
+template<class T, class A>
+class string_propagate_test_wrapper
+ : public basic_string<T, std::char_traits<T>, A>
+{
+ BOOST_COPYABLE_AND_MOVABLE(string_propagate_test_wrapper)
+ typedef basic_string<T, std::char_traits<T>, A> Base;
+ public:
+ string_propagate_test_wrapper()
+ : Base()
+ {}
+
+ string_propagate_test_wrapper(const string_propagate_test_wrapper &x)
+ : Base(x)
+ {}
+
+ string_propagate_test_wrapper(BOOST_RV_REF(string_propagate_test_wrapper) x)
+ : Base(boost::move(static_cast<Base&>(x)))
+ {}
+
+ string_propagate_test_wrapper &operator=(BOOST_COPY_ASSIGN_REF(string_propagate_test_wrapper) x)
+ { this->Base::operator=(x); return *this; }
+
+ string_propagate_test_wrapper &operator=(BOOST_RV_REF(string_propagate_test_wrapper) x)
+ { this->Base::operator=(boost::move(static_cast<Base&>(x))); return *this; }
+
+ void swap(string_propagate_test_wrapper &x)
+ { this->Base::swap(x); }
+};
+
 int main()
 {
    if(string_test<char>()){
       return 1;
    }
 
+ if(string_test<wchar_t>()){
+ return 1;
+ }
+
    if(!test_expand_bwd())
       return 1;
 
+ if(!boost::container::test::test_propagate_allocator<string_propagate_test_wrapper>())
+ return 1;
+
    return 0;
 }
 

Modified: trunk/libs/container/test/tree_test.cpp
==============================================================================
--- trunk/libs/container/test/tree_test.cpp (original)
+++ trunk/libs/container/test/tree_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -16,6 +16,7 @@
 #include "dummy_test_allocator.hpp"
 #include "set_test.hpp"
 #include "map_test.hpp"
+#include "propagate_allocator_test.hpp"
 #include "emplace_test.hpp"
 
 using namespace boost::container;
@@ -49,10 +50,109 @@
            ,test::copyable_int> MyCopyBoostMap;
 typedef multimap<test::copyable_int
                 ,test::copyable_int> MyCopyBoostMultiMap;
+
+namespace boost {
+namespace container {
+
+//Explicit instantiation to detect compilation errors
+
+//map
+template class 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 map
+ < test::movable_and_copyable_int
+ , test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::simple_allocator
+ < std::pair<const test::movable_and_copyable_int, test::movable_and_copyable_int> >
+ >;
+
+template class map
+ < test::movable_and_copyable_int
+ , test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , std::allocator
+ < std::pair<const test::movable_and_copyable_int, test::movable_and_copyable_int> >
+ >;
+
+//multimap
+template class 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> >
+ >;
+
+template class multimap
+ < test::movable_and_copyable_int
+ , test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::simple_allocator
+ < std::pair<const test::movable_and_copyable_int, test::movable_and_copyable_int> >
+ >;
+
+template class multimap
+ < test::movable_and_copyable_int
+ , test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , std::allocator
+ < std::pair<const test::movable_and_copyable_int, test::movable_and_copyable_int> >
+ >;
+
+//set
+template class set
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::dummy_test_allocator<test::movable_and_copyable_int>
+ >;
+
+template class set
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::simple_allocator<test::movable_and_copyable_int>
+ >;
+
+template class set
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , std::allocator<test::movable_and_copyable_int>
+ >;
+
+//multiset
+template class multiset
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::dummy_test_allocator<test::movable_and_copyable_int>
+ >;
+
+template class multiset
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , test::simple_allocator<test::movable_and_copyable_int>
+ >;
+
+template class multiset
+ < test::movable_and_copyable_int
+ , std::less<test::movable_and_copyable_int>
+ , std::allocator<test::movable_and_copyable_int>
+ >;
+
+}} //boost::container
+
 //Test recursive structures
 class recursive_set
 {
 public:
+ recursive_set & operator=(const recursive_set &x)
+ { id_ = x.id_; set_ = x.set_; return *this; }
+
    int id_;
    set<recursive_set> set_;
    friend bool operator< (const recursive_set &a, const recursive_set &b)
@@ -62,6 +162,9 @@
 class recursive_map
 {
    public:
+ recursive_map & operator=(const recursive_map &x)
+ { id_ = x.id_; map_ = x.map_; return *this; }
+
    int id_;
    map<recursive_map, recursive_map> map_;
    friend bool operator< (const recursive_map &a, const recursive_map &b)
@@ -71,7 +174,10 @@
 //Test recursive structures
 class recursive_multiset
 {
-public:
+ public:
+ recursive_multiset & operator=(const recursive_multiset &x)
+ { id_ = x.id_; multiset_ = x.multiset_; return *this; }
+
    int id_;
    multiset<recursive_multiset> multiset_;
    friend bool operator< (const recursive_multiset &a, const recursive_multiset &b)
@@ -80,7 +186,10 @@
 
 class recursive_multimap
 {
-public:
+ public:
+ recursive_multimap & operator=(const recursive_multimap &x)
+ { id_ = x.id_; multimap_ = x.multimap_; return *this; }
+
    int id_;
    multimap<recursive_multimap, recursive_multimap> multimap_;
    friend bool operator< (const recursive_multimap &a, const recursive_multimap &b)
@@ -98,6 +207,35 @@
    move_assign.swap(original);
 }
 
+template<class T, class A>
+class tree_propagate_test_wrapper
+ : public container_detail::rbtree<T, T, container_detail::identity<T>, std::less<T>, A>
+{
+ BOOST_COPYABLE_AND_MOVABLE(tree_propagate_test_wrapper)
+ typedef container_detail::rbtree<T, T, container_detail::identity<T>, std::less<T>, A> Base;
+ public:
+ tree_propagate_test_wrapper()
+ : Base()
+ {}
+
+ tree_propagate_test_wrapper(const tree_propagate_test_wrapper &x)
+ : Base(x)
+ {}
+
+ tree_propagate_test_wrapper(BOOST_RV_REF(tree_propagate_test_wrapper) x)
+ : Base(boost::move(static_cast<Base&>(x)))
+ {}
+
+ tree_propagate_test_wrapper &operator=(BOOST_COPY_ASSIGN_REF(tree_propagate_test_wrapper) x)
+ { this->Base::operator=(x); return *this; }
+
+ tree_propagate_test_wrapper &operator=(BOOST_RV_REF(tree_propagate_test_wrapper) x)
+ { this->Base::operator=(boost::move(static_cast<Base&>(x))); return *this; }
+
+ void swap(tree_propagate_test_wrapper &x)
+ { this->Base::swap(x); }
+};
+
 int main ()
 {
    //Recursive container instantiation
@@ -180,13 +318,12 @@
       return 1;
    }
 
-// if (0 != test::map_test<my_managed_shared_memory
-// ,MyMovableBoostMap
-// ,MyStdMap
-// ,MyMovableBoostMultiMap
-// ,MyStdMultiMap>()){
-// return 1;
-// }
+ if (0 != test::map_test<MyMovableBoostMap
+ ,MyStdMap
+ ,MyMovableBoostMultiMap
+ ,MyStdMultiMap>()){
+ return 1;
+ }
 
    if (0 != test::map_test<MyMoveCopyBoostMap
                   ,MyStdMap
@@ -226,6 +363,8 @@
       return 1;
    if(!boost::container::test::test_emplace<multimap<test::EmplaceInt, test::EmplaceInt>, MapOptions>())
       return 1;
+ if(!boost::container::test::test_propagate_allocator<tree_propagate_test_wrapper>())
+ return 1;
 
    return 0;
 }

Modified: trunk/libs/container/test/vector_test.cpp
==============================================================================
--- trunk/libs/container/test/vector_test.cpp (original)
+++ trunk/libs/container/test/vector_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -7,7 +7,6 @@
 // See http://www.boost.org/libs/container for documentation.
 //
 //////////////////////////////////////////////////////////////////////////////
-
 #include <boost/container/detail/config_begin.hpp>
 #include <algorithm>
 #include <memory>
@@ -16,19 +15,32 @@
 #include <functional>
 
 #include <boost/container/vector.hpp>
+#include <boost/move/move.hpp>
 #include "check_equal_containers.hpp"
 #include "movable_int.hpp"
 #include "expand_bwd_test_allocator.hpp"
 #include "expand_bwd_test_template.hpp"
 #include "dummy_test_allocator.hpp"
+#include "propagate_allocator_test.hpp"
 #include "vector_test.hpp"
 
 using namespace boost::container;
 
+namespace boost {
+namespace container {
+
 //Explicit instantiation to detect compilation errors
 template class boost::container::vector<test::movable_and_copyable_int,
+ test::simple_allocator<test::movable_and_copyable_int> >;
+
+template class boost::container::vector<test::movable_and_copyable_int,
    test::dummy_test_allocator<test::movable_and_copyable_int> >;
 
+template class boost::container::vector<test::movable_and_copyable_int,
+ std::allocator<test::movable_and_copyable_int> >;
+
+}}
+
 int test_expand_bwd()
 {
    //Now test all back insertion possibilities
@@ -81,7 +93,6 @@
    zero, one, two, three, four, five, six
 };
 
-
 int main()
 {
    recursive_vector_test();
@@ -99,7 +110,6 @@
    typedef vector<test::copyable_int> MyCopyVector;
    typedef vector<Test> MyEnumVector;
 
-
    if(test::vector_test<MyVector>())
       return 1;
    if(test::vector_test<MyMoveVector>())
@@ -122,6 +132,9 @@
       < vector<test::EmplaceInt>, Options>())
       return 1;
 
+ if(!boost::container::test::test_propagate_allocator<vector>())
+ return 1;
+
    return 0;
 }
 #include <boost/container/detail/config_end.hpp>

Modified: trunk/libs/container/test/vector_test.hpp
==============================================================================
--- trunk/libs/container/test/vector_test.hpp (original)
+++ trunk/libs/container/test/vector_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -30,14 +30,14 @@
 namespace test{
 
 template<class V1, class V2>
-bool vector_copyable_only(V1 *, V2 *, boost::container::containers_detail::false_type)
+bool vector_copyable_only(V1 *, V2 *, boost::container::container_detail::false_type)
 {
    return true;
 }
 
 //Function to check if both sets are equal
 template<class V1, class V2>
-bool vector_copyable_only(V1 *boostvector, V2 *stdvector, boost::container::containers_detail::true_type)
+bool vector_copyable_only(V1 *boostvector, V2 *stdvector, boost::container::container_detail::true_type)
 {
    typedef typename V1::value_type IntType;
    std::size_t size = boostvector->size();
@@ -111,6 +111,7 @@
          typename MyBoostVector::iterator boostit(boostvector->begin());
          typename MyStdVector::iterator stdit(stdvector->begin());
          typename MyBoostVector::const_iterator cboostit = boostit;
+ (void)cboostit;
          ++boostit; ++stdit;
          boostvector->erase(boostit);
          stdvector->erase(stdit);
@@ -183,7 +184,7 @@
          if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
 
          if(!vector_copyable_only(boostvector, stdvector
- ,containers_detail::bool_<boost::container::test::is_copyable<IntType>::value>())){
+ ,container_detail::bool_<boost::container::test::is_copyable<IntType>::value>())){
             return 1;
          }
 

Added: trunk/libs/interprocess/Interprocess_sync_windows_emulation.txt
==============================================================================
--- (empty file)
+++ trunk/libs/interprocess/Interprocess_sync_windows_emulation.txt 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,207 @@
+---------------
+---------------
+named_semaphore
+---------------
+---------------
+
+- Use a file for file lifetime semantics (create, open, unlink...)
+- Create on demand (open or create) a windows named semaphore with all access (permissions are on the file).
+- Use file id with a "prefix bips." to construct the mutex "Global\prefix bips.XXXXXXXXXXXXXXXXXXX"
+- Add getvalue as implemented by cygwin
+- Write sem status to file at file close. Use native file locking to serialize.
+- See cygwin-1.7.5-1\winsup\cygwin\posix_ipc.cc and thread.cc
+
+
+
+
+-----------
+-----------
+named_mutex
+-----------
+-----------
+
+- Don't serialize
+
+---------------
+---------------
+named_condition
+---------------
+---------------
+
+
+---------------
+---------------
+Process shared resources. Use lock reduced versions?
+---------------
+---------------
+
+what about fast_semaphore (http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.kernel/2005-03/0041.html):
+
+class fast_semaphore
+{
+
+public:
+
+ fast_semaphore( LONG init )
+ : m_state( init ),
+ m_waitset( CreateSemaphore( 0, 0, LONG_MAX, 0 ) )
+ { if ( ! m_waitset ) { throw; } }
+
+ ~fast_semaphore()
+ { if ( ! CloseHandle( m_waitset ) ) { abort(); } }
+
+public:
+
+ void inc()
+ {
+ if ( InterlockedIncrement( &m_state ) < 1 )
+ {
+ if ( ! ReleaseSemaphore( m_waitset, 1, 0 ) )
+ {
+ throw;
+ }
+ }
+ }
+
+ void dec()
+ {
+ if ( InterlockedDecrement( &m_state ) < 0 )
+ {
+ if ( WaitForSingleObject( m_waitset, INFINITE ) !=
+WAIT_OBJECT_0 )
+ {
+ throw;
+ }
+ }
+ }
+
+private:
+
+ volatile LONG m_state;
+ HANDLE m_waitset;
+
+};
+
+class mutex_from_semaphore
+{
+
+public:
+
+ mutex_from_semaphore() : m_waitset( 1 ) {}
+
+public:
+
+ void enter() { m_waitset.dec(); }
+ void leave() { m_waitset.inc(); }
+
+private:
+
+ fast_semaphore m_waitset;
+
+};
+
+Or see Java implemenation (http://www.google.com/codesearch/p?hl=es#5qy3uURTOpU/trunk/JobRunner/src/org/ivoa/util/concurrent/FastSemaphore.java&q=%22fast%20semaphore%22&sa=N&cd=1&ct=rc&l=10)
+
+
+For mutex, usefast mutex (see fast_mutex.h in cygwin):
+
+
+class fast_mutex
+{
+public:
+ fast_mutex () :
+ lock_counter (0), win32_obj_id (0)
+ {
+ }
+
+ ~fast_mutex ()
+ {
+ if(win32_obj_id)
+ CloseHandle (win32_obj_id);
+ }
+
+ bool init ()
+ {
+ lock_counter = 0;
+ win32_obj_id = ::CreateEvent (&sec_none_nih, false, false, NULL);
+ if (!win32_obj_id)
+ {
+ debug_printf ("CreateEvent failed. %E");
+ return false;
+ }
+ return true;
+ }
+
+ void lock ()
+ {
+ if (InterlockedIncrement ((long *) &lock_counter) != 1)
+ cancelable_wait (win32_obj_id, INFINITE, cw_no_cancel, cw_sig_resume);
+ }
+
+ void unlock ()
+ {
+ if (InterlockedDecrement ((long *) &lock_counter))
+ ::SetEvent (win32_obj_id);
+ }
+
+private:
+ unsigned long lock_counter;
+ HANDLE win32_obj_id;
+};
+
+
+Or this one (http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.kernel/2005-03/0067.html):
+
+
+class fast_mutex
+{
+
+public:
+
+ fast_mutex
+ : m_state( 0 ),
+ m_waitset( CreateEvent( 0, FALSE, FALSE 0 ) )
+ { if ( ! m_waitset ) { throw; } }
+
+ ~fast_mutex
+ { if ( ! CloseHandle( m_waitset ) ) { abort(); } }
+
+public:
+
+ void enter
+ {
+ if ( InterlockedExchange( &m_state, 1 ) )
+ {
+ _asm pause; /* masm */
+
+ while ( InterlockedExchange( &m_state, 2 ) )
+ {
+ if ( WaitForSingleObject
+ ( m_waitset,
+ INFINITE ) !=
+ WAIT_OBJECT_0 )
+ {
+ throw;
+ }
+ }
+ }
+ }
+
+ void leave()
+ {
+ if ( InterlockedExchange( &m_state, 0 ) == 2 )
+ {
+ if ( ! SetEvent( m_waitset ) )
+ {
+ throw;
+ }
+ }
+ }
+
+private:
+
+ volatile LONG m_state;
+ HANDLE m_waitset;
+
+};
+

Modified: trunk/libs/interprocess/doc/Jamfile.v2
==============================================================================
--- trunk/libs/interprocess/doc/Jamfile.v2 (original)
+++ trunk/libs/interprocess/doc/Jamfile.v2 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -31,11 +31,14 @@
         <doxygen:param>EXPAND_ONLY_PREDEF=YES
         <doxygen:param>MACRO_EXPANSION=YES
         <doxygen:param>"PREDEFINED=\"BOOST_INTERPROCESS_DOXYGEN_INVOKED\" \\
+ \"BOOST_CONTAINER_NOEXCEPT_IF(a)=\" \\
+ \"BOOST_CONTAINER_NOEXCEPT=\" \\
                                    \"BOOST_INTERPROCESS_ENABLE_MOVE_EMULATION(a)= \" \\
                                    \"BOOST_RV_REF(a)=a &&\" \\
                                    \"BOOST_RV_REF_2_TEMPL_ARGS(a,b,c)=a &&\" \\
                                    \"BOOST_RV_REF_3_TEMPL_ARGS(a,b,c,d)=a &&\" \\
                                    \"BOOST_FWD_REF(a)=a &&\""
+
         <xsl:param>"boost.doxygen.reftitle=Boost.Interprocess Reference"
    ;
 

Modified: trunk/libs/interprocess/doc/interprocess.qbk
==============================================================================
--- trunk/libs/interprocess/doc/interprocess.qbk (original)
+++ trunk/libs/interprocess/doc/interprocess.qbk 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -5109,7 +5109,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:
 

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/comp_doc_message_queueA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_message_queueA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_message_queueA.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/comp_doc_message_queueB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_message_queueB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_message_queueB.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_adaptive_pool.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_adaptive_pool.cpp (original)
+++ trunk/libs/interprocess/example/doc_adaptive_pool.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_allocator.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp
==============================================================================
--- trunk/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp (original)
+++ trunk/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp
==============================================================================
--- trunk/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp (original)
+++ trunk/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp
==============================================================================
--- trunk/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp (original)
+++ trunk/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_anonymous_shared_memory.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_anonymous_shared_memory.cpp (original)
+++ trunk/libs/interprocess/example/doc_anonymous_shared_memory.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_bufferstream.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_bufferstream.cpp (original)
+++ trunk/libs/interprocess/example/doc_bufferstream.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp (original)
+++ trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_cached_node_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_cached_node_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_cached_node_allocator.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_complex_map.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_complex_map.cpp (original)
+++ trunk/libs/interprocess/example/doc_complex_map.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_cont.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_cont.cpp (original)
+++ trunk/libs/interprocess/example/doc_cont.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_file_mapping.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_file_mapping.cpp (original)
+++ trunk/libs/interprocess/example/doc_file_mapping.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_intrusive.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_intrusive.cpp (original)
+++ trunk/libs/interprocess/example/doc_intrusive.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_ipc_message.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_ipc_message.cpp (original)
+++ trunk/libs/interprocess/example/doc_ipc_message.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_managed_allocation_command.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_allocation_command.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_allocation_command.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_managed_construction_info.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_construction_info.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_construction_info.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_managed_copy_on_write.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_copy_on_write.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_copy_on_write.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_managed_external_buffer.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_external_buffer.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_external_buffer.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_managed_grow.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_grow.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_grow.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_managed_heap_memory.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_heap_memory.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_heap_memory.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_managed_mapped_file.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_mapped_file.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_mapped_file.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -10,7 +10,7 @@
 #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 <boost/interprocess/detail/move.hpp> //boost::move
 #include <cassert>//assert
 #include <cstring>//std::memset
 #include <new> //std::nothrow
@@ -81,7 +81,7 @@
       sizes[i] = i*3;
 
    chain = managed_shm.allocate_many(sizes, 10);
- managed_shm.deallocate_many(boost::interprocess::move(chain));
+ managed_shm.deallocate_many(boost::move(chain));
    return 0;
 }
 //]

Modified: trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_map.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_map.cpp (original)
+++ trunk/libs/interprocess/example/doc_map.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_move_containers.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_move_containers.cpp (original)
+++ trunk/libs/interprocess/example/doc_move_containers.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -77,7 +77,7 @@
       //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));
+ myshmvector->push_back(boost::move(move_me));
 
       //The source string is in default constructed state
       assert(move_me.empty());
@@ -93,7 +93,7 @@
    //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));
+ myshmvector->insert(myshmvector->begin(), boost::move(string_to_compare));
 
    //Destroy vector. This will free all strings that the vector contains
    shm.destroy_ptr(myshmvector);

Modified: trunk/libs/interprocess/example/doc_multi_index.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_multi_index.cpp (original)
+++ trunk/libs/interprocess/example/doc_multi_index.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_named_alloc.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_named_alloc.cpp (original)
+++ trunk/libs/interprocess/example/doc_named_alloc.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_named_condition_shared_data.hpp
==============================================================================
--- trunk/libs/interprocess/example/doc_named_condition_shared_data.hpp (original)
+++ trunk/libs/interprocess/example/doc_named_condition_shared_data.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_named_mutex.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_named_mutex.cpp (original)
+++ trunk/libs/interprocess/example/doc_named_mutex.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_node_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_node_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_node_allocator.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_offset_ptr.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_offset_ptr.cpp (original)
+++ trunk/libs/interprocess/example/doc_offset_ptr.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp (original)
+++ trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_private_node_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_private_node_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_private_node_allocator.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_scoped_ptr.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_scoped_ptr.cpp (original)
+++ trunk/libs/interprocess/example/doc_scoped_ptr.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_shared_memory.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_shared_memory.cpp (original)
+++ trunk/libs/interprocess/example/doc_shared_memory.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_shared_ptr.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_shared_ptr.cpp (original)
+++ trunk/libs/interprocess/example/doc_shared_ptr.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009.
+// (C) Copyright Ion Gaztanaga 2006-2011.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)

Modified: trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp (original)
+++ trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009.
+// (C) Copyright Ion Gaztanaga 2006-2011.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)

Modified: trunk/libs/interprocess/example/doc_spawn_vector.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_spawn_vector.cpp (original)
+++ trunk/libs/interprocess/example/doc_spawn_vector.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_unique_ptr.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_unique_ptr.cpp (original)
+++ trunk/libs/interprocess/example/doc_unique_ptr.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009.
+// (C) Copyright Ion Gaztanaga 2006-2011.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
@@ -94,7 +94,7 @@
       //Now insert all values
       for(int i = 0; i < 100; ++i){
          unique_ptr_type p(make_managed_unique_ptr(file.construct<MyType>(anonymous_instance)(i), file));
- unique_vector->push_back(boost::interprocess::move(p));
+ unique_vector->push_back(boost::move(p));
          assert(unique_vector->back()->number_ == i);
       }
       
@@ -104,7 +104,7 @@
    
       //Pass ownership of all values to the list
       for(int i = 99; !unique_vector->empty(); --i){
- unique_list->push_front(boost::interprocess::move(unique_vector->back()));
+ unique_list->push_front(boost::move(unique_vector->back()));
          //The unique ptr of the vector is now empty...
          assert(unique_vector->back() == 0);
          unique_vector->pop_back();

Modified: trunk/libs/interprocess/example/doc_unordered_map.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_unordered_map.cpp (original)
+++ trunk/libs/interprocess/example/doc_unordered_map.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp
==============================================================================
--- trunk/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp (original)
+++ trunk/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_vectorstream.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_vectorstream.cpp (original)
+++ trunk/libs/interprocess/example/doc_vectorstream.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_where_allocate.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_where_allocate.cpp (original)
+++ trunk/libs/interprocess/example/doc_where_allocate.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_windows_shared_memory.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_windows_shared_memory.cpp (original)
+++ trunk/libs/interprocess/example/doc_windows_shared_memory.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/example/doc_xsi_shared_memory.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_xsi_shared_memory.cpp (original)
+++ trunk/libs/interprocess/example/doc_xsi_shared_memory.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/proj/to-do.txt
==============================================================================
--- trunk/libs/interprocess/proj/to-do.txt (original)
+++ trunk/libs/interprocess/proj/to-do.txt 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -8,6 +8,15 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+Remove std::iterator_traits and use pointer_traits
+
+What values should take shared memory allocators:
+
+propagate_on_container_copy_assignment
+propagate_on_container_move_assignment
+propagate_on_container_swap
+
+
 
 //////////////////////////////////////////////////////////////////////////////
 Platform conformance
@@ -239,3 +248,4 @@
 }
 
 ipcdetail::intermodule_singleton<MyRobustMutexLockFile>::get();
+

Modified: trunk/libs/interprocess/proj/vc7ide/Interprocess.sln
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/Interprocess.sln (original)
+++ trunk/libs/interprocess/proj/vc7ide/Interprocess.sln 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,73 +1,81 @@
 Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_interprocesslib", "interprocesslib.vcproj", "{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_interprocesslib", "interprocesslib.vcproj", "{FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_windows_shared_memory", "doc_windows_shared_memory.vcproj", "{5E17C9C3-1362-2E1E-C84F-8A76B6739F21}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "allocexcept_test", "allocexcept_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792662}"
         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}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "anonymous_shared_memory_test", "anonymous_shared_memory_test.vcproj", "{58DE8A13-4FA7-6252-36FE-B3A0A6D92812}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_pool_test", "node_pool_test.vcproj", "{8A519DC3-6092-A4FE-F748-BA91328D6522}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bufferstream_test", "bufferstream_test.vcproj", "{58C183CE-6203-FE12-A237-BA8976695960}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deque_test", "deque_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792655}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cached_node_allocator_test", "cached_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792659}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "barrier_test", "barrier_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792661}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "condition_test", "condition_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792658}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bufferstream_test", "bufferstream_test.vcproj", "{58C183CE-6203-FE12-A237-BA8976695960}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "data_test", "data_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792657}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cached_node_allocator_test", "cached_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792659}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionA", "doc_anonymous_conditionA.vcproj", "{5C1B8183-0296-4F83-1F22-001005220544}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "private_node_allocator_test", "private_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792620}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionB", "doc_anonymous_conditionB.vcproj", "{58C1FE83-2906-E643-2F12-024410052254}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_allocator_test", "node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792622}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexA", "doc_anonymous_mutexA.vcproj", "{58C1B183-9026-4E63-12F2-005412200054}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_mutex_test", "named_mutex_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792625}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexB", "doc_anonymous_mutexB.vcproj", "{58C1B183-9026-4E63-12F2-005202441254}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_recursive_mutex_test", "named_recursive_mutex_test.vcproj", "{5C83CE18-4F48-A7FE-6092-B7920AD3A624}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreA", "doc_anonymous_semaphoreA.vcproj", "{5CB81183-29FB-F843-24FF-022050100544}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_semaphore_test", "named_semaphore_test.vcproj", "{58CCE283-1609-48FE-A4F7-BA0D3A793523}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_shared_memory", "doc_anonymous_shared_memory.vcproj", "{6DE178C3-12FE-6032-4FC7-879B63B9F651}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_heap_memory", "doc_managed_heap_memory.vcproj", "{58CCE183-6092-48FE-A4FC-BA0D3A792647}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreB", "doc_anonymous_semaphoreB.vcproj", "{58FBE8C3-9026-FAB2-E643-000522441254}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "allocexcept_test", "allocexcept_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792662}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexA", "doc_anonymous_upgradable_mutexA.vcproj", "{5C18831B-F162-FA96-E6C3-FA5122040054}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "condition_test", "condition_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792658}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexB", "doc_anonymous_upgradable_mutexB.vcproj", "{5C1B1043-1EFF-2793-4E63-245241283054}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "data_test", "data_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792657}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_bufferstream", "doc_bufferstream.vcproj", "{58C1B183-9026-4E12-00F2-001200540054}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_bufferstream", "doc_bufferstream.vcproj", "{58C1B183-9026-4E12-00F2-001200540054}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_complex_map", "doc_complex_map.vcproj", "{5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cont", "doc_cont.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792653}"
+ 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
 EndProject
@@ -75,10 +83,62 @@
         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_managed_allocation_command", "doc_managed_allocation_command.vcproj", "{5189DEA3-3261-F33E-47ED-83BC69F66061}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_construction_info", "doc_managed_construction_info.vcproj", "{5C82D1D3-3861-3AF1-03EF-89AED4716761}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_copy_on_write", "doc_managed_copy_on_write.vcproj", "{8E0C437E-3613-FD46-F3AE-876A0731CA85}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_grow", "doc_managed_grow.vcproj", "{8418EC1A-5631-1AFE-FE74-8A2E76407A31}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_heap_memory", "doc_managed_heap_memory.vcproj", "{58CCE183-6092-48FE-A4FC-BA0D3A792647}"
+ 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_managed_multiple_allocation", "doc_managed_multiple_allocation.vcproj", "{818C43EE-3561-F3AE-4FD7-8A2076E76A31}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueA", "doc_message_queueA.vcproj", "{51B189C3-4E63-9026-12F2-12200AF54054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueB", "doc_message_queueB.vcproj", "{5C1B1813-12C2-0296-4E63-244549126520}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_move_containers", "doc_move_containers.vcproj", "{58C1B183-0296-EA42-EF04-005120054104}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_multi_index", "doc_multi_index.vcproj", "{918C5DF3-1928-B73F-F626-7358518CBE62}"
+ 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_named_mutex", "doc_named_mutex.vcproj", "{58C181B3-9516-463E-2F12-122155400054}"
+ 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
@@ -87,79 +147,79 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_vectorstream", "doc_vectorstream.vcproj", "{58C1B183-9260-4E8F-F200-000000000041}"
+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}") = "doc_where_allocate", "doc_where_allocate.vcproj", "{58CCE183-6092-48FE-A677-BA0D3A832640}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_ptr", "doc_shared_ptr.vcproj", "{51CE89A3-6092-F4EA-48A7-B4B9AC326093}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_mapping_test", "file_mapping_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792638}"
+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}") = "flat_tree_test", "flat_tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792637}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_unique_ptr", "doc_unique_ptr.vcproj", "{589C2EB3-8A57-1862-F4EA-A6B14C7329A3}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intrusive_ptr_test", "intrusive_ptr_test.vcproj", "{5821C383-6092-12FE-A877-BA0D33467633}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_vectorstream", "doc_vectorstream.vcproj", "{58C1B183-9260-4E8F-F200-000000000041}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list_test", "list_ex.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_where_allocate", "doc_where_allocate.vcproj", "{58CCE183-6092-48FE-A677-BA0D3A832640}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_mapped_file_test", "managed_mapped_file_test.vcproj", "{5CCE1883-0926-F7A4-8FE4-BA0606D92331}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_windows_shared_memory", "doc_windows_shared_memory.vcproj", "{5E17C9C3-1362-2E1E-C84F-8A76B6739F21}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapped_file_test", "mapped_file_test.vcproj", "{5C6D9CE1-2609-F7A4-8FE4-BA0883602330}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_xsi_shared_memory", "doc_xsi_shared_memory.vcproj", "{8C5CE183-0326-47FC-12FE-8B6F7963A071}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "memory_algorithm_test", "memory_algorithm_test.vcproj", "{58E18CC3-6092-8F4E-A3E7-A792230D3629}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "enable_shared_from_this_test", "enable_shared_from_this_test.vcproj", "{571C3483-87C7-6921-1238-B086B3E766C9}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "message_queue_test", "message_queue.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792628}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_lock_test", "file_lock_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792639}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mutex_test", "mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A27}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_mapping_test", "file_mapping_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792638}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "null_index_test", "null_index_test.vcproj", "{0000058C-0000-0000-0000-000000000021}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_map_index_allocation_test", "flat_map_index_allocation_test.vcproj", "{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "semaphore_test", "semaphore_test.vcproj", "{5CE28C83-48FE-1676-4FA7-B50D3A76A013}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intermodule_singleton_test", "intermodule_singleton_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_multiple_allocation", "doc_managed_multiple_allocation.vcproj", "{818C43EE-3561-F3AE-4FD7-8A2076E76A31}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intersegment_ptr_test", "intersegment_ptr_test.vcproj", "{5E81CD01-4FA2-2A96-84FE-DA631CA20962}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_allocation_command", "doc_managed_allocation_command.vcproj", "{5189DEA3-3261-F33E-47ED-83BC69F66061}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intrusive_ptr_test", "intrusive_ptr_test.vcproj", "{5821C383-6092-12FE-A877-BA0D33467633}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_construction_info", "doc_managed_construction_info.vcproj", "{5C82D1D3-3861-3AF1-03EF-89AED4716761}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iset_index_allocation_test", "iset_index_allocation_test.vcproj", "{58BD1CC3-6972-F3F7-84BE-0DB736035922}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_ptr_explicit", "doc_shared_ptr_explicit.vcproj", "{4E887AC3-F8EA-6923-A744-C264A398C913}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_mapped_file_test", "managed_mapped_file_test.vcproj", "{5CCE1883-0926-F7A4-8FE4-BA0606D92331}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_unique_ptr", "doc_unique_ptr.vcproj", "{589C2EB3-8A57-1862-F4EA-A6B14C7329A3}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iunordered_set_index_allocation_test", "iunordered_set_index_allocation_test.vcproj", "{5BD1C7C3-3F7F-6972-84BE-B731D9236035}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_ptr", "doc_shared_ptr.vcproj", "{51CE89A3-6092-F4EA-48A7-B4B9AC326093}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list_test", "list_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
@@ -167,91 +227,91 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_grow", "doc_managed_grow.vcproj", "{818C43EE-3561-F3AE-4FD7-8A2076E76A31}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_xsi_shared_memory_test", "managed_xsi_shared_memory.vcproj", "{58DF28E3-0926-F47A-E28A-B03A4D619631}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "offset_ptr_test", "offset_ptr_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map_index_allocation_test", "map_index_allocation_test.vcproj", "{588CCD13-2962-83FE-F4B7-92230DB73629}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_shared_memory", "doc_anonymous_shared_memory.vcproj", "{6DE178C3-12FE-6032-4FC7-879B63B9F651}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapped_file_test", "mapped_file_test.vcproj", "{5C6D9CE1-2609-F7A4-8FE4-BA0883602330}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "anonymous_shared_memory_test", "anonymous_shared_memory_test.vcproj", "{58DE8A13-4FA7-6252-36FE-B3A0A6D92812}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "memory_algorithm_test", "memory_algorithm_test.vcproj", "{58E18CC3-6092-8F4E-A3E7-A792230D3629}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_unordered_map", "doc_unordered_map.vcproj", "{9C185DF3-B75F-1928-8F6D-735108AABE62}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "message_queue_test", "message_queue.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792628}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_multi_index", "doc_multi_index.vcproj", "{918C5DF3-1928-B73F-F626-7358518CBE62}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_index_test", "multi_index_test.vcproj", "{9285DFD3-1928-F662-CB73-73518CB53A62}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unordered_test", "unordered_test.vcproj", "{C3CE1183-09F2-A46A-4FE6-D06BA7923A02}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mutex_test", "mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A27}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_index_test", "multi_index_test.vcproj", "{9285DFD3-1928-F662-CB73-73518CB53A62}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mutex_timeout_test", "mutex_timeout_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A27}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_lock_test", "file_lock_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792639}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_condition_test", "named_condition_test.vcproj", "{58CC2563-6092-48FE-FAF7-BA046A792658}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intersegment_ptr_test", "intersegment_ptr_test.vcproj", "{5E81CD01-4FA2-2A96-84FE-DA631CA20962}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_construct_test", "named_construct_test.vcproj", "{5183C8CE-F2E1-3620-237A-B765C9896390}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_copy_on_write", "doc_managed_copy_on_write.vcproj", "{8E0C437E-3613-FD46-F3AE-876A0731CA85}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_mutex_test", "named_mutex_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792625}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "enable_shared_from_this_test", "enable_shared_from_this_test.vcproj", "{571C3483-87C7-6921-1238-B086B3E766C9}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_recursive_mutex_test", "named_recursive_mutex_test.vcproj", "{5C83CE18-4F48-A7FE-6092-B7920AD3A624}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_complex_map", "doc_complex_map.vcproj", "{5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_semaphore_test", "named_semaphore_test.vcproj", "{58CCE283-1609-48FE-A4F7-BA0D3A793523}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_construct_test", "named_construct_test.vcproj", "{5183C8CE-F2E1-3620-237A-B765C9896390}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_upgradable_mutex_test", "named_upgradable_mutex.vcproj", "{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stable_vector_test", "stable_vector_test.vcproj", "{5E11C8D3-FA52-760A-84FE-943A6BA05A21}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_allocator_test", "node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792622}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_spawn_vector", "doc_spawn_vector.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792652}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_pool_test", "node_pool_test.vcproj", "{8A519DC3-6092-A4FE-F748-BA91328D6522}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_ipc_message", "doc_ipc_message.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792649}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "null_index_test", "null_index_test.vcproj", "{0000058C-0000-0000-0000-000000000021}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_alloc", "doc_named_alloc.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792645}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "private_node_allocator_test", "private_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792620}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_memory", "doc_shared_memory.vcproj", "{58CCE183-6032-12FE-4FC7-83A79F760B61}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_mutex_test", "recursive_mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A14}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionA", "doc_anonymous_conditionA.vcproj", "{5C1B8183-0296-4F83-1F22-001005220544}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "robust_emulation_test", "robust_emulation_test.vcproj", "{58CCE183-4AFE-6092-C4F5-BA0D3A692628}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionB", "doc_anonymous_conditionB.vcproj", "{58C1FE83-2906-E643-2F12-024410052254}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "robust_recursive_emulation_test", "robust_recursive_emulation_test.vcproj", "{58CCE183-4AFE-C4F5-6292-B25062C3A898}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexA", "doc_anonymous_mutexA.vcproj", "{58C1B183-9026-4E63-12F2-005412200054}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "semaphore_test", "semaphore_test.vcproj", "{5CE28C83-48FE-1676-4FA7-B50D3A76A013}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
@@ -259,147 +319,147 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexB", "doc_anonymous_mutexB.vcproj", "{58C1B183-9026-4E63-12F2-005202441254}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_test", "shared_memory_test.vcproj", "{5E2838CC-0916-8F4E-A4F7-93506BA0D310}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreA", "doc_anonymous_semaphoreA.vcproj", "{5CB81183-29FB-F843-24FF-022050100544}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_ptr_test", "shared_ptr_test.vcproj", "{5371C383-6092-1238-A877-BAEB37867609}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreB", "doc_anonymous_semaphoreB.vcproj", "{58FBE8C3-9026-FAB2-E643-000522441254}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string_test", "string_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D4A792607}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexA", "doc_anonymous_upgradable_mutexA.vcproj", "{5C18831B-F162-FA96-E6C3-FA5122040054}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unique_ptr_test", "unique_ptr_test.vcproj", "{571C3383-6092-A877-1238-B3786BAE7605}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexB", "doc_anonymous_upgradable_mutexB.vcproj", "{5C1B1043-1EFF-2793-4E63-245241283054}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unordered_test", "unordered_test.vcproj", "{C3CE1183-09F2-A46A-4FE6-D06BA7923A02}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cont", "doc_cont.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792653}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upgradable_mutex_test", "upgradable_mutex.vcproj", "{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_file_mapping", "doc_file_mapping.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "user_buffer_test", "user_buffer_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792603}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueA", "doc_message_queueA.vcproj", "{51B189C3-4E63-9026-12F2-12200AF54054}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vectorstream_test", "vectorstream_test.vcproj", "{58CCE183-6032-12FE-A4F7-BA893A767601}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueB", "doc_message_queueB.vcproj", "{5C1B1813-12C2-0296-4E63-244549126520}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windows_shared_memory_mapping_test", "windows_shared_memory_mapping_test.vcproj", "{518CE8C3-6512-FA75-46EF-B917A3A116D1}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_move_containers", "doc_move_containers.vcproj", "{58C1B183-0296-EA42-EF04-005120054104}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xsi_shared_memory_mapping_test", "xsi_shared_memory_mapping_test.vcproj", "{518CE8C3-5DA7-6256-46EF-97A116702AD1}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string_test", "string_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D4A792607}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_ptr_explicit", "doc_shared_ptr_explicit.vcproj", "{4E887AC3-F8EA-6923-A744-C264A398C913}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tree_test", "tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792606}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_unordered_map", "doc_unordered_map.vcproj", "{9C185DF3-B75F-1928-8F6D-735108AABE62}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vectorstream_test", "vectorstream_test.vcproj", "{58CCE183-6032-12FE-A4F7-BA893A767601}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adaptive_node_pool_test", "adaptive_node_pool_test.vcproj", "{CD57C283-1862-42FE-BF87-B96D3A2A7912}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_upgradable_mutex_test", "named_upgradable_mutex.vcproj", "{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adaptive_pool_test", "adaptive_pool_test.vcproj", "{58CE1D84-1962-4FE9-BA0D-A4F7973A4652}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_mutex", "doc_named_mutex.vcproj", "{58C181B3-9516-463E-2F12-122155400054}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "barrier_test", "barrier_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792661}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_map_index_allocation_test", "flat_map_index_allocation_test.vcproj", "{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cached_adaptive_pool_test", "cached_adaptive_pool_test.vcproj", "{5188E3CE-2964-F43E-FB87-B037AC692D59}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_test", "shared_memory_test.vcproj", "{5E2838CC-0916-8F4E-A4F7-93506BA0D310}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deque_test", "deque_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792655}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_ptr_test", "shared_ptr_test.vcproj", "{5371C383-6092-1238-A877-BAEB37867609}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_adaptive_pool", "doc_adaptive_pool.vcproj", "{57C832B1-17D2-9537-FA12-827220448554}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist_test", "slist_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_allocator", "doc_allocator.vcproj", "{581B1C83-4E12-9526-020F-012482540054}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unique_ptr_test", "unique_ptr_test.vcproj", "{571C3383-6092-A877-1238-B3786BAE7605}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cached_adaptive_pool", "doc_cached_adaptive_pool.vcproj", "{536C8251-7E12-9537-A1E2-822073258554}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upgradable_mutex_test", "upgradable_mutex.vcproj", "{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cached_node_allocator", "doc_cached_node_allocator.vcproj", "{283AD375-7D12-5866-23BF-854308651275}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "user_buffer_test", "user_buffer_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792603}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_aligned_allocation", "doc_managed_aligned_allocation.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vector_test", "vector_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_raw_allocation", "doc_managed_raw_allocation.vcproj", "{5198EFC3-2731-F34E-4FD8-1859AC94F761}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iset_index_allocation_test", "iset_index_allocation_test.vcproj", "{58BD1CC3-6972-F3F7-84BE-0DB736035922}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_map", "doc_map.vcproj", "{59CEC183-8192-8F6D-4FB7-BA260A79D352}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iunordered_set_index_allocation_test", "iunordered_set_index_allocation_test.vcproj", "{5BD1C7C3-3F7F-6972-84BE-B731D9236035}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_node_allocator", "doc_node_allocator.vcproj", "{51B17C83-E172-5396-0FA2-825472008554}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map_index_allocation_test", "map_index_allocation_test.vcproj", "{588CCD13-2962-83FE-F4B7-92230DB73629}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_private_adaptive_pool", "doc_private_adaptive_pool.vcproj", "{83258CB1-127E-9375-F872-8324A1054454}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_condition_test", "named_condition_test.vcproj", "{58CC2563-6092-48FE-FAF7-BA046A792658}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_private_node_allocator", "doc_private_node_allocator.vcproj", "{2B75C833-17D2-4956-A23F-820854254175}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intermodule_singleton_test", "intermodule_singleton_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_tree_test", "flat_tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792637}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "robust_recursive_emulation_test", "robust_recursive_emulation_test.vcproj", "{58CCE183-4AFE-C4F5-6292-B25062C3A898}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_windows_shared_memory_test", "managed_windows_shared_memory.vcproj", "{5D18CE83-1926-7AE4-FE94-B606D9B23131}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "robust_emulation_test", "robust_emulation_test.vcproj", "{58CCE183-4AFE-6092-C4F5-BA0D3A692628}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "offset_ptr_test", "offset_ptr_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_mutex_test", "recursive_mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A14}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "private_adaptive_pool_test", "private_adaptive_pool_test.vcproj", "{5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xsi_shared_memory_mapping_test", "xsi_shared_memory_mapping_test.vcproj", "{518CE8C3-5DA7-6256-46EF-97A116702AD1}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist_test", "slist_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_xsi_shared_memory_test", "managed_xsi_shared_memory.vcproj", "{58DF28E3-0926-F47A-E28A-B03A4D619631}"
+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_xsi_shared_memory", "doc_xsi_shared_memory.vcproj", "{8C5CE183-0326-47FC-12FE-8B6F7963A071}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tree_test", "tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792606}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pair_test", "pair_test.vcproj", "{58CA17C5-A74F-9602-48FE-B06310DA7FA6}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vector_test", "vector_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mutex_timeout_test", "mutex_timeout_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A27}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windows_shared_memory_test", "windows_shared_memory_test.vcproj", "{E35C288C-F48E-6914-4FA7-5BA006383C10}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
@@ -411,30 +471,18 @@
         GlobalSection(ProjectDependencies) = postSolution
         EndGlobalSection
         GlobalSection(ProjectConfiguration) = postSolution
- {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Debug.ActiveCfg = Debug|Win32
- {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Debug.Build.0 = Debug|Win32
- {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Release.ActiveCfg = Release|Win32
- {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Release.Build.0 = Release|Win32
- {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Debug.ActiveCfg = Debug|Win32
- {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
- {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
- {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Release.Build.0 = Release|Win32
- {8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.ActiveCfg = Debug|Win32
- {8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.Build.0 = Debug|Win32
- {8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.ActiveCfg = Release|Win32
- {8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.Build.0 = Release|Win32
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Debug.ActiveCfg = Debug|Win32
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Debug.Build.0 = Debug|Win32
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Release.ActiveCfg = Release|Win32
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.Build.0 = Release|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Debug.ActiveCfg = Debug|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Debug.Build.0 = Debug|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Release.ActiveCfg = Release|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Release.Build.0 = Release|Win32
                 {58C183CE-6203-FE12-A237-BA8976695960}.Debug.ActiveCfg = Debug|Win32
                 {58C183CE-6203-FE12-A237-BA8976695960}.Debug.Build.0 = Debug|Win32
                 {58C183CE-6203-FE12-A237-BA8976695960}.Release.ActiveCfg = Release|Win32
@@ -443,34 +491,6 @@
                 {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Release.ActiveCfg = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.Build.0 = Release|Win32
- {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.ActiveCfg = Debug|Win32
- {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.Build.0 = Debug|Win32
- {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.ActiveCfg = Release|Win32
- {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.Build.0 = Release|Win32
- {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.ActiveCfg = Debug|Win32
- {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.Build.0 = Debug|Win32
- {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.ActiveCfg = Release|Win32
- {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.Build.0 = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Debug.ActiveCfg = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Release.ActiveCfg = Release|Win32
@@ -479,18 +499,118 @@
                 {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Release.ActiveCfg = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Release.Build.0 = Release|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Debug.ActiveCfg = Debug|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Debug.Build.0 = Debug|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Release.ActiveCfg = Release|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Release.Build.0 = Release|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Debug.ActiveCfg = Debug|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Debug.Build.0 = Debug|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Release.ActiveCfg = Release|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Release.Build.0 = Release|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Debug.Build.0 = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Release.ActiveCfg = Release|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Release.Build.0 = Release|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Debug.Build.0 = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Release.ActiveCfg = Release|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Release.Build.0 = Release|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Debug.ActiveCfg = Debug|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Debug.Build.0 = Debug|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Release.ActiveCfg = Release|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Release.Build.0 = Release|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Debug.ActiveCfg = Debug|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Debug.Build.0 = Debug|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Release.ActiveCfg = Release|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Release.Build.0 = Release|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.ActiveCfg = Debug|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.Build.0 = Debug|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Release.ActiveCfg = Release|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Release.Build.0 = Release|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.ActiveCfg = Debug|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.Build.0 = Debug|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.ActiveCfg = Release|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.Build.0 = Release|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.ActiveCfg = Debug|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.Build.0 = Debug|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Release.ActiveCfg = Release|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Release.Build.0 = Release|Win32
                 {58C1B183-9026-4E12-00F2-001200540054}.Debug.ActiveCfg = Debug|Win32
                 {58C1B183-9026-4E12-00F2-001200540054}.Debug.Build.0 = Debug|Win32
                 {58C1B183-9026-4E12-00F2-001200540054}.Release.ActiveCfg = Release|Win32
                 {58C1B183-9026-4E12-00F2-001200540054}.Release.Build.0 = Release|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Debug.ActiveCfg = Debug|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Debug.Build.0 = Debug|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Release.ActiveCfg = Release|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.ActiveCfg = Debug|Win32
+ {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
+ {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
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
                 {5E18CC83-6092-48FE-A677-B832A0D3A650}.Debug.ActiveCfg = Debug|Win32
                 {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
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.ActiveCfg = Debug|Win32
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.Build.0 = Debug|Win32
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.ActiveCfg = Release|Win32
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.Build.0 = Release|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.ActiveCfg = Debug|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.Build.0 = Debug|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.ActiveCfg = Release|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.Build.0 = Release|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Debug.ActiveCfg = Debug|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Debug.Build.0 = Debug|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Release.ActiveCfg = Release|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Release.Build.0 = Release|Win32
+ {8418EC1A-5631-1AFE-FE74-8A2E76407A31}.Debug.ActiveCfg = Debug|Win32
+ {8418EC1A-5631-1AFE-FE74-8A2E76407A31}.Debug.Build.0 = Debug|Win32
+ {8418EC1A-5631-1AFE-FE74-8A2E76407A31}.Release.ActiveCfg = Release|Win32
+ {8418EC1A-5631-1AFE-FE74-8A2E76407A31}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.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
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.ActiveCfg = Debug|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.Build.0 = Debug|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.ActiveCfg = Release|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.Build.0 = Release|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.ActiveCfg = Debug|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.Build.0 = Debug|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Release.ActiveCfg = Release|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Release.Build.0 = Release|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Debug.ActiveCfg = Debug|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Debug.Build.0 = Debug|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Release.ActiveCfg = Release|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Release.Build.0 = Release|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Debug.Build.0 = Debug|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Release.ActiveCfg = Release|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Release.Build.0 = Release|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.Debug.ActiveCfg = Debug|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.Debug.Build.0 = Debug|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.Release.ActiveCfg = Release|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.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
+ {58C181B3-9516-463E-2F12-122155400054}.Debug.ActiveCfg = Debug|Win32
+ {58C181B3-9516-463E-2F12-122155400054}.Debug.Build.0 = Debug|Win32
+ {58C181B3-9516-463E-2F12-122155400054}.Release.ActiveCfg = Release|Win32
+ {58C181B3-9516-463E-2F12-122155400054}.Release.Build.0 = Release|Win32
                 {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
@@ -499,6 +619,22 @@
                 {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Debug.Build.0 = Debug|Win32
                 {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Release.ActiveCfg = Release|Win32
                 {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.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
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.ActiveCfg = Debug|Win32
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.Build.0 = Debug|Win32
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Release.ActiveCfg = Release|Win32
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.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
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.ActiveCfg = Debug|Win32
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.Build.0 = Debug|Win32
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.ActiveCfg = Release|Win32
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.Build.0 = Release|Win32
                 {58C1B183-9260-4E8F-F200-000000000041}.Debug.ActiveCfg = Debug|Win32
                 {58C1B183-9260-4E8F-F200-000000000041}.Debug.Build.0 = Debug|Win32
                 {58C1B183-9260-4E8F-F200-000000000041}.Release.ActiveCfg = Release|Win32
@@ -507,26 +643,70 @@
                 {58CCE183-6092-48FE-A677-BA0D3A832640}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A677-BA0D3A832640}.Release.ActiveCfg = Release|Win32
                 {58CCE183-6092-48FE-A677-BA0D3A832640}.Release.Build.0 = Release|Win32
+ {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Debug.ActiveCfg = Debug|Win32
+ {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
+ {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Debug.ActiveCfg = Debug|Win32
+ {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Debug.Build.0 = Debug|Win32
+ {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Release.ActiveCfg = Release|Win32
+ {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Release.Build.0 = Release|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Debug.ActiveCfg = Debug|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Debug.Build.0 = Debug|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Release.ActiveCfg = Release|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Release.Build.0 = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Debug.ActiveCfg = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Release.ActiveCfg = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.Build.0 = Release|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.ActiveCfg = Debug|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.Build.0 = Debug|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.ActiveCfg = Release|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.Build.0 = Release|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Debug.ActiveCfg = Debug|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Debug.Build.0 = Debug|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Release.ActiveCfg = Release|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Release.Build.0 = Release|Win32
                 {5821C383-6092-12FE-A877-BA0D33467633}.Debug.ActiveCfg = Debug|Win32
                 {5821C383-6092-12FE-A877-BA0D33467633}.Debug.Build.0 = Debug|Win32
                 {5821C383-6092-12FE-A877-BA0D33467633}.Release.ActiveCfg = Release|Win32
                 {5821C383-6092-12FE-A877-BA0D33467633}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.Build.0 = Release|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.ActiveCfg = Debug|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.Build.0 = Debug|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.ActiveCfg = Release|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.Build.0 = Release|Win32
                 {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Debug.ActiveCfg = Debug|Win32
                 {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Debug.Build.0 = Debug|Win32
                 {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Release.ActiveCfg = Release|Win32
                 {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Release.Build.0 = Release|Win32
+ {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.ActiveCfg = Debug|Win32
+ {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
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.Build.0 = Release|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.ActiveCfg = Debug|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.Build.0 = Debug|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.ActiveCfg = Release|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.Build.0 = Release|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.ActiveCfg = Debug|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.Build.0 = Debug|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.ActiveCfg = Release|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.Build.0 = Release|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.ActiveCfg = Debug|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.Build.0 = Debug|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.ActiveCfg = Release|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.Build.0 = Release|Win32
                 {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Debug.ActiveCfg = Debug|Win32
                 {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Debug.Build.0 = Debug|Win32
                 {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Release.ActiveCfg = Release|Win32
@@ -539,202 +719,78 @@
                 {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Release.ActiveCfg = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Release.Build.0 = Release|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Debug.ActiveCfg = Debug|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Debug.Build.0 = Debug|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Release.ActiveCfg = Release|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Release.Build.0 = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.ActiveCfg = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.Build.0 = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.ActiveCfg = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.Build.0 = Release|Win32
                 {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.ActiveCfg = Debug|Win32
                 {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.Build.0 = Debug|Win32
                 {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.ActiveCfg = Release|Win32
                 {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.Build.0 = Release|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.ActiveCfg = Debug|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.Build.0 = Debug|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.ActiveCfg = Release|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.Build.0 = Release|Win32
+ {5183C8CE-F2E1-3620-237A-B765C9896390}.Debug.ActiveCfg = Debug|Win32
+ {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
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.Build.0 = Release|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.ActiveCfg = Debug|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.Build.0 = Debug|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.ActiveCfg = Release|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.Build.0 = Release|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.ActiveCfg = Debug|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.Build.0 = Debug|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.ActiveCfg = Release|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.Build.0 = Release|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.ActiveCfg = Debug|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.Build.0 = Debug|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.ActiveCfg = Release|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.Build.0 = Release|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.ActiveCfg = Debug|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.Build.0 = Debug|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.ActiveCfg = Release|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.Build.0 = Release|Win32
                 {0000058C-0000-0000-0000-000000000021}.Debug.ActiveCfg = Debug|Win32
                 {0000058C-0000-0000-0000-000000000021}.Debug.Build.0 = Debug|Win32
                 {0000058C-0000-0000-0000-000000000021}.Release.ActiveCfg = Release|Win32
                 {0000058C-0000-0000-0000-000000000021}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.Build.0 = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.ActiveCfg = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.Build.0 = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.ActiveCfg = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.Build.0 = Release|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Debug.Build.0 = Debug|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Release.ActiveCfg = Release|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Release.Build.0 = Release|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Debug.Build.0 = Debug|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Release.ActiveCfg = Release|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Release.Build.0 = Release|Win32
                 {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.ActiveCfg = Debug|Win32
                 {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.Build.0 = Debug|Win32
                 {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Release.ActiveCfg = Release|Win32
                 {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Release.Build.0 = Release|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.ActiveCfg = Debug|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.Build.0 = Debug|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.ActiveCfg = Release|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.Build.0 = Release|Win32
- {5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.ActiveCfg = Debug|Win32
- {5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.Build.0 = Debug|Win32
- {5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.ActiveCfg = Release|Win32
- {5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.Build.0 = Release|Win32
- {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.ActiveCfg = Debug|Win32
- {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.Build.0 = Debug|Win32
- {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.ActiveCfg = Release|Win32
- {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.Build.0 = Release|Win32
- {4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.ActiveCfg = Debug|Win32
- {4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.Build.0 = Debug|Win32
- {4E887AC3-F8EA-6923-A744-C264A398C913}.Release.ActiveCfg = Release|Win32
- {4E887AC3-F8EA-6923-A744-C264A398C913}.Release.Build.0 = Release|Win32
- {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.ActiveCfg = Debug|Win32
- {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.Build.0 = Debug|Win32
- {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.ActiveCfg = Release|Win32
- {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.Build.0 = Release|Win32
- {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.ActiveCfg = Debug|Win32
- {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.Build.0 = Debug|Win32
- {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Release.ActiveCfg = Release|Win32
- {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Release.Build.0 = Release|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.ActiveCfg = Debug|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.Build.0 = Debug|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.ActiveCfg = Release|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.Build.0 = Release|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.ActiveCfg = Debug|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.Build.0 = Debug|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.ActiveCfg = Release|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.Build.0 = Release|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
- {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Debug.ActiveCfg = Debug|Win32
- {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Debug.Build.0 = Debug|Win32
- {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Release.ActiveCfg = Release|Win32
- {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Release.Build.0 = Release|Win32
- {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Debug.ActiveCfg = Debug|Win32
- {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Debug.Build.0 = Debug|Win32
- {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Release.ActiveCfg = Release|Win32
- {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Release.Build.0 = Release|Win32
- {9C185DF3-B75F-1928-8F6D-735108AABE62}.Debug.ActiveCfg = Debug|Win32
- {9C185DF3-B75F-1928-8F6D-735108AABE62}.Debug.Build.0 = Debug|Win32
- {9C185DF3-B75F-1928-8F6D-735108AABE62}.Release.ActiveCfg = Release|Win32
- {9C185DF3-B75F-1928-8F6D-735108AABE62}.Release.Build.0 = Release|Win32
- {918C5DF3-1928-B73F-F626-7358518CBE62}.Debug.ActiveCfg = Debug|Win32
- {918C5DF3-1928-B73F-F626-7358518CBE62}.Debug.Build.0 = Debug|Win32
- {918C5DF3-1928-B73F-F626-7358518CBE62}.Release.ActiveCfg = Release|Win32
- {918C5DF3-1928-B73F-F626-7358518CBE62}.Release.Build.0 = Release|Win32
- {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Debug.ActiveCfg = Debug|Win32
- {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Debug.Build.0 = Debug|Win32
- {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Release.ActiveCfg = Release|Win32
- {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Release.Build.0 = Release|Win32
- {9285DFD3-1928-F662-CB73-73518CB53A62}.Debug.ActiveCfg = Debug|Win32
- {9285DFD3-1928-F662-CB73-73518CB53A62}.Debug.Build.0 = Debug|Win32
- {9285DFD3-1928-F662-CB73-73518CB53A62}.Release.ActiveCfg = Release|Win32
- {9285DFD3-1928-F662-CB73-73518CB53A62}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Release.Build.0 = Release|Win32
- {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Debug.ActiveCfg = Debug|Win32
- {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Debug.Build.0 = Debug|Win32
- {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Release.ActiveCfg = Release|Win32
- {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Release.Build.0 = Release|Win32
- {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Debug.ActiveCfg = Debug|Win32
- {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Debug.Build.0 = Debug|Win32
- {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Release.ActiveCfg = Release|Win32
- {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Release.Build.0 = Release|Win32
- {571C3483-87C7-6921-1238-B086B3E766C9}.Debug.ActiveCfg = Debug|Win32
- {571C3483-87C7-6921-1238-B086B3E766C9}.Debug.Build.0 = Debug|Win32
- {571C3483-87C7-6921-1238-B086B3E766C9}.Release.ActiveCfg = Release|Win32
- {571C3483-87C7-6921-1238-B086B3E766C9}.Release.Build.0 = Release|Win32
- {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Debug.ActiveCfg = Debug|Win32
- {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Debug.Build.0 = Debug|Win32
- {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Release.ActiveCfg = Release|Win32
- {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Release.Build.0 = Release|Win32
- {5183C8CE-F2E1-3620-237A-B765C9896390}.Debug.ActiveCfg = Debug|Win32
- {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
- {5C1B8183-0296-4F83-1F22-001005220544}.Debug.ActiveCfg = Debug|Win32
- {5C1B8183-0296-4F83-1F22-001005220544}.Debug.Build.0 = Debug|Win32
- {5C1B8183-0296-4F83-1F22-001005220544}.Release.ActiveCfg = Release|Win32
- {5C1B8183-0296-4F83-1F22-001005220544}.Release.Build.0 = Release|Win32
- {58C1FE83-2906-E643-2F12-024410052254}.Debug.ActiveCfg = Debug|Win32
- {58C1FE83-2906-E643-2F12-024410052254}.Debug.Build.0 = Debug|Win32
- {58C1FE83-2906-E643-2F12-024410052254}.Release.ActiveCfg = Release|Win32
- {58C1FE83-2906-E643-2F12-024410052254}.Release.Build.0 = Release|Win32
- {58C1B183-9026-4E63-12F2-005412200054}.Debug.ActiveCfg = Debug|Win32
- {58C1B183-9026-4E63-12F2-005412200054}.Debug.Build.0 = Debug|Win32
- {58C1B183-9026-4E63-12F2-005412200054}.Release.ActiveCfg = Release|Win32
- {58C1B183-9026-4E63-12F2-005412200054}.Release.Build.0 = Release|Win32
                 {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.ActiveCfg = Debug|Win32
                 {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.Build.0 = Debug|Win32
                 {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.ActiveCfg = Release|Win32
                 {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.Build.0 = Release|Win32
- {58C1B183-9026-4E63-12F2-005202441254}.Debug.ActiveCfg = Debug|Win32
- {58C1B183-9026-4E63-12F2-005202441254}.Debug.Build.0 = Debug|Win32
- {58C1B183-9026-4E63-12F2-005202441254}.Release.ActiveCfg = Release|Win32
- {58C1B183-9026-4E63-12F2-005202441254}.Release.Build.0 = Release|Win32
- {5CB81183-29FB-F843-24FF-022050100544}.Debug.ActiveCfg = Debug|Win32
- {5CB81183-29FB-F843-24FF-022050100544}.Debug.Build.0 = Debug|Win32
- {5CB81183-29FB-F843-24FF-022050100544}.Release.ActiveCfg = Release|Win32
- {5CB81183-29FB-F843-24FF-022050100544}.Release.Build.0 = Release|Win32
- {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.ActiveCfg = Debug|Win32
- {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.Build.0 = Debug|Win32
- {58FBE8C3-9026-FAB2-E643-000522441254}.Release.ActiveCfg = Release|Win32
- {58FBE8C3-9026-FAB2-E643-000522441254}.Release.Build.0 = Release|Win32
- {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.ActiveCfg = Debug|Win32
- {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.Build.0 = Debug|Win32
- {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.ActiveCfg = Release|Win32
- {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.Build.0 = Release|Win32
- {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.ActiveCfg = Debug|Win32
- {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.Build.0 = Debug|Win32
- {5C1B1043-1EFF-2793-4E63-245241283054}.Release.ActiveCfg = Release|Win32
- {5C1B1043-1EFF-2793-4E63-245241283054}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.ActiveCfg = Debug|Win32
- {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
- {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
- {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
- {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.ActiveCfg = Debug|Win32
- {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.Build.0 = Debug|Win32
- {51B189C3-4E63-9026-12F2-12200AF54054}.Release.ActiveCfg = Release|Win32
- {51B189C3-4E63-9026-12F2-12200AF54054}.Release.Build.0 = Release|Win32
- {5C1B1813-12C2-0296-4E63-244549126520}.Debug.ActiveCfg = Debug|Win32
- {5C1B1813-12C2-0296-4E63-244549126520}.Debug.Build.0 = Debug|Win32
- {5C1B1813-12C2-0296-4E63-244549126520}.Release.ActiveCfg = Release|Win32
- {5C1B1813-12C2-0296-4E63-244549126520}.Release.Build.0 = Release|Win32
- {58C1B183-0296-EA42-EF04-005120054104}.Debug.ActiveCfg = Debug|Win32
- {58C1B183-0296-EA42-EF04-005120054104}.Debug.Build.0 = Debug|Win32
- {58C1B183-0296-EA42-EF04-005120054104}.Release.ActiveCfg = Release|Win32
- {58C1B183-0296-EA42-EF04-005120054104}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.Build.0 = Release|Win32
- {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.Build.0 = Debug|Win32
- {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.ActiveCfg = Release|Win32
- {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.Build.0 = Release|Win32
- {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.ActiveCfg = Debug|Win32
- {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.Build.0 = Debug|Win32
- {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.ActiveCfg = Release|Win32
- {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.Build.0 = Release|Win32
- {58C181B3-9516-463E-2F12-122155400054}.Debug.ActiveCfg = Debug|Win32
- {58C181B3-9516-463E-2F12-122155400054}.Debug.Build.0 = Debug|Win32
- {58C181B3-9516-463E-2F12-122155400054}.Release.ActiveCfg = Release|Win32
- {58C181B3-9516-463E-2F12-122155400054}.Release.Build.0 = Release|Win32
- {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.ActiveCfg = Debug|Win32
- {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.Build.0 = Debug|Win32
- {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.ActiveCfg = Release|Win32
- {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.Build.0 = Release|Win32
                 {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.ActiveCfg = Debug|Win32
                 {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.Build.0 = Debug|Win32
                 {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.ActiveCfg = Release|Win32
@@ -743,14 +799,18 @@
                 {5371C383-6092-1238-A877-BAEB37867609}.Debug.Build.0 = Debug|Win32
                 {5371C383-6092-1238-A877-BAEB37867609}.Release.ActiveCfg = Release|Win32
                 {5371C383-6092-1238-A877-BAEB37867609}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.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
                 {571C3383-6092-A877-1238-B3786BAE7605}.Release.Build.0 = Release|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Debug.ActiveCfg = Debug|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Debug.Build.0 = Debug|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Release.ActiveCfg = Release|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Release.Build.0 = Release|Win32
                 {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.ActiveCfg = Debug|Win32
                 {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.Build.0 = Debug|Win32
                 {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.ActiveCfg = Release|Win32
@@ -759,62 +819,122 @@
                 {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.ActiveCfg = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.Build.0 = Release|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.Build.0 = Release|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Debug.ActiveCfg = Debug|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Debug.Build.0 = Debug|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Release.ActiveCfg = Release|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Release.Build.0 = Release|Win32
+ {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Debug.ActiveCfg = Debug|Win32
+ {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Debug.Build.0 = Debug|Win32
+ {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Release.ActiveCfg = Release|Win32
+ {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Release.Build.0 = Release|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.ActiveCfg = Debug|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.Build.0 = Debug|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Release.ActiveCfg = Release|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Release.Build.0 = Release|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.Debug.ActiveCfg = Debug|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.Debug.Build.0 = Debug|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.Release.ActiveCfg = Release|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.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
+ {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Release.Build.0 = Release|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Debug.ActiveCfg = Debug|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Debug.Build.0 = Debug|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Release.ActiveCfg = Release|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.Build.0 = Release|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Debug.ActiveCfg = Debug|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Debug.Build.0 = Debug|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Release.ActiveCfg = Release|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.Build.0 = Release|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Debug.ActiveCfg = Debug|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Debug.Build.0 = Debug|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Release.ActiveCfg = Release|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Release.Build.0 = Release|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Debug.ActiveCfg = Debug|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Debug.Build.0 = Debug|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Release.ActiveCfg = Release|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Release.Build.0 = Release|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Debug.ActiveCfg = Debug|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Debug.Build.0 = Debug|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Release.ActiveCfg = Release|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Release.Build.0 = Release|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.Debug.ActiveCfg = Debug|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.Debug.Build.0 = Debug|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.Release.ActiveCfg = Release|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.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
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Debug.ActiveCfg = Debug|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Debug.Build.0 = Debug|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Release.ActiveCfg = Release|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Release.Build.0 = Release|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.ActiveCfg = Debug|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.Build.0 = Debug|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.ActiveCfg = Release|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.Build.0 = Release|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Debug.ActiveCfg = Debug|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Debug.Build.0 = Debug|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Release.ActiveCfg = Release|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Release.Build.0 = Release|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Debug.ActiveCfg = Debug|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Debug.Build.0 = Debug|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Release.ActiveCfg = Release|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Release.Build.0 = Release|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Debug.ActiveCfg = Debug|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Debug.Build.0 = Debug|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Release.ActiveCfg = Release|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.Build.0 = Release|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Debug.ActiveCfg = Debug|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Debug.Build.0 = Debug|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Release.ActiveCfg = Release|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Release.Build.0 = Release|Win32
                 {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
                 {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
                 {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
                 {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
- {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.ActiveCfg = Debug|Win32
- {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.Build.0 = Debug|Win32
- {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.ActiveCfg = Release|Win32
- {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.Build.0 = Release|Win32
- {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.ActiveCfg = Debug|Win32
- {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
- {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.ActiveCfg = Debug|Win32
- {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.Build.0 = Debug|Win32
- {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.ActiveCfg = Release|Win32
- {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.Build.0 = Release|Win32
- {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.ActiveCfg = Debug|Win32
- {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.Build.0 = Debug|Win32
- {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.ActiveCfg = Release|Win32
- {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.Build.0 = Release|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Debug.ActiveCfg = Debug|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Debug.Build.0 = Debug|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Release.ActiveCfg = Release|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Release.Build.0 = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
                 {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.Build.0 = Release|Win32
- {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Debug.Build.0 = Debug|Win32
- {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Release.ActiveCfg = Release|Win32
- {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Release.Build.0 = Release|Win32
- {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Debug.Build.0 = Debug|Win32
- {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Release.ActiveCfg = Release|Win32
- {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Release.Build.0 = Release|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.ActiveCfg = Debug|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.Build.0 = Debug|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.ActiveCfg = Release|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.Build.0 = Release|Win32
- {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Debug.ActiveCfg = Debug|Win32
- {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Debug.Build.0 = Debug|Win32
- {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Release.ActiveCfg = Release|Win32
- {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Release.Build.0 = Release|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.ActiveCfg = Debug|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.Build.0 = Debug|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.ActiveCfg = Release|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.Build.0 = Release|Win32
- {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Debug.ActiveCfg = Debug|Win32
- {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Debug.Build.0 = Debug|Win32
- {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Release.ActiveCfg = Release|Win32
- {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Release.Build.0 = Release|Win32
- {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Debug.ActiveCfg = Debug|Win32
- {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Debug.Build.0 = Debug|Win32
- {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Release.ActiveCfg = Release|Win32
- {58CA17C5-A74F-9602-48FE-B06310DA7FA6}.Release.Build.0 = Release|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.ActiveCfg = Debug|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.Build.0 = Debug|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.ActiveCfg = Release|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A27}.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-BA0D3A792606}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.Build.0 = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
+ {E35C288C-F48E-6914-4FA7-5BA006383C10}.Debug.ActiveCfg = Debug|Win32
+ {E35C288C-F48E-6914-4FA7-5BA006383C10}.Debug.Build.0 = Debug|Win32
+ {E35C288C-F48E-6914-4FA7-5BA006383C10}.Release.ActiveCfg = Release|Win32
+ {E35C288C-F48E-6914-4FA7-5BA006383C10}.Release.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(ExtensibilityGlobals) = postSolution
         EndGlobalSection

Added: trunk/libs/interprocess/proj/vc7ide/Interprocess_backup.sln
==============================================================================
--- (empty file)
+++ trunk/libs/interprocess/proj/vc7ide/Interprocess_backup.sln 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,943 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_interprocesslib", "interprocesslib.vcproj", "{FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "allocexcept_test", "allocexcept_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792662}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "anonymous_shared_memory_test", "anonymous_shared_memory_test.vcproj", "{58DE8A13-4FA7-6252-36FE-B3A0A6D92812}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bufferstream_test", "bufferstream_test.vcproj", "{58C183CE-6203-FE12-A237-BA8976695960}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cached_node_allocator_test", "cached_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792659}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "condition_test", "condition_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792658}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "data_test", "data_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792657}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionA", "doc_anonymous_conditionA.vcproj", "{5C1B8183-0296-4F83-1F22-001005220544}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionB", "doc_anonymous_conditionB.vcproj", "{58C1FE83-2906-E643-2F12-024410052254}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexA", "doc_anonymous_mutexA.vcproj", "{58C1B183-9026-4E63-12F2-005412200054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexB", "doc_anonymous_mutexB.vcproj", "{58C1B183-9026-4E63-12F2-005202441254}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreA", "doc_anonymous_semaphoreA.vcproj", "{5CB81183-29FB-F843-24FF-022050100544}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_shared_memory", "doc_anonymous_shared_memory.vcproj", "{6DE178C3-12FE-6032-4FC7-879B63B9F651}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreB", "doc_anonymous_semaphoreB.vcproj", "{58FBE8C3-9026-FAB2-E643-000522441254}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexA", "doc_anonymous_upgradable_mutexA.vcproj", "{5C18831B-F162-FA96-E6C3-FA5122040054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexB", "doc_anonymous_upgradable_mutexB.vcproj", "{5C1B1043-1EFF-2793-4E63-245241283054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_bufferstream", "doc_bufferstream.vcproj", "{58C1B183-9026-4E12-00F2-001200540054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_complex_map", "doc_complex_map.vcproj", "{5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cont", "doc_cont.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792653}"
+ 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
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_intrusive", "doc_intrusive.vcproj", "{5E18CC83-6092-48FE-A677-B832A0D3A650}"
+ 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_managed_allocation_command", "doc_managed_allocation_command.vcproj", "{5189DEA3-3261-F33E-47ED-83BC69F66061}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_construction_info", "doc_managed_construction_info.vcproj", "{5C82D1D3-3861-3AF1-03EF-89AED4716761}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_copy_on_write", "doc_managed_copy_on_write.vcproj", "{8E0C437E-3613-FD46-F3AE-876A0731CA85}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_grow", "doc_managed_grow.vcproj", "{8418EC1A-5631-1AFE-FE74-8A2E76407A31}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_heap_memory", "doc_managed_heap_memory.vcproj", "{58CCE183-6092-48FE-A4FC-BA0D3A792647}"
+ 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_managed_multiple_allocation", "doc_managed_multiple_allocation.vcproj", "{818C43EE-3561-F3AE-4FD7-8A2076E76A31}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueA", "doc_message_queueA.vcproj", "{51B189C3-4E63-9026-12F2-12200AF54054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueB", "doc_message_queueB.vcproj", "{5C1B1813-12C2-0296-4E63-244549126520}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_move_containers", "doc_move_containers.vcproj", "{58C1B183-0296-EA42-EF04-005120054104}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_multi_index", "doc_multi_index.vcproj", "{918C5DF3-1928-B73F-F626-7358518CBE62}"
+ 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_named_mutex", "doc_named_mutex.vcproj", "{58C181B3-9516-463E-2F12-122155400054}"
+ 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
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_scoped_ptr", "doc_scoped_ptr.vcproj", "{58CC8E13-0962-8F4E-77A6-BD3A6832A042}"
+ 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}") = "doc_shared_ptr", "doc_shared_ptr.vcproj", "{51CE89A3-6092-F4EA-48A7-B4B9AC326093}"
+ 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_unique_ptr", "doc_unique_ptr.vcproj", "{589C2EB3-8A57-1862-F4EA-A6B14C7329A3}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_vectorstream", "doc_vectorstream.vcproj", "{58C1B183-9260-4E8F-F200-000000000041}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_where_allocate", "doc_where_allocate.vcproj", "{58CCE183-6092-48FE-A677-BA0D3A832640}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_windows_shared_memory", "doc_windows_shared_memory.vcproj", "{5E17C9C3-1362-2E1E-C84F-8A76B6739F21}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_xsi_shared_memory", "doc_xsi_shared_memory.vcproj", "{8C5CE183-0326-47FC-12FE-8B6F7963A071}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "enable_shared_from_this_test", "enable_shared_from_this_test.vcproj", "{571C3483-87C7-6921-1238-B086B3E766C9}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_lock_test", "file_lock_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792639}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_mapping_test", "file_mapping_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792638}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_map_index_allocation_test", "flat_map_index_allocation_test.vcproj", "{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intermodule_singleton_test", "intermodule_singleton_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intersegment_ptr_test", "intersegment_ptr_test.vcproj", "{5E81CD01-4FA2-2A96-84FE-DA631CA20962}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intrusive_ptr_test", "intrusive_ptr_test.vcproj", "{5821C383-6092-12FE-A877-BA0D33467633}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iset_index_allocation_test", "iset_index_allocation_test.vcproj", "{58BD1CC3-6972-F3F7-84BE-0DB736035922}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_mapped_file_test", "managed_mapped_file_test.vcproj", "{5CCE1883-0926-F7A4-8FE4-BA0606D92331}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iunordered_set_index_allocation_test", "iunordered_set_index_allocation_test.vcproj", "{5BD1C7C3-3F7F-6972-84BE-B731D9236035}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list_test", "list_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_shared_memory_test", "managed_shared_memory.vcproj", "{58DF28E3-0926-F47A-E28A-B03A4D619631}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_xsi_shared_memory_test", "managed_xsi_shared_memory.vcproj", "{58DF28E3-0926-F47A-E28A-B03A4D619631}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map_index_allocation_test", "map_index_allocation_test.vcproj", "{588CCD13-2962-83FE-F4B7-92230DB73629}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapped_file_test", "mapped_file_test.vcproj", "{5C6D9CE1-2609-F7A4-8FE4-BA0883602330}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "memory_algorithm_test", "memory_algorithm_test.vcproj", "{58E18CC3-6092-8F4E-A3E7-A792230D3629}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "message_queue_test", "message_queue.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792628}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_index_test", "multi_index_test.vcproj", "{9285DFD3-1928-F662-CB73-73518CB53A62}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mutex_test", "mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A27}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mutex_timeout_test", "mutex_timeout_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A27}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_condition_test", "named_condition_test.vcproj", "{58CC2563-6092-48FE-FAF7-BA046A792658}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_construct_test", "named_construct_test.vcproj", "{5183C8CE-F2E1-3620-237A-B765C9896390}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_mutex_test", "named_mutex_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792625}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_recursive_mutex_test", "named_recursive_mutex_test.vcproj", "{5C83CE18-4F48-A7FE-6092-B7920AD3A624}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_semaphore_test", "named_semaphore_test.vcproj", "{58CCE283-1609-48FE-A4F7-BA0D3A793523}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_upgradable_mutex_test", "named_upgradable_mutex.vcproj", "{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_allocator_test", "node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792622}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_pool_test", "node_pool_test.vcproj", "{8A519DC3-6092-A4FE-F748-BA91328D6522}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "null_index_test", "null_index_test.vcproj", "{0000058C-0000-0000-0000-000000000021}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "private_node_allocator_test", "private_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792620}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_mutex_test", "recursive_mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A14}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "robust_emulation_test", "robust_emulation_test.vcproj", "{58CCE183-4AFE-6092-C4F5-BA0D3A692628}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "robust_recursive_emulation_test", "robust_recursive_emulation_test.vcproj", "{58CCE183-4AFE-C4F5-6292-B25062C3A898}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "semaphore_test", "semaphore_test.vcproj", "{5CE28C83-48FE-1676-4FA7-B50D3A76A013}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_mapping_test", "shared_memory_mappable_test.vcproj", "{5CE18C83-6025-36FE-A4F7-BA09176D3A11}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_test", "shared_memory_test.vcproj", "{5E2838CC-0916-8F4E-A4F7-93506BA0D310}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_ptr_test", "shared_ptr_test.vcproj", "{5371C383-6092-1238-A877-BAEB37867609}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string_test", "string_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D4A792607}"
+ 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
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unordered_test", "unordered_test.vcproj", "{C3CE1183-09F2-A46A-4FE6-D06BA7923A02}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upgradable_mutex_test", "upgradable_mutex.vcproj", "{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "user_buffer_test", "user_buffer_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792603}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vectorstream_test", "vectorstream_test.vcproj", "{58CCE183-6032-12FE-A4F7-BA893A767601}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windows_shared_memory_mapping_test", "windows_shared_memory_mapping_test.vcproj", "{518CE8C3-6512-FA75-46EF-B917A3A116D1}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xsi_shared_memory_mapping_test", "xsi_shared_memory_mapping_test.vcproj", "{518CE8C3-5DA7-6256-46EF-97A116702AD1}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_ptr_explicit", "doc_shared_ptr_explicit.vcproj", "{4E887AC3-F8EA-6923-A744-C264A398C913}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_unordered_map", "doc_unordered_map.vcproj", "{9C185DF3-B75F-1928-8F6D-735108AABE62}"
+ 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
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adaptive_pool_test", "adaptive_pool_test.vcproj", "{58CE1D84-1962-4FE9-BA0D-A4F7973A4652}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "barrier_test", "barrier_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792661}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cached_adaptive_pool_test", "cached_adaptive_pool_test.vcproj", "{5188E3CE-2964-F43E-FB87-B037AC692D59}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deque_test", "deque_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792655}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_adaptive_pool", "doc_adaptive_pool.vcproj", "{57C832B1-17D2-9537-FA12-827220448554}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_allocator", "doc_allocator.vcproj", "{581B1C83-4E12-9526-020F-012482540054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cached_adaptive_pool", "doc_cached_adaptive_pool.vcproj", "{536C8251-7E12-9537-A1E2-822073258554}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cached_node_allocator", "doc_cached_node_allocator.vcproj", "{283AD375-7D12-5866-23BF-854308651275}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_aligned_allocation", "doc_managed_aligned_allocation.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_raw_allocation", "doc_managed_raw_allocation.vcproj", "{5198EFC3-2731-F34E-4FD8-1859AC94F761}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_map", "doc_map.vcproj", "{59CEC183-8192-8F6D-4FB7-BA260A79D352}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_node_allocator", "doc_node_allocator.vcproj", "{51B17C83-E172-5396-0FA2-825472008554}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_private_adaptive_pool", "doc_private_adaptive_pool.vcproj", "{83258CB1-127E-9375-F872-8324A1054454}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_private_node_allocator", "doc_private_node_allocator.vcproj", "{2B75C833-17D2-4956-A23F-820854254175}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_tree_test", "flat_tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792637}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_windows_shared_memory_test", "managed_windows_shared_memory.vcproj", "{5D18CE83-1926-7AE4-FE94-B606D9B23131}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "offset_ptr_test", "offset_ptr_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "private_adaptive_pool_test", "private_adaptive_pool_test.vcproj", "{5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist_test", "slist_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
+ 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}") = "tree_test", "tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792606}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vector_test", "vector_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windows_shared_memory_test", "windows_shared_memory_test.vcproj", "{E35C288C-F48E-6914-4FA7-5BA006383C10}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Debug.ActiveCfg = Debug|Win32
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Debug.Build.0 = Debug|Win32
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Release.ActiveCfg = Release|Win32
+ {FF56BAF1-32EC-4B22-B6BD-95A3A67C3135}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.Build.0 = Release|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Debug.ActiveCfg = Debug|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Debug.Build.0 = Debug|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Release.ActiveCfg = Release|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Release.Build.0 = Release|Win32
+ {58C183CE-6203-FE12-A237-BA8976695960}.Debug.ActiveCfg = Debug|Win32
+ {58C183CE-6203-FE12-A237-BA8976695960}.Debug.Build.0 = Debug|Win32
+ {58C183CE-6203-FE12-A237-BA8976695960}.Release.ActiveCfg = Release|Win32
+ {58C183CE-6203-FE12-A237-BA8976695960}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Release.Build.0 = Release|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Debug.ActiveCfg = Debug|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Debug.Build.0 = Debug|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Release.ActiveCfg = Release|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Release.Build.0 = Release|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Debug.ActiveCfg = Debug|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Debug.Build.0 = Debug|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Release.ActiveCfg = Release|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Release.Build.0 = Release|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Debug.Build.0 = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Release.ActiveCfg = Release|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Release.Build.0 = Release|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Debug.Build.0 = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Release.ActiveCfg = Release|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Release.Build.0 = Release|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Debug.ActiveCfg = Debug|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Debug.Build.0 = Debug|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Release.ActiveCfg = Release|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Release.Build.0 = Release|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Debug.ActiveCfg = Debug|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Debug.Build.0 = Debug|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Release.ActiveCfg = Release|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Release.Build.0 = Release|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.ActiveCfg = Debug|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.Build.0 = Debug|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Release.ActiveCfg = Release|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Release.Build.0 = Release|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.ActiveCfg = Debug|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.Build.0 = Debug|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.ActiveCfg = Release|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.Build.0 = Release|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.ActiveCfg = Debug|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.Build.0 = Debug|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Release.ActiveCfg = Release|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Release.Build.0 = Release|Win32
+ {58C1B183-9026-4E12-00F2-001200540054}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-9026-4E12-00F2-001200540054}.Debug.Build.0 = Debug|Win32
+ {58C1B183-9026-4E12-00F2-001200540054}.Release.ActiveCfg = Release|Win32
+ {58C1B183-9026-4E12-00F2-001200540054}.Release.Build.0 = Release|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Debug.ActiveCfg = Debug|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Debug.Build.0 = Debug|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Release.ActiveCfg = Release|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.ActiveCfg = Debug|Win32
+ {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
+ {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
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
+ {5E18CC83-6092-48FE-A677-B832A0D3A650}.Debug.ActiveCfg = Debug|Win32
+ {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
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.ActiveCfg = Debug|Win32
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.Build.0 = Debug|Win32
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.ActiveCfg = Release|Win32
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.Build.0 = Release|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.ActiveCfg = Debug|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.Build.0 = Debug|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.ActiveCfg = Release|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.Build.0 = Release|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Debug.ActiveCfg = Debug|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Debug.Build.0 = Debug|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Release.ActiveCfg = Release|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Release.Build.0 = Release|Win32
+ {8418EC1A-5631-1AFE-FE74-8A2E76407A31}.Debug.ActiveCfg = Debug|Win32
+ {8418EC1A-5631-1AFE-FE74-8A2E76407A31}.Debug.Build.0 = Debug|Win32
+ {8418EC1A-5631-1AFE-FE74-8A2E76407A31}.Release.ActiveCfg = Release|Win32
+ {8418EC1A-5631-1AFE-FE74-8A2E76407A31}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.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
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.ActiveCfg = Debug|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.Build.0 = Debug|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.ActiveCfg = Release|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.Build.0 = Release|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.ActiveCfg = Debug|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.Build.0 = Debug|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Release.ActiveCfg = Release|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Release.Build.0 = Release|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Debug.ActiveCfg = Debug|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Debug.Build.0 = Debug|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Release.ActiveCfg = Release|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Release.Build.0 = Release|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Debug.Build.0 = Debug|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Release.ActiveCfg = Release|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Release.Build.0 = Release|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.Debug.ActiveCfg = Debug|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.Debug.Build.0 = Debug|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.Release.ActiveCfg = Release|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.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
+ {58C181B3-9516-463E-2F12-122155400054}.Debug.ActiveCfg = Debug|Win32
+ {58C181B3-9516-463E-2F12-122155400054}.Debug.Build.0 = Debug|Win32
+ {58C181B3-9516-463E-2F12-122155400054}.Release.ActiveCfg = Release|Win32
+ {58C181B3-9516-463E-2F12-122155400054}.Release.Build.0 = Release|Win32
+ {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
+ {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Release.Build.0 = Release|Win32
+ {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Debug.ActiveCfg = Debug|Win32
+ {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Debug.Build.0 = Debug|Win32
+ {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Release.ActiveCfg = Release|Win32
+ {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.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
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.ActiveCfg = Debug|Win32
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.Build.0 = Debug|Win32
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Release.ActiveCfg = Release|Win32
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.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
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.ActiveCfg = Debug|Win32
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.Build.0 = Debug|Win32
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.ActiveCfg = Release|Win32
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.Build.0 = Release|Win32
+ {58C1B183-9260-4E8F-F200-000000000041}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-9260-4E8F-F200-000000000041}.Debug.Build.0 = Debug|Win32
+ {58C1B183-9260-4E8F-F200-000000000041}.Release.ActiveCfg = Release|Win32
+ {58C1B183-9260-4E8F-F200-000000000041}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A677-BA0D3A832640}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A677-BA0D3A832640}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A677-BA0D3A832640}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A677-BA0D3A832640}.Release.Build.0 = Release|Win32
+ {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Debug.ActiveCfg = Debug|Win32
+ {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
+ {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Debug.ActiveCfg = Debug|Win32
+ {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Debug.Build.0 = Debug|Win32
+ {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Release.ActiveCfg = Release|Win32
+ {8C5CE183-0326-47FC-12FE-8B6F7963A071}.Release.Build.0 = Release|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Debug.ActiveCfg = Debug|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Debug.Build.0 = Debug|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Release.ActiveCfg = Release|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Release.Build.0 = Release|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.ActiveCfg = Debug|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.Build.0 = Debug|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.ActiveCfg = Release|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.Build.0 = Release|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Debug.ActiveCfg = Debug|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Debug.Build.0 = Debug|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Release.ActiveCfg = Release|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Release.Build.0 = Release|Win32
+ {5821C383-6092-12FE-A877-BA0D33467633}.Debug.ActiveCfg = Debug|Win32
+ {5821C383-6092-12FE-A877-BA0D33467633}.Debug.Build.0 = Debug|Win32
+ {5821C383-6092-12FE-A877-BA0D33467633}.Release.ActiveCfg = Release|Win32
+ {5821C383-6092-12FE-A877-BA0D33467633}.Release.Build.0 = Release|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.ActiveCfg = Debug|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.Build.0 = Debug|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.ActiveCfg = Release|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.Build.0 = Release|Win32
+ {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Debug.ActiveCfg = Debug|Win32
+ {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Debug.Build.0 = Debug|Win32
+ {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Release.ActiveCfg = Release|Win32
+ {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Release.Build.0 = Release|Win32
+ {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.ActiveCfg = Debug|Win32
+ {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
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.Build.0 = Release|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.ActiveCfg = Debug|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.Build.0 = Debug|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.ActiveCfg = Release|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.Build.0 = Release|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.ActiveCfg = Debug|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.Build.0 = Debug|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.ActiveCfg = Release|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.Build.0 = Release|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.ActiveCfg = Debug|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.Build.0 = Debug|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.ActiveCfg = Release|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.Build.0 = Release|Win32
+ {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Debug.ActiveCfg = Debug|Win32
+ {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Debug.Build.0 = Debug|Win32
+ {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Release.ActiveCfg = Release|Win32
+ {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Release.Build.0 = Release|Win32
+ {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Debug.ActiveCfg = Debug|Win32
+ {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Debug.Build.0 = Debug|Win32
+ {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Release.ActiveCfg = Release|Win32
+ {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Release.Build.0 = Release|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Debug.ActiveCfg = Debug|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Debug.Build.0 = Debug|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Release.ActiveCfg = Release|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Release.Build.0 = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.ActiveCfg = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.Build.0 = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.ActiveCfg = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.Build.0 = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.ActiveCfg = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.Build.0 = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.ActiveCfg = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.Build.0 = Release|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.ActiveCfg = Debug|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.Build.0 = Debug|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.ActiveCfg = Release|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.Build.0 = Release|Win32
+ {5183C8CE-F2E1-3620-237A-B765C9896390}.Debug.ActiveCfg = Debug|Win32
+ {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
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.Build.0 = Release|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.ActiveCfg = Debug|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.Build.0 = Debug|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.ActiveCfg = Release|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.Build.0 = Release|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.ActiveCfg = Debug|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.Build.0 = Debug|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.ActiveCfg = Release|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.Build.0 = Release|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.ActiveCfg = Debug|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.Build.0 = Debug|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.ActiveCfg = Release|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.Build.0 = Release|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.ActiveCfg = Debug|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.Build.0 = Debug|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.ActiveCfg = Release|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.Build.0 = Release|Win32
+ {0000058C-0000-0000-0000-000000000021}.Debug.ActiveCfg = Debug|Win32
+ {0000058C-0000-0000-0000-000000000021}.Debug.Build.0 = Debug|Win32
+ {0000058C-0000-0000-0000-000000000021}.Release.ActiveCfg = Release|Win32
+ {0000058C-0000-0000-0000-000000000021}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.Build.0 = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.ActiveCfg = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.Build.0 = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.ActiveCfg = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.Build.0 = Release|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Debug.Build.0 = Debug|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Release.ActiveCfg = Release|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Release.Build.0 = Release|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Debug.Build.0 = Debug|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Release.ActiveCfg = Release|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Release.Build.0 = Release|Win32
+ {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.ActiveCfg = Debug|Win32
+ {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.Build.0 = Debug|Win32
+ {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Release.ActiveCfg = Release|Win32
+ {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Release.Build.0 = Release|Win32
+ {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.ActiveCfg = Debug|Win32
+ {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.Build.0 = Debug|Win32
+ {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.ActiveCfg = Release|Win32
+ {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.Build.0 = Release|Win32
+ {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.ActiveCfg = Debug|Win32
+ {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.Build.0 = Debug|Win32
+ {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.ActiveCfg = Release|Win32
+ {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.Build.0 = Release|Win32
+ {5371C383-6092-1238-A877-BAEB37867609}.Debug.ActiveCfg = Debug|Win32
+ {5371C383-6092-1238-A877-BAEB37867609}.Debug.Build.0 = Debug|Win32
+ {5371C383-6092-1238-A877-BAEB37867609}.Release.ActiveCfg = Release|Win32
+ {5371C383-6092-1238-A877-BAEB37867609}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.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
+ {571C3383-6092-A877-1238-B3786BAE7605}.Release.Build.0 = Release|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Debug.ActiveCfg = Debug|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Debug.Build.0 = Debug|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Release.ActiveCfg = Release|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Release.Build.0 = Release|Win32
+ {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.ActiveCfg = Debug|Win32
+ {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.Build.0 = Debug|Win32
+ {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.ActiveCfg = Release|Win32
+ {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.Build.0 = Release|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.Build.0 = Release|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Debug.ActiveCfg = Debug|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Debug.Build.0 = Debug|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Release.ActiveCfg = Release|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Release.Build.0 = Release|Win32
+ {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Debug.ActiveCfg = Debug|Win32
+ {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Debug.Build.0 = Debug|Win32
+ {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Release.ActiveCfg = Release|Win32
+ {518CE8C3-5DA7-6256-46EF-97A116702AD1}.Release.Build.0 = Release|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.ActiveCfg = Debug|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.Build.0 = Debug|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Release.ActiveCfg = Release|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Release.Build.0 = Release|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.Debug.ActiveCfg = Debug|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.Debug.Build.0 = Debug|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.Release.ActiveCfg = Release|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.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
+ {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Release.Build.0 = Release|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Debug.ActiveCfg = Debug|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Debug.Build.0 = Debug|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Release.ActiveCfg = Release|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.Build.0 = Release|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Debug.ActiveCfg = Debug|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Debug.Build.0 = Debug|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Release.ActiveCfg = Release|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.Build.0 = Release|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Debug.ActiveCfg = Debug|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Debug.Build.0 = Debug|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Release.ActiveCfg = Release|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Release.Build.0 = Release|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Debug.ActiveCfg = Debug|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Debug.Build.0 = Debug|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Release.ActiveCfg = Release|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Release.Build.0 = Release|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Debug.ActiveCfg = Debug|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Debug.Build.0 = Debug|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Release.ActiveCfg = Release|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Release.Build.0 = Release|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.Debug.ActiveCfg = Debug|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.Debug.Build.0 = Debug|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.Release.ActiveCfg = Release|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.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
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Debug.ActiveCfg = Debug|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Debug.Build.0 = Debug|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Release.ActiveCfg = Release|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Release.Build.0 = Release|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.ActiveCfg = Debug|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.Build.0 = Debug|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.ActiveCfg = Release|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.Build.0 = Release|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Debug.ActiveCfg = Debug|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Debug.Build.0 = Debug|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Release.ActiveCfg = Release|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Release.Build.0 = Release|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Debug.ActiveCfg = Debug|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Debug.Build.0 = Debug|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Release.ActiveCfg = Release|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Release.Build.0 = Release|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Debug.ActiveCfg = Debug|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Debug.Build.0 = Debug|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Release.ActiveCfg = Release|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.Build.0 = Release|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Debug.ActiveCfg = Debug|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Debug.Build.0 = Debug|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Release.ActiveCfg = Release|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Release.Build.0 = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Debug.ActiveCfg = Debug|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Debug.Build.0 = Debug|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Release.ActiveCfg = Release|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.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-BA0D3A792606}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.Build.0 = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
+ {E35C288C-F48E-6914-4FA7-5BA006383C10}.Debug.ActiveCfg = Debug|Win32
+ {E35C288C-F48E-6914-4FA7-5BA006383C10}.Debug.Build.0 = Debug|Win32
+ {E35C288C-F48E-6914-4FA7-5BA006383C10}.Release.ActiveCfg = Release|Win32
+ {E35C288C-F48E-6914-4FA7-5BA006383C10}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal

Deleted: trunk/libs/interprocess/proj/vc7ide/doc_contB.vcproj
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/doc_contB.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
+++ (empty file)
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="doc_contB"
- ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792651}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/doc_contB"
- 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_contB_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_contB.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_contB"
- 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_contB.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\comp_doc_contB.cpp">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Deleted: trunk/libs/interprocess/proj/vc7ide/doc_named_conditionA.vcproj
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/doc_named_conditionA.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
+++ (empty file)
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="doc_named_conditionA"
- ProjectGUID="{58EB1CB3-1354-364E-12F2-154356612054}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/doc_named_conditionA"
- 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_conditionA_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_named_conditionA.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_conditionA"
- 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_conditionA.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="{AB2F71E1-2E95-7FA3-2A10-741FA12A22F2}">
- <File
- RelativePath="..\..\example\comp_doc_named_conditionA.cpp">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Deleted: trunk/libs/interprocess/proj/vc7ide/doc_named_conditionB.vcproj
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/doc_named_conditionB.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
+++ (empty file)
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="doc_named_conditionB"
- ProjectGUID="{58181CB3-5134-634E-12F2-155435622054}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/doc_named_conditionB"
- 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_conditionB_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_named_conditionB.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_conditionB"
- 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_conditionB.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="{AB712FE1-92E5-7543-12A0-74522FFA12A2}">
- <File
- RelativePath="..\..\example\comp_doc_named_conditionB.cpp">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Modified: trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj (original)
+++ trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -192,9 +192,6 @@
                                 RelativePath="..\..\..\..\boost\interprocess\sync\file_lock.hpp">
                         </File>
                         <File
- RelativePath="..\..\..\..\boost\interprocess\sync\interprocess_barrier.hpp">
- </File>
- <File
                                 RelativePath="..\..\..\..\boost\interprocess\sync\interprocess_condition.hpp">
                         </File>
                         <File
@@ -246,19 +243,16 @@
                                 Name="posix"
                                 Filter="">
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\posix\interprocess_barrier.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\posix\condition.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\posix\interprocess_condition.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\posix\mutex.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\posix\interprocess_mutex.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\posix\named_mutex.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\posix\interprocess_recursive_mutex.hpp">
- </File>
- <File
- RelativePath="..\..\..\..\boost\interprocess\sync\posix\interprocess_semaphore.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\posix\named_semaphore.hpp">
                                 </File>
                                 <File
                                         RelativePath="..\..\..\..\boost\interprocess\sync\posix\pthread_helpers.hpp">
@@ -267,29 +261,29 @@
                                         RelativePath="..\..\..\..\boost\interprocess\sync\posix\ptime_to_timespec.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\posix\semaphore_wrapper.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\posix\recursive_mutex.hpp">
                                 </File>
- </Filter>
- <Filter
- Name="emulation"
- Filter="">
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\barrier.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\posix\semaphore.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\condition.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\posix\semaphore_wrapper.hpp">
                                 </File>
+ </Filter>
+ <Filter
+ Name="spin"
+ Filter="">
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\mutex.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\spin\condition.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\named_creation_functor.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\spin\mutex.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\recursive_mutex.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\spin\recursive_mutex.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\semaphore.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\spin\semaphore.hpp">
                                 </File>
                         </Filter>
                         <Filter
@@ -305,6 +299,47 @@
                                         RelativePath="..\..\..\..\boost\interprocess\sync\xsi\xsi_named_mutex.hpp">
                                 </File>
                         </Filter>
+ <Filter
+ Name="windows"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\windows\condition.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\windows\mutex.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\windows\recursive_mutex.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\windows\semaphore.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\windows\sync_utils.hpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="shm"
+ Filter="">
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\shm\named_condition.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\shm\named_creation_functor.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\shm\named_mutex.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\shm\named_recursive_mutex.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\shm\named_semaphore.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\boost\interprocess\sync\shm\named_upgradable_mutex.hpp">
+ </File>
+ </Filter>
                 </Filter>
                 <Filter
                         Name="Memory algorithms"
@@ -346,6 +381,9 @@
                                 RelativePath="..\..\..\..\boost\interprocess\file_mapping.hpp">
                         </File>
                         <File
+ RelativePath="..\..\..\..\boost\interprocess\interprocess_fwd.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\boost\interprocess\managed_external_buffer.hpp">
                         </File>
                         <File
@@ -567,6 +605,9 @@
                                 RelativePath="..\..\test\get_process_id_name.hpp">
                         </File>
                         <File
+ RelativePath="..\..\test\heap_allocator_v1.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\test\Jamfile.v2">
                         </File>
                         <File
@@ -591,10 +632,13 @@
                                 RelativePath="..\..\test\named_creation_template.hpp">
                         </File>
                         <File
+ RelativePath="..\..\test\node_pool_test.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\test\print_container.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\semaphore_test_template.hpp">
+ RelativePath="..\..\test\robust_mutex_test.hpp">
                         </File>
                         <File
                                 RelativePath="..\..\test\set_test.hpp">
@@ -610,31 +654,6 @@
                         </File>
                 </Filter>
                 <Filter
- Name="Proj"
- Filter="">
- <Filter
- Name="linux"
- Filter="">
- <File
- RelativePath="..\linux\MakeAll">
- </File>
- </Filter>
- <Filter
- Name="qnx"
- Filter="">
- <File
- RelativePath="..\qnx\MakeAll">
- </File>
- </Filter>
- <Filter
- Name="mingw"
- Filter="">
- <File
- RelativePath="..\mingw\MakeAll">
- </File>
- </Filter>
- </Filter>
- <Filter
                         Name="Example"
                         Filter="">
                         <File
@@ -1255,9 +1274,6 @@
                         </Filter>
                 </Filter>
                 <File
- RelativePath="..\..\..\..\boost\interprocess\interprocess_fwd.hpp">
- </File>
- <File
                         RelativePath="..\to-do.txt">
                 </File>
         </Files>

Deleted: trunk/libs/interprocess/proj/vc7ide/list_ex.vcproj
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/list_ex.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
+++ (empty file)
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="list_test"
- ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/list_ex"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- GeneratePreprocessedFile="0"
- KeepComments="FALSE"
- 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)/list_ex_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/list_ex.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/list_ex"
- 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)/list_ex.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="..\..\test\list_test.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>

Added: trunk/libs/interprocess/proj/vc7ide/list_test.vcproj
==============================================================================
--- (empty file)
+++ trunk/libs/interprocess/proj/vc7ide/list_test.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="list_test"
+ ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="../../Bin/Win32/Debug"
+ IntermediateDirectory="Debug/list_ex"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
+ GeneratePreprocessedFile="0"
+ KeepComments="FALSE"
+ 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)/list_ex_d.exe"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="../../../../stage/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/list_ex.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/list_ex"
+ 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)/list_ex.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="..\..\test\list_test.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: trunk/libs/interprocess/proj/vc7ide/pair_test.vcproj
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/pair_test.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
+++ (empty file)
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="pair_test"
- ProjectGUID="{58CA17C5-A74F-9602-48FE-B06310DA7FA6}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/pair_test"
- 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)/pair_test_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/pair_test.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/pair_test"
- 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)/pair_test.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-A8E6-2A3E52EBA2FF}">
- <File
- RelativePath="..\..\test\pair_test.cpp">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Modified: trunk/libs/interprocess/test/adaptive_pool_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/adaptive_pool_test.cpp (original)
+++ trunk/libs/interprocess/test/adaptive_pool_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -29,12 +29,20 @@
 typedef ipcdetail::adaptive_pool_v1
    <int, managed_shared_memory::segment_manager> shmem_node_allocator_v1_t;
 
+namespace boost {
+namespace interprocess {
+
 //Explicit instantiations to catch compilation errors
 template class adaptive_pool<int, managed_shared_memory::segment_manager>;
-template class ipcdetail::adaptive_pool_v1<int, managed_shared_memory::segment_manager>;
 template class adaptive_pool<void, managed_shared_memory::segment_manager>;
+
+namespace ipcdetail {
+
+template class ipcdetail::adaptive_pool_v1<int, managed_shared_memory::segment_manager>;
 template class ipcdetail::adaptive_pool_v1<void, managed_shared_memory::segment_manager>;
 
+}}}
+
 //Alias list types
 typedef list<int, shmem_node_allocator_t> MyShmList;
 typedef list<int, shmem_node_allocator_v1_t> MyShmListV1;

Modified: trunk/libs/interprocess/test/allocator_v1.hpp
==============================================================================
--- trunk/libs/interprocess/test/allocator_v1.hpp (original)
+++ trunk/libs/interprocess/test/allocator_v1.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. 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)
 //
@@ -86,7 +86,7 @@
 
    //!Returns the segment manager. Never throws
    segment_manager* get_segment_manager()const
- { return ipcdetail::get_pointer(mp_mngr); }
+ { return ipcdetail::to_raw_pointer(mp_mngr); }
 /*
    //!Returns address of mutable object. Never throws
    pointer address(reference value) const
@@ -116,12 +116,12 @@
 
    //!Deallocates memory previously allocated. Never throws
    void deallocate(const pointer &ptr, size_type)
- { mp_mngr->deallocate((void*)ipcdetail::get_pointer(ptr)); }
+ { mp_mngr->deallocate((void*)ipcdetail::to_raw_pointer(ptr)); }
 
    //!Construct object, calling constructor.
    //!Throws if T(const T&) throws
    void construct(const pointer &ptr, const_reference value)
- { new((void*)ipcdetail::get_pointer(ptr)) value_type(value); }
+ { new((void*)ipcdetail::to_raw_pointer(ptr)) value_type(value); }
 
    //!Destroys object. Throws if object's destructor throws
    void destroy(const pointer &ptr)

Modified: trunk/libs/interprocess/test/allocexcept_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/allocexcept_test.cpp (original)
+++ trunk/libs/interprocess/test/allocexcept_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/anonymous_shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/anonymous_shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/anonymous_shared_memory_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/boost_interprocess_check.hpp
==============================================================================
--- trunk/libs/interprocess/test/boost_interprocess_check.hpp (original)
+++ trunk/libs/interprocess/test/boost_interprocess_check.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -18,7 +18,7 @@
 namespace boost { namespace interprocess { namespace test {
 
 #define BOOST_INTERPROCES_CHECK( P ) \
- if(!(P)) do{ std::cout << "Failed: " << #P << " file: " << __FILE__ << " line : " << __LINE__ << std::endl; throw boost::interprocess::interprocess_exception(#P);}while(0)
+ if(!(P)) do{ assert(P); std::cout << "Failed: " << #P << " file: " << __FILE__ << " line : " << __LINE__ << std::endl; throw boost::interprocess::interprocess_exception(#P);}while(0)
 
 }}} //namespace boost { namespace interprocess { namespace test {
 

Modified: trunk/libs/interprocess/test/bufferstream_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/bufferstream_test.cpp (original)
+++ trunk/libs/interprocess/test/bufferstream_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -13,7 +13,8 @@
 #include <sstream>
 #include <cstring>
 
-using namespace boost::interprocess;
+namespace boost{
+namespace interprocess{
 
 //Force instantiations to catch compile-time errors
 template class basic_bufferbuf<char>;
@@ -21,6 +22,10 @@
 template class basic_ibufferstream<char>;
 template class basic_obufferstream<char>;
 
+}}
+
+using namespace boost::interprocess;
+
 static int bufferstream_test()
 {
    //Static big enough buffer

Modified: trunk/libs/interprocess/test/cached_adaptive_pool_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/cached_adaptive_pool_test.cpp (original)
+++ trunk/libs/interprocess/test/cached_adaptive_pool_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -31,12 +31,20 @@
    <int, managed_shared_memory::segment_manager>
    cached_node_allocator_v1_t;
 
+namespace boost {
+namespace interprocess {
+
 //Explicit instantiations to catch compilation errors
 template class cached_adaptive_pool<int, managed_shared_memory::segment_manager>;
-template class ipcdetail::cached_adaptive_pool_v1<int, managed_shared_memory::segment_manager>;
 template class cached_adaptive_pool<void, managed_shared_memory::segment_manager>;
+
+namespace ipcdetail {
+
+template class ipcdetail::cached_adaptive_pool_v1<int, managed_shared_memory::segment_manager>;
 template class ipcdetail::cached_adaptive_pool_v1<void, managed_shared_memory::segment_manager>;
 
+}}}
+
 //Alias list types
 typedef list<int, cached_node_allocator_t> MyShmList;
 typedef list<int, cached_node_allocator_v1_t> MyShmListV1;

Modified: trunk/libs/interprocess/test/cached_node_allocator_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/cached_node_allocator_test.cpp (original)
+++ trunk/libs/interprocess/test/cached_node_allocator_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -29,12 +29,20 @@
    <int, managed_shared_memory::segment_manager>
    cached_node_allocator_v1_t;
 
+namespace boost {
+namespace interprocess {
+
 //Explicit instantiations to catch compilation errors
 template class cached_node_allocator<int, managed_shared_memory::segment_manager>;
-template class ipcdetail::cached_node_allocator_v1<int, managed_shared_memory::segment_manager>;
 template class cached_node_allocator<void, managed_shared_memory::segment_manager>;
+
+namespace ipcdetail {
+
+template class ipcdetail::cached_node_allocator_v1<int, managed_shared_memory::segment_manager>;
 template class ipcdetail::cached_node_allocator_v1<void, managed_shared_memory::segment_manager>;
 
+}}}
+
 //Alias list types
 typedef list<int, cached_node_allocator_t> MyShmList;
 typedef list<int, cached_node_allocator_v1_t> MyShmListV1;

Modified: trunk/libs/interprocess/test/condition_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/condition_test.cpp (original)
+++ trunk/libs/interprocess/test/condition_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -9,17 +9,32 @@
 //////////////////////////////////////////////////////////////////////////////
 
 #include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/thread/detail/config.hpp>
+#include <boost/interprocess/detail/workaround.hpp>
 #include <boost/interprocess/sync/interprocess_condition.hpp>
 #include <boost/interprocess/sync/interprocess_mutex.hpp>
 #include "condition_test_template.hpp"
 
+#if defined(BOOST_INTERPROCESS_WINDOWS)
+#include <boost/interprocess/sync/windows/condition.hpp>
+#include <boost/interprocess/sync/windows/mutex.hpp>
+#include <boost/interprocess/sync/spin/condition.hpp>
+#include <boost/interprocess/sync/spin/mutex.hpp>
+#endif
+
 using namespace boost::interprocess;
 
 int main ()
 {
- return test::do_test_condition<interprocess_condition, interprocess_mutex>() ?
- 0 : -1;
+ #if defined(BOOST_INTERPROCESS_WINDOWS)
+ if(!test::do_test_condition<ipcdetail::windows_condition, ipcdetail::windows_mutex>())
+ return 1;
+ if(!test::do_test_condition<ipcdetail::spin_condition, ipcdetail::spin_mutex>())
+ return 1;
+ #endif
+ if(!test::do_test_condition<interprocess_condition, interprocess_mutex>())
+ return 1;
+
+ return 0;
 }
 
 #include <boost/interprocess/detail/config_end.hpp>

Modified: trunk/libs/interprocess/test/condition_test_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/condition_test_template.hpp (original)
+++ trunk/libs/interprocess/test/condition_test_template.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -10,7 +10,7 @@
 // It is provided "as is" without express or implied warranty.
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. 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)
 //
@@ -22,10 +22,10 @@
 
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
-
+#include "boost_interprocess_check.hpp"
 #include <boost/thread/detail/config.hpp>
-
 #include <boost/interprocess/sync/interprocess_condition.hpp>
+#include <boost/interprocess/sync/scoped_lock.hpp>
 #include <boost/thread/thread.hpp>
 #include <boost/date_time/posix_time/posix_time_types.hpp>
 #include <boost/thread/xtime.hpp>
@@ -50,7 +50,7 @@
 
     boost::xtime xt;
     int ret = boost::xtime_get(&xt, boost::TIME_UTC);
- assert(ret == static_cast<int>(boost::TIME_UTC));(void)ret;
+ BOOST_INTERPROCES_CHECK(ret == static_cast<int>(boost::TIME_UTC));(void)ret;
     nsecs += xt.nsec;
     msecs += nsecs / NANOSECONDS_PER_MILLISECOND;
     secs += msecs / MILLISECONDS_PER_SECOND;
@@ -99,10 +99,10 @@
 {
     boost::interprocess::scoped_lock<Mutex>
       lock(data->mutex);
- assert(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
     while (!(data->notified > 0))
         data->condition.wait(lock);
- assert(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
     data->awoken++;
 }
 
@@ -121,38 +121,38 @@
 {
     boost::interprocess::scoped_lock<Mutex>
       lock(data->mutex);
- assert(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
 
     // Test wait.
     while (data->notified != 1)
         data->condition.wait(lock);
- assert(lock ? true : false);
- assert(data->notified == 1);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(data->notified == 1);
     data->awoken++;
     data->condition.notify_one();
 
     // Test predicate wait.
     data->condition.wait(lock, cond_predicate(data->notified, 2));
- assert(lock ? true : false);
- assert(data->notified == 2);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(data->notified == 2);
     data->awoken++;
     data->condition.notify_one();
 
     // Test timed_wait.
     while (data->notified != 3)
         data->condition.timed_wait(lock, ptime_delay(5));
- assert(lock ? true : false);
- assert(data->notified == 3);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(data->notified == 3);
     data->awoken++;
     data->condition.notify_one();
 
     // Test predicate timed_wait.
     cond_predicate pred(data->notified, 4);
     bool ret = data->condition.timed_wait(lock, ptime_delay(5), pred);
- assert(ret);(void)ret;
- assert(lock ? true : false);
- assert(pred());
- assert(data->notified == 4);
+ BOOST_INTERPROCES_CHECK(ret);(void)ret;
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(pred());
+ BOOST_INTERPROCES_CHECK(data->notified == 4);
     data->awoken++;
     data->condition.notify_one();
 }
@@ -166,13 +166,13 @@
    {
       boost::interprocess::scoped_lock<Mutex>
          lock(data.mutex);
- assert(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
       data.notified++;
       data.condition.notify_one();
    }
 
    thread.join();
- assert(data.awoken == 1);
+ BOOST_INTERPROCES_CHECK(data.awoken == 1);
 }
 
 template <class Condition, class Mutex>
@@ -188,13 +188,13 @@
    {
       boost::interprocess::scoped_lock<Mutex>
          lock(data.mutex);
- assert(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
       data.notified++;
       data.condition.notify_all();
    }
 
    threads.join_all();
- assert(data.awoken == NUMTHREADS);
+ BOOST_INTERPROCES_CHECK(data.awoken == NUMTHREADS);
 }
 
 template <class Condition, class Mutex>
@@ -207,43 +207,43 @@
    {
       boost::interprocess::scoped_lock<Mutex>
          lock(data.mutex);
- assert(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
 
       boost::thread::sleep(delay(1));
       data.notified++;
       data.condition.notify_one();
       while (data.awoken != 1)
          data.condition.wait(lock);
- assert(lock ? true : false);
- assert(data.awoken == 1);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(data.awoken == 1);
 
       boost::thread::sleep(delay(1));
       data.notified++;
       data.condition.notify_one();
       while (data.awoken != 2)
          data.condition.wait(lock);
- assert(lock ? true : false);
- assert(data.awoken == 2);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(data.awoken == 2);
 
       boost::thread::sleep(delay(1));
       data.notified++;
       data.condition.notify_one();
       while (data.awoken != 3)
          data.condition.wait(lock);
- assert(lock ? true : false);
- assert(data.awoken == 3);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(data.awoken == 3);
 
       boost::thread::sleep(delay(1));
       data.notified++;
       data.condition.notify_one();
       while (data.awoken != 4)
          data.condition.wait(lock);
- assert(lock ? true : false);
- assert(data.awoken == 4);
+ BOOST_INTERPROCES_CHECK(lock ? true : false);
+ BOOST_INTERPROCES_CHECK(data.awoken == 4);
    }
 
    thread.join();
- assert(data.awoken == 4);
+ BOOST_INTERPROCES_CHECK(data.awoken == 4);
 }
 /*
 //Message queue simulation test
@@ -339,9 +339,9 @@
             cond_empty.notify_one();
       }
       thgroup.join_all();
- assert(count == 0);
- assert(waiting_readers == 0);
- assert(waiting_writer == 0);
+ BOOST_INTERPROCES_CHECK(count == 0);
+ BOOST_INTERPROCES_CHECK(waiting_readers == 0);
+ BOOST_INTERPROCES_CHECK(waiting_writer == 0);
    }
 }
 
@@ -382,9 +382,9 @@
             cond_empty.notify_all();
       }
       thgroup.join_all();
- assert(count == 0);
- assert(waiting_readers == 0);
- assert(waiting_writer == 0);
+ BOOST_INTERPROCES_CHECK(count == 0);
+ BOOST_INTERPROCES_CHECK(waiting_readers == 0);
+ BOOST_INTERPROCES_CHECK(waiting_writer == 0);
    }
 }
 

Modified: trunk/libs/interprocess/test/data_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/data_test.cpp (original)
+++ trunk/libs/interprocess/test/data_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/deque_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/deque_test.cpp (original)
+++ trunk/libs/interprocess/test/deque_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -43,10 +43,6 @@
 
 using namespace boost::interprocess;
 
-//Explicit instantiation to detect compilation errors
-template class boost::interprocess::deque<test::movable_and_copyable_int,
- test::dummy_test_allocator<test::movable_and_copyable_int> >;
-
 //Function to check if both sets are equal
 template<class V1, class V2>
 bool copyable_only(V1 *, V2 *, ipcdetail::false_type)
@@ -66,12 +62,12 @@
    {
       IntType move_me(1);
       stddeque->insert(stddeque->begin()+size/2, 50, 1);
- shmdeque->insert(shmdeque->begin()+size/2, 50, boost::interprocess::move(move_me));
+ shmdeque->insert(shmdeque->begin()+size/2, 50, boost::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
    }
    {
       IntType move_me(2);
- shmdeque->assign(shmdeque->size()/2, boost::interprocess::move(move_me));
+ shmdeque->assign(shmdeque->size()/2, boost::move(move_me));
       stddeque->assign(stddeque->size()/2, 2);
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
    }
@@ -80,13 +76,13 @@
       stddeque->clear();
       shmdeque->clear();
       stddeque->insert(stddeque->begin(), 50, 1);
- shmdeque->insert(shmdeque->begin(), 50, boost::interprocess::move(move_me));
+ shmdeque->insert(shmdeque->begin(), 50, boost::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
       stddeque->insert(stddeque->begin()+20, 50, 1);
- shmdeque->insert(shmdeque->begin()+20, 50, boost::interprocess::move(move_me));
+ shmdeque->insert(shmdeque->begin()+20, 50, boost::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
       stddeque->insert(stddeque->begin()+20, 20, 1);
- shmdeque->insert(shmdeque->begin()+20, 20, boost::interprocess::move(move_me));
+ shmdeque->insert(shmdeque->begin()+20, 20, boost::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
    }
    {
@@ -94,44 +90,23 @@
       stddeque->clear();
       shmdeque->clear();
       stddeque->insert(stddeque->end(), 50, 1);
- shmdeque->insert(shmdeque->end(), 50, boost::interprocess::move(move_me));
+ shmdeque->insert(shmdeque->end(), 50, boost::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
       stddeque->insert(stddeque->end()-20, 50, 1);
- shmdeque->insert(shmdeque->end()-20, 50, boost::interprocess::move(move_me));
+ shmdeque->insert(shmdeque->end()-20, 50, boost::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
       stddeque->insert(stddeque->end()-20, 20, 1);
- shmdeque->insert(shmdeque->end()-20, 20, boost::interprocess::move(move_me));
+ shmdeque->insert(shmdeque->end()-20, 20, boost::move(move_me));
       if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
    }
 
    return true;
 }
 
-//Test recursive structures
-class recursive_deque
-{
-public:
- int id_;
- deque<recursive_deque> deque_;
-};
 
 template<class IntType, template<class T, class SegmentManager> class AllocatorType >
 bool do_test()
 {
- //Test for recursive types
- {
- deque<recursive_deque> recursive_deque_deque;
- }
-
- {
- //Now test move semantics
- deque<recursive_deque> original;
- deque<recursive_deque> move_ctor(boost::interprocess::move(original));
- deque<recursive_deque> move_assign;
- move_assign = boost::interprocess::move(move_ctor);
- move_assign.swap(original);
- }
-
    //Customize managed_shared_memory class
    typedef basic_managed_shared_memory
       <char,
@@ -172,7 +147,7 @@
          int i;
          for(i = 0; i < max*50; ++i){
             IntType move_me(i);
- shmdeque->insert(shmdeque->end(), boost::interprocess::move(move_me));
+ shmdeque->insert(shmdeque->end(), boost::move(move_me));
             stddeque->insert(stddeque->end(), i);
             shmdeque->insert(shmdeque->end(), IntType(i));
             stddeque->insert(stddeque->end(), int(i));
@@ -184,7 +159,7 @@
 
          for(i = 0; i < max*50; ++i){
             IntType move_me(i);
- shmdeque->push_back(boost::interprocess::move(move_me));
+ shmdeque->push_back(boost::move(move_me));
             stddeque->push_back(i);
             shmdeque->push_back(IntType(i));
             stddeque->push_back(i);
@@ -196,7 +171,7 @@
 
          for(i = 0; i < max*50; ++i){
             IntType move_me(i);
- shmdeque->push_front(boost::interprocess::move(move_me));
+ shmdeque->push_front(boost::move(move_me));
             stddeque->push_front(i);
             shmdeque->push_front(IntType(i));
             stddeque->push_front(int(i));
@@ -205,6 +180,7 @@
 
          typename MyShmDeque::iterator it;
          typename MyShmDeque::const_iterator cit = it;
+ (void)cit;
 
          shmdeque->erase(shmdeque->begin()++);
          stddeque->erase(stddeque->begin()++);
@@ -219,7 +195,7 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType move_me (-1);
- aux_vect[i] = boost::interprocess::move(move_me);
+ aux_vect[i] = boost::move(move_me);
             }
             int aux_vect2[50];
             for(int i = 0; i < 50; ++i){
@@ -242,7 +218,7 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType move_me(-1);
- aux_vect[i] = boost::interprocess::move(move_me);
+ aux_vect[i] = boost::move(move_me);
             }
             int aux_vect2[50];
             for(int i = 0; i < 50; ++i){
@@ -267,7 +243,7 @@
 
          for(i = 0; i < max; ++i){
             IntType move_me(i);
- shmdeque->insert(shmdeque->begin(), boost::interprocess::move(move_me));
+ shmdeque->insert(shmdeque->begin(), boost::move(move_me));
             stddeque->insert(stddeque->begin(), i);
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;

Modified: trunk/libs/interprocess/test/dummy_test_allocator.hpp
==============================================================================
--- trunk/libs/interprocess/test/dummy_test_allocator.hpp (original)
+++ trunk/libs/interprocess/test/dummy_test_allocator.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/enable_shared_from_this_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/enable_shared_from_this_test.cpp (original)
+++ trunk/libs/interprocess/test/enable_shared_from_this_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -3,7 +3,7 @@
 //
 // This file is the adaptation of shared_from_this_test.cpp from smart_ptr library
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/expand_bwd_test_allocator.hpp
==============================================================================
--- trunk/libs/interprocess/test/expand_bwd_test_allocator.hpp (original)
+++ trunk/libs/interprocess/test/expand_bwd_test_allocator.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/file_lock_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/file_lock_test.cpp (original)
+++ trunk/libs/interprocess/test/file_lock_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -64,9 +64,9 @@
    {
       //Now test move semantics
       file_lock mapping(get_filename().c_str());
- file_lock move_ctor(boost::interprocess::move(mapping));
+ file_lock move_ctor(boost::move(mapping));
       file_lock move_assign;
- move_assign = boost::interprocess::move(move_ctor);
+ move_assign = boost::move(move_ctor);
       mapping.swap(move_assign);
    }
 

Modified: trunk/libs/interprocess/test/file_mapping_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/file_mapping_test.cpp (original)
+++ trunk/libs/interprocess/test/file_mapping_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -32,7 +32,7 @@
 file_mapping get_file_mapping()
 {
    file_mapping f;
- return file_mapping(boost::interprocess::move(f));
+ return file_mapping(boost::move(f));
 }
 
 int main ()
@@ -138,9 +138,9 @@
       {
          //Now test move semantics
          file_mapping mapping(get_filename().c_str(), read_only);
- file_mapping move_ctor(boost::interprocess::move(mapping));
+ file_mapping move_ctor(boost::move(mapping));
          file_mapping move_assign;
- move_assign = boost::interprocess::move(move_ctor);
+ move_assign = boost::move(move_ctor);
          mapping.swap(move_assign);
          file_mapping ret(get_file_mapping());
       }

Modified: trunk/libs/interprocess/test/flat_tree_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/flat_tree_test.cpp (original)
+++ trunk/libs/interprocess/test/flat_tree_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -31,32 +31,7 @@
 /////////////////////////////////////////////////////////////////
 
 using namespace boost::interprocess;
-/*
-//Explicit instantiation to detect compilation errors
-template class boost::interprocess::flat_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::flat_map
- <test::movable_and_copyable_int
- ,test::movable_and_copyable_int
- ,std::less<test::movable_and_copyable_int>
- ,test::dummy_test_allocator<std::pair<test::movable_and_copyable_int
- ,test::movable_and_copyable_int> > >;
-
-template class boost::interprocess::flat_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::flat_multimap
- <test::movable_and_copyable_int
- ,test::movable_and_copyable_int
- ,std::less<test::movable_and_copyable_int>
- ,test::dummy_test_allocator<std::pair<test::movable_and_copyable_int
- ,test::movable_and_copyable_int> > >;
-*/
+
 //Customize managed_shared_memory class
 typedef basic_managed_shared_memory
    <char,
@@ -123,80 +98,10 @@
                 ,std::less<test::movable_and_copyable_int>
                 ,shmem_move_copy_pair_allocator_t> MyMoveCopyShmMultiMap;
 
-
-//Test recursive structures
-class recursive_flat_set
-{
-public:
- int id_;
- flat_set<recursive_flat_set> flat_set_;
- friend bool operator< (const recursive_flat_set &a, const recursive_flat_set &b)
- { return a.id_ < b.id_; }
-};
-
-class recursive_flat_map
-{
-public:
- int id_;
- flat_map<recursive_flat_map, recursive_flat_map> map_;
- recursive_flat_map (const recursive_flat_map&x)
- :id_(x.id_), map_(x.map_)
- {}
- recursive_flat_map &operator=(const recursive_flat_map &x)
- { id_ = x.id_; map_ = x.map_; return *this; }
-
- friend bool operator< (const recursive_flat_map &a, const recursive_flat_map &b)
- { return a.id_ < b.id_; }
-};
-
-//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_;
- recursive_flat_multimap (const recursive_flat_multimap&x)
- :id_(x.id_), map_(x.map_)
- {}
- recursive_flat_multimap &operator=(const recursive_flat_multimap &x)
- { id_ = x.id_; map_ = x.map_; return *this; }
- friend bool operator< (const recursive_flat_multimap &a, const recursive_flat_multimap &b)
- { return a.id_ < b.id_; }
-};
-
-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

Modified: trunk/libs/interprocess/test/get_process_id_name.hpp
==============================================================================
--- trunk/libs/interprocess/test/get_process_id_name.hpp (original)
+++ trunk/libs/interprocess/test/get_process_id_name.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/heap_allocator_v1.hpp
==============================================================================
--- trunk/libs/interprocess/test/heap_allocator_v1.hpp (original)
+++ trunk/libs/interprocess/test/heap_allocator_v1.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. 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)
 //
@@ -86,7 +86,7 @@
 
    //!Returns the segment manager. Never throws
    segment_manager* get_segment_manager()const
- { return ipcdetail::get_pointer(mp_mngr); }
+ { return ipcdetail::to_raw_pointer(mp_mngr); }
 /*
    //!Returns address of mutable object. Never throws
    pointer address(reference value) const
@@ -116,12 +116,12 @@
 
    //!Deallocates memory previously allocated. Never throws
    void deallocate(const pointer &ptr, size_type)
- { return ::delete[] ipcdetail::get_pointer(ptr) ; }
+ { return ::delete[] ipcdetail::to_raw_pointer(ptr) ; }
 
    //!Construct object, calling constructor.
    //!Throws if T(const T&) throws
    void construct(const pointer &ptr, const_reference value)
- { new((void*)ipcdetail::get_pointer(ptr)) value_type(value); }
+ { new((void*)ipcdetail::to_raw_pointer(ptr)) value_type(value); }
 
    //!Destroys object. Throws if object's destructor throws
    void destroy(const pointer &ptr)

Modified: trunk/libs/interprocess/test/intermodule_singleton_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/intermodule_singleton_test.cpp (original)
+++ trunk/libs/interprocess/test/intermodule_singleton_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/intersegment_ptr_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/intersegment_ptr_test.cpp (original)
+++ trunk/libs/interprocess/test/intersegment_ptr_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -9,12 +9,12 @@
 //////////////////////////////////////////////////////////////////////////////
 
 #include <boost/interprocess/detail/config_begin.hpp>
-
 #include <boost/interprocess/detail/intersegment_ptr.hpp>
 #include <boost/interprocess/detail/type_traits.hpp>
 #include <boost/interprocess/mapped_region.hpp> //mapped_region
 #include <boost/interprocess/anonymous_shared_memory.hpp> //anonymous_shared_memory
 #include <boost/interprocess/detail/managed_multi_shared_memory.hpp> //managed_multi_shared_memory
+#include <boost/static_assert.hpp> //static_assert
 #include <cstddef> //std::size_t
 
 
@@ -27,14 +27,10 @@
    typedef intersegment_ptr<volatile int> pvint_t;
    typedef intersegment_ptr<const volatile int> pcvint_t;
 
- if(!ipcdetail::is_same<pint_t::value_type, int>::value)
- return false;
- if(!ipcdetail::is_same<pcint_t::value_type, const int>::value)
- return false;
- if(!ipcdetail::is_same<pvint_t::value_type, volatile int>::value)
- return false;
- if(!ipcdetail::is_same<pcvint_t::value_type, const volatile int>::value)
- return false;
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pint_t::value_type, int>::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pcint_t::value_type, const int>::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pvint_t::value_type, volatile int>::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pcvint_t::value_type, const volatile int>::value));
    int dummy_int = 9;
 
    { pint_t pint(&dummy_int); pcint_t pcint(pint);

Modified: trunk/libs/interprocess/test/intrusive_ptr_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/intrusive_ptr_test.cpp (original)
+++ trunk/libs/interprocess/test/intrusive_ptr_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -129,7 +129,7 @@
       boost::interprocess::offset_ptr<X> p = new X;
       BOOST_TEST(p->use_count() == 0);
 
- intrusive_ptr_add_ref(get_pointer(p));
+ intrusive_ptr_add_ref(p.get());
       BOOST_TEST(p->use_count() == 1);
 
       boost::interprocess::intrusive_ptr<X, VP> px(p, false);
@@ -249,37 +249,21 @@
       boost::interprocess::intrusive_ptr<X, VP> px;
       BOOST_TEST(px? false: true);
       BOOST_TEST(!px);
-
-#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
- using boost::get_pointer;
-#endif
-
- BOOST_TEST(get_pointer(px) == px.get());
    }
 
    {
       boost::interprocess::intrusive_ptr<X, VP> px(0);
       BOOST_TEST(px? false: true);
       BOOST_TEST(!px);
-
-#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
- using boost::get_pointer;
-#endif
-
- BOOST_TEST(get_pointer(px) == px.get());
    }
 
    {
-#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
- using boost::get_pointer;
-#endif
       boost::interprocess::intrusive_ptr<X, VP> px
          (boost::interprocess::offset_ptr<X>(new X));
       BOOST_TEST(px? true: false);
       BOOST_TEST(!!px);
- BOOST_TEST(&*px == get_pointer(px.get()));
+ BOOST_TEST(&*px == boost::interprocess::ipcdetail::to_raw_pointer(px.get()));
       BOOST_TEST(px.operator ->() == px.get());
- BOOST_TEST(get_pointer(px) == px.get());
    }
 }
 

Modified: trunk/libs/interprocess/test/list_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/list_test.cpp (original)
+++ trunk/libs/interprocess/test/list_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -20,10 +20,6 @@
 
 using namespace boost::interprocess;
 
-//Explicit instantiation to detect compilation errors
-template class boost::interprocess::list<test::movable_and_copyable_int,
- test::dummy_test_allocator<test::movable_and_copyable_int> >;
-
 typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocator;
 typedef list<int, ShmemAllocator> MyList;
 
@@ -39,30 +35,8 @@
 typedef allocator<test::copyable_int, managed_shared_memory::segment_manager> ShmemCopyAllocator;
 typedef list<test::copyable_int, ShmemCopyAllocator> MyCopyList;
 
-
-class recursive_list
-{
-public:
- int id_;
- list<recursive_list> list_;
-};
-
-void recursive_list_test()//Test for recursive types
-{
- list<recursive_list> recursive_list_list;
-}
-
 int main ()
 {
- recursive_list_test();
- {
- //Now test move semantics
- list<recursive_list> original;
- list<recursive_list> move_ctor(boost::interprocess::move(original));
- list<recursive_list> move_assign;
- move_assign = boost::interprocess::move(move_ctor);
- move_assign.swap(original);
- }
    if(test::list_test<managed_shared_memory, MyList, true>())
       return 1;
 

Modified: trunk/libs/interprocess/test/list_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/list_test.hpp (original)
+++ trunk/libs/interprocess/test/list_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -35,7 +35,7 @@
       typedef typename MyShmList::value_type IntType;
       for(int i = 0; i < max; ++i){
          IntType move_me(i);
- shmlist->push_back(boost::interprocess::move(move_me));
+ shmlist->push_back(boost::move(move_me));
          stdlist->push_back(i);
          shmlist->push_back(IntType(i));
          stdlist->push_back(int(i));
@@ -55,7 +55,7 @@
       typedef typename MyShmList::value_type IntType;
       for(int i = 0; i < max; ++i){
          IntType move_me(i);
- shmlist->push_front(boost::interprocess::move(move_me));
+ shmlist->push_front(boost::move(move_me));
          stdlist->push_front(i);
          shmlist->push_front(IntType(i));
          stdlist->push_front(int(i));
@@ -139,7 +139,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = boost::interprocess::move(move_me);
+ aux_vect[i] = boost::move(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
@@ -169,7 +169,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = boost::interprocess::move(move_me);
+ aux_vect[i] = boost::move(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){

Modified: trunk/libs/interprocess/test/managed_mapped_file_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/managed_mapped_file_test.cpp (original)
+++ trunk/libs/interprocess/test/managed_mapped_file_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -212,9 +212,9 @@
       {
          //Now test move semantics
          managed_mapped_file original(open_only, FileName);
- managed_mapped_file move_ctor(boost::interprocess::move(original));
+ managed_mapped_file move_ctor(boost::move(original));
          managed_mapped_file move_assign;
- move_assign = boost::interprocess::move(move_ctor);
+ move_assign = boost::move(move_ctor);
          move_assign.swap(original);
       }
    }

Modified: trunk/libs/interprocess/test/managed_shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/managed_shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/managed_shared_memory_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -203,9 +203,9 @@
    {
       //Now test move semantics
       managed_shared_memory original(open_only, ShmemName);
- managed_shared_memory move_ctor(boost::interprocess::move(original));
+ managed_shared_memory move_ctor(boost::move(original));
       managed_shared_memory move_assign;
- move_assign = boost::interprocess::move(move_ctor);
+ move_assign = boost::move(move_ctor);
       move_assign.swap(original);
    }
 

Modified: trunk/libs/interprocess/test/managed_windows_shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/managed_windows_shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/managed_windows_shared_memory_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -131,9 +131,9 @@
 
          //Now test move semantics
          managed_windows_shared_memory original(open_only, MemName);
- managed_windows_shared_memory move_ctor(boost::interprocess::move(original));
+ managed_windows_shared_memory move_ctor(boost::move(original));
          managed_windows_shared_memory move_assign;
- move_assign = boost::interprocess::move(move_ctor);
+ move_assign = boost::move(move_ctor);
       }
    }
 

Modified: trunk/libs/interprocess/test/managed_xsi_shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/managed_xsi_shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/managed_xsi_shared_memory_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2008-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2008-2011. 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)
 //
@@ -151,9 +151,9 @@
       {
          //Now test move semantics
          managed_xsi_shared_memory original(open_only, key);
- managed_xsi_shared_memory move_ctor(boost::interprocess::move(original));
+ managed_xsi_shared_memory move_ctor(boost::move(original));
          managed_xsi_shared_memory move_assign;
- move_assign = boost::interprocess::move(move_ctor);
+ move_assign = boost::move(move_ctor);
          move_assign.swap(original);
       }
    }

Modified: trunk/libs/interprocess/test/map_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/map_test.hpp (original)
+++ trunk/libs/interprocess/test/map_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -74,7 +74,7 @@
          for(int i = 0; i < 50; ++i){
             IntType i1(i/2);
             IntType i2(i/2);
- new(&aux_vect[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&aux_vect[i])IntPairType(boost::move(i1), boost::move(i2));
          }
 
          typedef typename MyStdMap::value_type StdValueType;
@@ -89,7 +89,7 @@
          for(int i = 0; i < 50; ++i){
             IntType i1(i/2);
             IntType i2(i/2);
- new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&aux_vect3[i])IntPairType(boost::move(i1), boost::move(i2));
          }
 
          MyShmMap *shmmap2 =
@@ -115,7 +115,7 @@
          for(int i = 0; i < 50; ++i){
             IntType i1(i);
             IntType i2(i);
- new(&aux_vect[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&aux_vect[i])IntPairType(boost::move(i1), boost::move(i2));
          }
 
          for(int i = 0; i < 50; ++i){
@@ -125,7 +125,7 @@
          for(int i = 0; i < 50; ++i){
             IntType i1(i);
             IntType i2(i);
- new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&aux_vect3[i])IntPairType(boost::move(i1), boost::move(i2));
          }
 
          MyShmMap *shmmap3 =
@@ -170,19 +170,19 @@
          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));
+ new(&aux_vect[i])IntPairType(boost::move(i1), boost::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));
+ new(&aux_vect3[i])IntPairType(boost::move(i1), boost::move(i2));
          }
 
          for(int i = 0; i < max; ++i){
- shmmap->insert(boost::interprocess::move(aux_vect[i]));
+ shmmap->insert(boost::move(aux_vect[i]));
             stdmap->insert(StdPairType(i, i));
- shmmultimap->insert(boost::interprocess::move(aux_vect3[i]));
+ shmmultimap->insert(boost::move(aux_vect3[i]));
             stdmultimap->insert(StdPairType(i, i));
          }
 
@@ -191,6 +191,7 @@
 
          typename MyShmMap::iterator it;
          typename MyShmMap::const_iterator cit = it;
+ (void)cit;
 
          shmmap->erase(shmmap->begin()++);
          stdmap->erase(stdmap->begin()++);
@@ -231,13 +232,13 @@
          for(int i = 0; i < 50; ++i){
             IntType i1(-1);
             IntType i2(-1);
- new(&aux_vect[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&aux_vect[i])IntPairType(boost::move(i1), boost::move(i2));
          }
          IntPairType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
             IntType i1(-1);
             IntType i2(-1);
- new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&aux_vect3[i])IntPairType(boost::move(i1), boost::move(i2));
          }
 
          shmmap->insert(::boost::make_move_iterator(&aux_vect[0]), ::boost::make_move_iterator(aux_vect + 50));
@@ -264,28 +265,28 @@
          for(int i = 0; i < 50; ++i){
             IntType i1(-1);
             IntType i2(-1);
- new(&aux_vect[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&aux_vect[i])IntPairType(boost::move(i1), boost::move(i2));
          }
 
          IntPairType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
             IntType i1(-1);
             IntType i2(-1);
- new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&aux_vect3[i])IntPairType(boost::move(i1), boost::move(i2));
          }
 
          IntPairType aux_vect4[50];
          for(int i = 0; i < 50; ++i){
             IntType i1(-1);
             IntType i2(-1);
- new(&aux_vect4[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&aux_vect4[i])IntPairType(boost::move(i1), boost::move(i2));
          }
 
          IntPairType aux_vect5[50];
          for(int i = 0; i < 50; ++i){
             IntType i1(-1);
             IntType i2(-1);
- new(&aux_vect5[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&aux_vect5[i])IntPairType(boost::move(i1), boost::move(i2));
          }
 
          shmmap->insert(::boost::make_move_iterator(&aux_vect[0]), ::boost::make_move_iterator(aux_vect + 50));
@@ -317,19 +318,19 @@
          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));
+ new(&aux_vect[i])IntPairType(boost::move(i1), boost::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));
+ new(&aux_vect3[i])IntPairType(boost::move(i1), boost::move(i2));
          }
 
          for(int i = 0; i < max; ++i){
- shmmap->insert(boost::interprocess::move(aux_vect[i]));
+ shmmap->insert(boost::move(aux_vect[i]));
             stdmap->insert(StdPairType(i, i));
- shmmultimap->insert(boost::interprocess::move(aux_vect3[i]));
+ shmmultimap->insert(boost::move(aux_vect3[i]));
             stdmultimap->insert(StdPairType(i, i));
          }
 
@@ -341,17 +342,17 @@
             {
                IntType i1(i);
                IntType i2(i);
- new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&intpair)IntPairType(boost::move(i1), boost::move(i2));
             }
- shmmap->insert(shmmap->begin(), boost::interprocess::move(intpair));
+ shmmap->insert(shmmap->begin(), boost::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));
+ new(&intpair)IntPairType(boost::move(i1), boost::move(i2));
             }
- shmmultimap->insert(shmmultimap->begin(), boost::interprocess::move(intpair));
+ shmmultimap->insert(shmmultimap->begin(), boost::move(intpair));
             stdmultimap->insert(stdmultimap->begin(), StdPairType(i, i));
             //PrintContainers(shmmultimap, stdmultimap);
             if(!CheckEqualPairContainers(shmmap, stdmap))
@@ -361,16 +362,16 @@
             {
                IntType i1(i);
                IntType i2(i);
- new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&intpair)IntPairType(boost::move(i1), boost::move(i2));
             }
- shmmap->insert(shmmap->end(), boost::interprocess::move(intpair));
+ shmmap->insert(shmmap->end(), boost::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));
+ new(&intpair)IntPairType(boost::move(i1), boost::move(i2));
             }
- shmmultimap->insert(shmmultimap->end(), boost::interprocess::move(intpair));
+ shmmultimap->insert(shmmultimap->end(), boost::move(intpair));
             stdmultimap->insert(stdmultimap->end(), StdPairType(i, i));
             if(!CheckEqualPairContainers(shmmap, stdmap))
                return 1;
@@ -379,19 +380,19 @@
             {
                IntType i1(i);
                IntType i2(i);
- new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&intpair)IntPairType(boost::move(i1), boost::move(i2));
             }
- shmmap->insert(shmmap->lower_bound(IntType(i)), boost::interprocess::move(intpair));
+ shmmap->insert(shmmap->lower_bound(IntType(i)), boost::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));
+ new(&intpair)IntPairType(boost::move(i1), boost::move(i2));
             }
             {
                IntType i1(i);
- shmmultimap->insert(shmmultimap->lower_bound(boost::interprocess::move(i1)), boost::interprocess::move(intpair));
+ shmmultimap->insert(shmmultimap->lower_bound(boost::move(i1)), boost::move(intpair));
                stdmultimap->insert(stdmultimap->lower_bound(i), StdPairType(i, i));
             }
 
@@ -403,22 +404,22 @@
             {
                IntType i1(i);
                IntType i2(i);
- new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&intpair)IntPairType(boost::move(i1), boost::move(i2));
             }
             {
                IntType i1(i);
- shmmap->insert(shmmap->upper_bound(boost::interprocess::move(i1)), boost::interprocess::move(intpair));
+ shmmap->insert(shmmap->upper_bound(boost::move(i1)), boost::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));
+ new(&intpair)IntPairType(boost::move(i1), boost::move(i2));
             }
             {
                IntType i1(i);
- shmmultimap->insert(shmmultimap->upper_bound(boost::interprocess::move(i1)), boost::interprocess::move(intpair));
+ shmmultimap->insert(shmmultimap->upper_bound(boost::move(i1)), boost::move(intpair));
                stdmultimap->insert(stdmultimap->upper_bound(i), StdPairType(i, i));
             }
             //PrintContainers(shmmultimap, stdmultimap);
@@ -450,14 +451,14 @@
             IntPairType intpair;
             {
             IntType i1(i), i2(i);
- new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&intpair)IntPairType(boost::move(i1), boost::move(i2));
             }
- shmmap->insert(boost::interprocess::move(intpair));
+ shmmap->insert(boost::move(intpair));
             {
                IntType i1(i), i2(i);
- new(&intpair)IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+ new(&intpair)IntPairType(boost::move(i1), boost::move(i2));
             }
- shmmultimap->insert(boost::interprocess::move(intpair));
+ shmmultimap->insert(boost::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))
@@ -523,14 +524,14 @@
    for(i = 0; i < max; ++i){
       {
       IntType i1(i), i2(i);
- IntPairType intpair1(boost::interprocess::move(i1), boost::interprocess::move(i2));
- shmmap->insert(boost::interprocess::move(intpair1));
+ IntPairType intpair1(boost::move(i1), boost::move(i2));
+ shmmap->insert(boost::move(intpair1));
       stdmap->insert(StdPairType(i, i));
       }
       {
       IntType i1(i), i2(i);
- IntPairType intpair2(boost::interprocess::move(i1), boost::interprocess::move(i2));
- shmmultimap->insert(boost::interprocess::move(intpair2));
+ IntPairType intpair2(boost::move(i1), boost::move(i2));
+ shmmultimap->insert(boost::move(intpair2));
       stdmultimap->insert(StdPairType(i, i));
       }
    }

Modified: trunk/libs/interprocess/test/mapped_file_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/mapped_file_test.cpp (original)
+++ trunk/libs/interprocess/test/mapped_file_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -79,9 +79,9 @@
       std::memset(file1.get_user_address(), 0, file1.get_user_size());
 
       //Now test move semantics
- mapped_file move_ctor(boost::interprocess::move(file1));
+ mapped_file move_ctor(boost::move(file1));
       mapped_file move_assign;
- move_assign = boost::interprocess::move(move_ctor);
+ move_assign = boost::move(move_ctor);
    }
 // file_mapping::remove(get_filename().c_str());
    return 0;

Modified: trunk/libs/interprocess/test/memory_algorithm_test_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/memory_algorithm_test_template.hpp (original)
+++ trunk/libs/interprocess/test/memory_algorithm_test_template.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -679,7 +679,7 @@
 
          typename multiallocation_chain::size_type n = chain.size();
          while(!chain.empty()){
- buffers.push_back(ipcdetail::get_pointer(chain.front()));
+ buffers.push_back(ipcdetail::to_raw_pointer(chain.front()));
             chain.pop_front();
          }
          if(n != std::size_t((i+1)*2))
@@ -788,7 +788,7 @@
             break;
          typename multiallocation_chain::size_type n = chain.size();
          while(!chain.empty()){
- buffers.push_back(ipcdetail::get_pointer(chain.front()));
+ buffers.push_back(ipcdetail::to_raw_pointer(chain.front()));
             chain.pop_front();
          }
          if(n != ArraySize)
@@ -866,10 +866,10 @@
          multiallocation_chain chain = a.allocate_many(requested_sizes, ArraySize, 1, std::nothrow);
          if(chain.empty())
             break;
- buffers.push_back(boost::interprocess::move(chain));
+ buffers.push_back(boost::move(chain));
       }
       for(int i = 0, max = (int)buffers.size(); i != max; ++i){
- a.deallocate_many(boost::interprocess::move(buffers[i]));
+ a.deallocate_many(boost::move(buffers[i]));
       }
       buffers.clear();
       bool ok = free_memory == a.get_free_memory() &&
@@ -882,10 +882,10 @@
          multiallocation_chain chain(a.allocate_many(i*4, ArraySize, std::nothrow));
          if(chain.empty())
             break;
- buffers.push_back(boost::interprocess::move(chain));
+ buffers.push_back(boost::move(chain));
       }
       for(int i = 0, max = (int)buffers.size(); i != max; ++i){
- a.deallocate_many(boost::interprocess::move(buffers[i]));
+ a.deallocate_many(boost::move(buffers[i]));
       }
       buffers.clear();
 

Modified: trunk/libs/interprocess/test/message_queue_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/message_queue_test.cpp (original)
+++ trunk/libs/interprocess/test/message_queue_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/multi_index_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/multi_index_test.cpp (original)
+++ trunk/libs/interprocess/test/multi_index_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -61,6 +61,9 @@
 struct age{};
 struct name{};
 
+namespace boost {
+namespace multi_index {
+
 // Explicit instantiations to catch compile-time errors
 template class bmi::multi_index_container<
   employee,
@@ -100,6 +103,8 @@
   node_allocator<employee,managed_shared_memory::segment_manager>
>;
 
+}}
+
 int main ()
 {
    return 0;

Modified: trunk/libs/interprocess/test/mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/mutex_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -12,9 +12,22 @@
 #include <boost/interprocess/sync/interprocess_mutex.hpp>
 #include "mutex_test_template.hpp"
 
+#if defined(BOOST_INTERPROCESS_WINDOWS)
+#include <boost/interprocess/sync/windows/mutex.hpp>
+#include <boost/interprocess/sync/spin/mutex.hpp>
+#endif
+
 int main ()
 {
    using namespace boost::interprocess;
+
+ #if defined(BOOST_INTERPROCESS_WINDOWS)
+ test::test_all_lock<ipcdetail::windows_mutex>();
+ test::test_all_mutex<true, ipcdetail::windows_mutex>();
+ test::test_all_lock<ipcdetail::spin_mutex>();
+ test::test_all_mutex<true, ipcdetail::spin_mutex>();
+ #endif
+
    test::test_all_lock<interprocess_mutex>();
    test::test_all_mutex<true, interprocess_mutex>();
    return 0;

Modified: trunk/libs/interprocess/test/mutex_test_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/mutex_test_template.hpp (original)
+++ trunk/libs/interprocess/test/mutex_test_template.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -26,9 +26,9 @@
 #include "boost_interprocess_check.hpp"
 #include "util.hpp"
 #include <boost/thread/thread.hpp>
-#include <iostream>
 #include <boost/interprocess/sync/scoped_lock.hpp>
 #include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <iostream>
 
 namespace boost { namespace interprocess { namespace test {
 
@@ -261,8 +261,8 @@
    boost::thread::sleep(xsecs(1*BaseSeconds));
    tm2.join();
 
- assert(d1.m_value == 1);
- assert(d2.m_value == 2);
+ BOOST_INTERPROCES_CHECK(d1.m_value == 1);
+ BOOST_INTERPROCES_CHECK(d2.m_value == 2);
 }
 
 template<bool SameObject, typename M>
@@ -302,10 +302,10 @@
    boost::thread::sleep(xsecs(1*BaseSeconds));
    tm2.join();
 
- assert(d1.m_value == 1);
- assert(d2.m_value == -1);
- assert(d1.m_error == no_error);
- assert(d2.m_error == boost::interprocess::timeout_when_locking_error);
+ BOOST_INTERPROCES_CHECK(d1.m_value == 1);
+ BOOST_INTERPROCES_CHECK(d2.m_value == -1);
+ BOOST_INTERPROCES_CHECK(d1.m_error == no_error);
+ BOOST_INTERPROCES_CHECK(d2.m_error == boost::interprocess::timeout_when_locking_error);
 }
 
 template<bool SameObject, typename M>
@@ -340,8 +340,8 @@
    tm1.join();
    tm2.join();
    //Only the first should succeed locking
- assert(d1.m_value == 1);
- assert(d2.m_value == -1);
+ BOOST_INTERPROCES_CHECK(d1.m_value == 1);
+ BOOST_INTERPROCES_CHECK(d2.m_value == -1);
 }
 
 template<bool SameObject, typename M>
@@ -378,8 +378,8 @@
    tm2.join();
 
    //Both should succeed locking
- assert(d1.m_value == 1);
- assert(d2.m_value == 2);
+ BOOST_INTERPROCES_CHECK(d1.m_value == 1);
+ BOOST_INTERPROCES_CHECK(d2.m_value == 2);
 }
 
 template <typename M>

Modified: trunk/libs/interprocess/test/mutex_timeout_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/mutex_timeout_test.cpp (original)
+++ trunk/libs/interprocess/test/mutex_timeout_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -21,7 +21,6 @@
 int main ()
 {
    using namespace boost::interprocess;
-
    test::test_mutex_lock_timeout<true, interprocess_mutex>();
    test::test_mutex_lock_timeout<true, interprocess_recursive_mutex>();
 

Modified: trunk/libs/interprocess/test/named_condition_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_condition_test.cpp (original)
+++ trunk/libs/interprocess/test/named_condition_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -13,10 +13,10 @@
 #include <boost/interprocess/sync/named_mutex.hpp>
 #include <boost/interprocess/sync/scoped_lock.hpp>
 #include <boost/date_time/posix_time/posix_time_types.hpp>
-#include <boost/lexical_cast.hpp>
 #include "condition_test_template.hpp"
 #include "named_creation_template.hpp"
 #include <string>
+#include <sstream>
 #include "get_process_id_name.hpp"
 
 using namespace boost::interprocess;
@@ -34,6 +34,9 @@
    }
 };
 
+inline std::string num_to_string(int n)
+{ std::stringstream s; s << n; return s.str(); }
+
 //This wrapper is necessary to have a default constructor
 //in generic mutex_test_template functions
 class named_condition_test_wrapper
@@ -43,10 +46,10 @@
 
    named_condition_test_wrapper()
       : named_condition(open_or_create,
- (test::add_to_process_id_name("test_cond") + boost::lexical_cast<std::string>(count)).c_str())
+ (test::add_to_process_id_name("test_cond") + num_to_string(count)).c_str())
    {
       condition_deleter::name += test::add_to_process_id_name("test_cond");
- condition_deleter::name += boost::lexical_cast<std::string>(count);
+ condition_deleter::name += num_to_string(count);
       ++count;
    }
 
@@ -108,10 +111,10 @@
    public:
    named_mutex_test_wrapper()
       : named_mutex(open_or_create,
- (test::add_to_process_id_name("test_mutex") + boost::lexical_cast<std::string>(count)).c_str())
+ (test::add_to_process_id_name("test_mutex") + num_to_string(count)).c_str())
    {
       mutex_deleter::name += test::add_to_process_id_name("test_mutex");
- mutex_deleter::name += boost::lexical_cast<std::string>(count);
+ mutex_deleter::name += num_to_string(count);
       ++count;
    }
 

Modified: trunk/libs/interprocess/test/named_construct_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_construct_test.cpp (original)
+++ trunk/libs/interprocess/test/named_construct_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2008-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2008-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/named_creation_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/named_creation_template.hpp (original)
+++ trunk/libs/interprocess/test/named_creation_template.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/named_mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/named_mutex_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/named_recursive_mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_recursive_mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/named_recursive_mutex_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/named_semaphore_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_semaphore_test.cpp (original)
+++ trunk/libs/interprocess/test/named_semaphore_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/named_upgradable_mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/named_upgradable_mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/named_upgradable_mutex_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/node_allocator_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/node_allocator_test.cpp (original)
+++ trunk/libs/interprocess/test/node_allocator_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -28,12 +28,20 @@
 typedef ipcdetail::node_allocator_v1
    <int, managed_shared_memory::segment_manager> shmem_node_allocator_v1_t;
 
+namespace boost {
+namespace interprocess {
+
 //Explicit instantiations to catch compilation errors
 template class node_allocator<int, managed_shared_memory::segment_manager>;
-template class ipcdetail::node_allocator_v1<int, managed_shared_memory::segment_manager>;
 template class node_allocator<void, managed_shared_memory::segment_manager>;
+
+namespace ipcdetail {
+
+template class ipcdetail::node_allocator_v1<int, managed_shared_memory::segment_manager>;
 template class ipcdetail::node_allocator_v1<void, managed_shared_memory::segment_manager>;
 
+}}}
+
 //Alias list types
 typedef list<int, shmem_node_allocator_t> MyShmList;
 typedef list<int, shmem_node_allocator_v1_t> MyShmListV1;

Modified: trunk/libs/interprocess/test/null_index_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/null_index_test.cpp (original)
+++ trunk/libs/interprocess/test/null_index_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/offset_ptr_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/offset_ptr_test.cpp (original)
+++ trunk/libs/interprocess/test/offset_ptr_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -11,24 +11,38 @@
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/offset_ptr.hpp>
 #include <boost/interprocess/detail/type_traits.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
+#include <boost/static_assert.hpp>
 
 using namespace boost::interprocess;
 
-bool test_types_and_convertions()
+class Base
+{};
+
+class Derived
+ : public Base
+{};
+
+class VirtualDerived
+ : public virtual Base
+{};
+
+bool test_types_and_conversions()
 {
    typedef offset_ptr<int> pint_t;
    typedef offset_ptr<const int> pcint_t;
    typedef offset_ptr<volatile int> pvint_t;
    typedef offset_ptr<const volatile int> pcvint_t;
 
- if(!ipcdetail::is_same<pint_t::value_type, int>::value)
- return false;
- if(!ipcdetail::is_same<pcint_t::value_type, const int>::value)
- return false;
- if(!ipcdetail::is_same<pvint_t::value_type, volatile int>::value)
- return false;
- if(!ipcdetail::is_same<pcvint_t::value_type, const volatile int>::value)
- return false;
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pint_t::element_type, int>::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pcint_t::element_type, const int>::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pvint_t::element_type, volatile int>::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pcvint_t::element_type, const volatile int>::value));
+
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pint_t::value_type, int>::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pcint_t::value_type, int>::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pvint_t::value_type, int>::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<pcvint_t::value_type, int>::value));
    int dummy_int = 9;
 
    { pint_t pint(&dummy_int); pcint_t pcint(pint);
@@ -65,6 +79,72 @@
    if(pint)
       return false;
 
+ if(pint != 0)
+ return false;
+
+ if(0 != pint)
+ return false;
+
+ pint = &dummy_int;
+ if(0 == pint)
+ return false;
+
+ if(pint == 0)
+ return false;
+
+ pcint = &dummy_int;
+
+ if( (pcint - pint) != 0)
+ return false;
+
+ if( (pint - pcint) != 0)
+ return false;
+
+ return true;
+}
+
+template<class BasePtr, class DerivedPtr>
+bool test_base_derived_impl()
+{
+ typename DerivedPtr::element_type d;
+ DerivedPtr pderi(&d);
+
+ BasePtr pbase(pderi);
+ pbase = pderi;
+ if(pbase != pderi)
+ return false;
+ if(!(pbase == pderi))
+ return false;
+ if((pbase - pderi) != 0)
+ return false;
+ if(pbase < pderi)
+ return false;
+ if(pbase > pderi)
+ return false;
+ if(!(pbase <= pderi))
+ return false;
+ if(!(pbase >= pderi))
+ return false;
+
+ return true;
+}
+
+bool test_base_derived()
+{
+ typedef offset_ptr<Base> pbase_t;
+ typedef offset_ptr<const Base> pcbas_t;
+ typedef offset_ptr<Derived> pderi_t;
+ typedef offset_ptr<VirtualDerived> pvder_t;
+
+ if(!test_base_derived_impl<pbase_t, pderi_t>())
+ return false;
+ if(!test_base_derived_impl<pbase_t, pvder_t>())
+ return false;
+ if(!test_base_derived_impl<pcbas_t, pderi_t>())
+ return false;
+ if(!test_base_derived_impl<pcbas_t, pvder_t>())
+ return false;
+
    return true;
 }
 
@@ -178,14 +258,34 @@
    return true;
 }
 
+bool test_pointer_traits()
+{
+ typedef offset_ptr<int> OInt;
+ typedef boost::intrusive::pointer_traits< OInt > PTOInt;
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<PTOInt::element_type, int>::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<PTOInt::pointer, OInt >::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<PTOInt::difference_type, OInt::difference_type >::value));
+ BOOST_STATIC_ASSERT((ipcdetail::is_same<PTOInt::rebind_pointer<double>::type, offset_ptr<double> >::value));
+ int dummy;
+ OInt oi(&dummy);
+ if(boost::intrusive::pointer_traits<OInt>::pointer_to(dummy) != oi){
+ return false;
+ }
+ return true;
+}
+
 int main()
 {
- if(!test_types_and_convertions())
+ if(!test_types_and_conversions())
+ return 1;
+ if(!test_base_derived())
       return 1;
    if(!test_arithmetic())
       return 1;
    if(!test_comparison())
       return 1;
+ if(!test_pointer_traits())
+ return 1;
    return 0;
 }
 

Deleted: trunk/libs/interprocess/test/pair_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/pair_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
+++ (empty file)
@@ -1,54 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/interprocess/containers/pair.hpp>
-#include "movable_int.hpp"
-#include "emplace_test.hpp"
-#include<boost/move/move.hpp>
-
-//non_copymovable_int
-//copyable_int
-//movable_int
-//movable_and_copyable_int
-
-
-using namespace ::boost::interprocess;
-
-int main ()
-{
- {
- pair<test::non_copymovable_int, test::non_copymovable_int> p1;
- pair<test::copyable_int, test::copyable_int> p2;
- pair<test::movable_int, test::movable_int> p3;
- pair<test::movable_and_copyable_int, test::movable_and_copyable_int> p4;
- }
- { //Constructible from two values
- pair<test::non_copymovable_int, test::non_copymovable_int> p1(1, 2);
- pair<test::copyable_int, test::copyable_int> p2(1, 2);
- pair<test::movable_int, test::movable_int> p3(1, 2);
- pair<test::movable_and_copyable_int, test::movable_and_copyable_int> p4(1, 2);
- }
-
- { //Constructible from internal types
- pair<test::copyable_int, test::copyable_int> p2(test::copyable_int(1), test::copyable_int(2));
- {
- test::movable_int a(1), b(2);
- pair<test::movable_int, test::movable_int> p3(::boost::move(a), ::boost::move(b));
- }
- {
- test::movable_and_copyable_int a(1), b(2);
- pair<test::movable_and_copyable_int, test::movable_and_copyable_int> p4(::boost::move(a), ::boost::move(b));
- }
- }
- //piecewise_construct missing...
- return 0;
-}
-
-#include <boost/interprocess/detail/config_end.hpp>

Modified: trunk/libs/interprocess/test/print_container.hpp
==============================================================================
--- trunk/libs/interprocess/test/print_container.hpp (original)
+++ trunk/libs/interprocess/test/print_container.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/private_adaptive_pool_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/private_adaptive_pool_test.cpp (original)
+++ trunk/libs/interprocess/test/private_adaptive_pool_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -28,12 +28,20 @@
 typedef ipcdetail::private_adaptive_pool_v1
    <int, managed_shared_memory::segment_manager> priv_node_allocator_v1_t;
 
+namespace boost {
+namespace interprocess {
+
 //Explicit instantiations to catch compilation errors
 template class private_adaptive_pool<int, managed_shared_memory::segment_manager>;
-template class ipcdetail::private_adaptive_pool_v1<int, managed_shared_memory::segment_manager>;
 template class private_adaptive_pool<void, managed_shared_memory::segment_manager>;
+
+namespace ipcdetail {
+
+template class ipcdetail::private_adaptive_pool_v1<int, managed_shared_memory::segment_manager>;
 template class ipcdetail::private_adaptive_pool_v1<void, managed_shared_memory::segment_manager>;
 
+}}}
+
 //Alias list types
 typedef list<int, priv_node_allocator_t> MyShmList;
 typedef list<int, priv_node_allocator_v1_t> MyShmListV1;

Modified: trunk/libs/interprocess/test/private_node_allocator_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/private_node_allocator_test.cpp (original)
+++ trunk/libs/interprocess/test/private_node_allocator_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -28,12 +28,20 @@
 typedef ipcdetail::private_node_allocator_v1
    <int, managed_shared_memory::segment_manager> priv_node_allocator_v1_t;
 
+namespace boost {
+namespace interprocess {
+
 //Explicit instantiations to catch compilation errors
 template class private_node_allocator<int, managed_shared_memory::segment_manager>;
-template class ipcdetail::private_node_allocator_v1<int, managed_shared_memory::segment_manager>;
 template class private_node_allocator<void, managed_shared_memory::segment_manager>;
+
+namespace ipcdetail {
+
+template class ipcdetail::private_node_allocator_v1<int, managed_shared_memory::segment_manager>;
 template class ipcdetail::private_node_allocator_v1<void, managed_shared_memory::segment_manager>;
 
+}}}
+
 //Alias list types
 typedef list<int, priv_node_allocator_t> MyShmList;
 typedef list<int, priv_node_allocator_v1_t> MyShmListV1;

Modified: trunk/libs/interprocess/test/recursive_mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/recursive_mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/recursive_mutex_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -9,15 +9,28 @@
 //////////////////////////////////////////////////////////////////////////////
 
 #include <boost/interprocess/detail/config_begin.hpp>
+#if defined(BOOST_INTERPROCESS_WINDOWS)
+#include <boost/interprocess/sync/windows/windows_recursive_mutex.hpp>
+#include <boost/interprocess/sync/windows/spin_recursive_mutex.hpp>
+#endif
 #include <boost/interprocess/sync/interprocess_recursive_mutex.hpp>
 #include <boost/interprocess/sync/scoped_lock.hpp>
-#include <boost/date_time/posix_time/posix_time_types.hpp>
 #include "mutex_test_template.hpp"
-#include "named_creation_template.hpp"
 
 int main ()
 {
    using namespace boost::interprocess;
+ #if defined(BOOST_INTERPROCESS_WINDOWS)
+ //
+ test::test_all_lock<ipcdetail::windows_recursive_mutex>();
+ test::test_all_mutex<true, ipcdetail::windows_recursive_mutex>();
+ test::test_all_recursive_lock<ipcdetail::windows_recursive_mutex>();
+ //
+ test::test_all_lock<ipcdetail::spin_recursive_mutex>();
+ test::test_all_mutex<true, ipcdetail::spin_recursive_mutex>();
+ test::test_all_recursive_lock<ipcdetail::spin_recursive_mutex>();
+ #endif
+ //
    test::test_all_lock<interprocess_recursive_mutex>();
    test::test_all_mutex<true, interprocess_recursive_mutex>();
    test::test_all_recursive_lock<interprocess_recursive_mutex>();

Modified: trunk/libs/interprocess/test/robust_emulation_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/robust_emulation_test.cpp (original)
+++ trunk/libs/interprocess/test/robust_emulation_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2010-2010. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2010-2011. 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)
 //
@@ -10,13 +10,13 @@
 #include <boost/interprocess/detail/config_begin.hpp>
 #include "robust_mutex_test.hpp"
 #include <boost/interprocess/detail/robust_emulation.hpp>
-#include <boost/interprocess/sync/emulation/mutex.hpp>
+#include <boost/interprocess/sync/spin/mutex.hpp>
 
 int main(int argc, char *argv[])
 {
    using namespace boost::interprocess;
    return test::robust_mutex_test
- < ipcdetail::robust_emulation_mutex<ipcdetail::emulation_mutex> >(argc, argv);
+ < ipcdetail::robust_spin_mutex<ipcdetail::spin_mutex> >(argc, argv);
 }
 
 #include <boost/interprocess/detail/config_end.hpp>

Modified: trunk/libs/interprocess/test/robust_mutex_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/robust_mutex_test.hpp (original)
+++ trunk/libs/interprocess/test/robust_mutex_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2010-2010. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2010-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/robust_recursive_emulation_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/robust_recursive_emulation_test.cpp (original)
+++ trunk/libs/interprocess/test/robust_recursive_emulation_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2010-2010. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2010-2011. 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)
 //
@@ -10,14 +10,14 @@
 #include <boost/interprocess/detail/config_begin.hpp>
 #include "robust_mutex_test.hpp"
 #include <boost/interprocess/detail/robust_emulation.hpp>
-#include <boost/interprocess/sync/emulation/recursive_mutex.hpp>
+#include <boost/interprocess/sync/spin/recursive_mutex.hpp>
 
 int main(int argc, char *argv[])
 {
    using namespace boost::interprocess;
 
    return test::robust_mutex_test
- < ipcdetail::robust_emulation_mutex<ipcdetail::emulation_recursive_mutex> >(argc, argv);
+ < ipcdetail::robust_spin_mutex<ipcdetail::spin_recursive_mutex> >(argc, argv);
 }
 
 #include <boost/interprocess/detail/config_end.hpp>

Modified: trunk/libs/interprocess/test/semaphore_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/semaphore_test.cpp (original)
+++ trunk/libs/interprocess/test/semaphore_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //

Deleted: trunk/libs/interprocess/test/semaphore_test_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/semaphore_test_template.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
+++ (empty file)
@@ -1,320 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef BOOST_INTERPROCESS_TEST_SEMAPHORE_TEST_TEMPLATE_HEADER
-#define BOOST_INTERPROCESS_TEST_SEMAPHORE_TEST_TEMPLATE_HEADER
-
-#include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/interprocess/exceptions.hpp>
-#include "boost_interprocess_check.hpp"
-#include "util.hpp"
-#include <boost/thread/thread.hpp>
-#include <boost/thread/xtime.hpp>
-#include <iostream>
-
-namespace boost { namespace interprocess { namespace test {
-
-template <typename P>
-struct test_wait
-{
- void operator()()
- {/*
- mutex_type interprocess_mutex;
- boost::interprocess::interprocess_condition interprocess_condition;
-
- // Test the lock's constructors.
- {
- wait_type lock(interprocess_mutex, boost::interprocess::defer_lock);
- BOOST_INTERPROCES_CHECK(!lock);
- }
- wait_type lock(interprocess_mutex);
- BOOST_INTERPROCES_CHECK(lock ? true : false);
-
- // Test the lock and unlock methods.
- lock.unlock();
- BOOST_INTERPROCES_CHECK(!lock);
- lock.lock();
- BOOST_INTERPROCES_CHECK(lock ? true : false);*/
- }
-};
-
-template <typename P>
-struct test_try_wait
-{
- void operator()()
- {/*
- mutex_type interprocess_mutex;
- boost::interprocess::interprocess_condition interprocess_condition;
-
- // Test the lock's constructors.
- {
- try_to_wait_type lock(interprocess_mutex, boost::interprocess::try_to_lock);
- BOOST_INTERPROCES_CHECK(lock ? true : false);
- }
- {
- try_to_wait_type lock(interprocess_mutex, boost::interprocess::defer_lock);
- BOOST_INTERPROCES_CHECK(!lock);
- }
- try_to_wait_type lock(interprocess_mutex);
- BOOST_INTERPROCES_CHECK(lock ? true : false);
-
- // Test the lock, unlock and trylock methods.
- lock.unlock();
- BOOST_INTERPROCES_CHECK(!lock);
- lock.lock();
- BOOST_INTERPROCES_CHECK(lock ? true : false);
- lock.unlock();
- BOOST_INTERPROCES_CHECK(!lock);
- BOOST_INTERPROCES_CHECK(lock.try_lock());
- BOOST_INTERPROCES_CHECK(lock ? true : false);*/
- }
-};
-
-template <typename P>
-struct test_timed_wait
-{
- void operator()()
- {/*
- mutex_type interprocess_mutex;
- boost::interprocess::interprocess_condition interprocess_condition;
-
- // Test the lock's constructors.
- {
- // Construct and initialize an xtime for a fast time out.
- boost::posix_time::ptime pt = delay(100, 0);
-
- timed_wait_type lock(interprocess_mutex, pt);
- BOOST_INTERPROCES_CHECK(lock ? true : false);
- }
- {
- timed_wait_type lock(interprocess_mutex, boost::interprocess::defer_lock);
- BOOST_INTERPROCES_CHECK(!lock);
- }
- timed_wait_type lock(interprocess_mutex);
- BOOST_INTERPROCES_CHECK(lock ? true : false);
-
- // Test the lock, unlock and timedlock methods.
- lock.unlock();
- BOOST_INTERPROCES_CHECK(!lock);
- lock.lock();
- BOOST_INTERPROCES_CHECK(lock ? true : false);
- lock.unlock();
- BOOST_INTERPROCES_CHECK(!lock);
- boost::posix_time::ptime pt = delay(10, 0);
- BOOST_INTERPROCES_CHECK(lock.timed_lock(pt));
- BOOST_INTERPROCES_CHECK(lock ? true : false);*/
- }
-};
-
-template <typename P>
-struct test_recursive_lock
-{
- void operator()()
- {/*
- mutex_type mx;
- {
- wait_type lock1(mx);
- wait_type lock2(mx);
- }
- {
- wait_type lock1(mx, defer_lock);
- wait_type lock2(mx, defer_lock);
- }
- {
- wait_type lock1(mx, try_to_lock);
- wait_type lock2(mx, try_to_lock);
- }
- {
- //This should always lock
- boost::posix_time::ptime pt = delay(3);
- wait_type lock1(mx, pt);
- wait_type lock2(mx, pt);
- }*/
- }
-};
-
-// plain_exclusive exercises the "infinite" lock for each
-// read_write_mutex type.
-
-template<typename P>
-void wait_and_sleep(void *arg, P &sm)
-{
- data<P> *pdata = static_cast<data<P>*>(arg);
- boost::interprocess::scoped_lock<P> l(sm);
- boost::thread::sleep(xsecs(3*BaseSeconds));
- ++shared_val;
- pdata->m_value = shared_val;
-}
-
-template<typename P>
-void try_wait_and_sleep(void *arg, P &sm)
-{
- data<P> *pdata = static_cast<data<P>*>(arg);
- boost::interprocess::scoped_lock<P> l(sm, boost::interprocess::defer_lock);
- if (l.try_lock()){
- boost::thread::sleep(xsecs(3*BaseSeconds));
- ++shared_val;
- pdata->m_value = shared_val;
- }
-}
-
-template<typename P>
-void timed_wait_and_sleep(void *arg, P &sm)
-{
- data<P> *pdata = static_cast<data<P>*>(arg);
- boost::posix_time::ptime pt(delay(pdata->m_secs));
- boost::interprocess::scoped_lock<P>
- l (sm, boost::interprocess::defer_lock);
- if (l.timed_lock(pt)){
- boost::thread::sleep(xsecs(3*BaseSeconds));
- ++shared_val;
- pdata->m_value = shared_val;
- }
-}
-
-template<typename P>
-void test_mutex_lock(P &sm)
-{
- shared_val = 0;
-
- data<P> m1(1,sm);
- data<P> m2(2,sm);
-
- // Locker one launches, holds the lock for 3*BaseSeconds seconds.
- boost::thread tm1(thread_adapter<P>(&wait_and_sleep, &m1, sm));
-
- //Wait 1*BaseSeconds
- boost::thread::sleep(xsecs(1*BaseSeconds));
-
- // Locker two launches, holds the lock for 3*BaseSeconds seconds.
- boost::thread tm2(thread_adapter<P>(&wait_and_sleep, &m2, sm));
-
- //Wait completion
- tm1.join();
- tm2.join();
-
- assert(m1.m_value == 1);
- assert(m2.m_value == 2);
-}
-
-template<typename P>
-void test_mutex_try_lock(P &sm)
-{
- shared_val = 0;
-
- data<P> m1(1,sm);
- data<P> m2(2,sm);
-
- // Locker one launches, holds the lock for 3*BaseSeconds seconds.
- boost::thread tm1(thread_adapter<P>(&try_wait_and_sleep, &m1, sm));
-
- //Wait 1*BaseSeconds
- boost::thread::sleep(xsecs(1*BaseSeconds));
-
- // Locker two launches, holds the lock for 3*BaseSeconds seconds.
- boost::thread tm2(thread_adapter<P>(&try_wait_and_sleep, &m2, sm));
-
- //Wait completion
- tm1.join();
- tm2.join();
- //Only the first should succeed locking
- assert(m1.m_value == 1);
- assert(m2.m_value == -1);
-}
-
-template<typename P>
-void test_mutex_timed_lock(P &sm)
-
-{
- {
- shared_val = 0;
-
- data<P> m1(1, sm, 3);
- data<P> m2(2, sm, 3);
-
- // Locker one launches, holds the lock for 3*BaseSeconds seconds.
- boost::thread tm1(thread_adapter<P>(&timed_wait_and_sleep, &m1, sm));
-
- //Wait 1*BaseSeconds
- boost::thread::sleep(xsecs(1*BaseSeconds));
-
- // Locker two launches, holds the lock for 3*BaseSeconds seconds.
- boost::thread tm2(thread_adapter<P>(&timed_wait_and_sleep, &m2, sm));
-
- //Wait completion
- tm1.join();
- tm2.join();
-
- //Both should succeed locking
- assert(m1.m_value == 1);
- assert(m2.m_value == 2);
- }
- {
- shared_val = 0;
-
- data<P> m1(1, sm, 3);
- data<P> m2(2, sm, 3);
-
- // Locker one launches, holds the lock for 3*BaseSeconds seconds.
- boost::thread tm1(thread_adapter<P>(&timed_wait_and_sleep, &m1, sm));
-
- //Wait 1*BaseSeconds
- boost::thread::sleep(xsecs(1*BaseSeconds));
-
- // Locker two launches, holds the lock for 3*BaseSeconds seconds.
- boost::thread tm2(thread_adapter<P>(&timed_wait_and_sleep, &m2, sm));
-
- //Wait completion
- tm1.join();
- tm2.join();
-
- //Both should succeed locking
- assert(m1.m_value == 1);
- assert(m2.m_value == 2);
- }
-}
-
-template <typename P>
-inline void test_all_lock()
-{
- //Now generic interprocess_mutex tests
- std::cout << "test_wait<" << typeid(P).name() << ">" << std::endl;
- test_wait<P>()();
- std::cout << "test_try_wait<" << typeid(P).name() << ">" << std::endl;
- test_try_wait<P>()();
- std::cout << "test_timed_wait<" << typeid(P).name() << ">" << std::endl;
- test_timed_wait<P>()();
-}
-
-template <typename P>
-inline void test_all_recursive_lock()
-{
- //Now generic interprocess_mutex tests
- std::cout << "test_recursive_lock<" << typeid(P).name() << ">" << std::endl;
- test_recursive_lock<P>()();
-}
-
-template<typename P>
-void test_all_mutex()
-{
- P mut;
- std::cout << "test_mutex_lock<" << typeid(P).name() << ">" << std::endl;
- test_mutex_lock(mut);
- std::cout << "test_mutex_try_lock<" << typeid(P).name() << ">" << std::endl;
- test_mutex_try_lock(mut);
- std::cout << "test_mutex_timed_lock<" << typeid(P).name() << ">" << std::endl;
- test_mutex_timed_lock(mut);
-}
-
-}}} //namespace boost { namespace interprocess { namespace test {
-
-#include <boost/interprocess/detail/config_end.hpp>
-
-#endif //BOOST_INTERPROCESS_TEST_SEMAPHORE_TEST_TEMPLATE_HEADER

Modified: trunk/libs/interprocess/test/set_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/set_test.hpp (original)
+++ trunk/libs/interprocess/test/set_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 ////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -63,7 +63,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(i/2);
- aux_vect[i] = boost::interprocess::move(move_me);
+ aux_vect[i] = boost::move(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
@@ -72,7 +72,7 @@
          IntType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(i/2);
- aux_vect3[i] = boost::interprocess::move(move_me);
+ aux_vect3[i] = boost::move(move_me);
          }
 
          MyShmSet *shmset2 =
@@ -102,7 +102,7 @@
          //ordered range insertion
          for(int i = 0; i < 50; ++i){
             IntType move_me(i);
- aux_vect[i] = boost::interprocess::move(move_me);
+ aux_vect[i] = boost::move(move_me);
          }
 
          for(int i = 0; i < 50; ++i){
@@ -111,7 +111,7 @@
 
          for(int i = 0; i < 50; ++i){
             IntType move_me(i);
- aux_vect3[i] = boost::interprocess::move(move_me);
+ aux_vect3[i] = boost::move(move_me);
          }
 
          MyShmSet *shmset3 =
@@ -153,21 +153,21 @@
       }
 
       if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)" << std::endl;
+ std::cout << "Error in shmset->insert(boost::move(move_me)" << std::endl;
          return 1;
       }
 
       int i, j;
       for(i = 0; i < max/2; ++i){
          IntType move_me(i);
- shmset->insert(boost::interprocess::move(move_me));
+ shmset->insert(boost::move(move_me));
          stdset->insert(i);
          IntType move_me2(i);
- shmmultiset->insert(boost::interprocess::move(move_me2));
+ shmmultiset->insert(boost::move(move_me2));
          stdmultiset->insert(i);
 
       if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)" << std::endl;
+ std::cout << "Error in shmset->insert(boost::move(move_me)" << std::endl;
          return 1;
       }
          //
@@ -177,24 +177,25 @@
          stdmultiset->insert(i);
 
       if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)" << std::endl;
+ std::cout << "Error in shmset->insert(boost::move(move_me)" << std::endl;
          return 1;
       }
 
       }
 
       if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)" << std::endl;
+ std::cout << "Error in shmset->insert(boost::move(move_me)" << std::endl;
          return 1;
       }
 
       if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(boost::interprocess::move(move_me)" << std::endl;
+ std::cout << "Error in shmmultiset->insert(boost::move(move_me)" << std::endl;
          return 1;
       }
 
       typename MyShmSet::iterator it;
       typename MyShmSet::const_iterator cit = it;
+ (void)cit;
 
       shmset->erase(shmset->begin()++);
       stdset->erase(stdset->begin()++);
@@ -251,7 +252,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = boost::interprocess::move(move_me);
+ aux_vect[i] = boost::move(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
@@ -260,7 +261,7 @@
          IntType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect3[i] = boost::interprocess::move(move_me);
+ aux_vect3[i] = boost::move(move_me);
          }
 
          shmset->insert(::boost::make_move_iterator(&aux_vect[0]), ::boost::make_move_iterator(aux_vect + 50));
@@ -296,7 +297,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = boost::interprocess::move(move_me);
+ aux_vect[i] = boost::move(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
@@ -305,19 +306,19 @@
          IntType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect3[i] = boost::interprocess::move(move_me);
+ aux_vect3[i] = boost::move(move_me);
          }
 
          IntType aux_vect4[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect4[i] = boost::interprocess::move(move_me);
+ aux_vect4[i] = boost::move(move_me);
          }
 
          IntType aux_vect5[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect5[i] = boost::interprocess::move(move_me);
+ aux_vect5[i] = boost::move(move_me);
          }
 
          shmset->insert(::boost::make_move_iterator(&aux_vect[0]), ::boost::make_move_iterator(aux_vect + 50));
@@ -353,10 +354,10 @@
 
       for(i = 0; i < max/2; ++i){
          IntType move_me(i);
- shmset->insert(shmset->begin(), boost::interprocess::move(move_me));
+ shmset->insert(shmset->begin(), boost::move(move_me));
          stdset->insert(stdset->begin(), i);
          IntType move_me2(i);
- shmmultiset->insert(shmmultiset->begin(), boost::interprocess::move(move_me2));
+ shmmultiset->insert(shmmultiset->begin(), boost::move(move_me2));
          stdmultiset->insert(stdmultiset->begin(), i);
          //
          shmset->insert(shmset->begin(), IntType(i));
@@ -366,80 +367,80 @@
       }
 
       if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)) try 2" << std::endl;
+ std::cout << "Error in shmset->insert(boost::move(move_me)) try 2" << std::endl;
          return 1;
       }
       if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(boost::interprocess::move(move_me2)) try 2" << std::endl;
+ std::cout << "Error in shmmultiset->insert(boost::move(move_me2)) try 2" << std::endl;
          return 1;
       }
 
       for(i = 0; i < max; ++i){
          IntType move_me(i);
- shmset->insert(shmset->begin(), boost::interprocess::move(move_me));
+ shmset->insert(shmset->begin(), boost::move(move_me));
          stdset->insert(stdset->begin(), i);
          //PrintContainers(shmset, stdset);
          IntType move_me2(i);
- shmmultiset->insert(shmmultiset->begin(), boost::interprocess::move(move_me2));
+ shmmultiset->insert(shmmultiset->begin(), boost::move(move_me2));
          stdmultiset->insert(stdmultiset->begin(), i);
          //PrintContainers(shmmultiset, stdmultiset);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(shmset->begin(), boost::interprocess::move(move_me))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->begin(), boost::move(move_me))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->begin(), boost::interprocess::move(move_me2))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->begin(), boost::move(move_me2))" << std::endl;
             return 1;
          }
 
          IntType move_me3(i);
- shmset->insert(shmset->end(), boost::interprocess::move(move_me3));
+ shmset->insert(shmset->end(), boost::move(move_me3));
          stdset->insert(stdset->end(), i);
          IntType move_me4(i);
- shmmultiset->insert(shmmultiset->end(), boost::interprocess::move(move_me4));
+ shmmultiset->insert(shmmultiset->end(), boost::move(move_me4));
          stdmultiset->insert(stdmultiset->end(), i);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(shmset->end(), boost::interprocess::move(move_me3))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->end(), boost::move(move_me3))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->end(), boost::interprocess::move(move_me4))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->end(), boost::move(move_me4))" << std::endl;
             return 1;
          }
          {
          IntType move_me(i);
- shmset->insert(shmset->upper_bound(move_me), boost::interprocess::move(move_me));
+ shmset->insert(shmset->upper_bound(move_me), boost::move(move_me));
          stdset->insert(stdset->upper_bound(i), i);
          //PrintContainers(shmset, stdset);
          IntType move_me2(i);
- shmmultiset->insert(shmmultiset->upper_bound(move_me2), boost::interprocess::move(move_me2));
+ shmmultiset->insert(shmmultiset->upper_bound(move_me2), boost::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), boost::interprocess::move(move_me))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->upper_bound(move_me), boost::move(move_me))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->upper_bound(move_me2), boost::interprocess::move(move_me2))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->upper_bound(move_me2), boost::move(move_me2))" << std::endl;
             return 1;
          }
 
          }
          {
          IntType move_me(i);
- shmset->insert(shmset->lower_bound(move_me), boost::interprocess::move(move_me2));
+ shmset->insert(shmset->lower_bound(move_me), boost::move(move_me2));
          stdset->insert(stdset->lower_bound(i), i);
          //PrintContainers(shmset, stdset);
          IntType move_me2(i);
- shmmultiset->insert(shmmultiset->lower_bound(move_me2), boost::interprocess::move(move_me2));
+ shmmultiset->insert(shmmultiset->lower_bound(move_me2), boost::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), boost::interprocess::move(move_me2))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->lower_bound(move_me), boost::move(move_me2))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->lower_bound(move_me2), boost::interprocess::move(move_me2))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->lower_bound(move_me2), boost::move(move_me2))" << std::endl;
             return 1;
          }
          }
@@ -465,9 +466,9 @@
       for(j = 0; j < 3; ++j)
       for(i = 0; i < 100; ++i){
          IntType move_me(i);
- shmset->insert(boost::interprocess::move(move_me));
+ shmset->insert(boost::move(move_me));
          IntType move_me2(i);
- shmmultiset->insert(boost::interprocess::move(move_me2));
+ shmmultiset->insert(boost::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;
@@ -534,10 +535,10 @@
       int i;
       for(i = 0; i < max; ++i){
          IntType move_me(i);
- shmset->insert(boost::interprocess::move(move_me));
+ shmset->insert(boost::move(move_me));
          stdset->insert(i);
          IntType move_me2(i);
- shmmultiset->insert(boost::interprocess::move(move_me2));
+ shmmultiset->insert(boost::move(move_me2));
          stdmultiset->insert(i);
       }
       if(!CheckEqualContainers(shmset, stdset)) return 1;

Modified: trunk/libs/interprocess/test/sharable_mutex_test_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/sharable_mutex_test_template.hpp (original)
+++ trunk/libs/interprocess/test/sharable_mutex_test_template.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -10,7 +10,7 @@
 // It is provided "as is" without express or implied warranty.
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -26,6 +26,7 @@
 
 #include <boost/thread/thread.hpp>
 #include <boost/thread/xtime.hpp>
+#include "boost_interprocess_check.hpp"
 #include <boost/date_time/posix_time/posix_time_types.hpp>
 #include <boost/interprocess/sync/sharable_lock.hpp>
 #include <boost/interprocess/sync/scoped_lock.hpp>
@@ -152,9 +153,9 @@
       tw1.join();
 
       //We can only assure that the writer will be first
- assert(e1.m_value == 10);
+ BOOST_INTERPROCES_CHECK(e1.m_value == 10);
       //A that we will execute all
- assert(s1.m_value == 20 || s2.m_value == 20 || e2.m_value == 20);
+ BOOST_INTERPROCES_CHECK(s1.m_value == 20 || s2.m_value == 20 || e2.m_value == 20);
    }
 
    {
@@ -193,9 +194,9 @@
       tw1.join();
 
       //We can only assure that the shared will finish first...
- assert(s1.m_value == 0 || s2.m_value == 0);
+ BOOST_INTERPROCES_CHECK(s1.m_value == 0 || s2.m_value == 0);
       //...and writers will be mutually excluded after readers
- assert((e1.m_value == 10 && e2.m_value == 20) ||
+ BOOST_INTERPROCES_CHECK((e1.m_value == 10 && e2.m_value == 20) ||
              (e1.m_value == 20 && e2.m_value == 10) );
    }
 }
@@ -238,9 +239,9 @@
    thr1.join();
    tw1.join();
 
- assert(e1.m_value == 10);
- assert(s1.m_value == -1); // Try would return w/o waiting
- assert(e2.m_value == -1); // Try would return w/o waiting
+ BOOST_INTERPROCES_CHECK(e1.m_value == 10);
+ BOOST_INTERPROCES_CHECK(s1.m_value == -1); // Try would return w/o waiting
+ BOOST_INTERPROCES_CHECK(e2.m_value == -1); // Try would return w/o waiting
 }
 
 template<bool SameObject, typename SM>
@@ -289,10 +290,10 @@
    thr2.join();
    tw2.join();
 
- assert(e1.m_value == 10);
- assert(s1.m_value == -1);
- assert(s2.m_value == 10);
- assert(e2.m_value == -1);
+ BOOST_INTERPROCES_CHECK(e1.m_value == 10);
+ BOOST_INTERPROCES_CHECK(s1.m_value == -1);
+ BOOST_INTERPROCES_CHECK(s2.m_value == 10);
+ BOOST_INTERPROCES_CHECK(e2.m_value == -1);
 }
 
 template<bool SameObject, typename SM>

Modified: trunk/libs/interprocess/test/shared_memory_mapping_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/shared_memory_mapping_test.cpp (original)
+++ trunk/libs/interprocess/test/shared_memory_mapping_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -22,7 +22,7 @@
 shared_memory_object get_shared_memory_mapping()
 {
    shared_memory_object sh;
- return shared_memory_object(boost::interprocess::move(sh));
+ return shared_memory_object(boost::move(sh));
 }
 
 int main ()
@@ -172,9 +172,9 @@
       {
          //Now test move semantics
          shared_memory_object mapping(open_only, process_id.c_str(), read_write);
- shared_memory_object move_ctor(boost::interprocess::move(mapping));
+ shared_memory_object move_ctor(boost::move(mapping));
          shared_memory_object move_assign;
- move_assign = boost::interprocess::move(move_ctor);
+ move_assign = boost::move(move_ctor);
          shared_memory_object ret(get_shared_memory_mapping());
       }
    }

Modified: trunk/libs/interprocess/test/shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/shared_memory_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -70,9 +70,9 @@
          std::memset(shm1.get_user_address(), 0, shm1.get_user_size());
 
          //Now test move semantics
- shared_memory move_ctor(boost::interprocess::move(shm1));
+ shared_memory move_ctor(boost::move(shm1));
          shared_memory move_assign;
- move_assign = boost::interprocess::move(move_ctor);
+ move_assign = boost::move(move_ctor);
       }
    }
    catch(std::exception &ex){

Modified: trunk/libs/interprocess/test/shared_ptr_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/shared_ptr_test.cpp (original)
+++ trunk/libs/interprocess/test/shared_ptr_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,7 +1,7 @@
 //////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Peter Dimov 2002-2005, 2007.
-// (C) Copyright Ion Gaztanaga 2006-2009.
+// (C) Copyright Ion Gaztanaga 2006-2011.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
@@ -585,7 +585,7 @@
          int_shared_ptr p;
          int_shared_ptr p2( p, &m );
 
- BOOST_TEST( ipcdetail::get_pointer(p2.get()) == &m );
+ BOOST_TEST( ipcdetail::to_raw_pointer(p2.get()) == &m );
          BOOST_TEST( p2? true: false );
          BOOST_TEST( !!p2 );
          BOOST_TEST( p2.use_count() == p.use_count() );
@@ -607,7 +607,7 @@
             (shmem.construct<int>(anonymous_instance)(), shmem));
          const_int_shared_ptr p2( p, &m );
 
- BOOST_TEST( ipcdetail::get_pointer(p2.get()) == &m );
+ BOOST_TEST( ipcdetail::to_raw_pointer(p2.get()) == &m );
          BOOST_TEST( p2? true: false );
          BOOST_TEST( !!p2 );
          BOOST_TEST( p2.use_count() == p.use_count() );

Modified: trunk/libs/interprocess/test/slist_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/slist_test.cpp (original)
+++ trunk/libs/interprocess/test/slist_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -19,10 +19,6 @@
 
 using namespace boost::interprocess;
 
-//Explicit instantiation to detect compilation errors
-template class boost::interprocess::slist<test::movable_and_copyable_int,
- test::dummy_test_allocator<test::movable_and_copyable_int> >;
-
 typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocator;
 typedef slist<int, ShmemAllocator> MyList;
 
@@ -38,30 +34,8 @@
 typedef allocator<test::copyable_int, managed_shared_memory::segment_manager> ShmemCopyAllocator;
 typedef slist<test::copyable_int, ShmemCopyAllocator> MyCopyList;
 
-class recursive_slist
-{
-public:
- int id_;
- slist<recursive_slist> slist_;
-};
-
-void recursive_slist_test()//Test for recursive types
-{
- slist<recursive_slist> recursive_list_list;
-}
-
 int main ()
 {
- recursive_slist_test();
- {
- //Now test move semantics
- slist<recursive_slist> original;
- slist<recursive_slist> move_ctor(boost::interprocess::move(original));
- slist<recursive_slist> move_assign;
- move_assign = boost::interprocess::move(move_ctor);
- move_assign.swap(original);
- }
-
    if(test::list_test<managed_shared_memory, MyList, false>())
       return 1;
 

Modified: trunk/libs/interprocess/test/stable_vector_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/stable_vector_test.cpp (original)
+++ trunk/libs/interprocess/test/stable_vector_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -29,33 +29,8 @@
 
 using namespace boost::interprocess;
 
-//Explicit instantiation to detect compilation errors
-//template class stable_vector<test::movable_and_copyable_int,
- //test::dummy_test_allocator<test::movable_and_copyable_int> >;
-
-class recursive_vector
-{
- public:
- int id_;
- stable_vector<recursive_vector> vector_;
-};
-
-void recursive_vector_test()//Test for recursive types
-{
- stable_vector<recursive_vector> recursive_vector_vector;
-}
-
 int main()
 {
- recursive_vector_test();
- {
- //Now test move semantics
- stable_vector<recursive_vector> original;
- stable_vector<recursive_vector> move_ctor(boost::interprocess::move(original));
- stable_vector<recursive_vector> move_assign;
- move_assign = boost::interprocess::move(move_ctor);
- move_assign.swap(original);
- }
    typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocator;
    typedef stable_vector<int, ShmemAllocator> MyVector;
 

Modified: trunk/libs/interprocess/test/string_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/string_test.cpp (original)
+++ trunk/libs/interprocess/test/string_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -37,13 +37,6 @@
 typedef basic_string<wchar_t, std::char_traits<wchar_t>, DummyWCharAllocator> DummyWString;
 typedef test::dummy_test_allocator<DummyWString> DummyWStringAllocator;
 
-//Explicit instantiations of interprocess::basic_string
-template class basic_string<char, std::char_traits<char>, DummyCharAllocator>;
-template class basic_string<wchar_t, std::char_traits<wchar_t>, DummyWCharAllocator>;
-//Explicit instantiation of interprocess::vectors of interprocess::strings
-template class vector<DummyString, DummyStringAllocator>;
-template class vector<DummyWString, DummyWStringAllocator>;
-
 struct StringEqual
 {
    template<class Str1, class Str2>
@@ -127,7 +120,7 @@
          std::sprintf(buffer, "%i", i);
          auxShmString += buffer;
          auxStdString += buffer;
- shmStringVect->push_back(boost::interprocess::move(auxShmString));
+ shmStringVect->push_back(boost::move(auxShmString));
          stdStringVect->push_back(auxStdString);
       }
 
@@ -157,7 +150,7 @@
          std::sprintf(buffer, "%i", i);
          auxShmString += buffer;
          auxStdString += buffer;
- shmStringVect->insert(shmStringVect->begin(), boost::interprocess::move(auxShmString));
+ shmStringVect->insert(shmStringVect->begin(), boost::move(auxShmString));
          stdStringVect->insert(stdStringVect->begin(), auxStdString);
       }
 

Modified: trunk/libs/interprocess/test/tree_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/tree_test.cpp (original)
+++ trunk/libs/interprocess/test/tree_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -105,72 +105,9 @@
                 ,test::movable_and_copyable_int
                 ,std::less<test::movable_and_copyable_int>
                 ,shmem_move_copy_node_pair_allocator_t> MyMoveCopyShmMultiMap;
-//Test recursive structures
-class recursive_set
-{
-public:
- int id_;
- set<recursive_set> set_;
- friend bool operator< (const recursive_set &a, const recursive_set &b)
- { return a.id_ < b.id_; }
-};
-
-class recursive_map
-{
- public:
- int id_;
- map<recursive_map, recursive_map> map_;
- friend bool operator< (const recursive_map &a, const recursive_map &b)
- { return a.id_ < b.id_; }
-};
-
-//Test recursive structures
-class recursive_multiset
-{
-public:
- int id_;
- multiset<recursive_multiset> multiset_;
- friend bool operator< (const recursive_multiset &a, const recursive_multiset &b)
- { return a.id_ < b.id_; }
-};
-
-class recursive_multimap
-{
-public:
- int id_;
- multimap<recursive_multimap, recursive_multimap> multimap_;
- friend bool operator< (const recursive_multimap &a, const recursive_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 ()
 {
- //Recursive container instantiation
- {
- set<recursive_set> set_;
- multiset<recursive_multiset> multiset_;
- map<recursive_map, recursive_map> map_;
- multimap<recursive_multimap, recursive_multimap> multimap_;
- }
- //Now test move semantics
- {
- 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::ipcdetail;
 
    if(0 != test::set_test<my_managed_shared_memory

Modified: trunk/libs/interprocess/test/unique_ptr_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/unique_ptr_test.cpp (original)
+++ trunk/libs/interprocess/test/unique_ptr_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -16,7 +16,6 @@
 #include <boost/interprocess/containers/list.hpp>
 #include <boost/interprocess/containers/set.hpp>
 #include <boost/interprocess/containers/vector.hpp>
-#include <boost/interprocess/containers/string.hpp>
 #include <boost/interprocess/smart_ptr/deleter.hpp>
 #include <stdio.h>
 #include <string>
@@ -70,14 +69,14 @@
 
       //Test some copy constructors
       my_unique_ptr_class my_ptr3(0, segment.get_deleter<MyClass>());
- my_unique_ptr_class my_ptr4(boost::interprocess::move(my_ptr3));
+ my_unique_ptr_class my_ptr4(boost::move(my_ptr3));
 
       //Construct a list and fill
       MyList list(segment.get_segment_manager());
 
       //Insert from my_unique_ptr_class
- list.push_front(boost::interprocess::move(my_ptr));
- list.push_back(boost::interprocess::move(my_ptr2));
+ list.push_front(boost::move(my_ptr));
+ list.push_back(boost::move(my_ptr2));
 
       //Check pointers
       assert(my_ptr.get() == 0);
@@ -90,8 +89,8 @@
       MySet set(set_less_t(), segment.get_segment_manager());
 
       //Insert in set from list passing ownership
- set.insert(boost::interprocess::move(*list.begin()));
- set.insert(boost::interprocess::move(*list.rbegin()));
+ set.insert(boost::move(*list.begin()));
+ set.insert(boost::move(*list.rbegin()));
 
       //Check pointers
       assert(list.begin()->get() == 0);
@@ -113,12 +112,12 @@
 
       //Insert from my_unique_ptr_class
       if(ptr1 < ptr2){
- vector.insert(vector.begin(), boost::interprocess::move(*set.begin()));
- vector.insert(vector.end(), boost::interprocess::move(*set.rbegin()));
+ vector.insert(vector.begin(), boost::move(*set.begin()));
+ vector.insert(vector.end(), boost::move(*set.rbegin()));
       }
       else{
- vector.insert(vector.begin(), boost::interprocess::move(*set.rbegin()));
- vector.insert(vector.end(), boost::interprocess::move(*set.begin()));
+ vector.insert(vector.begin(), boost::move(*set.rbegin()));
+ vector.insert(vector.end(), boost::move(*set.begin()));
       }
 
       //Check pointers
@@ -127,14 +126,14 @@
       assert(vector.begin()->get() == ptr1);
       assert(vector.rbegin()->get() == ptr2);
 
- MyVector vector2(boost::interprocess::move(vector));
+ MyVector vector2(boost::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 = boost::interprocess::move(b);
+ a = boost::move(b);
    }
    shared_memory_object::remove(process_name.c_str());
    return 0;

Modified: trunk/libs/interprocess/test/unordered_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/unordered_test.cpp (original)
+++ trunk/libs/interprocess/test/unordered_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2007-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -24,10 +24,6 @@
 typedef boost::unordered_set<int, boost::hash<int>, std::equal_to<int>, ShmemAllocator> MyUnorderedSet;
 typedef boost::unordered_multiset<int, boost::hash<int>, std::equal_to<int>, ShmemAllocator> MyUnorderedMultiSet;
 
-//Explicit instantiation to catch compile-time errors
-template class boost::unordered_set<int, boost::hash<int>, std::equal_to<int>, ShmemAllocator>;
-template class boost::unordered_multiset<int, boost::hash<int>, std::equal_to<int>, ShmemAllocator>;
-
 int main()
 {
    //Remove any other old shared memory from the system

Modified: trunk/libs/interprocess/test/upgradable_mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/upgradable_mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/upgradable_mutex_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -35,135 +35,135 @@
       //Conversions to scoped_lock
       {
          scoped_lock<Mutex> lock(mut);
- scoped_lock<Mutex> e_lock(boost::interprocess::move(lock));
+ scoped_lock<Mutex> e_lock(boost::move(lock));
          lock.swap(e_lock);
       }
       {
          scoped_lock<Mutex> lock(mut);
          scoped_lock<Mutex> e_lock(mut2);
- e_lock = boost::interprocess::move(lock);
+ e_lock = boost::move(lock);
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls unlock_upgradable_and_lock()
- scoped_lock<Mutex> e_lock(boost::interprocess::move(u_lock));
+ scoped_lock<Mutex> e_lock(boost::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(boost::interprocess::move(u_lock));
- e_lock = boost::interprocess::move(moved);
+ scoped_lock<Mutex> moved(boost::move(u_lock));
+ e_lock = boost::move(moved);
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls try_unlock_upgradable_and_lock()
- scoped_lock<Mutex> e_lock(boost::interprocess::move(u_lock), try_to_lock);
+ scoped_lock<Mutex> e_lock(boost::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(boost::interprocess::move(u_lock), try_to_lock);
- e_lock = boost::interprocess::move(moved);
+ scoped_lock<Mutex> moved(boost::move(u_lock), try_to_lock);
+ e_lock = boost::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(boost::interprocess::move(u_lock), t);
+ scoped_lock<Mutex> e_lock(boost::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(boost::interprocess::move(u_lock), t);
- e_lock = boost::interprocess::move(moved);
+ scoped_lock<Mutex> moved(boost::move(u_lock), t);
+ e_lock = boost::move(moved);
       }
       {
          sharable_lock<Mutex> s_lock(mut);
          //This calls try_unlock_sharable_and_lock()
- scoped_lock<Mutex> e_lock(boost::interprocess::move(s_lock), try_to_lock);
+ scoped_lock<Mutex> e_lock(boost::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(boost::interprocess::move(s_lock), try_to_lock);
- e_lock = boost::interprocess::move(moved);
+ scoped_lock<Mutex> moved(boost::move(s_lock), try_to_lock);
+ e_lock = boost::move(moved);
       }
       //Conversions to upgradable_lock
       {
          upgradable_lock<Mutex> lock(mut);
- upgradable_lock<Mutex> u_lock(boost::interprocess::move(lock));
+ upgradable_lock<Mutex> u_lock(boost::move(lock));
          lock.swap(u_lock);
       }
       {
          upgradable_lock<Mutex> lock(mut);
          upgradable_lock<Mutex> u_lock(mut2);
- upgradable_lock<Mutex> moved(boost::interprocess::move(lock));
- u_lock = boost::interprocess::move(moved);
+ upgradable_lock<Mutex> moved(boost::move(lock));
+ u_lock = boost::move(moved);
       }
       {
          sharable_lock<Mutex> s_lock(mut);
          //This calls unlock_sharable_and_lock_upgradable()
- upgradable_lock<Mutex> u_lock(boost::interprocess::move(s_lock), try_to_lock);
+ upgradable_lock<Mutex> u_lock(boost::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(boost::interprocess::move(s_lock), try_to_lock);
- u_lock = boost::interprocess::move(moved);
+ upgradable_lock<Mutex> moved(boost::move(s_lock), try_to_lock);
+ u_lock = boost::move(moved);
       }
       {
          scoped_lock<Mutex> e_lock(mut);
          //This calls unlock_and_lock_upgradable()
- upgradable_lock<Mutex> u_lock(boost::interprocess::move(e_lock));
+ upgradable_lock<Mutex> u_lock(boost::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(boost::interprocess::move(e_lock));
- u_lock = boost::interprocess::move(moved);
+ upgradable_lock<Mutex> moved(boost::move(e_lock));
+ u_lock = boost::move(moved);
       }
       //Conversions to sharable_lock
       {
          sharable_lock<Mutex> lock(mut);
- sharable_lock<Mutex> s_lock(boost::interprocess::move(lock));
+ sharable_lock<Mutex> s_lock(boost::move(lock));
          lock.swap(s_lock);
       }
       {
          sharable_lock<Mutex> lock(mut);
          sharable_lock<Mutex> s_lock(mut2);
- sharable_lock<Mutex> moved(boost::interprocess::move(lock));
- s_lock = boost::interprocess::move(moved);
+ sharable_lock<Mutex> moved(boost::move(lock));
+ s_lock = boost::move(moved);
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls unlock_upgradable_and_lock_sharable()
- sharable_lock<Mutex> s_lock(boost::interprocess::move(u_lock));
+ sharable_lock<Mutex> s_lock(boost::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(boost::interprocess::move(u_lock));
- s_lock = boost::interprocess::move(moved);
+ sharable_lock<Mutex> moved(boost::move(u_lock));
+ s_lock = boost::move(moved);
       }
       {
          scoped_lock<Mutex> e_lock(mut);
          //This calls unlock_and_lock_sharable()
- sharable_lock<Mutex> s_lock(boost::interprocess::move(e_lock));
+ sharable_lock<Mutex> s_lock(boost::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(boost::interprocess::move(e_lock));
- s_lock = boost::interprocess::move(moved);
+ sharable_lock<Mutex> moved(boost::move(e_lock));
+ s_lock = boost::move(moved);
       }
    }
 

Modified: trunk/libs/interprocess/test/user_buffer_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/user_buffer_test.cpp (original)
+++ trunk/libs/interprocess/test/user_buffer_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -60,17 +60,17 @@
    {
       //Now test move semantics
       managed_heap_memory original(memsize);
- managed_heap_memory move_ctor(boost::interprocess::move(original));
+ managed_heap_memory move_ctor(boost::move(original));
       managed_heap_memory move_assign;
- move_assign = boost::interprocess::move(move_ctor);
+ move_assign = boost::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(boost::interprocess::move(original));
+ managed_external_buffer move_ctor(boost::move(original));
       managed_external_buffer move_assign;
- move_assign = boost::interprocess::move(move_ctor);
+ move_assign = boost::move(move_ctor);
       original.swap(move_assign);
    }
 
@@ -83,13 +83,13 @@
    //Test move semantics
    {
       wmanaged_external_buffer 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_external_buffer temp_external(boost::move(user_buffer));
+ user_default = boost::move(temp_external);
+ user_buffer = boost::move(user_default);
       wmanaged_heap_memory 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);
+ wmanaged_heap_memory temp_heap(boost::move(heap_buffer));
+ heap_default = boost::move(temp_heap);
+ heap_buffer = boost::move(heap_default);
    }
 
    //Initialize memory

Modified: trunk/libs/interprocess/test/util.hpp
==============================================================================
--- trunk/libs/interprocess/test/util.hpp (original)
+++ trunk/libs/interprocess/test/util.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -22,9 +22,8 @@
 #define BOOST_INTERPROCESS_TEST_UTIL_HEADER
 
 #include <boost/interprocess/detail/config_begin.hpp>
-#include <boost/interprocess/sync/interprocess_mutex.hpp>
-#include <boost/interprocess/sync/interprocess_condition.hpp>
 #include <boost/interprocess/sync/scoped_lock.hpp>
+#include <boost/interprocess/detail/os_thread_functions.hpp>
 #include <boost/thread/thread.hpp>
 #include <boost/thread/xtime.hpp>
 
@@ -32,21 +31,14 @@
 #include <algorithm>
 #include <iostream>
 
-#ifndef DEFAULT_EXECUTION_MONITOR_TYPE
-# define DEFAULT_EXECUTION_MONITOR_TYPE execution_monitor::use_condition
-#endif
-
 namespace boost {
 namespace interprocess {
 namespace test {
 
 inline void sleep(const boost::posix_time::ptime &xt)
 {
- boost::interprocess::interprocess_mutex mx;
- boost::interprocess::scoped_lock<boost::interprocess::interprocess_mutex>
- lock(mx);
- boost::interprocess::interprocess_condition cond;
- cond.timed_wait(lock, xt);
+ boost::interprocess::ipcdetail::thread_sleep
+ ((xt - microsec_clock::universal_time()).total_milliseconds());
 }
 
 inline boost::posix_time::ptime delay(int secs, int msecs=0, int nsecs = 0)

Modified: trunk/libs/interprocess/test/vector_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/vector_test.cpp (original)
+++ trunk/libs/interprocess/test/vector_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -28,10 +28,6 @@
 
 using namespace boost::interprocess;
 
-//Explicit instantiation to detect compilation errors
-template class boost::interprocess::vector<test::movable_and_copyable_int,
- test::dummy_test_allocator<test::movable_and_copyable_int> >;
-
 int test_expand_bwd()
 {
    //Now test all back insertion possibilities
@@ -67,29 +63,8 @@
    return 0;
 }
 
-class recursive_vector
-{
- public:
- int id_;
- vector<recursive_vector> vector_;
-};
-
-void recursive_vector_test()//Test for recursive types
-{
- vector<recursive_vector> recursive_vector_vector;
-}
-
 int main()
 {
- recursive_vector_test();
- {
- //Now test move semantics
- vector<recursive_vector> original;
- vector<recursive_vector> move_ctor(boost::interprocess::move(original));
- vector<recursive_vector> move_assign;
- 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;
 

Modified: trunk/libs/interprocess/test/vector_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/vector_test.hpp (original)
+++ trunk/libs/interprocess/test/vector_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -53,18 +53,18 @@
    {
       IntType move_me(1);
       stdvector->insert(stdvector->begin()+size/2, 50, 1);
- shmvector->insert(shmvector->begin()+size/2, 50, boost::interprocess::move(move_me));
+ shmvector->insert(shmvector->begin()+size/2, 50, boost::move(move_me));
       if(!test::CheckEqualContainers(shmvector, stdvector)) return false;
    }
    {
       IntType move_me(2);
- shmvector->assign(shmvector->size()/2, boost::interprocess::move(move_me));
+ shmvector->assign(shmvector->size()/2, boost::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, boost::interprocess::move(move_me));
+ shmvector->assign(shmvector->size()*3-1, boost::move(move_me));
       stdvector->assign(stdvector->size()*3-1, 3);
       if(!test::CheckEqualContainers(shmvector, stdvector)) return false;
    }
@@ -114,7 +114,7 @@
 
          for(int i = 0; i < max; ++i){
             IntType new_int(i);
- shmvector->insert(shmvector->end(), boost::interprocess::move(new_int));
+ shmvector->insert(shmvector->end(), boost::move(new_int));
             stdvector->insert(stdvector->end(), i);
             if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
          }
@@ -123,6 +123,7 @@
          typename MyShmVector::iterator shmit(shmvector->begin());
          typename MyStdVector::iterator stdit(stdvector->begin());
          typename MyShmVector::const_iterator cshmit = shmit;
+ (void)cshmit;
          ++shmit; ++stdit;
          shmvector->erase(shmit);
          stdvector->erase(stdit);
@@ -138,7 +139,7 @@
             for(int i = 0; i < 50; ++i){
                IntType new_int(-1);
                //BOOST_STATIC_ASSERT((::boost::move_ipcdetail::is_copy_constructible<boost::interprocess::test::movable_int>::value == false));
- aux_vect[i] = boost::interprocess::move(new_int);
+ aux_vect[i] = boost::move(new_int);
             }
             int aux_vect2[50];
             for(int i = 0; i < 50; ++i){
@@ -161,7 +162,7 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType new_int(-1);
- aux_vect[i] = boost::interprocess::move(new_int);
+ aux_vect[i] = boost::move(new_int);
             }
             int aux_vect2[50];
             for(int i = 0; i < 50; ++i){
@@ -179,7 +180,7 @@
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
          IntType push_back_this(1);
- shmvector->push_back(boost::interprocess::move(push_back_this));
+ shmvector->push_back(boost::move(push_back_this));
          stdvector->push_back(int(1));
          shmvector->push_back(IntType(1));
          stdvector->push_back(int(1));
@@ -196,7 +197,7 @@
 
          for(int i = 0; i < max; ++i){
             IntType insert_this(i);
- shmvector->insert(shmvector->begin(), boost::interprocess::move(insert_this));
+ shmvector->insert(shmvector->begin(), boost::move(insert_this));
             stdvector->insert(stdvector->begin(), i);
             shmvector->insert(shmvector->begin(), IntType(i));
             stdvector->insert(stdvector->begin(), int(i));

Modified: trunk/libs/interprocess/test/vectorstream_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/vectorstream_test.cpp (original)
+++ trunk/libs/interprocess/test/vectorstream_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -18,7 +18,6 @@
 #include <vector>
 #include <iostream>
 #include <boost/date_time/posix_time/posix_time_types.hpp>
-#include <boost/lexical_cast.hpp>
 #include <stdio.h>
 
 using namespace boost::interprocess;

Modified: trunk/libs/interprocess/test/windows_shared_memory_mapping_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/windows_shared_memory_mapping_test.cpp (original)
+++ trunk/libs/interprocess/test/windows_shared_memory_mapping_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/interprocess/test/windows_shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/windows_shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/windows_shared_memory_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. 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)
 //
@@ -33,7 +33,7 @@
 
 static const std::size_t ShmSize = 1000;
 typedef ipcdetail::managed_open_or_create_impl
- <windows_shared_memory, false> windows_shared_memory_t;
+ <windows_shared_memory, 0, false> windows_shared_memory_t;
 
 //This wrapper is necessary to have a common constructor
 //in generic named_creation_template functions

Modified: trunk/libs/interprocess/test/xsi_shared_memory_mapping_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/xsi_shared_memory_mapping_test.cpp (original)
+++ trunk/libs/interprocess/test/xsi_shared_memory_mapping_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //

Modified: trunk/libs/intrusive/doc/intrusive.qbk
==============================================================================
--- trunk/libs/intrusive/doc/intrusive.qbk (original)
+++ trunk/libs/intrusive/doc/intrusive.qbk 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -2321,16 +2321,8 @@
 * It must have the same ownership semantics as a raw pointer. This means that
    resource management smart pointers (like `boost::shared_ptr`) can't be used.
 
-The conversion from the smart pointer to a raw pointer must be implemented following
-Boost smart pointer `detail::get_pointer()` function. This function will be found using
-ADL. For example, for `boost::interprocess::offset_ptr`, `detail::get_pointer` is defined
-as follows:
-
-[c++]
-
- template<class T>
- T * detail::get_pointer(boost::interprocess::offset_ptr<T> const & p)
- { return p.get(); }
+The conversion from the smart pointer to a raw pointer will be implemented as a recursive call to
+`operator->()` until the function returns a raw pointer.
 
 [endsect]
 
@@ -3072,7 +3064,7 @@
 
 [c++]
 
- #include <boost/pointer_to_other.hpp>
+ #include <boost/intrusive/pointer_traits.hpp>
    #include <boost/intrusive/link_mode.hpp>
 
    struct my_value_traits
@@ -3081,8 +3073,10 @@
       typedef implementation_defined value_type;
       typedef node_traits::node_ptr node_ptr;
       typedef node_traits::const_node_ptr const_node_ptr;
- typedef boost::pointer_to_other<node_ptr, value_type>::type pointer;
- typedef boost::pointer_to_other<node_ptr, const value_type>::type const_pointer;
+ typedef boost::intrusive::pointer_traits<node_ptr>::rebind_traits
+ <value_type>::type::pointer pointer;
+ typedef boost::intrusive::pointer_traits<node_ptr>::rebind_traits
+ <const value_type>::type::pointer const_pointer;
 
       static const link_mode_type link_mode = some_linking_policy;
 
@@ -3126,14 +3120,13 @@
 * [*['pointer]]: The type of a pointer to a `value_type`. It must be the same pointer type
    as `node_ptr`: If `node_ptr` is `node*`, `pointer` must be `value_type*`. If
    `node_ptr` is `smart_ptr<node_traits::node>`, `pointer` must be `smart_ptr<value_type>`.
- This can be generically achieved using `boost::pointer_to_other` utility from [*Boost SmartPointers]
+ This can be generically achieved using `boost::intrusive::pointer_traits` (portable implementation of C++11
+ `std::pointer_traits`) or `boost::pointer_to_other` utility from [*Boost SmartPointers]
    defined in `<boost/pointer_to_other.hpp>`.
    
 * [*['const_pointer]]: The type of a pointer to a `const value_type`. It must be the same pointer type
    as `node_ptr`: If `node_ptr` is `node*`, `const_pointer` must be `const value_type*`. If
- `node_ptr` is `smart_ptr<node_traits::node>`, `const_pointer` must be `smart_ptr<const value_type>`
- This can be generically achieved using `boost::pointer_to_other` utility from [*Boost SmartPointers]
- defined in `<boost/pointer_to_other.hpp>`.
+ `node_ptr` is `smart_ptr<node_traits::node>`, `const_pointer` must be `smart_ptr<const value_type>`.
      
 * [*['link_mode]]: Indicates that `value_traits` needs some additional work or checks from the
    container. The types are enumerations defined in the `link_mode.hpp` header.
@@ -3568,7 +3561,7 @@
     [[`normal_link` intrusive list] [5000 / 22500] [1 / 1]]
     [[`safe_link` intrusive list] [7812 / 32187] [1.56 / 1.43]]
     [[`auto_unlink` intrusive list] [10156 / 41562] [2.03 / 1.84]]
- [[Standard list] [76875 / 97500] [5.37 / 4.33]]
+ [[Standard list] [26875 / 97500] [5.37 / 4.33]]
     [[Standard compact pointer list] [76406 / 86718] [15.28 / 3.85]]
     [[Standard disperse pointer list] [146562 / 175625] [29.31 / 7.80]]
 ]

Added: trunk/libs/intrusive/proj/vc7ide/Intrusive.ncb
==============================================================================
Binary file. No diff available.

Modified: trunk/libs/intrusive/proj/vc7ide/Intrusive.sln
==============================================================================
--- trunk/libs/intrusive/proj/vc7ide/Intrusive.sln (original)
+++ trunk/libs/intrusive/proj/vc7ide/Intrusive.sln 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -1,24 +1,4 @@
 Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list", "list\list.vcproj", "{977B61B4-9968-497C-9F0B-24A8145473B8}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist", "slist\slist.vcproj", "{5A02061D-3728-4C49-AFC8-0130C1F161C0}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multiset", "multiset\multiset.vcproj", "{961F0E06-C092-4AF7-ABC5-2A49999F3B79}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_intrusivelib", "_intrusivelib\_intrusivelib.vcproj", "{90F3C5BD-8E6C-4629-BC71-A1009EC88059}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "set", "set\set.vcproj", "{960E01F6-92C1-F74A-BCA5-2A9F3B994979}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unordered_set", "unordered_set\unordered_set.vcproj", "{90E701E6-2C91-F4A7-BA6C-A9F3B0949279}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
@@ -99,32 +79,42 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pointer_traits", "pointer_traits\pointer_traits.vcproj", "{7679B41B-F2B4-9176-CB81-35449467B435}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list", "list\list.vcproj", "{977B61B4-9968-497C-9F0B-24A8145473B8}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist", "slist\slist.vcproj", "{5A02061D-3728-4C49-AFC8-0130C1F161C0}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multiset", "multiset\multiset.vcproj", "{961F0E06-C092-4AF7-ABC5-2A49999F3B79}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_intrusivelib", "_intrusivelib\_intrusivelib.vcproj", "{90F3C5BD-8E6C-4629-BC71-A1009EC88059}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "set", "set\set.vcproj", "{960E01F6-92C1-F74A-BCA5-2A9F3B994979}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "has_member_function_callable_with", "has_member_function_callable_with\has_member_function_callable_with.vcproj", "{3579B1A4-02AB-5489-CB81-957B14032465}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
 Global
         GlobalSection(SolutionConfiguration) = preSolution
                 Debug = Debug
                 Release = Release
         EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
         GlobalSection(ProjectConfiguration) = postSolution
- {977B61B4-9968-497C-9F0B-24A8145473B8}.Debug.ActiveCfg = Debug|Win32
- {977B61B4-9968-497C-9F0B-24A8145473B8}.Debug.Build.0 = Debug|Win32
- {977B61B4-9968-497C-9F0B-24A8145473B8}.Release.ActiveCfg = Release|Win32
- {977B61B4-9968-497C-9F0B-24A8145473B8}.Release.Build.0 = Release|Win32
- {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Debug.ActiveCfg = Debug|Win32
- {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Debug.Build.0 = Debug|Win32
- {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Release.ActiveCfg = Release|Win32
- {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Release.Build.0 = Release|Win32
- {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Debug.ActiveCfg = Debug|Win32
- {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Debug.Build.0 = Debug|Win32
- {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Release.ActiveCfg = Release|Win32
- {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Release.Build.0 = Release|Win32
- {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Debug.ActiveCfg = Debug|Win32
- {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Debug.Build.0 = Debug|Win32
- {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Release.ActiveCfg = Release|Win32
- {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Release.Build.0 = Release|Win32
- {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Debug.ActiveCfg = Debug|Win32
- {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Debug.Build.0 = Debug|Win32
- {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Release.ActiveCfg = Release|Win32
- {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Release.Build.0 = Release|Win32
                 {90E701E6-2C91-F4A7-BA6C-A9F3B0949279}.Debug.ActiveCfg = Debug|Win32
                 {90E701E6-2C91-F4A7-BA6C-A9F3B0949279}.Debug.Build.0 = Debug|Win32
                 {90E701E6-2C91-F4A7-BA6C-A9F3B0949279}.Release.ActiveCfg = Release|Win32
@@ -205,6 +195,34 @@
                 {761A79B4-9968-CB81-F02B-2A4497345475}.Debug.Build.0 = Debug|Win32
                 {761A79B4-9968-CB81-F02B-2A4497345475}.Release.ActiveCfg = Release|Win32
                 {761A79B4-9968-CB81-F02B-2A4497345475}.Release.Build.0 = Release|Win32
+ {7679B41B-F2B4-9176-CB81-35449467B435}.Debug.ActiveCfg = Debug|Win32
+ {7679B41B-F2B4-9176-CB81-35449467B435}.Debug.Build.0 = Debug|Win32
+ {7679B41B-F2B4-9176-CB81-35449467B435}.Release.ActiveCfg = Release|Win32
+ {7679B41B-F2B4-9176-CB81-35449467B435}.Release.Build.0 = Release|Win32
+ {977B61B4-9968-497C-9F0B-24A8145473B8}.Debug.ActiveCfg = Debug|Win32
+ {977B61B4-9968-497C-9F0B-24A8145473B8}.Debug.Build.0 = Debug|Win32
+ {977B61B4-9968-497C-9F0B-24A8145473B8}.Release.ActiveCfg = Release|Win32
+ {977B61B4-9968-497C-9F0B-24A8145473B8}.Release.Build.0 = Release|Win32
+ {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Debug.ActiveCfg = Debug|Win32
+ {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Debug.Build.0 = Debug|Win32
+ {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Release.ActiveCfg = Release|Win32
+ {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Release.Build.0 = Release|Win32
+ {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Debug.ActiveCfg = Debug|Win32
+ {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Debug.Build.0 = Debug|Win32
+ {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Release.ActiveCfg = Release|Win32
+ {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Release.Build.0 = Release|Win32
+ {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Debug.ActiveCfg = Debug|Win32
+ {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Debug.Build.0 = Debug|Win32
+ {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Release.ActiveCfg = Release|Win32
+ {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Release.Build.0 = Release|Win32
+ {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Debug.ActiveCfg = Debug|Win32
+ {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Debug.Build.0 = Debug|Win32
+ {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Release.ActiveCfg = Release|Win32
+ {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Release.Build.0 = Release|Win32
+ {3579B1A4-02AB-5489-CB81-957B14032465}.Debug.ActiveCfg = Debug|Win32
+ {3579B1A4-02AB-5489-CB81-957B14032465}.Debug.Build.0 = Debug|Win32
+ {3579B1A4-02AB-5489-CB81-957B14032465}.Release.ActiveCfg = Release|Win32
+ {3579B1A4-02AB-5489-CB81-957B14032465}.Release.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(ExtensibilityGlobals) = postSolution
         EndGlobalSection

Modified: trunk/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj
==============================================================================
--- trunk/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj (original)
+++ trunk/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -155,6 +155,9 @@
                                 RelativePath="..\..\..\..\..\boost\intrusive\pointer_plus_bits.hpp">
                         </File>
                         <File
+ RelativePath="..\..\..\..\..\boost\intrusive\pointer_traits.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\..\boost\intrusive\rbtree.hpp">
                         </File>
                         <File
@@ -245,6 +248,9 @@
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\generic_hook.hpp">
                                 </File>
                                 <File
+ RelativePath="..\..\..\..\..\boost\intrusive\detail\has_member_function_callable_with.hpp">
+ </File>
+ <File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\hashtable_node.hpp">
                                 </File>
                                 <File
@@ -254,13 +260,16 @@
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\list_node.hpp">
                                 </File>
                                 <File
+ RelativePath="..\..\..\..\..\boost\intrusive\detail\memory_util.hpp">
+ </File>
+ <File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\mpl.hpp">
                                 </File>
                                 <File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\parent_from_member.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\..\boost\intrusive\detail\pointer_to_other.hpp">
+ RelativePath="..\..\..\..\..\boost\intrusive\detail\preprocessor.hpp">
                                 </File>
                                 <File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\rbtree_node.hpp">

Added: trunk/libs/intrusive/proj/vc7ide/has_member_function_callable_with/has_member_function_callable_with.vcproj
==============================================================================
--- (empty file)
+++ trunk/libs/intrusive/proj/vc7ide/has_member_function_callable_with/has_member_function_callable_with.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="has_member_function_callable_with"
+ ProjectGUID="{3579B1A4-02AB-5489-CB81-957B14032465}"
+ RootNamespace="virtual_base"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../../"
+ PreprocessorDefinitions="BOOST_DATE_TIME_NO_LIB"
+ GeneratePreprocessedFile="0"
+ KeepComments="FALSE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="5"
+ DisableLanguageExtensions="FALSE"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/has_member_function_callable_with.exe"
+ LinkIncremental="2"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/has_member_function_callable_with.pdb"
+ GenerateMapFile="TRUE"
+ SubSystem="1"
+ 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>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../../"
+ PreprocessorDefinitions="BOOST_DATE_TIME_NO_LIB"
+ RuntimeLibrary="4"
+ DisableLanguageExtensions="FALSE"
+ ForceConformanceInForLoopScope="TRUE"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/has_member_function_callable_with.exe"
+ LinkIncremental="1"
+ 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="{77B513CF-A736-6476-7AB5-D4AB7228A73C}">
+ <File
+ RelativePath="..\..\..\test\has_member_function_callable_with.cpp">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>

Added: trunk/libs/intrusive/proj/vc7ide/pointer_traits/pointer_traits.vcproj
==============================================================================
--- (empty file)
+++ trunk/libs/intrusive/proj/vc7ide/pointer_traits/pointer_traits.vcproj 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="pointer_traits"
+ ProjectGUID="{7679B41B-F2B4-9176-CB81-35449467B435}"
+ RootNamespace="pointer_traits"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../../"
+ PreprocessorDefinitions="BOOST_DATE_TIME_NO_LIB"
+ GeneratePreprocessedFile="0"
+ KeepComments="FALSE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="5"
+ DisableLanguageExtensions="FALSE"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/pointer_traits.exe"
+ LinkIncremental="2"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/pointer_traits.pdb"
+ GenerateMapFile="TRUE"
+ SubSystem="1"
+ 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>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../../"
+ PreprocessorDefinitions="BOOST_DATE_TIME_NO_LIB"
+ RuntimeLibrary="4"
+ DisableLanguageExtensions="FALSE"
+ ForceConformanceInForLoopScope="TRUE"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/pointer_traits.exe"
+ LinkIncremental="1"
+ 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="{4F537F31-AB85-7644-A616-25727F35FA5F}">
+ <File
+ RelativePath="..\..\..\test\pointer_traits_test.cpp">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>

Modified: trunk/libs/intrusive/proj/vc7ide/to-do.txt
==============================================================================
--- trunk/libs/intrusive/proj/vc7ide/to-do.txt (original)
+++ trunk/libs/intrusive/proj/vc7ide/to-do.txt 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -15,6 +15,9 @@
 -> Document incremental<> option better
 -> Assure stable order for optimize_multikey and inverse order otherwise
 -> add an option to unordered containers to get O(1) traversal and begin()/end() even with very low load factors
+-> Take all pointers by const reference to optimize shared memory pointers
+-> Return pointers by const reference if node traits return them by const reference to optimize shared memory pointers
+-> Detect call signatures by has_member_function_callable_with instead of exact match to allow taking by const reference
 
 
 The article explains it quite well: Linear Hashing The cost of hash table expansion is spread out across each hash table insertion operation, as opposed to being incurred all at once. Linear hashing is therefore well suited for interactive applications.
@@ -27,3 +30,4 @@
 
 Now, intrusive containers don't allocate memory at all, so incremental rehashing must be trigered by the user using
 "incremental_rehash(bool)" (use an additional bucket, that is, incremental rehash) and "incremental_rehash(bucket_traits)" (to update the new bucket array with an array that should be twice/half the size of the previous one). I admit that this is not explained at all with an example, so I will note this issue in my to do list.
+

Modified: trunk/libs/intrusive/test/avl_multiset_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/avl_multiset_test.cpp (original)
+++ trunk/libs/intrusive/test/avl_multiset_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -12,7 +12,7 @@
 /////////////////////////////////////////////////////////////////////////////
 #include <boost/intrusive/detail/config_begin.hpp>
 #include <boost/intrusive/avl_set.hpp>
-#include <boost/intrusive/detail/pointer_to_other.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 #include "itestvalue.hpp"
 #include "smart_ptr.hpp"
 #include "generic_multiset_test.hpp"

Modified: trunk/libs/intrusive/test/common_functors.hpp
==============================================================================
--- trunk/libs/intrusive/test/common_functors.hpp (original)
+++ trunk/libs/intrusive/test/common_functors.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -29,7 +29,7 @@
    {
       typedef typename std::iterator_traits<Pointer>::value_type value_type;
       BOOST_INTRUSIVE_INVARIANT_ASSERT(( detail::is_same<T, value_type>::value ));
- delete detail::boost_intrusive_get_pointer(p);
+ delete boost::intrusive::detail::to_raw_pointer(p);
    }
 };
 

Modified: trunk/libs/intrusive/test/default_hook_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/default_hook_test.cpp (original)
+++ trunk/libs/intrusive/test/default_hook_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -16,6 +16,7 @@
 #include <boost/intrusive/splay_set.hpp>
 #include <boost/intrusive/avl_set.hpp>
 #include <boost/intrusive/sg_set.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 #include "smart_ptr.hpp"
 #include <vector>
 
@@ -78,7 +79,8 @@
    List my_list;
    Slist my_slist;
    Set my_set;
- USet my_uset(USet::bucket_traits(buckets, 100));
+ USet my_uset(USet::bucket_traits(pointer_traits<USet::bucket_ptr>::pointer_to(*buckets), 100));
+
    AvlSet my_avlset;
    SplaySet my_splayset;
    SgSet my_sgset;

Modified: trunk/libs/intrusive/test/external_value_traits_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/external_value_traits_test.cpp (original)
+++ trunk/libs/intrusive/test/external_value_traits_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -13,7 +13,7 @@
 #include <boost/intrusive/slist.hpp>
 #include <boost/intrusive/rbtree.hpp>
 #include <boost/intrusive/hashtable.hpp>
-#include <boost/pointer_to_other.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 #include <functional>
 #include <vector>
 
@@ -40,15 +40,16 @@
 template<class NodeTraits>
 struct external_traits
 {
- typedef NodeTraits node_traits;
- typedef typename node_traits::node node;
- typedef typename node_traits::node_ptr node_ptr;
- typedef typename node_traits::const_node_ptr const_node_ptr;
- typedef MyClass value_type;
- typedef typename boost::pointer_to_other
- <node_ptr, MyClass>::type pointer;
- typedef typename boost::pointer_to_other
- <node_ptr, const MyClass>::type const_pointer;
+ typedef NodeTraits node_traits;
+ typedef typename node_traits::node node;
+ typedef typename node_traits::node_ptr node_ptr;
+ typedef typename node_traits::const_node_ptr const_node_ptr;
+ typedef MyClass value_type;
+ typedef typename pointer_traits<node_ptr>::
+ template rebind_pointer<MyClass>::type pointer;
+ typedef typename pointer_traits<node_ptr>::
+ template rebind_pointer
+ <const MyClass>::type const_pointer;
    static const link_mode_type link_mode = normal_link;
 
    external_traits(pointer values, std::size_t NumElem)

Modified: trunk/libs/intrusive/test/generic_assoc_test.hpp
==============================================================================
--- trunk/libs/intrusive/test/generic_assoc_test.hpp (original)
+++ trunk/libs/intrusive/test/generic_assoc_test.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -325,17 +325,14 @@
>::type assoc_type;
    typedef std::vector<value_type> orig_set_t;
    typedef typename orig_set_t::iterator iterator_t;
- std::size_t num_values;
    orig_set_t original_testset;
    {
       assoc_type testset (values.begin(), values.end());
- num_values = testset.size();
       original_testset.insert(original_testset.end(), testset.begin(), testset.end());
    }
    {
       assoc_type testset(values.begin(), values.end());
       testset.rebalance();
- iterator_t it = original_testset.begin();
       TEST_INTRUSIVE_SEQUENCE_EXPECTED(original_testset, testset.begin());
    }
 

Added: trunk/libs/intrusive/test/has_member_function_callable_with.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/intrusive/test/has_member_function_callable_with.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,450 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2011-2011. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/intrusive for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#include <boost/intrusive/detail/config_begin.hpp>
+#include <boost/intrusive/detail/workaround.hpp>
+#include <cstddef>
+#include <boost/move/move.hpp>
+
+namespace boost{
+namespace intrusive{
+namespace intrusive_detail{
+namespace has_member_function_callable_with {
+
+struct dont_care
+{
+ dont_care(...);
+};
+
+struct private_type
+{
+ static private_type p;
+ private_type const &operator,(int) const;
+};
+
+typedef char yes_type;
+struct no_type{ char dummy[2]; };
+
+template<typename T>
+no_type is_private_type(T const &);
+yes_type is_private_type(private_type const &);
+
+}}}}
+
+
+namespace boost{
+namespace intrusive{
+namespace intrusive_detail{
+
+template <typename Type>
+class has_member_function_named_func
+{
+ struct BaseMixin
+ {
+ void func();
+ };
+
+ struct Base : public Type, public BaseMixin {};
+ template <typename T, T t> class Helper{};
+
+ template <typename U>
+ static has_member_function_callable_with::no_type deduce
+ (U*, Helper<void (BaseMixin::*)(), &U::func>* = 0);
+ static has_member_function_callable_with::yes_type deduce(...);
+
+ public:
+ static const bool value =
+ sizeof(has_member_function_callable_with::yes_type) == sizeof(deduce((Base*)(0)));
+};
+
+}}}
+
+#if !defined(BOOST_CONTAINER_PERFECT_FORWARDING)
+
+ namespace boost{
+ namespace intrusive{
+ namespace intrusive_detail{
+
+ template<typename Fun, bool HasFunc
+ , class P0 = void , class P1 = void , class P2 = void>
+ struct has_member_function_callable_with_func_impl;
+
+
+ template<typename Fun , class P0 , class P1 , class P2>
+ struct has_member_function_callable_with_func_impl
+ <Fun, false , P0 , P1 , P2>
+ {
+ static const bool value = false;
+ };
+
+
+ }}}
+
+
+ namespace boost{
+ namespace intrusive{
+ namespace intrusive_detail{
+
+ #if !defined(_MSC_VER) || (_MSC_VER != 1600)
+
+ template<class F, std::size_t N = sizeof(boost::move_detail::declval<F>().func(), 0)>
+ struct zeroarg_checker_func
+ {
+ has_member_function_callable_with::yes_type dummy;
+ zeroarg_checker_func(int);
+ };
+
+ //For buggy compilers like MSVC 7.1, ((F*)0)->func() does not
+ //fail but sizeof yields to 0.
+ template<class F>
+ struct zeroarg_checker_func<F, 0>
+ {
+ has_member_function_callable_with::no_type dummy;
+ zeroarg_checker_func(int);
+ };
+
+ template<typename Fun>
+ struct has_member_function_callable_with_func_impl
+ <Fun, true , void , void , void>
+ {
+ template<class U>
+ static zeroarg_checker_func<U> Test(zeroarg_checker_func<U>*);
+
+ template <class U>
+ static has_member_function_callable_with::no_type Test(...);
+
+ static const bool value = sizeof(Test< Fun >(0))
+ == sizeof(has_member_function_callable_with::yes_type);
+ };
+
+ #else
+
+ template<typename Fun>
+ struct has_member_function_callable_with_func_impl
+ <Fun, true , void , void , void>
+ {
+ template<class U>
+ static decltype(boost::move_detail::declval<Fun>().func(), has_member_function_callable_with::yes_type()) Test(Fun* f);
+
+ template<class U>
+ static has_member_function_callable_with::no_type Test(...);
+ static const bool value = sizeof(Test<Fun>((Fun*)0)) == sizeof(has_member_function_callable_with::yes_type);
+ };
+
+ #endif
+
+ }}}
+
+
+ namespace boost{
+ namespace intrusive{
+ namespace intrusive_detail{
+
+
+ template<typename Fun>
+ struct funwrap1_func : Fun
+ {
+ using Fun::func;
+ has_member_function_callable_with::private_type
+ func( has_member_function_callable_with::dont_care) const;
+ };
+
+ template<typename Fun , class P0>
+ struct has_member_function_callable_with_func_impl
+ <Fun, true , P0 , void , void>
+ {
+
+ typedef funwrap1_func<Fun> FunWrap;
+
+ static bool const value = (sizeof(has_member_function_callable_with::no_type) ==
+ sizeof(has_member_function_callable_with::is_private_type
+ ( (::boost::move_detail::declval< FunWrap >().func( ::boost::move_detail::declval<P0>() ), 0) )
+ )
+ );
+ };
+
+ }}}
+
+ namespace boost{
+ namespace intrusive{
+ namespace intrusive_detail{
+
+
+ template<typename Fun>
+ struct funwrap2_func: Fun
+ {
+ using Fun::func;
+ has_member_function_callable_with::private_type
+ func( has_member_function_callable_with::dont_care , has_member_function_callable_with::dont_care) const;
+ };
+
+ template<typename Fun , class P0 , class P1>
+ struct has_member_function_callable_with_func_impl
+ <Fun, true , P0 , P1 , void>
+ {
+ typedef funwrap2_func<Fun> FunWrap;
+
+ static bool const value = (sizeof(has_member_function_callable_with::no_type) ==
+ sizeof(has_member_function_callable_with::is_private_type
+ ( (::boost::move_detail::declval< FunWrap >().
+ func( ::boost::move_detail::declval<P0>()
+ , ::boost::move_detail::declval<P1>() )
+ , 0) )
+ )
+ );
+ };
+ }}}
+
+ namespace boost{
+ namespace intrusive{
+ namespace intrusive_detail{
+
+
+ template<typename Fun>
+ struct funwrap3_func: Fun
+ {
+ using Fun::func;
+ has_member_function_callable_with::private_type
+ func( has_member_function_callable_with::dont_care
+ , has_member_function_callable_with::dont_care
+ , has_member_function_callable_with::dont_care) const;
+ };
+
+ template<typename Fun , class P0 , class P1 , class P2>
+ struct has_member_function_callable_with_func_impl
+ <Fun, true , P0 , P1 , P2 >
+ {
+ typedef funwrap3_func<Fun> FunWrap;
+
+ static bool const value = (sizeof(has_member_function_callable_with::no_type) ==
+ sizeof(has_member_function_callable_with::is_private_type
+ ( (::boost::move_detail::declval< FunWrap >().
+ func( ::boost::move_detail::declval<P0>()
+ , ::boost::move_detail::declval<P1>()
+ , ::boost::move_detail::declval<P2>() )
+ , 0) )
+ )
+ );
+ };
+
+ template<typename Fun
+ , class P0 = void , class P1 = void, typename P2 = void>
+ struct has_member_function_callable_with_func
+ : public has_member_function_callable_with_func_impl
+ <Fun, has_member_function_named_func<Fun>::value, P0 , P1 , P2 >
+ {};
+
+ }}}
+
+#else
+
+ namespace boost{
+ namespace intrusive{
+ namespace intrusive_detail{
+
+ template<typename Fun, bool HasFunc, class ...Args>
+ struct has_member_function_callable_with_func_impl;
+
+ template<typename Fun, class ...Args>
+ struct has_member_function_callable_with_func_impl
+ <Fun, false, Args...>
+ {
+ static const bool value = false;
+ };
+
+
+ }}}
+
+
+ namespace boost{
+ namespace intrusive{
+ namespace intrusive_detail{
+
+ template<class F, std::size_t N = sizeof(boost::move_detail::declval<F>().func(), 0)>
+ struct zeroarg_checker_func
+ {
+ has_member_function_callable_with::yes_type dummy;
+ zeroarg_checker_func(int);
+ };
+
+ //For buggy compilers like MSVC 7.1, ((F*)0)->func() does not
+ //fail but sizeof yields to 0.
+ template<class F>
+ struct zeroarg_checker_func<F, 0>
+ {
+ has_member_function_callable_with::no_type dummy;
+ zeroarg_checker_func(int);
+ };
+
+ template<typename Fun>
+ struct has_member_function_callable_with_func_impl
+ <Fun, true>
+ {
+ template<class U>
+ static zeroarg_checker_func<U> Test(zeroarg_checker_func<U>*);
+
+ template <class U>
+ static has_member_function_callable_with::no_type Test(...);
+
+ static const bool value = sizeof(Test< Fun >(0))
+ == sizeof(has_member_function_callable_with::yes_type);
+ };
+
+ }}}
+
+
+ namespace boost{
+ namespace intrusive{
+ namespace intrusive_detail{
+
+
+ template<typename Fun, class ...DontCares>
+ struct funwrap_func : Fun
+ {
+ using Fun::func;
+ has_member_function_callable_with::private_type
+ func(DontCares...) const;
+ };
+
+ template<typename Fun, class ...Args>
+ struct has_member_function_callable_with_func_impl
+ <Fun, true , Args...>
+ {
+ template<class T>
+ struct make_dontcare
+ {
+ typedef has_member_function_callable_with::dont_care type;
+ };
+
+ typedef funwrap_func<Fun, typename make_dontcare<Args>::type...> FunWrap;
+
+ static bool const value = (sizeof(has_member_function_callable_with::no_type) ==
+ sizeof(has_member_function_callable_with::is_private_type
+ ( (::boost::move_detail::declval< FunWrap >().func( ::boost::move_detail::declval<Args>()... ), 0) )
+ )
+ );
+ };
+
+ template<typename Fun, class ...Args>
+ struct has_member_function_callable_with_func
+ : public has_member_function_callable_with_func_impl
+ <Fun, has_member_function_named_func<Fun>::value, Args... >
+ {};
+
+ }}}
+
+#endif
+
+struct functor
+{
+ void func();
+ void func(const int&);
+ void func(const int&, const int&);
+ void func(const int&, const int&, const int&);
+};
+
+struct functor2
+{
+ void func(char*);
+ void func(int, char*);
+ void func(int, char*, double);
+ void func(const int&, char*, void *);
+};
+
+struct functor3
+{
+
+};
+
+struct functor4
+{
+ void func(...);
+ template<class T>
+ void func(int, const T &);
+
+ template<class T>
+ void func(const T &);
+
+ template<class T, class U>
+ void func(int, const T &, const U &);
+};
+
+int main()
+{
+ using namespace boost::intrusive::intrusive_detail;
+
+ {
+ int check1[ has_member_function_callable_with_func<functor>::value ? 1 : -1];
+ int check2[!has_member_function_callable_with_func<functor2>::value ? 1 : -1];
+ int check3[!has_member_function_callable_with_func<functor3>::value ? 1 : -1];
+ int check4[ has_member_function_callable_with_func<functor4>::value ? 1 : -1];
+ (void)check1;
+ (void)check2;
+ (void)check3;
+ (void)check4;
+ }
+
+ {
+ int check1[ has_member_function_callable_with_func<functor, int>::value ? 1 : -1];
+ int check2[!has_member_function_callable_with_func<functor, char*>::value ? 1 : -1];
+ int check3[!has_member_function_callable_with_func<functor2, int>::value ? 1 : -1];
+ int check4[ has_member_function_callable_with_func<functor2, char*>::value ? 1 : -1];
+ int check5[!has_member_function_callable_with_func<functor3, int>::value ? 1 : -1];
+ int check6[!has_member_function_callable_with_func<functor3, char*>::value ? 1 : -1];
+ int check7[ has_member_function_callable_with_func<functor4, int>::value ? 1 : -1];
+ int check8[ has_member_function_callable_with_func<functor4, char*>::value ? 1 : -1];
+ (void)check1;
+ (void)check2;
+ (void)check3;
+ (void)check4;
+ (void)check5;
+ (void)check6;
+ (void)check7;
+ (void)check8;
+ }
+
+ {
+ int check1[ has_member_function_callable_with_func<functor, int, int>::value ? 1 : -1];
+ int check2[!has_member_function_callable_with_func<functor, int, char*>::value ? 1 : -1];
+ int check3[!has_member_function_callable_with_func<functor2, int, int>::value ? 1 : -1];
+ int check4[ has_member_function_callable_with_func<functor2, int, char*>::value ? 1 : -1];
+ int check5[!has_member_function_callable_with_func<functor3, int, int>::value ? 1 : -1];
+ int check6[!has_member_function_callable_with_func<functor3, int, char*>::value ? 1 : -1];
+ int check7[ has_member_function_callable_with_func<functor4, int, char*>::value ? 1 : -1];
+ (void)check1;
+ (void)check2;
+ (void)check3;
+ (void)check4;
+ (void)check5;
+ (void)check6;
+ (void)check7;
+ }
+
+ {
+ int check1[ has_member_function_callable_with_func<functor, int, int, int>::value ? 1 : -1];
+ int check2[!has_member_function_callable_with_func<functor, int, char*, int>::value ? 1 : -1];
+ int check3[!has_member_function_callable_with_func<functor2, int, int, int>::value ? 1 : -1];
+ int check4[ has_member_function_callable_with_func<functor2, int, char*, void*>::value ? 1 : -1];
+ int check5[!has_member_function_callable_with_func<functor3, int, int, int>::value ? 1 : -1];
+ int check6[!has_member_function_callable_with_func<functor3, int, char*, void*>::value ? 1 : -1];
+ int check7[ has_member_function_callable_with_func<functor4, int, char*, int>::value ? 1 : -1];
+ (void)check1;
+ (void)check2;
+ (void)check3;
+ (void)check4;
+ (void)check5;
+ (void)check6;
+ (void)check7;
+ }
+
+ return 0;
+
+}
+#include <boost/intrusive/detail/config_end.hpp>

Modified: trunk/libs/intrusive/test/list_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/list_test.cpp (original)
+++ trunk/libs/intrusive/test/list_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -12,7 +12,7 @@
 /////////////////////////////////////////////////////////////////////////////
 #include <boost/intrusive/detail/config_begin.hpp>
 #include <boost/intrusive/list.hpp>
-#include <boost/intrusive/detail/pointer_to_other.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 #include "itestvalue.hpp"
 #include "smart_ptr.hpp"
 #include "common_functors.hpp"
@@ -221,7 +221,7 @@
 
    {
    typename list_type::const_iterator ci = typename list_type::iterator();
- //typename list_type::iterator i = typename list_type::const_iterator();
+ (void)ci;
    }
 
    testlist.insert (i, values[0]);
@@ -495,6 +495,5 @@
    test_main_template<smart_ptr<void>, false>()();
    test_main_template<void*, true>()();
    test_main_template<smart_ptr<void>, true>()();
-
    return boost::report_errors();
 }

Modified: trunk/libs/intrusive/test/make_functions_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/make_functions_test.cpp (original)
+++ trunk/libs/intrusive/test/make_functions_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -18,6 +18,7 @@
 #include <boost/intrusive/splay_set.hpp>
 #include <boost/intrusive/treap_set.hpp>
 #include <boost/intrusive/detail/mpl.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 #include "smart_ptr.hpp"
 #include <vector>
 
@@ -92,7 +93,8 @@
    List my_list;
    Slist my_slist;
    Set my_set;
- USet my_uset(USet::bucket_traits(buckets, 100));
+ USet my_uset(USet::bucket_traits
+ (pointer_traits<USet::bucket_ptr>::pointer_to(buckets[0]), 100));
 
    AvlSet my_avlset;
    SplaySet my_splayset;

Added: trunk/libs/intrusive/test/pointer_traits_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/intrusive/test/pointer_traits_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -0,0 +1,201 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2011-2011. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/intrusive for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+#include <boost/intrusive/detail/config_begin.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
+
+template<class T>
+class CompleteSmartPtr
+{
+ template <class U>
+ friend class CompleteSmartPtr;
+
+ public:
+
+ #if !defined(BOOST_NO_TEMPLATE_ALIASES)
+ template <class U> using rebind = CompleteSmartPtr<U>;
+ #else
+ template <class U> struct rebind
+ { typedef CompleteSmartPtr<U> other; };
+ #endif
+
+ typedef char difference_type;
+ typedef T element_type;
+
+ CompleteSmartPtr()
+ : ptr_(0)
+ {}
+
+ explicit CompleteSmartPtr(T &p)
+ : ptr_(&p)
+ {}
+
+ CompleteSmartPtr(const CompleteSmartPtr &c)
+ { this->ptr_ = c.ptr_; }
+
+ CompleteSmartPtr & operator=(const CompleteSmartPtr &c)
+ { this->ptr_ = c.ptr_; }
+
+ static CompleteSmartPtr pointer_to(T &r)
+ { return CompleteSmartPtr(r); }
+
+ T * operator->() const
+ { return ptr_; }
+
+ T & operator *() const
+ { return *ptr_; }
+
+ template<class U>
+ static CompleteSmartPtr static_cast_from(const CompleteSmartPtr<U> &uptr)
+ { return CompleteSmartPtr(*static_cast<element_type*>(uptr.ptr_)); }
+
+ template<class U>
+ static CompleteSmartPtr const_cast_from(const CompleteSmartPtr<U> &uptr)
+ { return CompleteSmartPtr(*const_cast<element_type*>(uptr.ptr_)); }
+
+ template<class U>
+ static CompleteSmartPtr dynamic_cast_from(const CompleteSmartPtr<U> &uptr)
+ { return CompleteSmartPtr(*dynamic_cast<element_type*>(uptr.ptr_)); }
+
+ friend bool operator ==(const CompleteSmartPtr &l, const CompleteSmartPtr &r)
+ { return l.ptr_ == r.ptr_; }
+
+ friend bool operator !=(const CompleteSmartPtr &l, const CompleteSmartPtr &r)
+ { return l.ptr_ != r.ptr_; }
+
+ private:
+ T *ptr_;
+};
+
+
+template<class T>
+class SimpleSmartPtr
+{
+ public:
+
+ SimpleSmartPtr()
+ : ptr_(0)
+ {}
+
+ explicit SimpleSmartPtr(T *p)
+ : ptr_(p)
+ {}
+
+ SimpleSmartPtr(const SimpleSmartPtr &c)
+ { this->ptr_ = c.ptr_; }
+
+ SimpleSmartPtr & operator=(const SimpleSmartPtr &c)
+ { this->ptr_ = c.ptr_; }
+
+ friend bool operator ==(const SimpleSmartPtr &l, const SimpleSmartPtr &r)
+ { return l.ptr_ == r.ptr_; }
+
+ friend bool operator !=(const SimpleSmartPtr &l, const SimpleSmartPtr &r)
+ { return l.ptr_ != r.ptr_; }
+
+ T* operator->() const
+ { return ptr_; }
+
+ T & operator *() const
+ { return *ptr_; }
+
+ private:
+ T *ptr_;
+};
+
+class B{ public: virtual ~B(){} };
+class D : public B {};
+class DD : public virtual B {};
+
+int main()
+{
+ int dummy;
+
+ //Raw pointer
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ <int*>::element_type, int>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ <int*>::pointer, int*>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ <int*>::difference_type, std::ptrdiff_t>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ <int*>::rebind_pointer<double>::type
+ , double*>::value ));
+ if(boost::intrusive::pointer_traits<int*>::pointer_to(dummy) != &dummy){
+ return 1;
+ }
+ if(boost::intrusive::pointer_traits<D*>::static_cast_from((B*)0)){
+ return 1;
+ }
+ if(boost::intrusive::pointer_traits<D*>::const_cast_from((const D*)0)){
+ return 1;
+ }
+ if(boost::intrusive::pointer_traits<DD*>::dynamic_cast_from((B*)0)){
+ return 1;
+ }
+
+ //Complete smart pointer
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ < CompleteSmartPtr<int> >::element_type, int>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ < CompleteSmartPtr<int> >::pointer, CompleteSmartPtr<int> >::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ < CompleteSmartPtr<int> >::difference_type, char>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ < CompleteSmartPtr<int> >::rebind_pointer<double>::type
+ , CompleteSmartPtr<double> >::value ));
+ if(boost::intrusive::pointer_traits< CompleteSmartPtr<int> >
+ ::pointer_to(dummy) != CompleteSmartPtr<int>(dummy)){
+ return 1;
+ }
+ if(boost::intrusive::pointer_traits< CompleteSmartPtr<D> >::
+ static_cast_from(CompleteSmartPtr<B>()) != CompleteSmartPtr<D>()){
+ return 1;
+ }
+ if(boost::intrusive::pointer_traits< CompleteSmartPtr<D> >::
+ const_cast_from(CompleteSmartPtr<const D>()) != CompleteSmartPtr<D>()){
+ return 1;
+ }
+ if(boost::intrusive::pointer_traits< CompleteSmartPtr<DD> >::
+ dynamic_cast_from(CompleteSmartPtr<B>()) != CompleteSmartPtr<DD>()){
+ return 1;
+ }
+
+ //Simple smart pointer
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ < SimpleSmartPtr<int> >::element_type, int>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ < SimpleSmartPtr<int> >::pointer, SimpleSmartPtr<int> >::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ < SimpleSmartPtr<int> >::difference_type, std::ptrdiff_t>::value ));
+ BOOST_STATIC_ASSERT(( boost::is_same<boost::intrusive::pointer_traits
+ < SimpleSmartPtr<int> >::rebind_pointer<double>::type
+ , SimpleSmartPtr<double> >::value ));
+ if(boost::intrusive::pointer_traits< SimpleSmartPtr<int> >
+ ::pointer_to(dummy) != SimpleSmartPtr<int>(&dummy)){
+ return 1;
+ }
+ if(boost::intrusive::pointer_traits< SimpleSmartPtr<D> >::
+ static_cast_from(SimpleSmartPtr<B>()) != SimpleSmartPtr<D>()){
+ return 1;
+ }
+ if(boost::intrusive::pointer_traits< SimpleSmartPtr<D> >::
+ const_cast_from(SimpleSmartPtr<const D>()) != SimpleSmartPtr<D>()){
+ return 1;
+ }
+ if(boost::intrusive::pointer_traits< SimpleSmartPtr<DD> >::
+ dynamic_cast_from(SimpleSmartPtr<B>()) != SimpleSmartPtr<DD>()){
+ return 1;
+ }
+ return 0;
+}
+
+#include <boost/intrusive/detail/config_end.hpp>

Modified: trunk/libs/intrusive/test/slist_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/slist_test.cpp (original)
+++ trunk/libs/intrusive/test/slist_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -13,7 +13,7 @@
 
 #include <boost/intrusive/detail/config_begin.hpp>
 #include <boost/intrusive/slist.hpp>
-#include <boost/intrusive/detail/pointer_to_other.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 #include "itestvalue.hpp"
 #include "smart_ptr.hpp"
 #include "common_functors.hpp"

Modified: trunk/libs/intrusive/test/smart_ptr.hpp
==============================================================================
--- trunk/libs/intrusive/test/smart_ptr.hpp (original)
+++ trunk/libs/intrusive/test/smart_ptr.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -14,6 +14,7 @@
 #include <boost/iterator.hpp>
 #include <boost/intrusive/pointer_plus_bits.hpp>
 #include <boost/pointer_cast.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 
 #if (defined _MSC_VER) && (_MSC_VER >= 1200)
 # pragma once
@@ -108,6 +109,11 @@
 
    public: //Public Functions
 
+ smart_ptr()
+ : m_ptr(0)
+ {}
+
+/*
    //!Constructor from raw pointer (allows "0" pointer conversion). Never throws.
    explicit smart_ptr(pointer ptr = 0)
       : m_ptr(ptr)
@@ -118,64 +124,67 @@
    smart_ptr(T *ptr)
       : m_ptr(ptr)
    {}
-
+*/
    //!Constructor from other smart_ptr
    smart_ptr(const smart_ptr& ptr)
       : m_ptr(ptr.m_ptr)
    {}
 
+ static smart_ptr pointer_to(reference r)
+ { smart_ptr p; p.m_ptr = &r; return p; }
+
    //!Constructor from other smart_ptr. If pointers of pointee types are
    //!convertible, offset_ptrs will be convertibles. Never throws.
    template<class T2>
    smart_ptr(const smart_ptr<T2> &ptr)
       : m_ptr(ptr.m_ptr)
    {}
-
+/*
    //!Emulates static_cast operator. Never throws.
    template<class Y>
    smart_ptr(const smart_ptr<Y> & r, detail::static_cast_tag)
- : m_ptr(static_cast<PointedType*>(r.get()))
+ : m_ptr(static_cast<PointedType*>(r.m_ptr))
    {}
 
    //!Emulates const_cast operator. Never throws.
    template<class Y>
    smart_ptr(const smart_ptr<Y> & r, detail::const_cast_tag)
- : m_ptr(const_cast<PointedType*>(r.get()))
+ : m_ptr(const_cast<PointedType*>(r.m_ptr))
    {}
 
    //!Emulates dynamic_cast operator. Never throws.
    template<class Y>
    smart_ptr(const smart_ptr<Y> & r, detail::dynamic_cast_tag)
- : m_ptr(dynamic_cast<PointedType*>(r.get()))
+ : m_ptr(dynamic_cast<PointedType*>(r.m_ptr))
    {}
 
    //!Emulates reinterpret_cast operator. Never throws.
    template<class Y>
    smart_ptr(const smart_ptr<Y> & r, detail::reinterpret_cast_tag)
- : m_ptr(reinterpret_cast<PointedType*>(r.get()))
+ : m_ptr(reinterpret_cast<PointedType*>(r.m_ptr))
    {}
 
    //!Obtains raw pointer from offset. Never throws.
    pointer get() const
    { return m_ptr; }
-
+*/
    //!Pointer-like -> operator. It can return 0 pointer. Never throws.
    pointer operator->() const
- { return this->get(); }
+ { return m_ptr; }
 
    //!Dereferencing operator, if it is a null smart_ptr behavior
    //! is undefined. Never throws.
    reference operator* () const
- { return *(this->get()); }
+ { return *m_ptr; }
 
    //!Indexing operator. Never throws.
    reference operator[](std::ptrdiff_t idx) const
- { return this->get()[idx]; }
-
+ { return m_ptr[idx]; }
+/*
    //!Assignment from pointer (saves extra conversion). Never throws.
    smart_ptr& operator= (pointer from)
    { m_ptr = from; return *this; }
-
+*/
    //!Assignment from other smart_ptr. Never throws.
    smart_ptr& operator= (const smart_ptr & pt)
    { m_ptr = pt.m_ptr; return *this; }
@@ -188,11 +197,11 @@
  
    //!smart_ptr + std::ptrdiff_t. Never throws.
    smart_ptr operator+ (std::ptrdiff_t offset) const
- { return smart_ptr(this->get()+offset); }
+ { smart_ptr s; s.m_ptr = m_ptr + offset; return s; }
 
    //!smart_ptr - std::ptrdiff_t. Never throws.
- smart_ptr operator- (std::ptrdiff_t offset) const
- { return smart_ptr(this->get()-offset); }
+ smart_ptr operator- (std::ptrdiff_t offset) const
+ { smart_ptr s; s.m_ptr = m_ptr - offset; return s; }
 
    //!smart_ptr += std::ptrdiff_t. Never throws.
    smart_ptr &operator+= (std::ptrdiff_t offset)
@@ -220,12 +229,12 @@
 
    //!safe bool conversion operator. Never throws.
    operator unspecified_bool_type() const
- { return this->get()? &self_t::unspecified_bool_type_func : 0; }
+ { return m_ptr? &self_t::unspecified_bool_type_func : 0; }
 
    //!Not operator. Not needed in theory, but improves portability.
    //!Never throws.
    bool operator! () const
- { return this->get() == 0; }
+ { return m_ptr == 0; }
 /*
    friend void swap (smart_ptr &pt, smart_ptr &pt2)
    {
@@ -240,43 +249,43 @@
 template<class T1, class T2>
 inline bool operator== (const smart_ptr<T1> &pt1,
                         const smart_ptr<T2> &pt2)
-{ return pt1.get() == pt2.get(); }
+{ return pt1.operator->() == pt2.operator->(); }
 
 //!smart_ptr<T1> != smart_ptr<T2>. Never throws.
 template<class T1, class T2>
 inline bool operator!= (const smart_ptr<T1> &pt1,
                         const smart_ptr<T2> &pt2)
-{ return pt1.get() != pt2.get(); }
+{ return pt1.operator->() != pt2.operator->(); }
 
 //!smart_ptr<T1> < smart_ptr<T2>. Never throws.
 template<class T1, class T2>
 inline bool operator< (const smart_ptr<T1> &pt1,
                        const smart_ptr<T2> &pt2)
-{ return pt1.get() < pt2.get(); }
+{ return pt1.operator->() < pt2.operator->(); }
 
 //!smart_ptr<T1> <= smart_ptr<T2>. Never throws.
 template<class T1, class T2>
 inline bool operator<= (const smart_ptr<T1> &pt1,
                         const smart_ptr<T2> &pt2)
-{ return pt1.get() <= pt2.get(); }
+{ return pt1.operator->() <= pt2.operator->(); }
 
 //!smart_ptr<T1> > smart_ptr<T2>. Never throws.
 template<class T1, class T2>
 inline bool operator> (const smart_ptr<T1> &pt1,
                        const smart_ptr<T2> &pt2)
-{ return pt1.get() > pt2.get(); }
+{ return pt1.operator->() > pt2.operator->(); }
 
 //!smart_ptr<T1> >= smart_ptr<T2>. Never throws.
 template<class T1, class T2>
 inline bool operator>= (const smart_ptr<T1> &pt1,
                         const smart_ptr<T2> &pt2)
-{ return pt1.get() >= pt2.get(); }
+{ return pt1.operator->() >= pt2.operator->(); }
 
 //!operator<<
 template<class E, class T, class Y>
 inline std::basic_ostream<E, T> & operator<<
    (std::basic_ostream<E, T> & os, smart_ptr<Y> const & p)
-{ return os << p.get(); }
+{ return os << p.operator->(); }
 
 //!operator>>
 template<class E, class T, class Y>
@@ -292,24 +301,18 @@
 //!smart_ptr - smart_ptr
 template<class T, class T2>
 inline std::ptrdiff_t operator- (const smart_ptr<T> &pt, const smart_ptr<T2> &pt2)
-{ return pt.get()- pt2.get(); }
+{ return pt.operator->()- pt2.operator->(); }
 
 //!swap specialization
 template<class T>
 inline void swap (smart_ptr<T> &pt,
                   smart_ptr<T> &pt2)
 {
- typename smart_ptr<T>::value_type *ptr = pt.get();
+ typename smart_ptr<T>::value_type *ptr = pt.operator->();
    pt = pt2;
    pt2 = ptr;
 }
 
-//!detail::boost_intrusive_get_pointer() enables boost::mem_fn to recognize smart_ptr.
-//!Never throws.
-template<class T>
-inline T* boost_intrusive_get_pointer(const smart_ptr<T> & p)
-{ return p.get(); }
-
 //!Simulation of static_cast between pointers. Never throws.
 template<class T, class U>
 inline smart_ptr<T>
@@ -363,23 +366,26 @@
    typedef smart_ptr<T> pointer;
 
    static pointer get_pointer(const pointer &n)
- { return pointer_plus_bits<T*, NumBits>::get_pointer(n.get()); }
+ {
+ return pointer_traits<pointer>::pointer_to
+ (*pointer_plus_bits<T*, NumBits>::get_pointer(n.operator->()));
+ }
 
    static void set_pointer(pointer &n, pointer p)
    {
- T *raw_n = n.get();
- pointer_plus_bits<T*, NumBits>::set_pointer(raw_n, p.get());
- n = raw_n;
+ T *raw_n = n.operator->();
+ pointer_plus_bits<T*, NumBits>::set_pointer(raw_n, p.operator->());
+ n = pointer_traits<pointer>::pointer_to(*raw_n);
    }
 
    static std::size_t get_bits(const pointer &n)
- { return pointer_plus_bits<T*, NumBits>::get_bits(n.get()); }
+ { return pointer_plus_bits<T*, NumBits>::get_bits(n.operator->()); }
 
    static void set_bits(pointer &n, std::size_t c)
    {
- T *raw_n = n.get();
+ T *raw_n = n.operator->();
       pointer_plus_bits<T*, NumBits>::set_bits(raw_n, c);
- n = raw_n;
+ n = pointer_traits<pointer>::pointer_to(*raw_n);
    }
 };
 

Modified: trunk/libs/intrusive/test/splay_multiset_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/splay_multiset_test.cpp (original)
+++ trunk/libs/intrusive/test/splay_multiset_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -12,7 +12,7 @@
 /////////////////////////////////////////////////////////////////////////////
 #include <boost/intrusive/detail/config_begin.hpp>
 #include <boost/intrusive/splay_set.hpp>
-#include <boost/intrusive/detail/pointer_to_other.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 #include "itestvalue.hpp"
 #include "smart_ptr.hpp"
 #include "generic_multiset_test.hpp"

Modified: trunk/libs/intrusive/test/stateful_value_traits_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/stateful_value_traits_test.cpp (original)
+++ trunk/libs/intrusive/test/stateful_value_traits_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -14,7 +14,7 @@
 #include <boost/intrusive/set.hpp>
 #include <boost/intrusive/unordered_set.hpp>
 #include <boost/functional/hash.hpp>
-#include <boost/pointer_to_other.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 #include <vector>
 
 using namespace boost::intrusive;
@@ -46,10 +46,11 @@
    typedef typename node_traits::node_ptr node_ptr;
    typedef typename node_traits::const_node_ptr const_node_ptr;
    typedef T value_type;
- typedef typename boost::pointer_to_other
- <node_ptr, T>::type pointer;
- typedef typename boost::pointer_to_other
- <node_ptr, const T>::type const_pointer;
+ typedef typename pointer_traits<node_ptr>::
+ template rebind_pointer<T>::type pointer;
+ typedef typename pointer_traits<node_ptr>::
+ template rebind_pointer<const T>::type const_pointer;
+
    static const link_mode_type link_mode = normal_link;
 
    stateful_value_traits(pointer values, node_ptr node_array)

Modified: trunk/libs/intrusive/test/test_container.hpp
==============================================================================
--- trunk/libs/intrusive/test/test_container.hpp (original)
+++ trunk/libs/intrusive/test/test_container.hpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -91,7 +91,6 @@
       c.insert( c.begin(), *i );
       c.insert( c.end(), *(++i) );
       }
-
       BOOST_TEST( c.size() == 2 );
       BOOST_TEST( !c.empty() );
 
@@ -99,6 +98,17 @@
       i = c.erase( c.begin() );
 
       BOOST_TEST( c.size() == 1 );
+ BOOST_TEST( !c.empty() );
+
+ i = c.erase( c.begin() );
+
+ BOOST_TEST( c.size() == 0 );
+ BOOST_TEST( c.empty() );
+
+ c.insert( c.begin(), *d.begin() );
+
+ BOOST_TEST( c.size() == 1 );
+ BOOST_TEST( !c.empty() );
 
       {
       typename Data::iterator i = d.begin();

Modified: trunk/libs/intrusive/test/unordered_multiset_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/unordered_multiset_test.cpp (original)
+++ trunk/libs/intrusive/test/unordered_multiset_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -12,7 +12,7 @@
 /////////////////////////////////////////////////////////////////////////////
 #include <boost/intrusive/detail/config_begin.hpp>
 #include <boost/intrusive/unordered_set.hpp>
-#include <boost/intrusive/detail/pointer_to_other.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 #include "itestvalue.hpp"
 #include "smart_ptr.hpp"
 #include "common_functors.hpp"
@@ -102,7 +102,9 @@
    {
       typedef typename unordered_multiset_type::bucket_traits bucket_traits;
       typename unordered_multiset_type::bucket_type buckets [BucketSize];
- unordered_multiset_type testset(bucket_traits(buckets, BucketSize));
+ unordered_multiset_type testset
+ (bucket_traits(pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets[0]), BucketSize));
       testset.insert(values.begin(), values.end());
       test::test_container(testset);
       testset.clear();
@@ -145,7 +147,9 @@
       values[i].value_ = i;
 
    typename unordered_multiset_type::bucket_type buckets [BucketSize];
- unordered_multiset_type testset(bucket_traits(buckets, BucketSize));
+ unordered_multiset_type testset(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets[0]), BucketSize));
 
    for (int i = 0; i < 5; ++i)
       testset.insert (values[i]);
@@ -175,7 +179,10 @@
    typedef typename unordered_multiset_type::bucket_traits bucket_traits;
 
    typename unordered_multiset_type::bucket_type buckets [BucketSize];
- unordered_multiset_type testset1(values.begin(), values.end(), bucket_traits(buckets, BucketSize));
+ unordered_multiset_type testset1
+ (values.begin(), values.end(), bucket_traits
+ (pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets[0]), BucketSize));
 
    if(Incremental){
       { int init_values [] = { 4, 5, 1, 2, 2, 3 };
@@ -206,7 +213,9 @@
    typedef typename unordered_multiset_type::bucket_traits bucket_traits;
    typedef typename unordered_multiset_type::iterator iterator;
    typename unordered_multiset_type::bucket_type buckets [BucketSize];
- unordered_multiset_type testset(bucket_traits(buckets, BucketSize));
+ unordered_multiset_type testset(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets[0]), BucketSize));
 
    testset.insert(&values[0] + 2, &values[0] + 5);
 
@@ -244,7 +253,9 @@
 
          //Now with a single bucket
          typename unordered_multiset_type::bucket_type single_bucket[1];
- unordered_multiset_type testset2(bucket_traits(single_bucket, 1));
+ unordered_multiset_type testset2(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(single_bucket[0]), 1));
          testset2.insert(&values[0], &values[0] + values.size());
          BOOST_TEST (testset2.erase(5) == 1);
          BOOST_TEST (testset2.erase(2) == 2);
@@ -286,7 +297,9 @@
 
          //Now with a single bucket
          typename unordered_multiset_type::bucket_type single_bucket[1];
- unordered_multiset_type testset2(bucket_traits(single_bucket, 1));
+ unordered_multiset_type testset2(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(single_bucket[0]), 1));
          testset2.insert(&values[0], &values[0] + values.size());
          BOOST_TEST (testset2.erase(5) == 1);
          BOOST_TEST (testset2.erase(2) == 2);
@@ -305,7 +318,9 @@
          std::vector<typename ValueTraits::value_type> data (random_size);
          for (unsigned int j = 0; j < random_size; ++j)
             data[j].value_ = random_init[j];
- unordered_multiset_type testset_new(bucket_traits(single_bucket, 1));
+ unordered_multiset_type testset_new(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(single_bucket[0]), 1));
          testset_new.insert(&data[0], &data[0]+max);
          testset_new.erase(testset_new.iterator_to(data[i]));
          BOOST_TEST (testset_new.size() == (max -1));
@@ -332,7 +347,8 @@
             unordered_multiset_type testset
                ( &random_init[0]
                , &random_init[0] + random_init.size()
- , bucket_traits(buckets, NumBucketSize));
+ , bucket_traits(pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets[0]), NumBucketSize));
 
             BOOST_TEST (testset.size() == random_init.size());
 
@@ -394,8 +410,12 @@
    typename unordered_multiset_type::bucket_type buckets [BucketSize];
 
    typename unordered_multiset_type::bucket_type buckets2 [BucketSize];
- unordered_multiset_type testset1(&values[0], &values[0] + 2, bucket_traits(buckets, BucketSize));
- unordered_multiset_type testset2(bucket_traits(buckets2, BucketSize));
+ unordered_multiset_type testset1(&values[0], &values[0] + 2,
+ bucket_traits(pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets[0]), BucketSize));
+ unordered_multiset_type testset2(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize));
 
    testset2.insert (&values[0] + 2, &values[0] + 6);
    testset1.swap (testset2);
@@ -445,7 +465,9 @@
    //Build a uset
    typename unordered_multiset_type::bucket_type buckets1 [BucketSize];
    typename unordered_multiset_type::bucket_type buckets2 [BucketSize*2];
- unordered_multiset_type testset1(&values[0], &values[0] + values.size(), bucket_traits(buckets1, BucketSize));
+ unordered_multiset_type testset1(&values[0], &values[0] + values.size(),
+ bucket_traits(pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize));
    //Test current state
    BOOST_TEST(testset1.split_count() == BucketSize/2);
    { int init_values [] = { 4, 5, 1, 2, 2, 3 };
@@ -472,21 +494,27 @@
    //Try incremental hashing specifying a new bucket traits pointing to the same array
    //
    //This incremental rehash should fail because the new size is not twice the original
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets1, BucketSize)) == false);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize)) == false);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //This incremental rehash should success because the new size is twice the original
    //and split_count is the same as the old bucket count
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets1, BucketSize*2)) == true);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize*2)) == true);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //This incremental rehash should also success because the new size is half the original
    //and split_count is the same as the new bucket count
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets1, BucketSize)) == true);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize)) == true);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
@@ -495,39 +523,51 @@
    //Try incremental hashing specifying a new bucket traits pointing to the same array
    //
    //This incremental rehash should fail because the new size is not twice the original
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets2, BucketSize)) == false);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize)) == false);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //This incremental rehash should success because the new size is twice the original
    //and split_count is the same as the old bucket count
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets2, BucketSize*2)) == true);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize*2)) == true);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //This incremental rehash should also success because the new size is half the original
    //and split_count is the same as the new bucket count
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets1, BucketSize)) == true);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize)) == true);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //Full shrink rehash
- testset1.rehash(bucket_traits(buckets1, 4));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), 4));
    BOOST_TEST (testset1.size() == values.size());
    BOOST_TEST (testset1.incremental_rehash() == false);
    { int init_values [] = { 4, 5, 1, 2, 2, 3 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
    //Full shrink rehash again
- testset1.rehash(bucket_traits(buckets1, 2));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), 2));
    BOOST_TEST (testset1.size() == values.size());
    BOOST_TEST (testset1.incremental_rehash() == false);
    { int init_values [] = { 2, 2, 4, 3, 5, 1 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
    //Full growing rehash
- testset1.rehash(bucket_traits(buckets1, BucketSize));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize));
    BOOST_TEST (testset1.size() == values.size());
    BOOST_TEST (testset1.incremental_rehash() == false);
    { int init_values [] = { 1, 2, 2, 3, 4, 5 };
@@ -575,29 +615,39 @@
    typename unordered_multiset_type::bucket_type buckets2 [2];
    typename unordered_multiset_type::bucket_type buckets3 [BucketSize*2];
 
- unordered_multiset_type testset1(&values[0], &values[0] + 6, bucket_traits(buckets1, BucketSize));
+ unordered_multiset_type testset1(&values[0], &values[0] + 6, bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize));
    BOOST_TEST (testset1.size() == values.size());
    { int init_values [] = { 1, 2, 2, 3, 4, 5 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
- testset1.rehash(bucket_traits(buckets2, 2));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets2[0]), 2));
    BOOST_TEST (testset1.size() == values.size());
    { int init_values [] = { 4, 2, 2, 5, 3, 1 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
- testset1.rehash(bucket_traits(buckets3, BucketSize*2));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets3[0]), BucketSize*2));
    BOOST_TEST (testset1.size() == values.size());
    { int init_values [] = { 1, 2, 2, 3, 4, 5 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //Now rehash reducing the buckets
- testset1.rehash(bucket_traits(buckets3, 2));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets3[0]), 2));
    BOOST_TEST (testset1.size() == values.size());
    { int init_values [] = { 4, 2, 2, 5, 3, 1 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //Now rehash increasing the buckets
- testset1.rehash(bucket_traits(buckets3, BucketSize*2));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets3[0]), BucketSize*2));
    BOOST_TEST (testset1.size() == values.size());
    { int init_values [] = { 1, 2, 2, 3, 4, 5 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
@@ -620,7 +670,9 @@
    typedef typename unordered_multiset_type::bucket_traits bucket_traits;
 
    typename unordered_multiset_type::bucket_type buckets[BucketSize];
- unordered_multiset_type testset(values.begin(), values.end(), bucket_traits(buckets, BucketSize));
+ unordered_multiset_type testset(values.begin(), values.end(), bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets[0]), BucketSize));
 
    typedef typename unordered_multiset_type::iterator iterator;
 
@@ -658,8 +710,12 @@
       //Test with equal bucket arrays
       typename unordered_multiset_type::bucket_type buckets1 [BucketSize];
       typename unordered_multiset_type::bucket_type buckets2 [BucketSize];
- unordered_multiset_type testset1 (values.begin(), values.end(), bucket_traits(buckets1, BucketSize));
- unordered_multiset_type testset2 (bucket_traits(buckets2, BucketSize));
+ unordered_multiset_type testset1 (values.begin(), values.end(), bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize));
+ unordered_multiset_type testset2 (bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize));
 
       testset2.clone_from(testset1, test::new_cloner<value_type>(), test::delete_disposer<value_type>());
       //Ordering is not guarantee in the cloning so insert data in a set and test
@@ -675,8 +731,12 @@
       //Test with bigger source bucket arrays
       typename unordered_multiset_type::bucket_type buckets1 [BucketSize*2];
       typename unordered_multiset_type::bucket_type buckets2 [BucketSize];
- unordered_multiset_type testset1 (values.begin(), values.end(), bucket_traits(buckets1, BucketSize*2));
- unordered_multiset_type testset2 (bucket_traits(buckets2, BucketSize));
+ unordered_multiset_type testset1 (values.begin(), values.end(), bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize*2));
+ unordered_multiset_type testset2 (bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize));
 
       testset2.clone_from(testset1, test::new_cloner<value_type>(), test::delete_disposer<value_type>());
       //Ordering is not guarantee in the cloning so insert data in a set and test
@@ -692,8 +752,12 @@
       //Test with smaller source bucket arrays
       typename unordered_multiset_type::bucket_type buckets1 [BucketSize];
       typename unordered_multiset_type::bucket_type buckets2 [BucketSize*2];
- unordered_multiset_type testset1 (values.begin(), values.end(), bucket_traits(buckets1, BucketSize));
- unordered_multiset_type testset2 (bucket_traits(buckets2, BucketSize*2));
+ unordered_multiset_type testset1 (values.begin(), values.end(), bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize));
+ unordered_multiset_type testset2 (bucket_traits(
+ pointer_traits<typename unordered_multiset_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize*2));
 
       testset2.clone_from(testset1, test::new_cloner<value_type>(), test::delete_disposer<value_type>());
       //Ordering is not guaranteed in the cloning so insert data in a set and test

Modified: trunk/libs/intrusive/test/unordered_set_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/unordered_set_test.cpp (original)
+++ trunk/libs/intrusive/test/unordered_set_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -12,7 +12,7 @@
 /////////////////////////////////////////////////////////////////////////////
 #include <boost/intrusive/detail/config_begin.hpp>
 #include <boost/intrusive/unordered_set.hpp>
-#include <boost/intrusive/detail/pointer_to_other.hpp>
+#include <boost/intrusive/pointer_traits.hpp>
 #include "itestvalue.hpp"
 #include "smart_ptr.hpp"
 #include "common_functors.hpp"
@@ -101,7 +101,9 @@
    typedef typename unordered_set_type::bucket_traits bucket_traits;
    {
       typename unordered_set_type::bucket_type buckets [BucketSize];
- unordered_set_type testset(bucket_traits(buckets, BucketSize));
+ unordered_set_type testset(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets[0]), BucketSize));
       testset.insert(values.begin(), values.end());
       test::test_container(testset);
       testset.clear();
@@ -143,7 +145,9 @@
       values[i].value_ = i;
 
    typename unordered_set_type::bucket_type buckets [BucketSize];
- unordered_set_type testset(bucket_traits(buckets, BucketSize));
+ unordered_set_type testset(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets[0]), BucketSize));
    for (int i = 0; i < 5; ++i)
       testset.insert (values[i]);
 
@@ -171,7 +175,9 @@
    typedef typename unordered_set_type::bucket_traits bucket_traits;
 
    typename unordered_set_type::bucket_type buckets [BucketSize];
- unordered_set_type testset1(values.begin(), values.end(), bucket_traits(buckets, BucketSize));
+ unordered_set_type testset1(values.begin(), values.end(), bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets[0]), BucketSize));
    BOOST_TEST (5 == std::distance(testset1.begin(), testset1.end()));
 
    if(Incremental){
@@ -204,7 +210,9 @@
    typedef typename unordered_set_type::bucket_traits bucket_traits;
 
    typename unordered_set_type::bucket_type buckets [BucketSize];
- unordered_set_type testset(bucket_traits(buckets, BucketSize));
+ unordered_set_type testset(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets[0]), BucketSize));
    testset.insert(&values[0] + 2, &values[0] + 5);
 
    const unordered_set_type& const_testset = testset;
@@ -263,8 +271,12 @@
 
    typename unordered_set_type::bucket_type buckets1 [BucketSize];
    typename unordered_set_type::bucket_type buckets2 [BucketSize];
- unordered_set_type testset1(&values[0], &values[0] + 2, bucket_traits(buckets1, BucketSize));
- unordered_set_type testset2(bucket_traits(buckets2, BucketSize));
+ unordered_set_type testset1(&values[0], &values[0] + 2, bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize));
+ unordered_set_type testset2(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize));
 
    testset2.insert (&values[0] + 2, &values[0] + 6);
    testset1.swap (testset2);
@@ -307,7 +319,9 @@
    //Build a uset
    typename unordered_set_type::bucket_type buckets1 [BucketSize];
    typename unordered_set_type::bucket_type buckets2 [BucketSize*2];
- unordered_set_type testset1(&values[0], &values[0] + 6, bucket_traits(buckets1, BucketSize));
+ unordered_set_type testset1(&values[0], &values[0] + 6, bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize));
    //Test current state
    BOOST_TEST(testset1.split_count() == BucketSize/2);
    { int init_values [] = { 4, 5, 1, 2, 3 };
@@ -334,21 +348,27 @@
    //Try incremental hashing specifying a new bucket traits pointing to the same array
    //
    //This incremental rehash should fail because the new size is not twice the original
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets1, BucketSize)) == false);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize)) == false);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //This incremental rehash should success because the new size is twice the original
    //and split_count is the same as the old bucket count
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets1, BucketSize*2)) == true);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize*2)) == true);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //This incremental rehash should also success because the new size is half the original
    //and split_count is the same as the new bucket count
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets1, BucketSize)) == true);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize)) == true);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
@@ -357,39 +377,51 @@
    //Try incremental hashing specifying a new bucket traits pointing to the same array
    //
    //This incremental rehash should fail because the new size is not twice the original
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets2, BucketSize)) == false);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize)) == false);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //This incremental rehash should success because the new size is twice the original
    //and split_count is the same as the old bucket count
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets2, BucketSize*2)) == true);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize*2)) == true);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //This incremental rehash should also success because the new size is half the original
    //and split_count is the same as the new bucket count
- BOOST_TEST(testset1.incremental_rehash(bucket_traits(buckets1, BucketSize)) == true);
+ BOOST_TEST(testset1.incremental_rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize)) == true);
    BOOST_TEST(testset1.split_count() == BucketSize);
    { int init_values [] = { 1, 2, 3, 4, 5 };
    TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //Full shrink rehash
- testset1.rehash(bucket_traits(buckets1, 4));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), 4));
    BOOST_TEST (testset1.size() == values.size()-1);
    BOOST_TEST (testset1.incremental_rehash() == false);
    { int init_values [] = { 4, 5, 1, 2, 3 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
    //Full shrink rehash again
- testset1.rehash(bucket_traits(buckets1, 2));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), 2));
    BOOST_TEST (testset1.size() == values.size()-1);
    BOOST_TEST (testset1.incremental_rehash() == false);
    { int init_values [] = { 2, 4, 3, 5, 1 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
    //Full growing rehash
- testset1.rehash(bucket_traits(buckets1, BucketSize));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize));
    BOOST_TEST (testset1.size() == values.size()-1);
    BOOST_TEST (testset1.incremental_rehash() == false);
    { int init_values [] = { 1, 2, 3, 4, 5 };
@@ -439,29 +471,39 @@
    typename unordered_set_type::bucket_type buckets2 [2];
    typename unordered_set_type::bucket_type buckets3 [BucketSize*2];
 
- unordered_set_type testset1(&values[0], &values[0] + 6, bucket_traits(buckets1, BucketSize));
+ unordered_set_type testset1(&values[0], &values[0] + 6, bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize));
    BOOST_TEST (testset1.size() == values.size()-1);
    { int init_values [] = { 1, 2, 3, 4, 5 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
- testset1.rehash(bucket_traits(buckets2, 2));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets2[0]), 2));
    BOOST_TEST (testset1.size() == values.size()-1);
    { int init_values [] = { 4, 2, 5, 3, 1 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
- testset1.rehash(bucket_traits(buckets3, BucketSize*2));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets3[0]), BucketSize*2));
    BOOST_TEST (testset1.size() == values.size()-1);
    { int init_values [] = { 1, 2, 3, 4, 5 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //Now rehash reducing the buckets
- testset1.rehash(bucket_traits(buckets3, 2));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets3[0]), 2));
    BOOST_TEST (testset1.size() == values.size()-1);
    { int init_values [] = { 4, 2, 5, 3, 1 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
 
    //Now rehash increasing the buckets
- testset1.rehash(bucket_traits(buckets3, BucketSize*2));
+ testset1.rehash(bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets3[0]), BucketSize*2));
    BOOST_TEST (testset1.size() == values.size()-1);
    { int init_values [] = { 1, 2, 3, 4, 5 };
       TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); }
@@ -485,7 +527,9 @@
    typedef typename unordered_set_type::bucket_traits bucket_traits;
 
    typename unordered_set_type::bucket_type buckets [BucketSize];
- unordered_set_type testset (values.begin(), values.end(), bucket_traits(buckets, BucketSize));
+ unordered_set_type testset (values.begin(), values.end(), bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets[0]), BucketSize));
    typedef typename unordered_set_type::iterator iterator;
 
    value_type cmp_val;
@@ -521,8 +565,12 @@
       //Test with equal bucket arrays
       typename unordered_set_type::bucket_type buckets1 [BucketSize];
       typename unordered_set_type::bucket_type buckets2 [BucketSize];
- unordered_set_type testset1 (values.begin(), values.end(), bucket_traits(buckets1, BucketSize));
- unordered_set_type testset2 (bucket_traits(buckets2, BucketSize));
+ unordered_set_type testset1 (values.begin(), values.end(), bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize));
+ unordered_set_type testset2 (bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize));
 
       testset2.clone_from(testset1, test::new_cloner<value_type>(), test::delete_disposer<value_type>());
       //Ordering is not guarantee in the cloning so insert data in a set and test
@@ -538,8 +586,12 @@
       //Test with bigger source bucket arrays
       typename unordered_set_type::bucket_type buckets1 [BucketSize*2];
       typename unordered_set_type::bucket_type buckets2 [BucketSize];
- unordered_set_type testset1 (values.begin(), values.end(), bucket_traits(buckets1, BucketSize*2));
- unordered_set_type testset2 (bucket_traits(buckets2, BucketSize));
+ unordered_set_type testset1 (values.begin(), values.end(), bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize*2));
+ unordered_set_type testset2 (bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize));
 
       testset2.clone_from(testset1, test::new_cloner<value_type>(), test::delete_disposer<value_type>());
       //Ordering is not guaranteed in the cloning so insert data in a set and test
@@ -555,8 +607,12 @@
       //Test with smaller source bucket arrays
       typename unordered_set_type::bucket_type buckets1 [BucketSize];
       typename unordered_set_type::bucket_type buckets2 [BucketSize*2];
- unordered_set_type testset1 (values.begin(), values.end(), bucket_traits(buckets1, BucketSize));
- unordered_set_type testset2 (bucket_traits(buckets2, BucketSize*2));
+ unordered_set_type testset1 (values.begin(), values.end(), bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets1[0]), BucketSize));
+ unordered_set_type testset2 (bucket_traits(
+ pointer_traits<typename unordered_set_type::bucket_ptr>::
+ pointer_to(buckets2[0]), BucketSize*2));
 
       testset2.clone_from(testset1, test::new_cloner<value_type>(), test::delete_disposer<value_type>());
       //Ordering is not guarantee in the cloning so insert data in a set and test

Modified: trunk/libs/intrusive/test/virtual_base_test.cpp
==============================================================================
--- trunk/libs/intrusive/test/virtual_base_test.cpp (original)
+++ trunk/libs/intrusive/test/virtual_base_test.cpp 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -78,7 +78,8 @@
 
       //Test the objects inserted in the base hook list
       for(; vect_it != vect_itend; ++vect_it, ++list_it)
- if(&*list_it != &*vect_it) return 1;
+ if(&*list_it != &*vect_it)
+ return 1;
    }
 
    return 0;

Modified: trunk/libs/move/index.html
==============================================================================
--- trunk/libs/move/index.html (original)
+++ trunk/libs/move/index.html 2011-12-22 15:15:57 EST (Thu, 22 Dec 2011)
@@ -5,10 +5,10 @@
 -->
 <html>
 <head>
-<meta http-equiv="refresh" content="0; URL=../../doc/html/move.html">
+ <meta http-equiv="refresh" content="0; URL=../../doc/html/move.html">
 </head>
 <body>
-Automatic redirection failed, please go to
+Automatic redirection failed, please go to
 <a href="../../doc/html/move.html">../../doc/html/move.html</a>
 </body>
 </html>


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