$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r76155 - in trunk: boost/icl boost/icl/type_traits libs/icl/test libs/icl/test/fastest_icl_interval_ libs/icl/test/fastest_icl_map_ libs/icl/test/fastest_interval_map_mixed_ libs/icl/test/fastest_set_interval_set_ libs/icl/test/test_combinable_ libs/icl/test/test_type_traits_
From: afojgo_at_[hidden]
Date: 2011-12-25 14:14:26
Author: jofaber
Date: 2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
New Revision: 76155
URL: http://svn.boost.org/trac/boost/changeset/76155
Log:
Added move emulation.
Text files modified: 
   trunk/boost/icl/impl_config.hpp                                                  |    38 +++--                                   
   trunk/boost/icl/interval_base_map.hpp                                            |    22 --                                      
   trunk/boost/icl/interval_base_set.hpp                                            |    44 ++++-                                   
   trunk/boost/icl/interval_map.hpp                                                 |    37 +++-                                    
   trunk/boost/icl/interval_set.hpp                                                 |    17 ++                                      
   trunk/boost/icl/map.hpp                                                          |    62 ++++----                                
   trunk/boost/icl/separate_interval_set.hpp                                        |    29 +++                                     
   trunk/boost/icl/set.hpp                                                          |    10                                         
   trunk/boost/icl/split_interval_map.hpp                                           |    51 ++++--                                  
   trunk/boost/icl/split_interval_set.hpp                                           |    28 +++                                     
   trunk/boost/icl/type_traits/is_discrete.hpp                                      |     1                                         
   trunk/libs/icl/test/Jamfile.v2                                                   |     2                                         
   trunk/libs/icl/test/fastest_icl_interval_/fastest_icl_interval.cpp               |    34 ++--                                    
   trunk/libs/icl/test/fastest_icl_map_/fastest_icl_map_cases.hpp                   |    12 +                                       
   trunk/libs/icl/test/fastest_interval_map_cases.hpp                               |     4                                         
   trunk/libs/icl/test/fastest_interval_map_mixed_/fastest_interval_map_mixed.cpp   |     4                                         
   trunk/libs/icl/test/fastest_interval_set_cases.hpp                               |     4                                         
   trunk/libs/icl/test/fastest_set_interval_set_/fastest_set_interval_set_cases.hpp |    28 +-                                      
   trunk/libs/icl/test/test_combinable_/test_combinable.cpp                         |    16 +-                                      
   trunk/libs/icl/test/test_icl_map.hpp                                             |    58 +++++---                                
   trunk/libs/icl/test/test_interval_map_shared.hpp                                 |    13                                         
   trunk/libs/icl/test/test_interval_set_shared.hpp                                 |    23 +++                                     
   trunk/libs/icl/test/test_type_traits_/test_type_traits.cpp                       |     6                                         
   trunk/libs/icl/test/vc9_icl_fast_tests.sln                                       |   282 +++++++++++++++++++-------------------- 
   24 files changed, 489 insertions(+), 336 deletions(-)
Modified: trunk/boost/icl/impl_config.hpp
==============================================================================
--- trunk/boost/icl/impl_config.hpp	(original)
+++ trunk/boost/icl/impl_config.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -10,33 +10,39 @@
 #define  BOOST_ICL_IMPL_CONFIG_HPP_JOFA_091225
 
 /*-----------------------------------------------------------------------------+
-You can choose an implementation for the basic set and map classes.
-Select at most ONE of the following defines
+| You can choose an implementation for the basic set and map classes.          |
+| Select at most ONE of the following defines to change the default            |
 +-----------------------------------------------------------------------------*/
 
-//#define ICL_USE_STD_IMPLEMENTATION
-//#define ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION
-//#define ICL_USE_BOOST_MOVE_IMPLEMENTATION
+//#define ICL_USE_STD_IMPLEMENTATION           // Default
+//#define ICL_USE_BOOST_MOVE_IMPLEMENTATION    // Enables Move semantics for ICL
+//        ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION // No longer available
 
 /*-----------------------------------------------------------------------------+
-NO define or ICL_USE_STD_IMPLEMENTATION: Choose std::set and std::map as
-    implementing containers (default).
-
-ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION: Choose set and map implementations 
-    from boost::interprocess.
-
-ICL_USE_BOOST_MOVE_IMPLEMENTATION: Move aware containers from boost::container.
+| NO define or ICL_USE_STD_IMPLEMENTATION: Choose std::set and std::map from   |
+|     your local std implementation as basic containers of elements (DEFAULT). |
+|                                                                              |
+| ICL_USE_BOOST_MOVE_IMPLEMENTATION:                                           |
+|     Move aware containers from boost::container. Choosing boost containers   |
+|     enables move semantics for ICL.                                          |
+|                                                                              |
+| NOTE: ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION: This define has been        |
+|     available until boost version 1.48.0 and is no longer supported.         |
 +-----------------------------------------------------------------------------*/
 
-#if defined(ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION)
-#   define ICL_IMPL_SPACE boost::interprocess
-#elif defined(ICL_USE_BOOST_MOVE_IMPLEMENTATION)
+#if defined(ICL_USE_BOOST_MOVE_IMPLEMENTATION)
 #   define ICL_IMPL_SPACE boost::container
-#   define BOOST_ICL_IS_MOVE_AWARE
+#elif defined(ICL_USE_STD_IMPLEMENTATION)
+#   define ICL_IMPL_SPACE std
 #else
 #   define ICL_IMPL_SPACE std
 #endif
 
+/*-----------------------------------------------------------------------------+
+|             Move emulation is used since version 1.49.0                      |
++-----------------------------------------------------------------------------*/
+#include <boost/move/move.hpp>
+
 #endif // BOOST_ICL_IMPL_CONFIG_HPP_JOFA_091225
 
 
Modified: trunk/boost/icl/interval_base_map.hpp
==============================================================================
--- trunk/boost/icl/interval_base_map.hpp	(original)
+++ trunk/boost/icl/interval_base_map.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -192,9 +192,7 @@
 
     BOOST_STATIC_CONSTANT(int, fineness = 0); 
 
-#   ifdef BOOST_ICL_IS_MOVE_AWARE
     BOOST_COPYABLE_AND_MOVABLE(interval_base_map)
-#   endif
 
 public:
 
@@ -219,40 +217,34 @@
         BOOST_CONCEPT_ASSERT((EqualComparableConcept<CodomainT>));
     }
 
-#   ifdef BOOST_ICL_IS_MOVE_AWARE
+    //==========================================================================
+    //= Move emulation
+    //==========================================================================
+
     /** Move constructor */
     interval_base_map(BOOST_RV_REF(interval_base_map) src): _map(boost::move(src._map))
     {
-        std::cout << "."; //CL
         BOOST_CONCEPT_ASSERT((DefaultConstructibleConcept<DomainT>));
         BOOST_CONCEPT_ASSERT((LessThanComparableConcept<DomainT>));
         BOOST_CONCEPT_ASSERT((DefaultConstructibleConcept<CodomainT>));
         BOOST_CONCEPT_ASSERT((EqualComparableConcept<CodomainT>));
     }
 
-    /** Copy assignment operator */
-    interval_base_map& operator = (BOOST_COPY_ASSIGN_REF(interval_base_map) src) 
-    { 
-        this->_map = src._map;
-        return *this; 
-    }
-
     /** Move assignment operator */
     interval_base_map& operator = (BOOST_RV_REF(interval_base_map) src) 
     { 
-        std::cout << ":"; //CL
         this->_map = boost::move(src._map);
         return *this; 
     }
-#   else //BOOST_ICL_IS_MOVE_AWARE
 
     /** Copy assignment operator */
-    interval_base_map& operator = (const interval_base_map& src) 
+    interval_base_map& operator = (BOOST_COPY_ASSIGN_REF(interval_base_map) src) 
     { 
         this->_map = src._map;
         return *this; 
     }
-#   endif //BOOST_ICL_IS_MOVE_AWARE
+
+    //==========================================================================
 
     /** swap the content of containers */
     void swap(interval_base_map& object) { _map.swap(object._map); }
Modified: trunk/boost/icl/interval_base_set.hpp
==============================================================================
--- trunk/boost/icl/interval_base_set.hpp	(original)
+++ trunk/boost/icl/interval_base_set.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -11,13 +11,12 @@
 
 #include <boost/icl/impl_config.hpp>
 
-#if defined(ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION)
-#include <boost/interprocess/containers/set.hpp>
-#elif defined(ICL_USE_BOOST_MOVE_IMPLEMENTATION)
-#include <boost/container/set.hpp>
-#include <boost/move/move.hpp> //MOV JODO URG
-#else 
-#include <set>
+#if defined(ICL_USE_BOOST_MOVE_IMPLEMENTATION)
+#   include <boost/container/set.hpp>
+#elif defined(ICL_USE_STD_IMPLEMENTATION)
+#   include <set>
+#else // Default for implementing containers
+#   include <boost/container/set.hpp>
 #endif
 
 #include <limits>
@@ -163,15 +162,40 @@
     interval_base_set(){}
 
     /** Copy constructor */
-    interval_base_set(const interval_base_set& src): _set(src._set){}
+    interval_base_set(const interval_base_set& src): _set(src._set)
+    {
+        BOOST_CONCEPT_ASSERT((DefaultConstructibleConcept<DomainT>));
+        BOOST_CONCEPT_ASSERT((LessThanComparableConcept<DomainT>));
+    }
+
+    //==========================================================================
+    //= Move emulation
+    //==========================================================================
+
+    /** Move constructor */
+    interval_base_set(BOOST_RV_REF(interval_base_set) src): _map(boost::move(src._map))
+    {
+        BOOST_CONCEPT_ASSERT((DefaultConstructibleConcept<DomainT>));
+        BOOST_CONCEPT_ASSERT((LessThanComparableConcept<DomainT>));
+    }
 
-    /** Assignment operator */
-    interval_base_set& operator = (const interval_base_set& src) 
+    /** Move assignment operator */
+    interval_base_set& operator = (BOOST_RV_REF(interval_base_set) src) 
+    { 
+        this->_set = boost::move(src._set);
+        return *this; 
+    }
+
+    /** Copy assignment operator */
+    interval_base_set& operator = (BOOST_COPY_ASSIGN_REF(interval_base_set) src) 
     { 
         this->_set = src._set;
         return *this; 
     }
 
+    //==========================================================================
+
+
     /** swap the content of containers */
     void swap(interval_base_set& operand) { _set.swap(operand._set); }
 
Modified: trunk/boost/icl/interval_map.hpp
==============================================================================
--- trunk/boost/icl/interval_map.hpp	(original)
+++ trunk/boost/icl/interval_map.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -68,9 +68,7 @@
 
     enum { fineness = 1 };
 
-#   ifdef BOOST_ICL_IS_MOVE_AWARE
     BOOST_COPYABLE_AND_MOVABLE(interval_map)
-#   endif
 
 public:
     //==========================================================================
@@ -83,12 +81,6 @@
     /// Copy constructor
     interval_map(const interval_map& src): base_type(src) {}
 
-#   ifdef BOOST_ICL_IS_MOVE_AWARE
-    /// Move constructor
-    interval_map(BOOST_RV_REF(interval_map) src)
-        : base_type(boost::move(static_cast<base_type&>(src))){}
-#   endif //BOOST_ICL_IS_MOVE_AWARE
-
     /// Copy constructor for base_type
     template<class SubType>
     explicit interval_map
@@ -102,11 +94,9 @@
     explicit interval_map(const value_type& value_pair): base_type()
     { this->add(value_pair); }
 
+
     /// Assignment operator
-    template<class SubType>
-    interval_map& operator =
-        (const interval_base_map<SubType,DomainT,CodomainT,
-                                 Traits,Compare,Combine,Section,Interval,Alloc>& src)
+    interval_map& operator = (const split_type& src)
     { this->assign(src); return *this; }
 
     /// Assignment from a base interval_map.
@@ -122,6 +112,29 @@
             prior_ = this->add(prior_, *it_); 
     }
 
+    //==========================================================================
+    //= Move emulation
+    //==========================================================================
+
+    /// Move constructor
+    interval_map(BOOST_RV_REF(interval_map) src)
+        : base_type(boost::move(static_cast<base_type&>(src)))
+    {}
+
+    /// Move assignment operator
+    interval_map& operator = (BOOST_RV_REF(interval_map) src)
+    { 
+        base_type::operator=(boost::move(static_cast<base_type&>(src)));
+        return *this;
+    }
+
+    /// Copy assignment operator
+    interval_map& operator = (BOOST_COPY_ASSIGN_REF(interval_map) src) 
+    { 
+        base_type::operator=(src);
+        return *this; 
+    }
+
 private:
     // Private functions that shall be accessible by the baseclass:
     friend class
Modified: trunk/boost/icl/interval_set.hpp
==============================================================================
--- trunk/boost/icl/interval_set.hpp	(original)
+++ trunk/boost/icl/interval_set.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -87,6 +87,8 @@
 
     enum { fineness = 1 };
 
+    BOOST_COPYABLE_AND_MOVABLE(interval_set)
+
 public:
     //==========================================================================
     //= Construct, copy, destruct
@@ -135,6 +137,21 @@
             prior_ = this->add(prior_, *it_);
     }
 
+    //==========================================================================
+    //= Move emulation
+    //==========================================================================
+
+    /// Move constructor
+    interval_set(BOOST_RV_REF(interval_set) src)
+        : base_type(boost::move(static_cast<base_type&>(src)))
+    {}
+
+    /// Move assignment operator
+    interval_set& operator = (BOOST_RV_REF(interval_set) src)
+    { 
+        base_type::operator=(boost::move(static_cast<base_type&>(src)));
+        return *this;
+    }
 
 private:
     // Private functions that shall be accessible by the baseclass:
Modified: trunk/boost/icl/map.hpp
==============================================================================
--- trunk/boost/icl/map.hpp	(original)
+++ trunk/boost/icl/map.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -10,18 +10,15 @@
 
 #include <boost/icl/impl_config.hpp>
 
-#if defined(ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION)
-#include <boost/interprocess/containers/map.hpp>
-#include <boost/interprocess/containers/set.hpp>
-#include <boost/interprocess/containers/flat_set.hpp> //FLAS JODO URG
-#include <boost/interprocess/containers/flat_map.hpp> //FLAS
-#elif defined(ICL_USE_BOOST_MOVE_IMPLEMENTATION)
-#include <boost/container/map.hpp>
-#include <boost/container/set.hpp>
-#include <boost/move/move.hpp> //MOV JODO URG <boost/icl/move.hpp>
-#else 
-#include <map>
-#include <set>
+#if defined(ICL_USE_BOOST_MOVE_IMPLEMENTATION)
+#   include <boost/container/map.hpp>
+#   include <boost/container/set.hpp>
+#elif defined(ICL_USE_STD_IMPLEMENTATION)
+#   include <map>
+#   include <set>
+#else // Default for implementing containers
+#   include <map>
+#   include <set>
 #endif
 
 #include <string>
@@ -158,9 +155,7 @@
 
     BOOST_STATIC_CONSTANT(int, fineness = 4); 
 
-#   ifdef BOOST_ICL_IS_MOVE_AWARE
     BOOST_COPYABLE_AND_MOVABLE(map)
-#   endif
 
 public:
     //==========================================================================
@@ -194,43 +189,36 @@
         BOOST_CONCEPT_ASSERT((EqualComparableConcept<CodomainT>));
     }
 
-#   ifdef BOOST_ICL_IS_MOVE_AWARE
+    explicit map(const element_type& key_value_pair): base_type::map()
+    { 
+        insert(key_value_pair); 
+    }
+
+    //=============================================================================
+    //= Move emulation
+    //=============================================================================
+
     map(BOOST_RV_REF(map) src)
         : base_type(boost::move(static_cast<base_type&>(src)))
     {
-        std::cout << "m.";//CL
         BOOST_CONCEPT_ASSERT((DefaultConstructibleConcept<DomainT>));
         BOOST_CONCEPT_ASSERT((LessThanComparableConcept<DomainT>));
         BOOST_CONCEPT_ASSERT((DefaultConstructibleConcept<CodomainT>));
         BOOST_CONCEPT_ASSERT((EqualComparableConcept<CodomainT>));
     }
-#   endif //BOOST_ICL_IS_MOVE_AWARE
 
-    explicit map(const element_type& key_value_pair): base_type::map()
+    map& operator = (BOOST_RV_REF(map) src) 
     { 
-        insert(key_value_pair); 
-    }
-
-#   ifdef BOOST_ICL_IS_MOVE_AWARE
-    map& operator=(BOOST_RV_REF(map) src) 
-    { 
-        std::cout << "m=";//CL
         base_type::operator=(static_cast<base_type&>(src));
         return *this; 
     } 
 
-    map& operator=(BOOST_COPY_ASSIGN_REF(map) src) 
-    { 
-        base_type::operator=(static_cast<const base_type&>(src));
-        return *this; 
-    } 
-#   else
-    map& operator=(const map& src) 
+    map& operator = (BOOST_COPY_ASSIGN_REF(map) src) 
     { 
         base_type::operator=(static_cast<const base_type&>(src));
         return *this; 
     } 
-#   endif //BOOST_ICL_IS_MOVE_AWARE
+    //==========================================================================
 
     void swap(map& src) { base_type::swap(src); }
 
@@ -347,6 +335,14 @@
             return base_type::insert(prior, value_pair);
     }
 
+    template<class Iterator>
+    iterator insert(Iterator first, Iterator last)
+    {
+        iterator prior = end(), it = first;
+        while(it != last)
+            prior = this->insert(prior, *it++);
+    }
+
     /** With <tt>key_value_pair = (k,v)</tt> set value \c v for key \c k */
     map& set(const element_type& key_value_pair)
     { 
Modified: trunk/boost/icl/separate_interval_set.hpp
==============================================================================
--- trunk/boost/icl/separate_interval_set.hpp	(original)
+++ trunk/boost/icl/separate_interval_set.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -82,9 +82,10 @@
     /// const_iterator for iteration over intervals
     typedef typename ImplSetT::const_iterator const_iterator;
 
-
     enum { fineness = 2 };
 
+    BOOST_COPYABLE_AND_MOVABLE(separate_interval_set)
+
 public:
     //==========================================================================
     //= Construct, copy, destruct
@@ -120,8 +121,32 @@
     template<class SubType>
     void assign(const interval_base_set<SubType,DomainT,Compare,Interval,Alloc>& src)
     {
+        typedef typename
+        interval_base_set<SubType,DomainT,Compare,Interval,Alloc> src_type;
+
         this->clear();
-        this->_set.insert(src.begin(), src.end());
+        //this->_set.insert(src.begin(), src.end()); //JODO range-insert is not working with Boost.Containers
+        iterator prior_ = this->end(); 
+        typename src_type::const_iterator it_ = src.begin();
+
+        while(it_ != src.end())
+            prior_ = this->_set.insert(prior_, *it_++);
+    }
+
+    //==========================================================================
+    //= Move emulation
+    //==========================================================================
+
+    /// Move constructor
+    separate_interval_set(BOOST_RV_REF(separate_interval_set) src)
+        : base_type(boost::move(static_cast<base_type&>(src)))
+    {}
+
+    /// Move assignment operator
+    separate_interval_set& operator = (BOOST_RV_REF(separate_interval_set) src)
+    { 
+        base_type::operator=(boost::move(static_cast<base_type&>(src)));
+        return *this;
     }
 
 
Modified: trunk/boost/icl/set.hpp
==============================================================================
--- trunk/boost/icl/set.hpp	(original)
+++ trunk/boost/icl/set.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -10,12 +10,12 @@
 
 #include <boost/icl/impl_config.hpp>
 
-#if defined(ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION)
-#include <boost/interprocess/containers/set.hpp>
-#elif defined(ICL_USE_BOOST_MOVE_IMPLEMENTATION)
-#include <boost/container/set.hpp>
+#if defined(ICL_USE_BOOST_MOVE_IMPLEMENTATION)
+#   include <boost/container/set.hpp>
+#elif defined(ICL_USE_STD_IMPLEMENTATION)
+#   include <set>
 #else 
-#include <set>
+#   include <set>
 #endif
 
 #include <boost/icl/concept/associative_element_container.hpp>
Modified: trunk/boost/icl/split_interval_map.hpp
==============================================================================
--- trunk/boost/icl/split_interval_map.hpp	(original)
+++ trunk/boost/icl/split_interval_map.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -62,9 +62,7 @@
 
     enum { fineness = 3 };
 
-#   ifdef BOOST_ICL_IS_MOVE_AWARE
     BOOST_COPYABLE_AND_MOVABLE(split_interval_map)
-#   endif
 
 public:
     //==========================================================================
@@ -76,12 +74,6 @@
     /// Copy constructor
     split_interval_map(const split_interval_map& src): base_type(src) {}
 
-#   ifdef BOOST_ICL_IS_MOVE_AWARE
-    /// Move constructor
-    split_interval_map(BOOST_RV_REF(split_interval_map) src)
-        : base_type(boost::move(static_cast<base_type&>(src))){}
-#   endif
-
     explicit split_interval_map(domain_mapping_type& base_pair): base_type()
     { this->add(base_pair); }
 
@@ -90,27 +82,50 @@
 
     /// Copy assignment operator
     template<class SubType>
-    split_interval_map& operator =
-        (const interval_base_map<SubType,DomainT,CodomainT,
-                                 Traits,Compare,Combine,Section,Interval,Alloc>& src)
+    split_interval_map& operator = (const joint_type& src)
     { this->assign(src); return *this; }
 
-
     /// Assignment from a base interval_map.
     template<class SubType>
     void assign(const interval_base_map<SubType,DomainT,CodomainT,
                                         Traits,Compare,Combine,Section,Interval,Alloc>& src)
     {
-        this->clear();
-        this->_map.insert(src.begin(), src.end()); //JODO URG new boost.container compiler problem
-        /*hack
         typedef typename
         interval_base_map<SubType,DomainT,CodomainT,Traits,Compare,Combine,Section,Interval,Alloc> src_type;
-        ICL_const_FORALL(src_type, it_, src)
-            this->insert(*it_);
-        */
+
+        this->clear();
+        //this->_map.insert(src.begin(), src.end()); //JODO range-insert is not working with Boost.Containers
+        iterator prior_ = this->end(); 
+        typename src_type::const_iterator it_ = src.begin();
+
+        while(it_ != src.end())
+            prior_ = this->_map.insert(prior_, *it_++);
+    }
+
+    //==========================================================================
+    //= Move emulation
+    //==========================================================================
+
+    /// Move constructor
+    split_interval_map(BOOST_RV_REF(split_interval_map) src)
+        : base_type(boost::move(static_cast<base_type&>(src)))
+    {}
+
+    /// Move assignment operator
+    split_interval_map& operator = (BOOST_RV_REF(split_interval_map) src)
+    { 
+        base_type::operator=(boost::move(static_cast<base_type&>(src)));
+        return *this;
     }
 
+    /// Copy assignment operator
+    split_interval_map& operator = (BOOST_COPY_ASSIGN_REF(split_interval_map) src) 
+    { 
+        base_type::operator=(src);
+        return *this; 
+    }
+
+
 private:
     // Private functions that shall be accessible by the baseclass:
     friend class
Modified: trunk/boost/icl/split_interval_set.hpp
==============================================================================
--- trunk/boost/icl/split_interval_set.hpp	(original)
+++ trunk/boost/icl/split_interval_set.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -83,6 +83,8 @@
 
     enum { fineness = 3 };
 
+    BOOST_COPYABLE_AND_MOVABLE(split_interval_set)
+
 public:
     //==========================================================================
     //= Construct, copy, destruct
@@ -114,8 +116,32 @@
     template<class SubType>
     void assign(const interval_base_set<SubType,DomainT,Compare,Interval,Alloc>& src)
     {
+        typedef typename
+        interval_base_set<SubType,DomainT,Compare,Interval,Alloc> src_type;
+
         this->clear();
-        this->_set.insert(src.begin(), src.end());
+        //this->_set.insert(src.begin(), src.end()); //JODO range-insert is not working with Boost.Containers
+        iterator prior_ = this->end(); 
+        typename src_type::const_iterator it_ = src.begin();
+
+        while(it_ != src.end())
+            prior_ = this->_set.insert(prior_, *it_++);
+    }
+
+    //==========================================================================
+    //= Move emulation
+    //==========================================================================
+
+    /// Move constructor
+    split_interval_set(BOOST_RV_REF(split_interval_set) src)
+        : base_type(boost::move(static_cast<base_type&>(src)))
+    {}
+
+    /// Move assignment operator
+    split_interval_set& operator = (BOOST_RV_REF(split_interval_set) src)
+    { 
+        base_type::operator=(boost::move(static_cast<base_type&>(src)));
+        return *this;
     }
 
     
Modified: trunk/boost/icl/type_traits/is_discrete.hpp
==============================================================================
--- trunk/boost/icl/type_traits/is_discrete.hpp	(original)
+++ trunk/boost/icl/type_traits/is_discrete.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -50,7 +50,6 @@
                          <
                              has_rep_type<Type>
                            , is_discrete<typename rep_type_of<Type>::type>
-                           //CL , is_non_floating_point<typename rep_type_of<Type>::type>
                          >
                      >
                  >::value
Modified: trunk/libs/icl/test/Jamfile.v2
==============================================================================
--- trunk/libs/icl/test/Jamfile.v2	(original)
+++ trunk/libs/icl/test/Jamfile.v2	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -82,7 +82,7 @@
       #[ run test_casual_/test_casual.cpp ]
 
 
-      # ------------------------------------------------------------------------
+      # ========================================================================
       # Chrono -----------------------------------------------------------------
       # interval
       [ run fastest_icl_interval_/fastest_icl_interval.cpp 
Modified: trunk/libs/icl/test/fastest_icl_interval_/fastest_icl_interval.cpp
==============================================================================
--- trunk/libs/icl/test/fastest_icl_interval_/fastest_icl_interval.cpp	(original)
+++ trunk/libs/icl/test/fastest_icl_interval_/fastest_icl_interval.cpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -40,34 +40,34 @@
 //= Traits
 //==============================================================================
 BOOST_AUTO_TEST_CASE
-(fastest_itl_discrete_interval_traits)
+(fastest_icl_discrete_interval_traits)
 {            discrete_interval_traits<discrete_type_1, discrete_interval<discrete_type_1> >(); }
 
 //==============================================================================
 
 //- sta.asy.{dis|con} ----------------------------------------------------------
 BOOST_AUTO_TEST_CASE
-(fastest_itl_right_open_interval_ctor_4_ordered_types)
+(fastest_icl_right_open_interval_ctor_4_ordered_types)
 {                       interval_ctor_4_ordered_types<right_open_interval<ordered_type_1> >(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_right_open_interval_4_ordered_types)
+(fastest_icl_right_open_interval_4_ordered_types)
 {          singelizable_interval_4_ordered_types<right_open_interval<discrete_type_1> >(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_right_open_interval_4_bicremental_types)
+(fastest_icl_right_open_interval_4_bicremental_types)
 {          singelizable_interval_4_bicremental_types<right_open_interval<discrete_type_2> >(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_left_open_interval_ctor_4_ordered_types)
+(fastest_icl_left_open_interval_ctor_4_ordered_types)
 {                      interval_ctor_4_ordered_types<left_open_interval<ordered_type_2> >(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_left_open_interval_4_ordered_types_singelizable)
+(fastest_icl_left_open_interval_4_ordered_types_singelizable)
 {         singelizable_interval_4_ordered_types<left_open_interval<signed_discrete_type_1> >(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_left_open_interval_4_bicremental_types)
+(fastest_icl_left_open_interval_4_bicremental_types)
 {         singelizable_interval_4_bicremental_types<left_open_interval<discrete_type_4> >(); }
 
 //- coverables -----------------------------------------------------------------
@@ -81,47 +81,47 @@
 
 //- dyn.dis --------------------------------------------------------------------
 BOOST_AUTO_TEST_CASE
-(fastest_itl_discrete_interval_ctor_4_discrete_types_base)
+(fastest_icl_discrete_interval_ctor_4_discrete_types_base)
 {                     interval_ctor_4_ordered_types<discrete_interval<discrete_type_1> >(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_discrete_interval_ctor_4_discrete_types_dynamic)
+(fastest_icl_discrete_interval_ctor_4_discrete_types_dynamic)
 {             dynamic_interval_ctor_4_ordered_types<discrete_interval<discrete_type_2> >(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_discrete_interval_4_ordered_types)
+(fastest_icl_discrete_interval_4_ordered_types)
 {        singelizable_interval_4_ordered_types<discrete_interval<discrete_type_3> >(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_discrete_interval_4_bicremental_types)
+(fastest_icl_discrete_interval_4_bicremental_types)
 {        singelizable_interval_4_bicremental_types<discrete_interval<discrete_type_3> >(); }
 
 //- dyn.con --------------------------------------------------------------------
 BOOST_AUTO_TEST_CASE
-(fastest_itl_continuous_interval_ctor_4_continuous_types_base)
+(fastest_icl_continuous_interval_ctor_4_continuous_types_base)
 {                       interval_ctor_4_ordered_types<continuous_interval<continuous_type_1> >(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_continuous_interval_ctor_4_continuous_types_dynamic)
+(fastest_icl_continuous_interval_ctor_4_continuous_types_dynamic)
 {               dynamic_interval_ctor_4_ordered_types<continuous_interval<continuous_type_2> >(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_continuous_interval_4_continuous_types_singelizable)
+(fastest_icl_continuous_interval_4_continuous_types_singelizable)
 {          singelizable_interval_4_ordered_types<continuous_interval<continuous_type_3> >(); }
 
 //------------------------------------------------------------------------------
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_distant_intervals_4_discrete_types)
+(fastest_icl_distant_intervals_4_discrete_types)
 {            distant_intervals_4_discrete_types<discrete_type_1, std::less>(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_distant_intervals_4_numeric_continuous_types)
+(fastest_icl_distant_intervals_4_numeric_continuous_types)
 {            distant_intervals_4_numeric_continuous_types<numeric_continuous_type_1, std::less>(); }
 
 //------------------------------------------------------------------------------
 BOOST_AUTO_TEST_CASE
-(fastest_itl_dynamic_interval_bounds_4_bicremental_types)
+(fastest_icl_dynamic_interval_bounds_4_bicremental_types)
 {            dynamic_interval_bounds_4_bicremental_types<bicremental_type_2>(); }
 
 //==============================================================================
Modified: trunk/libs/icl/test/fastest_icl_map_/fastest_icl_map_cases.hpp
==============================================================================
--- trunk/libs/icl/test/fastest_icl_map_/fastest_icl_map_cases.hpp	(original)
+++ trunk/libs/icl/test/fastest_icl_map_/fastest_icl_map_cases.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -9,11 +9,15 @@
 #define BOOST_ICL_TEST_ICL_MAP_CASES_HPP_JOFA_090701
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_itl_map_contains_4_bicremental_types)
-{            itl_map_contains_4_bicremental_types<discrete_type_1, int, partial_absorber, INTERVAL_MAP>();}
+(fastest_icl_icl_map_contains_4_bicremental_types)
+{            icl_map_contains_4_bicremental_types<discrete_type_1, int, partial_absorber, INTERVAL_MAP>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_itl_map_find_4_bicremental_types)
-{            itl_map_find_4_bicremental_types<discrete_type_1, int, partial_absorber, INTERVAL_MAP>();}
+(fastest_icl_icl_map_find_4_bicremental_types)
+{            icl_map_find_4_bicremental_types<discrete_type_1, int, partial_absorber, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE
+(fastest_icl_icl_map_move_4_discrete_types)
+{            icl_map_move_4_discrete_types<discrete_type_1, int, partial_absorber, INTERVAL_MAP>();}
 
 #endif // BOOST_ICL_TEST_ICL_MAP_CASES_HPP_JOFA_090701
Modified: trunk/libs/icl/test/fastest_interval_map_cases.hpp
==============================================================================
--- trunk/libs/icl/test/fastest_interval_map_cases.hpp	(original)
+++ trunk/libs/icl/test/fastest_interval_map_cases.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -93,8 +93,8 @@
 {            interval_map_intersects_4_bicremental_types<INTERVAL_MAP, bicremental_type_3, int>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_icl_interval_map_move_4_bicremental_types)
-{            interval_map_move_4_bicremental_types<INTERVAL_MAP, bicremental_type_1, double>();}
+(fastest_icl_interval_map_move_4_discrete_types)
+{            interval_map_move_4_discrete_types<INTERVAL_MAP, discrete_type_1, double>();}
 
 
 #endif // BOOST_ICL_FASTEST_INTERVAL_MAP_CASES_HPP_JOFA_090702
Modified: trunk/libs/icl/test/fastest_interval_map_mixed_/fastest_interval_map_mixed.cpp
==============================================================================
--- trunk/libs/icl/test/fastest_interval_map_mixed_/fastest_interval_map_mixed.cpp	(original)
+++ trunk/libs/icl/test/fastest_interval_map_mixed_/fastest_interval_map_mixed.cpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -54,10 +54,10 @@
 {            interval_map_mixed_equal_4_bicremental_types<bicremental_type_3, int>(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_partial_interval_map_mixed_inclusion_compare_4_bicremental_types)
+(fastest_icl_partial_interval_map_mixed_inclusion_compare_4_bicremental_types)
 {            partial_interval_map_mixed_inclusion_compare_4_bicremental_types<bicremental_type_4, int, partial_absorber>(); }
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_partial_interval_map_mixed_contains_4_bicremental_types)
+(fastest_icl_partial_interval_map_mixed_contains_4_bicremental_types)
 {            partial_interval_map_mixed_contains_4_bicremental_types<int, int, partial_absorber>(); }
 
Modified: trunk/libs/icl/test/fastest_interval_set_cases.hpp
==============================================================================
--- trunk/libs/icl/test/fastest_interval_set_cases.hpp	(original)
+++ trunk/libs/icl/test/fastest_interval_set_cases.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -68,6 +68,10 @@
 (fastest_icl_interval_set_range_4_discrete_types)
 {            interval_set_range_4_discrete_types<INTERVAL_SET, discrete_type_3>();}
 
+BOOST_AUTO_TEST_CASE
+(fastest_icl_interval_set_move_4_discrete_types)
+{            interval_set_move_4_discrete_types<INTERVAL_SET, discrete_type_2>();}
+
 #endif // BOOST_ICL_FASTEST_INTERVAL_SET_CASES_HPP_JOFA_090702
 
 
Modified: trunk/libs/icl/test/fastest_set_interval_set_/fastest_set_interval_set_cases.hpp
==============================================================================
--- trunk/libs/icl/test/fastest_set_interval_set_/fastest_set_interval_set_cases.hpp	(original)
+++ trunk/libs/icl/test/fastest_set_interval_set_/fastest_set_interval_set_cases.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -32,19 +32,19 @@
 // separate_interval_set
 //------------------------------------------------------------------------------
 BOOST_AUTO_TEST_CASE
-(fastest_itl_separate_interval_set_check_monoid_plus_4_bicremental_types)
+(fastest_icl_separate_interval_set_check_monoid_plus_4_bicremental_types)
 {                     interval_set_check_monoid_plus_4_bicremental_types<bicremental_type_5, separate_interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_separate_interval_set_check_abelian_monoid_plus_4_bicremental_types)
+(fastest_icl_separate_interval_set_check_abelian_monoid_plus_4_bicremental_types)
 {                     interval_set_check_abelian_monoid_plus_4_bicremental_types<bicremental_type_6, separate_interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_separate_interval_set_check_abelian_monoid_et_4_bicremental_types)
+(fastest_icl_separate_interval_set_check_abelian_monoid_et_4_bicremental_types)
 {                     interval_set_check_abelian_monoid_et_4_bicremental_types<bicremental_type_7, separate_interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_separate_interval_set_check_partial_invertive_monoid_plus_4_bicremental_types)
+(fastest_icl_separate_interval_set_check_partial_invertive_monoid_plus_4_bicremental_types)
 {                     interval_set_check_partial_invertive_monoid_plus_4_bicremental_types<bicremental_type_8, separate_interval_set>();}
 
 
@@ -52,19 +52,19 @@
 // split_interval_set
 //------------------------------------------------------------------------------
 BOOST_AUTO_TEST_CASE
-(fastest_itl_split_interval_set_check_monoid_plus_4_bicremental_types)
+(fastest_icl_split_interval_set_check_monoid_plus_4_bicremental_types)
 {                  interval_set_check_monoid_plus_4_bicremental_types<bicremental_type_1, split_interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_split_interval_set_check_abelian_monoid_plus_4_bicremental_types)
+(fastest_icl_split_interval_set_check_abelian_monoid_plus_4_bicremental_types)
 {                  interval_set_check_abelian_monoid_plus_4_bicremental_types<bicremental_type_2, split_interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_split_interval_set_check_abelian_monoid_et_4_bicremental_types)
+(fastest_icl_split_interval_set_check_abelian_monoid_et_4_bicremental_types)
 {                  interval_set_check_abelian_monoid_et_4_bicremental_types<bicremental_type_3, split_interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_split_interval_set_check_partial_invertive_monoid_plus_4_bicremental_types)
+(fastest_icl_split_interval_set_check_partial_invertive_monoid_plus_4_bicremental_types)
 {                  interval_set_check_partial_invertive_monoid_plus_4_bicremental_types<bicremental_type_4, split_interval_set>();}
 
 
@@ -76,11 +76,11 @@
 {            interval_set_check_containedness_4_bicremental_types<bicremental_type_4, interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_split_interval_set_check_containedness_4_bicremental_types)
+(fastest_icl_split_interval_set_check_containedness_4_bicremental_types)
 {                  interval_set_check_containedness_4_bicremental_types<bicremental_type_5, split_interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_separate_interval_set_check_containedness_4_bicremental_types)
+(fastest_icl_separate_interval_set_check_containedness_4_bicremental_types)
 {                     interval_set_check_containedness_4_bicremental_types<bicremental_type_6, separate_interval_set>();}
 
 //------------------------------------------------------------------------------
@@ -91,11 +91,11 @@
 {            interval_set_check_inner_complementarity_4_bicremental_types<bicremental_type_7, interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_separate_interval_set_check_inner_complementarity_4_bicremental_types)
+(fastest_icl_separate_interval_set_check_inner_complementarity_4_bicremental_types)
 {                     interval_set_check_inner_complementarity_4_bicremental_types<bicremental_type_8, separate_interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_split_interval_set_check_inner_complementarity_4_bicremental_types)
+(fastest_icl_split_interval_set_check_inner_complementarity_4_bicremental_types)
 {                  interval_set_check_inner_complementarity_4_bicremental_types<bicremental_type_1, split_interval_set>();}
 
 //------------------------------------------------------------------------------
@@ -106,11 +106,11 @@
 {            interval_set_check_length_complementarity_4_bicremental_types<bicremental_type_2, interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_separate_interval_set_check_length_complementarity_4_bicremental_types)
+(fastest_icl_separate_interval_set_check_length_complementarity_4_bicremental_types)
 {                     interval_set_check_length_complementarity_4_bicremental_types<bicremental_type_3, separate_interval_set>();}
 
 BOOST_AUTO_TEST_CASE
-(fastest_itl_split_interval_set_check_length_complementarity_4_bicremental_types)
+(fastest_icl_split_interval_set_check_length_complementarity_4_bicremental_types)
 {                  interval_set_check_length_complementarity_4_bicremental_types<bicremental_type_4, split_interval_set>();}
 
 #endif // BOOST_ICL_FASTEST_SET_INTERVAL_SET_CASES_HPP_JOFA_090703
Modified: trunk/libs/icl/test/test_combinable_/test_combinable.cpp
==============================================================================
--- trunk/libs/icl/test/test_combinable_/test_combinable.cpp	(original)
+++ trunk/libs/icl/test/test_combinable_/test_combinable.cpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -204,7 +204,7 @@
 }
 
 
-BOOST_AUTO_TEST_CASE(test_itl_is_derivative)
+BOOST_AUTO_TEST_CASE(test_icl_is_derivative)
 {
     //--------------------------------------------------------------------------
     // 1.1
@@ -243,7 +243,7 @@
         );
 }
 
-BOOST_AUTO_TEST_CASE(test_itl_is_combinable)
+BOOST_AUTO_TEST_CASE(test_icl_is_combinable)
 {
     //--------------------------------------------------------------------------
     // 2.1
@@ -283,7 +283,7 @@
 
 }
 
-BOOST_AUTO_TEST_CASE(test_itl_is_container_right_combinable)
+BOOST_AUTO_TEST_CASE(test_icl_is_container_right_combinable)
 {
     //--------------------------------------------------------------------------
     // 3.1
@@ -338,7 +338,7 @@
 
 }
 
-BOOST_AUTO_TEST_CASE(test_itl_is_right_combinable)
+BOOST_AUTO_TEST_CASE(test_icl_is_right_combinable)
 {
     //--------------------------------------------------------------------------
     // 4.1
@@ -365,7 +365,7 @@
         );
 }
 
-BOOST_AUTO_TEST_CASE(test_itl_combines_right_to)
+BOOST_AUTO_TEST_CASE(test_icl_combines_right_to)
 {
     //--------------------------------------------------------------------------
     // 5.1
@@ -404,7 +404,7 @@
         );
 }
 
-BOOST_AUTO_TEST_CASE(test_itl_is_companion)
+BOOST_AUTO_TEST_CASE(test_icl_is_companion)
 {
     //--------------------------------------------------------------------------
     // 6.1
@@ -431,7 +431,7 @@
         );
 }
 
-BOOST_AUTO_TEST_CASE(test_itl_is_coarser_combinable)
+BOOST_AUTO_TEST_CASE(test_icl_is_coarser_combinable)
 {
     //--------------------------------------------------------------------------
     // 7.1
@@ -486,7 +486,7 @@
         );
 }
 
-BOOST_AUTO_TEST_CASE(test_itl_is_binary_combinable)
+BOOST_AUTO_TEST_CASE(test_icl_is_binary_combinable)
 {
     //--------------------------------------------------------------------------
     // 9.1
Modified: trunk/libs/icl/test/test_icl_map.hpp
==============================================================================
--- trunk/libs/icl/test/test_icl_map.hpp	(original)
+++ trunk/libs/icl/test/test_icl_map.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -19,7 +19,7 @@
     ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
 #endif
 >
-void itl_map_contains_4_bicremental_types()
+void icl_map_contains_4_bicremental_types()
 {
     typedef IntervalMap<T,U,Trt> IntervalMapT;
     typedef icl::map<T,U,Trt> MapT;
@@ -39,25 +39,6 @@
     BOOST_CHECK( contains(map_a, key_value_pair) );
     BOOST_CHECK( within(key_value_pair, map_a) );
 
-    //found = map_a.find(MK_v(5));
-
-    //BOOST_CHECK_EQUAL( found == map_a.end(), true );
-    //BOOST_CHECK_EQUAL( map_a(MK_v(5)), MK_u(0) );
-
-#   ifdef BOOST_ICL_IS_MOVE_AWARE
-
-    cout << ">"; //JODO
-    MapT map_b(boost::move(MapT().add(key_value_pair)));
-    cout << "<\n";
-    cout << map_b << endl;
-
-    cout << ">"; 
-    MapT map_c;
-    map_c = boost::move(MapT().add(key_value_pair));
-    cout << "<\n";
-    cout << map_c << endl;
-
-#   endif //BOOST_ICL_IS_MOVE_AWARE
 }
 
 
@@ -70,7 +51,7 @@
     ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
 #endif
 >
-void itl_map_find_4_bicremental_types()
+void icl_map_find_4_bicremental_types()
 {
     typedef IntervalMap<T,U,Trt> IntervalMapT;
     typedef icl::map<T,U,Trt> MapT;
@@ -102,7 +83,7 @@
     ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
 #endif
 >
-void itl_map_inclusion_compare_4_bicremental_types()
+void icl_map_inclusion_compare_4_bicremental_types()
 {
     typedef IntervalMap<T,U,Trt> IntervalMapT;
     typedef icl::map<T,U,Trt> MapT;
@@ -168,5 +149,38 @@
 }
 
 
+template 
+<
+    class T, class U, class Trt, 
+#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
+    ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
+#else
+    ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
+#endif
+>
+void icl_map_move_4_discrete_types()
+{
+    typedef icl::map<T,U,Trt> MapT;
+    typedef typename MapT::element_type map_element_type;
+
+    map_element_type kv_6_3(MK_v(6), MK_u(3));
+
+    MapT map_b;
+    map_b.add(kv_6_3);
+    MapT mv_cons_1(boost::move(MapT().add(kv_6_3)));
+    MapT cp_cons_1(map_b);
+
+    BOOST_CHECK_EQUAL( mv_cons_1, cp_cons_1 );
+    BOOST_CHECK_EQUAL( map_b, cp_cons_1 );
+
+    MapT mv_ass_1, cp_ass_1;
+    mv_ass_1 = boost::move(MapT().add(kv_6_3));
+    cp_ass_1 = map_b;
+
+    BOOST_CHECK_EQUAL( mv_ass_1, cp_ass_1 );
+    BOOST_CHECK_EQUAL( map_b, cp_ass_1 );
+}
+
+
 #endif // LIBS_ICL_TEST_TEST_ICL_MAP_HPP_JOFA_090119
 
Modified: trunk/libs/icl/test/test_interval_map_shared.hpp
==============================================================================
--- trunk/libs/icl/test/test_interval_map_shared.hpp	(original)
+++ trunk/libs/icl/test/test_interval_map_shared.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -1525,25 +1525,24 @@
 #endif
     class T, class U
 >
-void interval_map_move_4_bicremental_types()
+void interval_map_move_4_discrete_types()
 {
     typedef IntervalMap<T,U> IntervalMapT;
     typedef typename IntervalMapT::interval_type   IntervalT;
 
-#   ifdef BOOST_ICL_IS_MOVE_AWARE
     IntervalMapT map_A(boost::move(static_cast<IntervalMapT&>(IntervalMapT(IDv(0,4,2)))));
     IntervalMapT map_B(boost::move(static_cast<IntervalMapT&>(IntervalMapT(IDv(0,2,1)).add(IDv(2,4,1)).add(IDv(0,4,1)))));
 
-    BOOST_CHECK_EQUAL( map_A, map_B );
+    BOOST_CHECK( icl::is_element_equal(map_A, map_B) );
+    BOOST_CHECK_EQUAL( map_A, join(map_B) );
 
-    map_A = boost::move(static_cast<IntervalMapT&>(IntervalMapT(IIv(1,4,2)))); //JODO not yet moving
+    map_A = boost::move(static_cast<IntervalMapT&>(IntervalMapT(IIv(1,4,2))));
     map_B = boost::move(static_cast<IntervalMapT&>(IntervalMapT(CIv(0,2,1)).insert(IDv(3,5,1)).add(CDv(0,5,1))));
 
-    BOOST_CHECK_EQUAL( map_A, map_B );
-#   endif //BOOST_ICL_IS_MOVE_AWARE
+    BOOST_CHECK( icl::is_element_equal(map_A, map_B) );
+    BOOST_CHECK_EQUAL( map_A, join(map_B) );
 }
 
 
-
 #endif // LIBS_ICL_TEST_TEST_INTERVAL_MAP_SHARED_HPP_JOFA_081005
 
Modified: trunk/libs/icl/test/test_interval_set_shared.hpp
==============================================================================
--- trunk/libs/icl/test/test_interval_set_shared.hpp	(original)
+++ trunk/libs/icl/test/test_interval_set_shared.hpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -819,5 +819,28 @@
     BOOST_CHECK_EQUAL( vec == dest, true );
 }
 
+
+template <ICL_IntervalSet_TEMPLATE(_T) IntervalSet, class T>
+void interval_set_move_4_discrete_types()
+{
+    typedef IntervalSet<T> IntervalSetT;
+    typedef typename IntervalSetT::interval_type IntervalT;
+    typedef std::vector<T> VectorT;
+
+    IntervalSetT set_A(boost::move(static_cast<IntervalSetT&>(IntervalSetT(I_D(0,4)))));
+    IntervalSetT set_B(boost::move(static_cast<IntervalSetT&>(IntervalSetT(I_D(0,2)).add(I_D(2,4)).add(I_D(0,4)))));
+
+    BOOST_CHECK( icl::is_element_equal(set_A, set_B) );
+    BOOST_CHECK_EQUAL( set_A, join(set_B) );
+
+    set_A = boost::move(static_cast<IntervalSetT&>(IntervalSetT(I_I(1,4))));
+    set_B = boost::move(static_cast<IntervalSetT&>(IntervalSetT(C_I(0,2)).insert(I_D(3,5)).add(C_D(0,5))));
+
+    BOOST_CHECK( icl::is_element_equal(set_A, set_B) );
+    BOOST_CHECK_EQUAL( set_A, join(set_B) );
+}
+
+
+
 #endif // LIBS_ICL_TEST_TEST_INTERVAL_SET_SHARED_HPP_JOFA_080920
 
Modified: trunk/libs/icl/test/test_type_traits_/test_type_traits.cpp
==============================================================================
--- trunk/libs/icl/test/test_type_traits_/test_type_traits.cpp	(original)
+++ trunk/libs/icl/test/test_type_traits_/test_type_traits.cpp	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -82,7 +82,7 @@
     BOOST_CHECK((!is_key_container_of<int, icl::map<int,int> >::value));
     BOOST_CHECK((!is_key_container_of<std::pair<int,int> , icl::map<int,int> >::value));
     BOOST_CHECK(( is_key_container_of<std::set<int>,       std::set<int>     >::value));
-    BOOST_CHECK(( is_key_container_of<std::set<int>,       icl::map<int,int> >::value));
+    BOOST_CHECK(( is_key_container_of<ICL_IMPL_SPACE::set<int>,       icl::map<int,int> >::value));
     BOOST_CHECK(( is_key_container_of<icl::map<int,int>,   icl::map<int,int> >::value));
 }
 
@@ -91,6 +91,10 @@
     BOOST_CHECK( (is_set<std::set<int> >::value) );
     BOOST_CHECK( (is_element_set<std::set<int> >::value) );
     BOOST_CHECK( (!is_map<std::set<int> >::value) );
+
+    BOOST_CHECK( (is_set<ICL_IMPL_SPACE::set<int> >::value) );
+    BOOST_CHECK( (is_element_set<ICL_IMPL_SPACE::set<int> >::value) );
+    BOOST_CHECK( (!is_map<ICL_IMPL_SPACE::set<int> >::value) );
 }
 
 BOOST_AUTO_TEST_CASE(test_miscellaneous_type_traits)
Modified: trunk/libs/icl/test/vc9_icl_fast_tests.sln
==============================================================================
--- trunk/libs/icl/test/vc9_icl_fast_tests.sln	(original)
+++ trunk/libs/icl/test/vc9_icl_fast_tests.sln	2011-12-25 14:14:24 EST (Sun, 25 Dec 2011)
@@ -70,149 +70,141 @@
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_fix_tickets", "fix_tickets_\vc9_fix_tickets.vcproj", "{EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA1}"
 EndProject
 Global
-    GlobalSection(SolutionConfigurationPlatforms) = preSolution
-        Debug|Win32 = Debug|Win32
-        Release|Win32 = Release|Win32
-    EndGlobalSection
-    GlobalSection(ProjectConfigurationPlatforms) = postSolution
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A900D}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A900D}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A900D}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A900D}.Release|Win32.Build.0 = Release|Win32
-        {0FBD7F60-6470-41BB-8F8C-F47E9765C011}.Debug|Win32.ActiveCfg = Debug|Win32
-        {0FBD7F60-6470-41BB-8F8C-F47E9765C011}.Debug|Win32.Build.0 = Debug|Win32
-        {0FBD7F60-6470-41BB-8F8C-F47E9765C011}.Release|Win32.ActiveCfg = Release|Win32
-        {0FBD7F60-6470-41BB-8F8C-F47E9765C011}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D5A902F}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D5A902F}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D5A902F}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D5A902F}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3B903F}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3B903F}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3B903F}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3B903F}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A905C}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A905C}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A905C}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A905C}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B4B-FD5B7D2A917F}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B4B-FD5B7D2A917F}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B4B-FD5B7D2A917F}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B4B-FD5B7D2A917F}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A908C}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A908C}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A908C}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A908C}.Release|Win32.Build.0 = Release|Win32
-        {A731623C-94BC-4666-A419-35D1623E906E}.Debug|Win32.ActiveCfg = Debug|Win32
-        {A731623C-94BC-4666-A419-35D1623E906E}.Debug|Win32.Build.0 = Debug|Win32
-        {A731623C-94BC-4666-A419-35D1623E906E}.Release|Win32.ActiveCfg = Release|Win32
-        {A731623C-94BC-4666-A419-35D1623E906E}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A907E}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A907E}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A907E}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A907E}.Release|Win32.Build.0 = Release|Win32
-        {DD9C9854-3882-42B9-BFA1-C6CEBFCE309B}.Debug|Win32.ActiveCfg = Debug|Win32
-        {DD9C9854-3882-42B9-BFA1-C6CEBFCE309B}.Debug|Win32.Build.0 = Debug|Win32
-        {DD9C9854-3882-42B9-BFA1-C6CEBFCE309B}.Release|Win32.ActiveCfg = Release|Win32
-        {DD9C9854-3882-42B9-BFA1-C6CEBFCE309B}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B4A-FD5B7D2A909F}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B4A-FD5B7D2A909F}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B4A-FD5B7D2A909F}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B4A-FD5B7D2A909F}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D3A910C}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D3A910C}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D3A910C}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D3A910C}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Release|Win32.Build.0 = Release|Win32
-        {A731623C-94BC-4666-A419-35D2623E911E}.Debug|Win32.ActiveCfg = Debug|Win32
-        {A731623C-94BC-4666-A419-35D2623E911E}.Debug|Win32.Build.0 = Debug|Win32
-        {A731623C-94BC-4666-A419-35D2623E911E}.Release|Win32.ActiveCfg = Release|Win32
-        {A731623C-94BC-4666-A419-35D2623E911E}.Release|Win32.Build.0 = Release|Win32
-        {DD9C9854-3882-42B9-BFA1-C6CEBFCE3129}.Debug|Win32.ActiveCfg = Debug|Win32
-        {DD9C9854-3882-42B9-BFA1-C6CEBFCE3129}.Debug|Win32.Build.0 = Debug|Win32
-        {DD9C9854-3882-42B9-BFA1-C6CEBFCE3129}.Release|Win32.ActiveCfg = Release|Win32
-        {DD9C9854-3882-42B9-BFA1-C6CEBFCE3129}.Release|Win32.Build.0 = Release|Win32
-        {33577D13-D562-4E3F-89F2-A8885151D13F}.Debug|Win32.ActiveCfg = Debug|Win32
-        {33577D13-D562-4E3F-89F2-A8885151D13F}.Debug|Win32.Build.0 = Debug|Win32
-        {33577D13-D562-4E3F-89F2-A8885151D13F}.Release|Win32.ActiveCfg = Release|Win32
-        {33577D13-D562-4E3F-89F2-A8885151D13F}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A913E}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A913E}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A913E}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D2A913E}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D4A915C}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D4A915C}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D4A915C}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D4A915C}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B4A-FD5B7D3A909F}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B4A-FD5B7D3A909F}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B4A-FD5B7D3A909F}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B4A-FD5B7D3A909F}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B4B-FD5B7D4A917F}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B4B-FD5B7D4A917F}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B4B-FD5B7D4A917F}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B4B-FD5B7D4A917F}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A904F}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A904F}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A904F}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A904F}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA1}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA1}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA1}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA1}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D4A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D4A9FA0}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D4A9FA0}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D4A9FA0}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D5A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D5A9FA0}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D5A9FA0}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D5A9FA0}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D6A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D6A9FA0}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D6A9FA0}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D6A9FA0}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D8A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D8A9FA0}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D8A9FA0}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D8A9FA0}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA0}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA0}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA0}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA0}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA0}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA0}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA1}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA1}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA1}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA1}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA2}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA2}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA2}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA2}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA3}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA3}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA3}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA3}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8DAA9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8DAA9FA0}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8DAA9FA0}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8DAA9FA0}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D3A900D}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D3A900D}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D3A900D}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B7D3A900D}.Release|Win32.Build.0 = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA1}.Debug|Win32.ActiveCfg = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA1}.Debug|Win32.Build.0 = Debug|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA1}.Release|Win32.ActiveCfg = Release|Win32
-        {EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA1}.Release|Win32.Build.0 = Release|Win32
-    EndGlobalSection
-    GlobalSection(SolutionProperties) = preSolution
-        HideSolutionNode = FALSE
-    EndGlobalSection
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A900D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A900D}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A900D}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A900D}.Release|Win32.Build.0 = Release|Win32
+		{0FBD7F60-6470-41BB-8F8C-F47E9765C011}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0FBD7F60-6470-41BB-8F8C-F47E9765C011}.Debug|Win32.Build.0 = Debug|Win32
+		{0FBD7F60-6470-41BB-8F8C-F47E9765C011}.Release|Win32.ActiveCfg = Release|Win32
+		{0FBD7F60-6470-41BB-8F8C-F47E9765C011}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D5A902F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D5A902F}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D5A902F}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D5A902F}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3B903F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3B903F}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3B903F}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3B903F}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A905C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A905C}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A905C}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A905C}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D2A917F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D2A917F}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D2A917F}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D2A917F}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A908C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A908C}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A908C}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A908C}.Release|Win32.Build.0 = Release|Win32
+		{A731623C-94BC-4666-A419-35D1623E906E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A731623C-94BC-4666-A419-35D1623E906E}.Debug|Win32.Build.0 = Debug|Win32
+		{A731623C-94BC-4666-A419-35D1623E906E}.Release|Win32.ActiveCfg = Release|Win32
+		{A731623C-94BC-4666-A419-35D1623E906E}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A907E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A907E}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A907E}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A907E}.Release|Win32.Build.0 = Release|Win32
+		{DD9C9854-3882-42B9-BFA1-C6CEBFCE309B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{DD9C9854-3882-42B9-BFA1-C6CEBFCE309B}.Debug|Win32.Build.0 = Debug|Win32
+		{DD9C9854-3882-42B9-BFA1-C6CEBFCE309B}.Release|Win32.ActiveCfg = Release|Win32
+		{DD9C9854-3882-42B9-BFA1-C6CEBFCE309B}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D2A909F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D2A909F}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D2A909F}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D2A909F}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D3A910C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D3A910C}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D3A910C}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D3A910C}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Release|Win32.Build.0 = Release|Win32
+		{A731623C-94BC-4666-A419-35D2623E911E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A731623C-94BC-4666-A419-35D2623E911E}.Debug|Win32.Build.0 = Debug|Win32
+		{A731623C-94BC-4666-A419-35D2623E911E}.Release|Win32.ActiveCfg = Release|Win32
+		{A731623C-94BC-4666-A419-35D2623E911E}.Release|Win32.Build.0 = Release|Win32
+		{DD9C9854-3882-42B9-BFA1-C6CEBFCE3129}.Debug|Win32.ActiveCfg = Debug|Win32
+		{DD9C9854-3882-42B9-BFA1-C6CEBFCE3129}.Debug|Win32.Build.0 = Debug|Win32
+		{DD9C9854-3882-42B9-BFA1-C6CEBFCE3129}.Release|Win32.ActiveCfg = Release|Win32
+		{DD9C9854-3882-42B9-BFA1-C6CEBFCE3129}.Release|Win32.Build.0 = Release|Win32
+		{33577D13-D562-4E3F-89F2-A8885151D13F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{33577D13-D562-4E3F-89F2-A8885151D13F}.Debug|Win32.Build.0 = Debug|Win32
+		{33577D13-D562-4E3F-89F2-A8885151D13F}.Release|Win32.ActiveCfg = Release|Win32
+		{33577D13-D562-4E3F-89F2-A8885151D13F}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A913E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A913E}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A913E}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A913E}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D4A915C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D4A915C}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D4A915C}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D4A915C}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D3A909F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D3A909F}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D3A909F}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D3A909F}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D4A917F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D4A917F}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D4A917F}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D4A917F}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A904F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A904F}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A904F}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A904F}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA1}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA1}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA1}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA1}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D4A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D4A9FA0}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D4A9FA0}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D4A9FA0}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D5A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D5A9FA0}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D5A9FA0}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D5A9FA0}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D6A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D6A9FA0}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D6A9FA0}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D6A9FA0}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D8A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D8A9FA0}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D8A9FA0}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D8A9FA0}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA0}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA0}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA0}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA0}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA0}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA0}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA2}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA2}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA2}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA2}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA3}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA3}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D7A9FA3}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D3A900D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D3A900D}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D3A900D}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D3A900D}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA1}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA1}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA1}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D9A9FA1}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
 EndGlobal