$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r51551 - in sandbox/itl: boost/itl boost/itl/type_traits libs/itl/build/win32 libs/itl/doc libs/itl/test libs/itl/test/test_casual libs/itl/test/test_interval_map libs/itl/test/test_interval_set libs/itl/test/test_interval_set_infix libs/itl/test/test_interval_set_laws libs/itl/test/test_interval_set_mixed libs/itl/test/test_itl_map libs/itl/test/test_partial_interval_quantifier libs/itl/test/test_quantifier_itl_map libs/itl/test/test_separate_interval_set libs/itl/test/test_separate_interval_set_infix libs/itl/test/test_set_inerval_set libs/itl/test/test_set_itl_set libs/itl/test/test_split_interval_map libs/itl/test/test_split_interval_set libs/itl/test/test_split_interval_set_infix libs/itl/test/test_total_interval_quantifier
From: afojgo_at_[hidden]
Date: 2009-03-03 03:39:19
Author: jofaber
Date: 2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
New Revision: 51551
URL: http://svn.boost.org/trac/boost/changeset/51551
Log:
Refactored, portability. Made code portabel for gcc-3.4.4.
Differeced mainly for overloaded operators. 
Stable {msvc-9.0, gcc-3.4.4} 
Added:
   sandbox/itl/libs/itl/test/test_interval_map_cases.hpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_interval_quantifier_shared.hpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_interval_set_cases.hpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_interval_set_infix/
   sandbox/itl/libs/itl/test/test_interval_set_infix/test_interval_set_infix.cpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_interval_set_infix/vc9_test_interval_set_infix.vcproj   (contents, props changed)
   sandbox/itl/libs/itl/test/test_interval_set_infix_cases.hpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_itl_map/test_itl_map_cases.hpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_partial_interval_quantifier/
   sandbox/itl/libs/itl/test/test_partial_interval_quantifier/test_partial_interval_quantifier.cpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_partial_interval_quantifier/vc9_test_partial_interval_quantifier.vcproj   (contents, props changed)
   sandbox/itl/libs/itl/test/test_partial_interval_quantifier_cases.hpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_separate_interval_set_infix/
   sandbox/itl/libs/itl/test/test_separate_interval_set_infix/test_separate_interval_set_infix.cpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_separate_interval_set_infix/vc9_test_separate_interval_set_infix.vcproj   (contents, props changed)
   sandbox/itl/libs/itl/test/test_set_inerval_set/test_set_interval_set_cases.hpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_set_itl_set/test_set_itl_set_cases.hpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_set_itl_set_cases.hpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_split_interval_set_infix/
   sandbox/itl/libs/itl/test/test_split_interval_set_infix/test_split_interval_set_infix.cpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_split_interval_set_infix/vc9_test_split_interval_set_infix.vcproj   (contents, props changed)
   sandbox/itl/libs/itl/test/test_total_interval_quantifier/
   sandbox/itl/libs/itl/test/test_total_interval_quantifier/test_total_interval_quantifier.cpp   (contents, props changed)
   sandbox/itl/libs/itl/test/test_total_interval_quantifier/vc9_test_total_interval_quantifier.vcproj   (contents, props changed)
   sandbox/itl/libs/itl/test/test_total_interval_quantifier_cases.hpp   (contents, props changed)
Removed:
   sandbox/itl/libs/itl/test/test_interval_map/test_interval_map_shared.cpp
   sandbox/itl/libs/itl/test/test_interval_set/test_interval_set_shared.cpp
   sandbox/itl/libs/itl/test/test_interval_set_laws/
   sandbox/itl/libs/itl/test/test_itl_map/test_itl_map_shared.cpp
   sandbox/itl/libs/itl/test/test_separate_interval_set/test_separate_interval_set_shared.cpp
   sandbox/itl/libs/itl/test/test_set_inerval_set/test_set_interval_set_shared.cpp
Text files modified: 
   sandbox/itl/boost/itl/interval_base_set.hpp                                          |    32 ---------------                         
   sandbox/itl/boost/itl/interval_sets.hpp                                              |     2                                         
   sandbox/itl/boost/itl/map.hpp                                                        |    61 +++++++++++++++++++++++-----            
   sandbox/itl/boost/itl/map_algo.hpp                                                   |     4                                         
   sandbox/itl/boost/itl/operators.hpp                                                  |    75 ++++++++++++++++++++++++++---------     
   sandbox/itl/boost/itl/set.hpp                                                        |    84 ++++++++++++++++++++++++++++++++++----- 
   sandbox/itl/boost/itl/type_traits/is_combinable.hpp                                  |    24 +++++++----                             
   sandbox/itl/libs/itl/build/win32/vc9_all.sln                                         |    48 +++++++++++++++++-----                  
   sandbox/itl/libs/itl/doc/Jamfile.v2                                                  |     8 +-                                      
   sandbox/itl/libs/itl/test/Jamfile.v2                                                 |    13 ++++-                                   
   sandbox/itl/libs/itl/test/test_casual/test_casual.cpp                                |    10 ++-                                     
   sandbox/itl/libs/itl/test/test_interval_map/test_interval_map.cpp                    |     7 --                                      
   sandbox/itl/libs/itl/test/test_interval_map_shared.hpp                               |     8 ++-                                     
   sandbox/itl/libs/itl/test/test_interval_set/test_interval_set.cpp                    |     6 -                                       
   sandbox/itl/libs/itl/test/test_interval_set_mixed/test_interval_set_mixed.cpp        |    28 ++++++------                            
   sandbox/itl/libs/itl/test/test_interval_set_shared.hpp                               |    29 ++++++++-----                           
   sandbox/itl/libs/itl/test/test_itl_map.hpp                                           |     2                                         
   sandbox/itl/libs/itl/test/test_itl_map/test_itl_map.cpp                              |     6 -                                       
   sandbox/itl/libs/itl/test/test_laws.hpp                                              |    76 +++++++++++++++++++-----------------    
   sandbox/itl/libs/itl/test/test_quantifier_itl_map.hpp                                |    32 +++++++-------                          
   sandbox/itl/libs/itl/test/test_quantifier_itl_map/test_quantifier_itl_map.cpp        |     3 -                                       
   sandbox/itl/libs/itl/test/test_separate_interval_set/test_separate_interval_set.cpp  |     6 -                                       
   sandbox/itl/libs/itl/test/test_set_inerval_set/test_set_interval_set.cpp             |     5 -                                       
   sandbox/itl/libs/itl/test/test_set_interval_set_shared.hpp                           |     3 -                                       
   sandbox/itl/libs/itl/test/test_set_itl_set.hpp                                       |     3 -                                       
   sandbox/itl/libs/itl/test/test_set_itl_set/test_set_itl_set.cpp                      |     5 -                                       
   sandbox/itl/libs/itl/test/test_split_interval_map/test_split_interval_map.cpp        |     6 -                                       
   sandbox/itl/libs/itl/test/test_split_interval_set/test_split_interval_set.cpp        |     6 -                                       
   sandbox/itl/libs/itl/test/test_split_interval_set/test_split_interval_set_shared.cpp |    37 +++++-----------                        
   sandbox/itl/libs/itl/test/test_type_lists.hpp                                        |     4                                         
   30 files changed, 371 insertions(+), 262 deletions(-)
Modified: sandbox/itl/boost/itl/interval_base_set.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval_base_set.hpp	(original)
+++ sandbox/itl/boost/itl/interval_base_set.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -452,38 +452,6 @@
 }
 
 
-/*CL
-template<class SubType, 
-         class DomainT, ITL_COMPARE Compare, template<class,ITL_COMPARE>class Interval, ITL_ALLOC Alloc>
-    template
-    <
-        template<class DomT, ITL_COMPARE Comp,
-                 template<class DomT2,ITL_COMPARE>class Interv, ITL_ALLOC Allc>
-        class IntervalSet
-    >
-bool interval_base_set<SubType,DomainT,Compare,Interval,Alloc>
-    ::contained_in(const IntervalSet<DomainT,Compare,Interval,Alloc>& x2)const
-{
-    // The empty set is subset of every set
-    if(empty())
-        return true;
-    else if (x2.empty())
-        return false;
-    else if(upper() < x2.lower())
-        return false;
-    else if(x2.upper() < lower())
-        return false;
-    else
-    {
-        // x2 should be larger than *this; so every element in this should be in x2
-        const_FOR_IMPL(it) 
-            if(!x2.contains(*it)) 
-                return false;
-        return true;
-    }
-}
-*/
-
 template<class SubType,
          class DomainT, ITL_COMPARE Compare, template<class,ITL_COMPARE>class Interval, ITL_ALLOC Alloc>
 void interval_base_set<SubType,DomainT,Compare,Interval,Alloc>::add_intersection(interval_base_set& section, const segment_type& inter_val)const
Modified: sandbox/itl/boost/itl/interval_sets.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval_sets.hpp	(original)
+++ sandbox/itl/boost/itl/interval_sets.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -125,8 +125,6 @@
     return object.flip(operand); 
 }
 
-
-
 //-----------------------------------------------------------------------------
 // is_disjoint
 //-----------------------------------------------------------------------------
Modified: sandbox/itl/boost/itl/map.hpp
==============================================================================
--- sandbox/itl/boost/itl/map.hpp	(original)
+++ sandbox/itl/boost/itl/map.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -615,18 +615,28 @@
 template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
 inline itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>&
 operator += (      itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& object,
-    const typename itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::value_type& operand)
+    const typename itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::element_type& operand)
 { return object.add(operand); }
 
 template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
 itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>
 operator + ( const itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& object,
-    const typename itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::value_type& operand)
+    const typename itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::element_type& operand)
 {
     typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
-    return ObjectT(object) += operand; 
+    ObjectT result(object);
+    return result += operand; 
 }
 
+template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
+itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>
+operator + (const typename itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::element_type& operand,
+                     const itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& object               )
+{
+    typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
+    ObjectT result(object);
+    return result += operand; 
+}
 
 /** Add a map \c operand to map \c object. If an element of \c operand already exists
     in \c object, add up the contents. */
@@ -643,7 +653,8 @@
              const itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& operand)
 {
     typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
-    return ObjectT(object) += operand; 
+    ObjectT result(object);
+    return result += operand; 
 }
 
 //--------------------------------------------------------------------------
@@ -660,10 +671,21 @@
     const typename itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::value_type& operand)
 {
     typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
-    return ObjectT(object) |= operand; 
+    ObjectT result(object);
+    return result |= operand; 
 }
 
 
+template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
+itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>
+operator | (const typename itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::element_type& operand,
+                     const itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& object               )
+{
+    typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
+    ObjectT result(object);
+    return result |= operand; 
+}
+
 /** Add a map \c operand to map \c object. If an element of \c operand already exists
     in \c object, add up the contents. */
 template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
@@ -679,7 +701,8 @@
              const itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& operand)
 {
     typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
-    return ObjectT(object) |= operand; 
+    ObjectT result(object);
+    return result |= operand; 
 }
 
 //--------------------------------------------------------------------------
@@ -704,7 +727,8 @@
              const itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& operand)
 { 
     typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
-    return ObjectT(object) -= operand; 
+    ObjectT result(object);
+    return result -= operand; 
 }
 
 /** Subtract a set \c x2 from this map. Every element of \c this map that
@@ -722,7 +746,8 @@
     const typename itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::set_type& operand)
 { 
     typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
-    return ObjectT(object) -= operand; 
+    ObjectT result(object);
+    return result -= operand; 
 }
 
 
@@ -750,7 +775,8 @@
              const itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& operand)
 { 
     typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
-    return ObjectT(object) &= operand; 
+    ObjectT result(object);
+    return result &= operand; 
 }
 
 /** Intersect set \c x2 and \c *this.
@@ -768,10 +794,22 @@
     const typename itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::set_type& operand)
 { 
     typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
-    return ObjectT(object) &= operand; 
+    ObjectT result(object);
+    return result &= operand; 
+}
+
+template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
+itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>
+operator & (const typename itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::set_type& operand,
+                     const itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& object               )
+{
+    typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
+    ObjectT result(object);
+    return result &= operand; 
 }
 
 
+
 /** Symmetric subtract map \c x2 and \c *this.
     So \c *this becomes the symmetric difference of \c *this and \c x2 */
 template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
@@ -789,7 +827,8 @@
              const itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& operand)
 { 
     typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> ObjectT;
-    return ObjectT(object) ^= operand; 
+    ObjectT result(object);
+    return result ^= operand; 
 }
 
 
Modified: sandbox/itl/boost/itl/map_algo.hpp
==============================================================================
--- sandbox/itl/boost/itl/map_algo.hpp	(original)
+++ sandbox/itl/boost/itl/map_algo.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -137,9 +137,9 @@
                         typename MapType::iterator res_ = insertion.ITERATOR;
                         typename MapType::codomain_type common_value = res_->CONT_VALUE;
                         typename MapType::key_type key_value = res_->KEY_VALUE;
-                        MapType::inverse_codomain_intersect()(common_value, cur_x2_->CONT_VALUE);
+                        typename MapType::inverse_codomain_intersect()(common_value, cur_x2_->CONT_VALUE);
                         result.subtract(*res_);
-                        result.add(MapType::value_type(key_value, common_value));
+                        result.add(typename MapType::value_type(key_value, common_value));
                     }
                     else
                         result.subtract(*insertion.ITERATOR);
Modified: sandbox/itl/boost/itl/operators.hpp
==============================================================================
--- sandbox/itl/boost/itl/operators.hpp	(original)
+++ sandbox/itl/boost/itl/operators.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -27,17 +27,28 @@
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_intra_combinable<ObjectT, OperandT>, ObjectT>::type
 operator + (const ObjectT& object, const OperandT& operand)
-{ return ObjectT(object) += operand; }
+//NOTE: Prefered implementation using return value optimization does not compile with gcc
+//{ return ObjectT(object) += operand; }
+{
+    ObjectT result(object); 
+    return result += operand; 
+}
 
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_intra_combinable<ObjectT, OperandT>, ObjectT>::type
 operator + (const OperandT& operand, const ObjectT& object)
-{ return ObjectT(object) += operand; }
+{
+    ObjectT result(object); 
+    return result += operand; 
+}
 
 
 template<class ObjectT>
 ObjectT operator + (const typename ObjectT::overloadable_type& object, const ObjectT& operand)
-{ return ObjectT(object) += operand; }
+{
+    ObjectT tmp(object);
+    return tmp += operand; 
+}
 
 
 //------------------------------------------------------------------------------
@@ -53,17 +64,26 @@
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_intra_combinable<ObjectT, OperandT>, ObjectT>::type
 operator | (const ObjectT& object, const OperandT& operand)
-{ return ObjectT(object) += operand; }
+{
+    ObjectT result(object); 
+    return result += operand; 
+}
 
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_intra_combinable<ObjectT, OperandT>, ObjectT>::type
 operator | (const OperandT& operand, const ObjectT& object)
-{ return ObjectT(object) += operand; }
+{
+    ObjectT result(object); 
+    return result += operand; 
+}
 
 
 template<class ObjectT>
 ObjectT operator | (const typename ObjectT::overloadable_type& object, const ObjectT& operand)
-{ return ObjectT(object) += operand; }
+{
+    ObjectT result(object); 
+    return result += operand; 
+}
 
 
 //------------------------------------------------------------------------------
@@ -85,13 +105,10 @@
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_right_inter_combinable<ObjectT, OperandT>, ObjectT>::type
 operator - (const ObjectT& object, const OperandT& operand)
-{ return ObjectT(object) -= operand; }
-
-
-template<class ObjectT>
-ObjectT operator - (const typename ObjectT::overloadable_type& object, const ObjectT& operand)
-{ return ObjectT(object) -= operand; }
-
+{
+    ObjectT result(object); 
+    return result -= operand; 
+}
 
 //------------------------------------------------------------------------------
 // Intersection &=, &
@@ -109,41 +126,59 @@
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_inter_combinable<ObjectT, OperandT>, ObjectT>::type
 operator & (const ObjectT& object, const OperandT& operand)
-{ return ObjectT(object) &= operand; }
+{
+    ObjectT result(object); 
+    return result &= operand; 
+}
 
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_inter_combinable<ObjectT, OperandT>, ObjectT>::type
 operator & (const OperandT& operand, const ObjectT& object)
-{ return ObjectT(object) &= operand; }
+{
+    ObjectT result(object); 
+    return result &= operand; 
+}
 
 template<class ObjectT>
 ObjectT operator & (const typename ObjectT::overloadable_type& object, const ObjectT& operand)
-{ return ObjectT(object) &= operand; }
+{
+    ObjectT result(object); 
+    return result &= operand; 
+}
 
 //------------------------------------------------------------------------------
 // Symmetric difference ^=, ^
 //------------------------------------------------------------------------------
+
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_intra_derivative<ObjectT, OperandT>, 
                           ObjectT>::type&
 operator ^= (ObjectT& object, const OperandT& operand)
 { return object.flip(operand); }
 
-
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_intra_combinable<ObjectT, OperandT>, ObjectT>::type
 operator ^ (const ObjectT& object, const OperandT& operand)
-{ return ObjectT(object) ^= operand; }
+{
+    ObjectT result(object); 
+    return result ^= operand; 
+}
 
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_intra_combinable<ObjectT, OperandT>, ObjectT>::type
 operator ^ (const OperandT& operand, const ObjectT& object)
-{ return ObjectT(object) ^= operand; }
+{
+    ObjectT result(object); 
+    return result ^= operand; 
+}
 
 
 template<class ObjectT>
 ObjectT operator ^ (const typename ObjectT::overloadable_type& object, const ObjectT& operand)
-{ return ObjectT(object) ^= operand; }
+{
+    ObjectT result(object); 
+    return result ^= operand; 
+}
 
 
 }} // namespace itl boost
Modified: sandbox/itl/boost/itl/set.hpp
==============================================================================
--- sandbox/itl/boost/itl/set.hpp	(original)
+++ sandbox/itl/boost/itl/set.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -70,7 +70,7 @@
     //= Construct, copy, destruct
     //==========================================================================
     set(){}
-    set(const domain_compare& comp): 
+    explicit set(const domain_compare& comp): 
         std::set<DomainT, domain_compare, Alloc<DomainT> >(comp){}
 
     template <class InputIterator>
@@ -369,7 +369,19 @@
 itl::set<DomainT,Compare,Alloc> 
 operator +  (const itl::set<DomainT,Compare,Alloc>& object,
     const typename itl::set<DomainT,Compare,Alloc>::element_type& operand)
-{ return itl::set<DomainT,Compare,Alloc>(object) += operand; }
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result += operand; 
+}
+
+template <typename DomainT, ITL_COMPARE Compare, ITL_ALLOC Alloc>
+itl::set<DomainT,Compare,Alloc> 
+operator +  (const typename itl::set<DomainT,Compare,Alloc>::element_type& operand,
+                      const itl::set<DomainT,Compare,Alloc>& object)
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result += operand; 
+}
 
 /// Add a set \c operand to this set \object.
 template <typename DomainT, ITL_COMPARE Compare, ITL_ALLOC Alloc>
@@ -382,7 +394,10 @@
 itl::set<DomainT,Compare,Alloc> 
 operator +  (const itl::set<DomainT,Compare,Alloc>& object,
              const itl::set<DomainT,Compare,Alloc>& operand)
-{ return itl::set<DomainT,Compare,Alloc>(object) += operand; }
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result += operand; 
+}
 
 //--------------------------------------------------------------------------
 
@@ -396,7 +411,19 @@
 itl::set<DomainT,Compare,Alloc> 
 operator |  (const itl::set<DomainT,Compare,Alloc>& object,
     const typename itl::set<DomainT,Compare,Alloc>::element_type& operand)
-{ return itl::set<DomainT,Compare,Alloc>(object) |= operand; }
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result |= operand; 
+}
+
+template <typename DomainT, ITL_COMPARE Compare, ITL_ALLOC Alloc>
+itl::set<DomainT,Compare,Alloc> 
+operator |  (const typename itl::set<DomainT,Compare,Alloc>::element_type& operand,
+                      const itl::set<DomainT,Compare,Alloc>& object)
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result |= operand; 
+}
 
 /// Add a set \c operand to this set \object.
 template <typename DomainT, ITL_COMPARE Compare, ITL_ALLOC Alloc>
@@ -409,7 +436,10 @@
 itl::set<DomainT,Compare,Alloc> 
 operator |  (const itl::set<DomainT,Compare,Alloc>& object,
              const itl::set<DomainT,Compare,Alloc>& operand)
-{ return itl::set<DomainT,Compare,Alloc>(object) |= operand; }
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result |= operand; 
+}
 
 //--------------------------------------------------------------------------
 
@@ -423,8 +453,10 @@
 itl::set<DomainT,Compare,Alloc> 
 operator -  (const itl::set<DomainT,Compare,Alloc>& object,
     const typename itl::set<DomainT,Compare,Alloc>::element_type& operand)
-{ return itl::set<DomainT,Compare,Alloc>(object) -= operand; }
-
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result -= operand; 
+}
 
 /// Subtract a set \c x2 from this set.
 template <typename DomainT, ITL_COMPARE Compare, ITL_ALLOC Alloc>
@@ -437,7 +469,10 @@
 itl::set<DomainT,Compare,Alloc> 
 operator -  (const itl::set<DomainT,Compare,Alloc>& object,
              const itl::set<DomainT,Compare,Alloc>& operand)
-{ return itl::set<DomainT,Compare,Alloc>(object) -= operand; }
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result -= operand; 
+}
 
 //--------------------------------------------------------------------------
 // itl::set::intersection operators &=, &
@@ -457,7 +492,19 @@
 itl::set<DomainT,Compare,Alloc> 
 operator &  (const itl::set<DomainT,Compare,Alloc>& object,
     const typename itl::set<DomainT,Compare,Alloc>::element_type& operand)
-{ return itl::set<DomainT,Compare,Alloc>(object) &= operand; }
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result &= operand; 
+}
+
+template <typename DomainT, ITL_COMPARE Compare, ITL_ALLOC Alloc>
+itl::set<DomainT,Compare,Alloc> 
+operator &  (const typename itl::set<DomainT,Compare,Alloc>::element_type& operand,
+                      const itl::set<DomainT,Compare,Alloc>& object)
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result &= operand; 
+}
 
 
 
@@ -478,7 +525,10 @@
 itl::set<DomainT,Compare,Alloc> 
 operator &  (const itl::set<DomainT,Compare,Alloc>& object,
              const itl::set<DomainT,Compare,Alloc>& operand)
-{ return itl::set<DomainT,Compare,Alloc>(object) &= operand; }
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result &= operand; 
+}
 
 //--------------------------------------------------------------------------
 // itl::set::symmetric_difference operators ^=, ^
@@ -496,9 +546,18 @@
 operator ^  (const itl::set<DomainT,Compare,Alloc>& object,
     const typename itl::set<DomainT,Compare,Alloc>::element_type& operand)
 { 
-    return itl::set<DomainT,Compare,Alloc>(object) ^= operand; 
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result ^= operand; 
 }
 
+template <typename DomainT, ITL_COMPARE Compare, ITL_ALLOC Alloc>
+itl::set<DomainT,Compare,Alloc> 
+operator ^  (const typename itl::set<DomainT,Compare,Alloc>::element_type& operand,
+                      const itl::set<DomainT,Compare,Alloc>& object)
+{
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result ^= operand; 
+}
 
 
 /** Intersect set \c object with \c operand. 
@@ -516,7 +575,8 @@
 operator ^  (const itl::set<DomainT,Compare,Alloc>& object,
              const itl::set<DomainT,Compare,Alloc>& operand)
 { 
-    return itl::set<DomainT,Compare,Alloc>(object) ^= operand; 
+    itl::set<DomainT,Compare,Alloc> result(object);
+    return result ^= operand; 
 }
 
 
Modified: sandbox/itl/boost/itl/type_traits/is_combinable.hpp
==============================================================================
--- sandbox/itl/boost/itl/type_traits/is_combinable.hpp	(original)
+++ sandbox/itl/boost/itl/type_traits/is_combinable.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -26,7 +26,6 @@
         is_same<Type, typename Type::overloadable_type>::value;
 };
 
-
 template<class Type>
 struct is_interval_map
 {
@@ -43,7 +42,6 @@
         is_interval_container<Type>::value && !is_interval_map<Type>::value; 
 };
 
-
 //------------------------------------------------------------------------------
 // is_interval_set_derivative
 //------------------------------------------------------------------------------
@@ -53,17 +51,22 @@
 template<class Type>
 struct is_interval_set_derivative<Type, typename Type::domain_type>
 { 
+    typedef is_interval_set_derivative<Type, typename Type::domain_type> type;
     static const bool value = is_interval_container<Type>::value; 
 };
 
 template<class Type>
 struct is_interval_set_derivative<Type, typename Type::interval_type>
-{ enum{ value = is_interval_container<Type>::value }; };
+{ 
+    typedef is_interval_set_derivative<Type, typename Type::interval_type> type;
+    static const bool value = is_interval_container<Type>::value; 
+};
 
 template<class Type, class AssociateT>
 struct is_interval_set_derivative
 {
-    enum{ value = false };
+    typedef is_interval_set_derivative<Type, AssociateT> type;
+    static const bool value = false;
 };
 
 //------------------------------------------------------------------------------
@@ -107,11 +110,14 @@
 struct is_intra_derivative
 {
     typedef is_intra_derivative<Type, AssociateT> type;
-    static const bool value = 
-            (   is_interval_set<Type>::value 
-            &&  is_interval_set_derivative<Type, AssociateT>::value)
-        ||  (   is_interval_map<Type>::value
-            &&  is_interval_map_derivative<Type, AssociateT>::value);
+    static const bool value =
+        mpl::or_
+        <     
+            mpl::and_<is_interval_set<Type>, 
+                      is_interval_set_derivative<Type, AssociateT> >
+          , mpl::and_<is_interval_map<Type>, 
+                      is_interval_map_derivative<Type, AssociateT> >
+        >::value;
 };
 
 template<class Type, class AssociateT>
Modified: sandbox/itl/libs/itl/build/win32/vc9_all.sln
==============================================================================
--- sandbox/itl/libs/itl/build/win32/vc9_all.sln	(original)
+++ sandbox/itl/libs/itl/build/win32/vc9_all.sln	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -37,8 +37,6 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_interval_map", "..\..\test\test_interval_map\vc9_test_interval_map.vcproj", "{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9D}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_split_interval_map", "..\..\test\test_split_interval_map\vc9_test_split_interval_map.vcproj", "{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9E}"
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_interval_map_mixed", "..\..\test\test_interval_map_mixed\vc9_test_interval_map_mixed.vcproj", "{EE61B7EF-EC45-4165-8B49-FD5B8D3A9F9F}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_month_and_week_grid", "..\..\example\month_and_week_grid\vc9_month_and_week_grid.vcproj", "{360BCFA9-9EB6-4D22-8469-CDC290478F78}"
@@ -47,8 +45,6 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_labat_single", "..\..\..\validate\example\labat_single\vc9_labat_single.vcproj", "{BF42574F-66E2-42DD-90D9-3A8FCE6F471C}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_quantifier_map", "..\..\test\test_quantifier_map\vc9_test_quantifier_map.vcproj", "{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9F}"
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_casual", "..\..\test\test_casual\vc9_test_casual.vcproj", "{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_labat_val_relations", "..\..\..\validate\example\labat_val_relations\vc9_labat_val_relations.vcproj", "{BF42574F-66E2-42DD-90D9-3A8FCE6F471F}"
@@ -73,6 +69,18 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_itl_map", "..\..\test\test_itl_map\vc9_test_itl_map.vcproj", "{DD9C9854-3882-42B9-BFA1-C6CEBFCE352B}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_interval_set_infix", "..\..\test\test_interval_set_infix\vc9_test_interval_set_infix.vcproj", "{A731623C-94BC-4666-A419-35D1623E950E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_separate_interval_set_infix", "..\..\test\test_separate_interval_set_infix\vc9_test_separate_interval_set_infix.vcproj", "{A731623C-94BC-4666-A419-35D2623E950E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_split_interval_set_infix", "..\..\test\test_split_interval_set_infix\vc9_test_split_interval_set_infix.vcproj", "{A731623C-94BC-4666-A419-35D3623E950E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_partial_interval_quantifier", "..\..\test\test_partial_interval_quantifier\vc9_test_partial_interval_quantifier.vcproj", "{EE61B7EF-EC45-4165-8B4A-FD5B7D2A9F9F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_total_interval_quantifier", "..\..\test\test_total_interval_quantifier\vc9_test_total_interval_quantifier.vcproj", "{EE61B7EF-EC45-4165-8B4B-FD5B7D2A9F9F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_split_interval_map", "..\..\test\test_split_interval_map\vc9_test_split_interval_map.vcproj", "{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9E}"
+EndProject
 Global
         GlobalSection(SolutionConfigurationPlatforms) = preSolution
                 Debug|Win32 = Debug|Win32
@@ -151,10 +159,6 @@
                 {EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9D}.Debug|Win32.Build.0 = Debug|Win32
                 {EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9D}.Release|Win32.ActiveCfg = Release|Win32
                 {EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9D}.Release|Win32.Build.0 = Release|Win32
-		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9E}.Debug|Win32.Build.0 = Debug|Win32
-		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9E}.Release|Win32.ActiveCfg = Release|Win32
-		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9E}.Release|Win32.Build.0 = Release|Win32
                 {EE61B7EF-EC45-4165-8B49-FD5B8D3A9F9F}.Debug|Win32.ActiveCfg = Debug|Win32
                 {EE61B7EF-EC45-4165-8B49-FD5B8D3A9F9F}.Debug|Win32.Build.0 = Debug|Win32
                 {EE61B7EF-EC45-4165-8B49-FD5B8D3A9F9F}.Release|Win32.ActiveCfg = Release|Win32
@@ -171,10 +175,6 @@
                 {BF42574F-66E2-42DD-90D9-3A8FCE6F471C}.Debug|Win32.Build.0 = Debug|Win32
                 {BF42574F-66E2-42DD-90D9-3A8FCE6F471C}.Release|Win32.ActiveCfg = Release|Win32
                 {BF42574F-66E2-42DD-90D9-3A8FCE6F471C}.Release|Win32.Build.0 = Release|Win32
-		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9F}.Debug|Win32.ActiveCfg = Debug|Win32
-		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9F}.Debug|Win32.Build.0 = Debug|Win32
-		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9F}.Release|Win32.ActiveCfg = Release|Win32
-		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9F}.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
@@ -223,6 +223,30 @@
                 {DD9C9854-3882-42B9-BFA1-C6CEBFCE352B}.Debug|Win32.Build.0 = Debug|Win32
                 {DD9C9854-3882-42B9-BFA1-C6CEBFCE352B}.Release|Win32.ActiveCfg = Release|Win32
                 {DD9C9854-3882-42B9-BFA1-C6CEBFCE352B}.Release|Win32.Build.0 = Release|Win32
+		{A731623C-94BC-4666-A419-35D1623E950E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A731623C-94BC-4666-A419-35D1623E950E}.Debug|Win32.Build.0 = Debug|Win32
+		{A731623C-94BC-4666-A419-35D1623E950E}.Release|Win32.ActiveCfg = Release|Win32
+		{A731623C-94BC-4666-A419-35D1623E950E}.Release|Win32.Build.0 = Release|Win32
+		{A731623C-94BC-4666-A419-35D2623E950E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A731623C-94BC-4666-A419-35D2623E950E}.Debug|Win32.Build.0 = Debug|Win32
+		{A731623C-94BC-4666-A419-35D2623E950E}.Release|Win32.ActiveCfg = Release|Win32
+		{A731623C-94BC-4666-A419-35D2623E950E}.Release|Win32.Build.0 = Release|Win32
+		{A731623C-94BC-4666-A419-35D3623E950E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A731623C-94BC-4666-A419-35D3623E950E}.Debug|Win32.Build.0 = Debug|Win32
+		{A731623C-94BC-4666-A419-35D3623E950E}.Release|Win32.ActiveCfg = Release|Win32
+		{A731623C-94BC-4666-A419-35D3623E950E}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D2A9F9F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D2A9F9F}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D2A9F9F}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B4A-FD5B7D2A9F9F}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D2A9F9F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D2A9F9F}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D2A9F9F}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B4B-FD5B7D2A9F9F}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9E}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9E}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B7D2A9F9E}.Release|Win32.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(SolutionProperties) = preSolution
                 HideSolutionNode = FALSE
Modified: sandbox/itl/libs/itl/doc/Jamfile.v2
==============================================================================
--- sandbox/itl/libs/itl/doc/Jamfile.v2	(original)
+++ sandbox/itl/libs/itl/doc/Jamfile.v2	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -5,7 +5,7 @@
 #
 # Distributed under the Boost Software License, Version 1.0.
 # (See accompanying file LICENSE_1_0.txt or copy at
-# http://www.boost.org/LICENSE_1_0.txt)
+# http:\\www.boost.org\LICENSE_1_0.txt)
 
 import doxygen ;
 import quickbook ;
@@ -16,7 +16,7 @@
 
 doxygen itldoc
     :
-        [ glob ../../../boost/itl/*.hpp ]
+        [ glob ..\..\..\boost\itl\*.hpp ]
     :
         <doxygen:param>EXTRACT_ALL=YES
         <doxygen:param>HIDE_UNDOC_MEMBERS=NO
@@ -44,8 +44,8 @@
     :
         itl
     :
-        <xsl:param>boost.root=../../../..
-        <xsl:param>boost.libraries=../../../libraries.htm
+        <xsl:param>boost.root=..\..\..\..
+        <xsl:param>boost.libraries=..\..\..\libraries.htm
         <xsl:param>toc.max.depth=2
         <xsl:param>toc.section.depth=2
         <xsl:param>chunk.section.depth=1
Modified: sandbox/itl/libs/itl/test/Jamfile.v2
==============================================================================
--- sandbox/itl/libs/itl/test/Jamfile.v2	(original)
+++ sandbox/itl/libs/itl/test/Jamfile.v2	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -21,8 +21,14 @@
       
       # sets
       [ run test_interval_set/test_interval_set.cpp ]
+      [ run test_interval_set_infix/test_interval_set_infix.cpp ]
+      
       [ run test_separate_interval_set/test_separate_interval_set.cpp ]
-      [ run test_split_interval_set/test_split_interval_set.cpp ]      
+      [ run test_separate_interval_set_infix/test_separate_interval_set_infix.cpp ]
+      
+      [ run test_split_interval_set/test_split_interval_set.cpp ]
+      [ run test_split_interval_set_infix/test_split_interval_set_infix.cpp ]
+            
       [ run test_interval_set_mixed/test_interval_set_mixed.cpp ]
       
       # maps
@@ -37,7 +43,6 @@
       [ run test_set_itl_set/test_set_itl_set.cpp ]
       
       # Concept Map 
-      [ run test_quantifier_itl_map/test_quantifier_itl_map.cpp ]
-      # too fat /bigobj [ run test_quantifier_map/test_quantifier_map.cpp ]
-            
+      [ run test_partial_interval_quantifier/test_partial_interval_quantifier.cpp ]
+      [ run test_total_interval_quantifier/test_total_interval_quantifier.cpp ]            
     ;
Modified: sandbox/itl/libs/itl/test/test_casual/test_casual.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_casual/test_casual.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_casual/test_casual.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -63,11 +63,13 @@
     typedef itl::map<int,int>  ItlMapT;
     typedef interval_map<int,int,partial_enricher>  IntervalMapT;
     typedef split_interval_map<int,int>  SplitIntervalMapT;
+    typedef interval_set<int>  IntervalSetT;
     
-    IntervalMapT left, right;
+    //IntervalMapT left, right, result;
+    //left .add(IIv(0,0,1)).add(IIv(1,1,2));
+    //right.add(IIv(0,0,-1));
 
-    left .add(IIv(0,0,1)).add(IIv(1,1,2));
-    right.add(IIv(0,0,-1));
+    IntervalSetT left, right, result; 
 
-    left ^= right;
+    result = left + right;
 }
Modified: sandbox/itl/libs/itl/test/test_interval_map/test_interval_map.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_interval_map/test_interval_map.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_interval_map/test_interval_map.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -14,7 +14,6 @@
 // interval instance types
 #include "../test_type_lists.hpp"
 #include "../test_value_maker.hpp"
-#include "../test_laws.hpp"
 
 #include <boost/itl/separate_interval_set.hpp>
 #include <boost/itl/split_interval_set.hpp>
@@ -31,9 +30,7 @@
 // interval_sets: interval_set, separate_interval_set and split_interval_set.
 #include "../test_interval_map_shared.hpp"
 
-// Due to limited expressiveness of the testing framework, the testcode in files
-// test_interval_map{,_split}_shared.cpp is generated through code
-// replication. 
-#include "test_interval_map_shared.cpp"
+#define INTERVAL_MAP interval_map
+#include "../test_interval_map_cases.hpp"
 
 
Deleted: sandbox/itl/libs/itl/test/test_interval_map/test_interval_map_shared.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_interval_map/test_interval_map_shared.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
+++ (empty file)
@@ -1,84 +0,0 @@
-/*-----------------------------------------------------------------------------+    
-Copyright (c) 2008-2009: Joachim Faulhaber
-+------------------------------------------------------------------------------+
-   Distributed under the Boost Software License, Version 1.0.
-      (See accompanying file LICENCE.txt or copy at
-           http://www.boost.org/LICENSE_1_0.txt)
-+-----------------------------------------------------------------------------*/
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_fundamentals_4_ordered_types, T, ordered_types)
-{         interval_map_fundamentals_4_ordered_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_ctor_4_bicremental_types, T, bicremental_types)
-{         interval_map_ctor_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_add_sub_4_bicremental_types, T, bicremental_types)
-{         interval_map_add_sub_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_distinct_4_bicremental_types, T, bicremental_types)
-{         interval_map_distinct_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_distinct_4_bicremental_continuous_types, T, bicremental_continuous_types)
-{         interval_map_distinct_4_bicremental_continuous_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_isolate_4_bicremental_continuous_types, T, bicremental_continuous_types)
-{         interval_map_isolate_4_bicremental_continuous_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_contains_4_bicremental_types, T, bicremental_types)
-{         interval_map_contains_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_operators_4_bicremental_types, T, bicremental_types)
-{         interval_map_operators_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_base_intersect_4_bicremental_types, T, bicremental_types)
-{         interval_map_base_intersect_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_base_erase_4_bicremental_types, T, bicremental_types)
-{         interval_map_base_erase_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_base_is_disjoint_4_bicremental_types, T, bicremental_types)
-{         interval_map_base_is_disjoint_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_flip_4_bicremental_types, T, bicremental_types)
-{         interval_map_flip_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_infix_plus_overload_4_bicremental_types, T, bicremental_types)
-{         interval_map_infix_plus_overload_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_infix_pipe_overload_4_bicremental_types, T, bicremental_types)
-{         interval_map_infix_pipe_overload_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_infix_minus_overload_4_bicremental_types, T, bicremental_types)
-{         interval_map_infix_minus_overload_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_infix_et_overload_4_bicremental_types, T, bicremental_types)
-{         interval_map_infix_et_overload_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_infix_caret_overload_4_bicremental_types, T, bicremental_types)
-{         interval_map_infix_caret_overload_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_find_4_bicremental_types, T, bicremental_types)
-{         interval_map_find_4_bicremental_types<interval_map, T, int>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_map_set_4_bicremental_types, T, bicremental_types)
-{         interval_map_set_4_bicremental_types<interval_map, T, int>();}
-
Added: sandbox/itl/libs/itl/test/test_interval_map_cases.hpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_interval_map_cases.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,84 @@
+/*-----------------------------------------------------------------------------+    
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#pragma once
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_fundamentals_4_ordered_types, T, ordered_types)
+{         interval_map_fundamentals_4_ordered_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_ctor_4_bicremental_types, T, bicremental_types)
+{         interval_map_ctor_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_add_sub_4_bicremental_types, T, bicremental_types)
+{         interval_map_add_sub_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_distinct_4_bicremental_types, T, bicremental_types)
+{         interval_map_distinct_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_distinct_4_bicremental_continuous_types, T, bicremental_continuous_types)
+{         interval_map_distinct_4_bicremental_continuous_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_isolate_4_bicremental_continuous_types, T, bicremental_continuous_types)
+{         interval_map_isolate_4_bicremental_continuous_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_contains_4_bicremental_types, T, bicremental_types)
+{         interval_map_contains_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_operators_4_bicremental_types, T, bicremental_types)
+{         interval_map_operators_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_base_intersect_4_bicremental_types, T, bicremental_types)
+{         interval_map_base_intersect_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_base_erase_4_bicremental_types, T, bicremental_types)
+{         interval_map_base_erase_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_base_is_disjoint_4_bicremental_types, T, bicremental_types)
+{         interval_map_base_is_disjoint_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_flip_4_bicremental_types, T, bicremental_types)
+{         interval_map_flip_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_infix_plus_overload_4_bicremental_types, T, bicremental_types)
+{         interval_map_infix_plus_overload_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_infix_pipe_overload_4_bicremental_types, T, bicremental_types)
+{         interval_map_infix_pipe_overload_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_infix_minus_overload_4_bicremental_types, T, bicremental_types)
+{         interval_map_infix_minus_overload_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_infix_et_overload_4_bicremental_types, T, bicremental_types)
+{         interval_map_infix_et_overload_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_infix_caret_overload_4_bicremental_types, T, bicremental_types)
+{         interval_map_infix_caret_overload_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_find_4_bicremental_types, T, bicremental_types)
+{         interval_map_find_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_map_set_4_bicremental_types, T, bicremental_types)
+{         interval_map_set_4_bicremental_types<INTERVAL_MAP, T, int>();}
+
Modified: sandbox/itl/libs/itl/test/test_interval_map_shared.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_interval_map_shared.hpp	(original)
+++ sandbox/itl/libs/itl/test/test_interval_map_shared.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -804,14 +804,16 @@
     typedef IntervalMap<T,U> IntervalMapT;
     typedef IntervalMapT IMap;
 
-    IntervalMapT set_a, set_b, lhs, rhs;
+    IntervalMapT set_a;
     //[0     2)
     //    1
     //    [1     3)
     //        1
     //[0 1)   [2 3) : {[0 2)->1} ^= ([2 3)->1)
     //  1       1
-    BOOST_CHECK_EQUAL(IMap(IDv(0,2,1)) ^= (IDv(1,3,1)), IMap(IDv(0,1,1)) + IDv(2,3,1));
+    //BOOST_CHECK_EQUAL(IMap(IDv(0,2,1)) ^= (IDv(1,3,1)), IMap(IDv(0,1,1)) + IDv(2,3,1));
+    set_a = IMap(IDv(0,2,1));
+    BOOST_CHECK_EQUAL(set_a ^= IDv(1,3,1), IMap(IDv(0,1,1)) + IDv(2,3,1));
 }
 
 template <template<class T, class U,
@@ -1030,7 +1032,7 @@
     IntervalMapT map_a;
     map_a.add(CDv(1,3,1)).add(IDv(8,9,1)).add(IIv(6,11,3));
 
-    IntervalMapT::const_iterator found = map_a.find(MK_v(6));
+    typename IntervalMapT::const_iterator found = map_a.find(MK_v(6));
 
     BOOST_CHECK_EQUAL( found->CONT_VALUE, MK_u(3) );
     BOOST_CHECK_EQUAL( map_a(MK_v(6)), MK_u(3) );
Added: sandbox/itl/libs/itl/test/test_interval_quantifier_shared.hpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_interval_quantifier_shared.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,251 @@
+/*-----------------------------------------------------------------------------+    
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#ifndef __test_itl_quantifier_map_shared_h_JOFA_090119__
+#define __test_itl_quantifier_map_shared_h_JOFA_090119__
+
+
+//------------------------------------------------------------------------------
+// Monoid EAN
+//------------------------------------------------------------------------------
+template <class T, class U, class Trt,
+          template<class T, class U,
+                   class Traits = Trt,
+                   ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, U),
+                   ITL_COMBINE Combine = ITL_COMBINE_INSTANCE(itl::inplace_plus, U),
+                   ITL_SECTION Section = ITL_SECTION_INSTANCE(itl::inplace_et, U),
+                   template<class,ITL_COMPARE>class Interval = interval,
+                   ITL_ALLOC   Alloc   = std::allocator
+                  >class IntervalMap
+          >
+void quantifier_map_check_monoid_plus_4_bicremental_types()
+{
+    typedef IntervalMap<T,U,Trt> IntervalMapT;
+
+    IntervalMapT map_a, map_b, map_c;
+    map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
+    map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
+    map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
+
+    typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
+    mapping_pair<T,U> map_pair = K_v(5,1);
+
+    CHECK_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
+    CHECK_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
+}
+
+
+template <class T, class U, class Trt,
+          template<class T, class U,
+                   class Traits = Trt,
+                   ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, U),
+                   ITL_COMBINE Combine = ITL_COMBINE_INSTANCE(itl::inplace_plus, U),
+                   ITL_SECTION Section = ITL_SECTION_INSTANCE(itl::inplace_et, U),
+                   template<class,ITL_COMPARE>class Interval = interval,
+                   ITL_ALLOC   Alloc   = std::allocator
+                  >class IntervalMap
+          >
+void quantifier_map_check_monoid_et_4_bicremental_types()
+{
+    typedef IntervalMap<T,U,Trt> IntervalMapT;
+
+    IntervalMapT map_a, map_b, map_c;
+    map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
+    map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
+    map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
+
+    typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
+    mapping_pair<T,U> map_pair = K_v(5,1);
+
+    CHECK_MONOID_INSTANCE_WRT(et)   (map_a, map_b, map_c, val_pair, map_pair);
+    CHECK_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, val_pair, map_pair);
+}
+
+//------------------------------------------------------------------------------
+// Abelian monoid EANC
+//------------------------------------------------------------------------------
+
+template <class T, class U, class Trt,
+          template<class T, class U,
+                   class Traits = Trt,
+                   ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, U),
+                   ITL_COMBINE Combine = ITL_COMBINE_INSTANCE(itl::inplace_plus, U),
+                   ITL_SECTION Section = ITL_SECTION_INSTANCE(itl::inplace_et, U),
+                   template<class,ITL_COMPARE>class Interval = interval,
+                   ITL_ALLOC   Alloc   = std::allocator
+                  >class IntervalMap
+          >
+void quantifier_map_check_abelian_monoid_plus_4_bicremental_types()
+{
+    typedef IntervalMap<T,U,Trt> IntervalMapT;
+
+    IntervalMapT map_a, map_b, map_c;
+    map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
+    map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
+    map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
+
+    typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
+    mapping_pair<T,U> map_pair = K_v(5,1);
+
+    CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
+    CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
+}
+
+
+template <class T, class U, class Trt,
+          template<class T, class U,
+                   class Traits = Trt,
+                   ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, U),
+                   ITL_COMBINE Combine = ITL_COMBINE_INSTANCE(itl::inplace_plus, U),
+                   ITL_SECTION Section = ITL_SECTION_INSTANCE(itl::inplace_et, U),
+                   template<class,ITL_COMPARE>class Interval = interval,
+                   ITL_ALLOC   Alloc   = std::allocator
+                  >class IntervalMap
+          >
+void quantifier_map_check_abelian_monoid_et_4_bicremental_types()
+{
+    typedef IntervalMap<T,U,Trt> IntervalMapT;
+
+    IntervalMapT map_a, map_b, map_c;
+    map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
+    map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
+    map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
+
+    typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
+    mapping_pair<T,U> map_pair = K_v(5,1);
+
+    CHECK_ABELIAN_MONOID_INSTANCE_WRT(et)   (map_a, map_b, map_c, val_pair, map_pair);
+    CHECK_ABELIAN_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, val_pair, map_pair);
+}
+
+
+//------------------------------------------------------------------------------
+// Abelian partial invertive monoid 
+//------------------------------------------------------------------------------
+template <class T, class U, class Trt,
+          template<class T, class U,
+                   class Traits = Trt,
+                   ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, U),
+                   ITL_COMBINE Combine = ITL_COMBINE_INSTANCE(itl::inplace_plus, U),
+                   ITL_SECTION Section = ITL_SECTION_INSTANCE(itl::inplace_et, U),
+                   template<class,ITL_COMPARE>class Interval = interval,
+                   ITL_ALLOC   Alloc   = std::allocator
+                  >class IntervalMap
+          >
+void quantifier_map_check_partial_invertive_monoid_plus_4_bicremental_types()
+{
+    typedef IntervalMap<T,U,Trt> IntervalMapT;
+
+    IntervalMapT map_a, map_b, map_c;
+    map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
+    map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
+    map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
+
+    typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
+    mapping_pair<T,U> map_pair = K_v(5,1);
+
+    CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
+    CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
+}
+
+//------------------------------------------------------------------------------
+// Abelian partial invertive monoid with protonic equality for inversion
+//------------------------------------------------------------------------------
+template <class T, class U, class Trt,
+          template<class T, class U,
+                   class Traits = Trt,
+                   ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, U),
+                   ITL_COMBINE Combine = ITL_COMBINE_INSTANCE(itl::inplace_plus, U),
+                   ITL_SECTION Section = ITL_SECTION_INSTANCE(itl::inplace_et, U),
+                   template<class,ITL_COMPARE>class Interval = interval,
+                   ITL_ALLOC   Alloc   = std::allocator
+                  >class IntervalMap
+          >
+void quantifier_map_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types()
+{
+    typedef IntervalMap<T,U,Trt> IntervalMapT;
+
+    IntervalMapT map_a, map_b, map_c;
+    map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
+    map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
+    map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
+
+    typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
+    mapping_pair<T,U> map_pair = K_v(5,1);
+
+    CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus)(map_a, map_b, map_c, val_pair, map_pair);
+    CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe)(map_a, map_b, map_c, val_pair, map_pair);
+
+    CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(plus)(is_protonic_equal, map_a, map_b, map_c, val_pair, map_pair);
+    CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(pipe)(is_protonic_equal, map_a, map_b, map_c, val_pair, map_pair);
+}
+
+
+//------------------------------------------------------------------------------
+// Abelian group EANIC
+//------------------------------------------------------------------------------
+template <class T, class U, class Trt,
+          template<class T, class U,
+                   class Traits = Trt,
+                   ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, U),
+                   ITL_COMBINE Combine = ITL_COMBINE_INSTANCE(itl::inplace_plus, U),
+                   ITL_SECTION Section = ITL_SECTION_INSTANCE(itl::inplace_et, U),
+                   template<class,ITL_COMPARE>class Interval = interval,
+                   ITL_ALLOC   Alloc   = std::allocator
+                  >class IntervalMap
+          >
+void quantifier_map_check_abelian_group_plus_4_bicremental_types()
+{
+    typedef IntervalMap<T,U,Trt> IntervalMapT;
+
+    IntervalMapT map_a, map_b, map_c;
+    map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
+    map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
+    map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
+
+    typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
+    mapping_pair<T,U> map_pair = K_v(5,1);
+
+    CHECK_ABELIAN_GROUP_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
+    CHECK_ABELIAN_GROUP_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
+}
+
+//------------------------------------------------------------------------------
+// (0 - x) + x =p= 0  |  
+//------------------------------------------------------------------------------
+template <class T, class U, class Trt,
+          template<class T, class U,
+                   class Traits = Trt,
+                   ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, U),
+                   ITL_COMBINE Combine = ITL_COMBINE_INSTANCE(itl::inplace_plus, U),
+                   ITL_SECTION Section = ITL_SECTION_INSTANCE(itl::inplace_et, U),
+                   template<class,ITL_COMPARE>class Interval = interval,
+                   ITL_ALLOC   Alloc   = std::allocator
+                  >class IntervalMap
+          >
+void quantifier_map_check_abelian_group_plus_prot_inv_4_bicremental_types()
+{
+    typedef IntervalMap<T,U,Trt> IntervalMapT;
+
+    IntervalMapT map_a, map_b, map_c;
+    map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
+    map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
+    map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
+
+    typename IntervalMapT::interval_mapping_type val_pair = IDv(6,9,1);
+    mapping_pair<T,U> map_pair = K_v(5,1);
+
+    CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
+    CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
+
+    CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(plus) (is_protonic_equal, map_a, map_b, map_c, val_pair, map_pair);
+    CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(pipe) (is_protonic_equal, map_a, map_b, map_c, val_pair, map_pair);
+}
+
+
+#endif // __test_itl_quantifier_map_shared_h_JOFA_090119__
+
Modified: sandbox/itl/libs/itl/test/test_interval_set/test_interval_set.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_interval_set/test_interval_set.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_interval_set/test_interval_set.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -27,9 +27,7 @@
 // interval_sets: interval_set, separate_interval_set and split_interval_set.
 #include "../test_interval_set_shared.hpp"
 
-// Due to limited expressiveness of the testing framework, the testcode in files
-// test_interval_set{,_separate,split}_shared.cpp is generated through code
-// replication. 
-#include "test_interval_set_shared.cpp"
+#define INTERVAL_SET interval_set
+#include "../test_interval_set_cases.hpp"
 
 
Deleted: sandbox/itl/libs/itl/test/test_interval_set/test_interval_set_shared.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_interval_set/test_interval_set_shared.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
+++ (empty file)
@@ -1,76 +0,0 @@
-/*-----------------------------------------------------------------------------+    
-Copyright (c) 2008-2009: Joachim Faulhaber
-+------------------------------------------------------------------------------+
-   Distributed under the Boost Software License, Version 1.0.
-      (See accompanying file LICENCE.txt or copy at
-           http://www.boost.org/LICENSE_1_0.txt)
-+-----------------------------------------------------------------------------*/
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_fundamentals_4_ordered_types, T, ordered_types)
-{         interval_set_fundamentals_4_ordered_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_ctor_4_bicremental_types, T, bicremental_types)
-{         interval_set_ctor_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_add_sub_4_bicremental_types, T, bicremental_types)
-{         interval_set_add_sub_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_distinct_4_bicremental_types, T, bicremental_types)
-{         interval_set_distinct_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_distinct_4_bicremental_continuous_types, T, bicremental_continuous_types)
-{         interval_set_distinct_4_bicremental_continuous_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_isolate_4_bicremental_continuous_types, T, bicremental_continuous_types)
-{         interval_set_isolate_4_bicremental_continuous_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_element_compare_4_bicremental_types, T, bicremental_types)
-{         interval_set_element_compare_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_contains_4_bicremental_types, T, bicremental_types)
-{         interval_set_contains_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_operators_4_bicremental_types, T, bicremental_types)
-{         interval_set_operators_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_base_intersect_4_bicremental_types, T, bicremental_types)
-{         interval_set_base_intersect_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_flip_4_bicremental_types, T, bicremental_types)
-{         interval_set_flip_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_plus_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_plus_overload_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_pipe_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_pipe_overload_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_minus_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_minus_overload_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_et_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_et_overload_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_caret_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_caret_overload_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_find_4_bicremental_types, T, bicremental_types)
-{         interval_set_find_4_bicremental_types<interval_set, T>();}
-
Added: sandbox/itl/libs/itl/test/test_interval_set_cases.hpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_interval_set_cases.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,59 @@
+/*-----------------------------------------------------------------------------+    
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#pragma once
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_fundamentals_4_ordered_types, T, ordered_types)
+{         interval_set_fundamentals_4_ordered_types<interval_set, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_ctor_4_bicremental_types, T, bicremental_types)
+{         interval_set_ctor_4_bicremental_types<interval_set, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_add_sub_4_bicremental_types, T, bicremental_types)
+{         interval_set_add_sub_4_bicremental_types<interval_set, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_distinct_4_bicremental_types, T, bicremental_types)
+{         interval_set_distinct_4_bicremental_types<interval_set, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_distinct_4_bicremental_continuous_types, T, bicremental_continuous_types)
+{         interval_set_distinct_4_bicremental_continuous_types<interval_set, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_isolate_4_bicremental_continuous_types, T, bicremental_continuous_types)
+{         interval_set_isolate_4_bicremental_continuous_types<interval_set, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_element_compare_4_bicremental_types, T, bicremental_types)
+{         interval_set_element_compare_4_bicremental_types<interval_set, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_contains_4_bicremental_types, T, bicremental_types)
+{         interval_set_contains_4_bicremental_types<interval_set, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_operators_4_bicremental_types, T, bicremental_types)
+{         interval_set_operators_4_bicremental_types<interval_set, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_base_intersect_4_bicremental_types, T, bicremental_types)
+{         interval_set_base_intersect_4_bicremental_types<interval_set, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_flip_4_bicremental_types, T, bicremental_types)
+{         interval_set_flip_4_bicremental_types<interval_set, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_find_4_bicremental_types, T, bicremental_types)
+{         interval_set_find_4_bicremental_types<interval_set, T>();}
+
+
+
+
Added: sandbox/itl/libs/itl/test/test_interval_set_infix/test_interval_set_infix.cpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_interval_set_infix/test_interval_set_infix.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,34 @@
+/*-----------------------------------------------------------------------------+    
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#define BOOST_TEST_MODULE itl::interval_set unit test
+#include <string>
+#include <boost/mpl/list.hpp>
+#include <boost/test/unit_test.hpp>
+#include <boost/test/test_case_template.hpp>
+
+// interval instance types
+#include "../test_type_lists.hpp"
+#include "../test_value_maker.hpp"
+
+#include <boost/itl/interval_set.hpp>
+
+using namespace std;
+using namespace boost;
+using namespace unit_test;
+using namespace boost::itl;
+
+// -----------------------------------------------------------------------------
+// test_interval_set_shared are tests that should give identical results for all
+// interval_sets: interval_set, separate_interval_set and split_interval_set.
+#include "../test_interval_set_shared.hpp"
+
+#define INTERVAL_SET interval_set
+#include "../test_interval_set_infix_cases.hpp"
+
+
+
Added: sandbox/itl/libs/itl/test/test_interval_set_infix/vc9_test_interval_set_infix.vcproj
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_interval_set_infix/vc9_test_interval_set_infix.vcproj	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9,00"
+	Name="vc9_test_interval_set_infix"
+	ProjectGUID="{A731623C-94BC-4666-A419-35D1623E950E}"
+	RootNamespace="test_interval_set_infix"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="../../../../bin/debug/"
+			IntermediateDirectory="../../../../bin/obj/$(ProjectName)/debug/"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../../../../; ../../../../boost_1_35_0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../../../../bin/debug/$(ProjectName).exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="../../../../lib; ../../../../stage/lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="../../../../bin/release/"
+			IntermediateDirectory="../../../../bin/obj/$(ProjectName)/release/"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../../../../; ../../../../boost_1_35_0"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../../../../bin/release/$(ProjectName).exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="../../../../lib; ../../../../stage/lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Quelldateien"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\test_interval_set_infix.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Headerdateien"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\test_interval_set_infix_shared.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\test_type_lists.hpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Ressourcendateien"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Added: sandbox/itl/libs/itl/test/test_interval_set_infix_cases.hpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_interval_set_infix_cases.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,31 @@
+/*-----------------------------------------------------------------------------+    
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#pragma once
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_infix_plus_overload_4_bicremental_types, T, bicremental_types)
+{         interval_set_infix_plus_overload_4_bicremental_types<INTERVAL_SET, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_infix_pipe_overload_4_bicremental_types, T, bicremental_types)
+{         interval_set_infix_pipe_overload_4_bicremental_types<INTERVAL_SET, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_infix_minus_overload_4_bicremental_types, T, bicremental_types)
+{         interval_set_infix_minus_overload_4_bicremental_types<INTERVAL_SET, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_infix_et_overload_4_bicremental_types, T, bicremental_types)
+{         interval_set_infix_et_overload_4_bicremental_types<INTERVAL_SET, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_infix_caret_overload_4_bicremental_types, T, bicremental_types)
+{         interval_set_infix_caret_overload_4_bicremental_types<INTERVAL_SET, T>();}
+
+
+
+
Modified: sandbox/itl/libs/itl/test/test_interval_set_mixed/test_interval_set_mixed.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_interval_set_mixed/test_interval_set_mixed.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_interval_set_mixed/test_interval_set_mixed.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -28,7 +28,7 @@
 BOOST_AUTO_TEST_CASE_TEMPLATE(test_itl_interval_set_mixed_ctor_4_ordered_types, T, ordered_types)
 {         
     T v0 = neutron<T>::value();
-    T v1 = unon<T>::value();
+    
 
     split_interval_set<T>    split_set(v0);
     separate_interval_set<T> sep_set(split_set);
@@ -41,7 +41,7 @@
 BOOST_AUTO_TEST_CASE_TEMPLATE(test_itl_interval_set_mixed_equal_4_ordered_types, T, ordered_types)
 {         
     T v0 = neutron<T>::value();
-    T v1 = unon<T>::value();
+    
 
     split_interval_set<T>    split_empty, split_single(v0);
     separate_interval_set<T> sep_empty, sep_single(v0);
@@ -132,7 +132,7 @@
 
 BOOST_AUTO_TEST_CASE_TEMPLATE(test_itl_interval_set_mixed_ctor_4_bicremental_types, T, bicremental_types)
 {         
-    T v0 = make<T>(0);
+    
     T v1 = make<T>(1);
     T v2 = make<T>(2);
     T v3 = make<T>(3);
@@ -163,7 +163,7 @@
 
 BOOST_AUTO_TEST_CASE_TEMPLATE(test_itl_interval_set_mixed_assign_4_bicremental_types, T, bicremental_types)
 {         
-    T v0 = make<T>(0);
+    
     T v1 = make<T>(1);
     T v2 = make<T>(2);
     T v3 = make<T>(3);
@@ -198,7 +198,7 @@
 
 BOOST_AUTO_TEST_CASE_TEMPLATE(test_itl_interval_set_mixed_equal_4_bicremental_types, T, bicremental_types)
 {         
-    T v0 = make<T>(0);
+    
     T v1 = make<T>(1);
     T v2 = make<T>(2);
     T v3 = make<T>(3);
@@ -255,7 +255,7 @@
 
 BOOST_AUTO_TEST_CASE_TEMPLATE(test_itl_interval_set_mixed_add_4_bicremental_types, T, bicremental_types)
 {         
-    T v0 = make<T>(0);
+    
     T v1 = make<T>(1);
     T v2 = make<T>(2);
     T v3 = make<T>(3);
@@ -520,8 +520,8 @@
     T v1 = make<T>(1);
     T v2 = make<T>(2);
     T v3 = make<T>(3);
-    T v4 = make<T>(4);
-    T v5 = make<T>(5);
+    
+    
     T v6 = make<T>(6);
     T v7 = make<T>(7);
     T v8 = make<T>(8);
@@ -591,7 +591,7 @@
     T v4 = make<T>(4);
     T v5 = make<T>(5);
     T v6 = make<T>(6);
-    T v7 = make<T>(7);
+    
     T v8 = make<T>(8);
     T v9 = make<T>(9);
 
@@ -718,15 +718,15 @@
 BOOST_AUTO_TEST_CASE_TEMPLATE(test_itl_interval_set_mixed_disjoint_4_bicremental_types, T, bicremental_types)
 {         
     T v0 = make<T>(0);
-    T v1 = make<T>(1);
+    
     T v2 = make<T>(2);
     T v3 = make<T>(3);
     T v4 = make<T>(4);
-    T v5 = make<T>(5);
+    
     T v6 = make<T>(6);
-    T v7 = make<T>(7);
-    T v8 = make<T>(8);
-    T v9 = make<T>(9);
+    
+    
+    
 
     interval<T> I0_2D = interval<T>::rightopen(v0,v2);
     interval<T> I2_3D = interval<T>::rightopen(v2,v3);
Modified: sandbox/itl/libs/itl/test/test_interval_set_shared.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_interval_set_shared.hpp	(original)
+++ sandbox/itl/libs/itl/test/test_interval_set_shared.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -8,6 +8,7 @@
 #ifndef __test_itl_interval_set_shared_h_JOFA_080920__
 #define __test_itl_interval_set_shared_h_JOFA_080920__
 
+
 template <template< class T, 
                     ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, T),
                     template<class,ITL_COMPARE>class Interval = interval,
@@ -246,7 +247,7 @@
     T v5 = make<T>(5);
 
     size_T s3 = make<size_T>(3);
-    diff_T d0 = make<diff_T>(0);
+    
 
     IntervalSet<T> is_1_3_5;
     is_1_3_5.add(v1).add(v3).add(v5);
@@ -269,14 +270,12 @@
     typedef typename IntervalSet<T>::size_type       size_T;
     typedef typename IntervalSet<T>::difference_type diff_T;
     T v1 = make<T>(1);
-    T v2 = make<T>(2);
     T v3 = make<T>(3);
     T v5 = make<T>(5);
 
     size_T s3 = make<size_T>(3);
     diff_T d0 = make<diff_T>(0);
     diff_T d2 = make<diff_T>(2);
-    diff_T d3 = make<diff_T>(3);
 
     IntervalSet<T> is_1_3_5;
     is_1_3_5.add(v1).add(v3).add(v5);
@@ -287,8 +286,7 @@
     BOOST_CHECK_EQUAL( is_1_3_5.interval_count(),   3 );
     BOOST_CHECK_EQUAL( is_1_3_5.iterative_size(),   3 );
 
-    size_T s4 = make<size_T>(4);
-    diff_T d4 = make<diff_T>(4);
+    
 
     IntervalSet<T> is_123_5;
     is_123_5 = is_1_3_5;
@@ -484,8 +482,6 @@
     T v1 = make<T>(1);
     T v2 = make<T>(2);
     T v3 = make<T>(3);
-    T v4 = make<T>(4);
-    T v5 = make<T>(5);
     T v6 = make<T>(6);
     T v7 = make<T>(7);
     T v8 = make<T>(8);
@@ -546,6 +542,7 @@
     BOOST_CHECK_EQUAL( is_element_equal(split_AB, split_ab2), true );
 }
 
+
 template <template< class T, 
                     ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, T),
                     template<class,ITL_COMPARE>class Interval = interval,
@@ -561,16 +558,21 @@
     //[0     2)
     //    [1     3)
     //[0 1)   [2 3) : {[0 2)} ^= [2 3)
-    BOOST_CHECK_EQUAL(ISet(I_D(0,2)) ^= I_D(1,3), ISet(I_D(0,1)) + I_D(2,3));
+    //gcc seed ambiguities with std::_Ios_Iostate& std::operator^= here:
+    // BOOST_CHECK_EQUAL(ISet(I_D(0,2)) ^= I_D(1,3), ISet(I_D(0,1)) + I_D(2,3));
+    set_a = ISet(I_D(0,2));
+    BOOST_CHECK_EQUAL(set_a ^= I_D(1,3), ISet(I_D(0,1)) + I_D(2,3));
 
     //    [1     3)
     //[0     2)    
     //[0 1)   [2 3) : {[1 3)} ^= [0 2)
-    BOOST_CHECK_EQUAL(ISet(I_D(1,3)) ^= I_D(0,2), ISet(I_D(0,1)) + I_D(2,3));
+    set_a = ISet(I_D(1,3));
+    BOOST_CHECK_EQUAL(set_a ^= I_D(0,2), ISet(I_D(0,1)) + I_D(2,3));
 
     //[0     2)      (3  5]
     //    [1      3)
     //[0 1)   [2  3) (3  5] : a ^= b
+    set_a.clear();
     set_a.add(I_D(0,2)).add(C_I(3,5));
     set_b.add(I_D(1,3));
     lhs = set_a;
@@ -579,6 +581,7 @@
     BOOST_CHECK_EQUAL(lhs, rhs);
 }
 
+
 template <template< class T, 
                     ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, T),
                     template<class,ITL_COMPARE>class Interval = interval,
@@ -595,11 +598,12 @@
     set_b.add(I_D(0,9)).add(I_I(3,6)).add(I_D(5,7));
 
     BOOST_CHECK_EQUAL(set_a + set_b, set_b + set_a);
-    //This checks all cases of is_interval_set_derivative<T>
+    // This checks all cases of is_interval_set_derivative<T>
     BOOST_CHECK_EQUAL(set_a + itv, itv + set_a);
     BOOST_CHECK_EQUAL(set_b + MK_v(4), MK_v(4) + set_b);
 }
 
+
 template <template< class T, 
                     ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, T),
                     template<class,ITL_COMPARE>class Interval = interval,
@@ -622,6 +626,7 @@
 }
 
 
+
 template <template< class T, 
                     ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, T),
                     template<class,ITL_COMPARE>class Interval = interval,
@@ -666,6 +671,7 @@
 }
 
 
+
 template <template< class T, 
                     ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, T),
                     template<class,ITL_COMPARE>class Interval = interval,
@@ -688,6 +694,7 @@
 }
 
 
+
 template <template< class T, 
                     ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, T),
                     template<class,ITL_COMPARE>class Interval = interval,
@@ -702,7 +709,7 @@
     IntervalSetT set_a;
     set_a.add(C_D(1,3)).add(I_I(6,11));
 
-    IntervalSetT::const_iterator found = set_a.find(MK_v(6));
+    typename IntervalSetT::const_iterator found = set_a.find(MK_v(6));
 
     BOOST_CHECK_EQUAL( *found, I_I(6,11) );
 
Modified: sandbox/itl/libs/itl/test/test_itl_map.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_itl_map.hpp	(original)
+++ sandbox/itl/libs/itl/test/test_itl_map.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -33,7 +33,7 @@
     MapT map_a;
     Interval::atomize(map_a, itv_map_a);
 
-    MapT::const_iterator found = map_a.find(MK_v(6));
+    typename MapT::const_iterator found = map_a.find(MK_v(6));
 
     BOOST_CHECK_EQUAL( found->CONT_VALUE, MK_u(3) );
     BOOST_CHECK_EQUAL( map_a(MK_v(6)), MK_u(3) );
Modified: sandbox/itl/libs/itl/test/test_itl_map/test_itl_map.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_itl_map/test_itl_map.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_itl_map/test_itl_map.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -30,9 +30,7 @@
 // interval_sets: interval_set, separate_interval_set and split_interval_set.
 #include "../test_itl_map.hpp"
 
-// Due to limited expressiveness of the testing framework, the testcode in files
-// test_interval_map{,_split}_shared.cpp is generated through code
-// replication. 
-#include "test_itl_map_shared.cpp"
+#define INTERVAL_MAP interval_map
+#include "test_itl_map_cases.hpp"
 
 
Added: sandbox/itl/libs/itl/test/test_itl_map/test_itl_map_cases.hpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_itl_map/test_itl_map_cases.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,12 @@
+/*-----------------------------------------------------------------------------+
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#pragma once
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_itl_map_find_4_bicremental_types, T, discrete_types)
+{         itl_map_find_4_bicremental_types<T, int, partial_absorber, INTERVAL_MAP>();}
+
Deleted: sandbox/itl/libs/itl/test/test_itl_map/test_itl_map_shared.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_itl_map/test_itl_map_shared.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
+++ (empty file)
@@ -1,12 +0,0 @@
-/*-----------------------------------------------------------------------------+
-Copyright (c) 2008-2009: Joachim Faulhaber
-+------------------------------------------------------------------------------+
-   Distributed under the Boost Software License, Version 1.0.
-      (See accompanying file LICENCE.txt or copy at
-           http://www.boost.org/LICENSE_1_0.txt)
-+-----------------------------------------------------------------------------*/
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_itl_map_find_4_bicremental_types, T, discrete_types)
-{         itl_map_find_4_bicremental_types<T, int, partial_absorber, interval_map>();}
-
Modified: sandbox/itl/libs/itl/test/test_laws.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_laws.hpp	(original)
+++ sandbox/itl/libs/itl/test/test_laws.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -8,6 +8,10 @@
 #ifndef __test_itl_laws_h_JOFA_090119__
 #define __test_itl_laws_h_JOFA_090119__
 
+#include <boost/itl/type_traits/neutron.hpp>
+
+namespace boost{namespace itl
+{
 
 template<class Type>
 struct equality : std::binary_function<Type,Type,bool> 
@@ -226,7 +230,7 @@
 #define DEFINE_MONOID_CHECK_WRT(op_tag) \
 template<class Type, class TypeB, class TypeC> \
 void check_monoid_wrt_##op_tag \
-(typename const Type& neutron, \
+(const Type& neutron, \
 const Type& a, const TypeB& b, const TypeC& c) \
 { \
     CHECK_ASSOCIATIVITY_WRT(op_tag)(a,b,c); \
@@ -263,7 +267,7 @@
 #define DEFINE_ABELIAN_MONOID_CHECK_WRT(op_tag) \
 template<class Type, class TypeB, class TypeC> \
 void check_abelian_monoid_wrt_##op_tag \
-(typename const Type& neutron, \
+(const Type& neutron, \
 const Type& a, const TypeB& b, const TypeC& c) \
 { \
     CHECK_ASSOCIATIVITY_WRT(op_tag)(a,b,c); \
@@ -300,7 +304,7 @@
 #define DEFINE_PARTIAL_INVERTIVE_MONOID_CHECK_WRT(op_tag) \
 template<class Type, class TypeB, class TypeC> \
 void check_partial_invertive_monoid_wrt_##op_tag \
-(typename const Type& neutron, \
+(const Type& neutron, \
 const Type& a, const TypeB& b, const TypeC& c) \
 { \
     CHECK_ABELIAN_MONOID_WRT(op_tag)(neutron,a,b,c); \
@@ -361,10 +365,10 @@
 void check_monoid_permuted_wrt_equal_##op_tag \
 (typename equality<TypeA>::type* equal, const TypeA& var_a, const TypeB& var_b, const Assoc& assoc) \
 { \
-    CHECK_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeA>::value(), var_a, var_b, assoc);\
-    CHECK_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeA>::value(), var_a, assoc, var_b);\
-    CHECK_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeB>::value(), var_b, var_a, assoc);\
-    CHECK_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeB>::value(), var_b, assoc, var_a);\
+    CHECK_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeA>::value(), var_a, var_b, assoc);\
+    CHECK_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeA>::value(), var_a, assoc, var_b);\
+    CHECK_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeB>::value(), var_b, var_a, assoc);\
+    CHECK_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeB>::value(), var_b, assoc, var_a);\
 }
 
 #define DEFINE_MONOID_CHECK_PERMUTED_WRT(op_tag) \
@@ -372,10 +376,10 @@
 void check_monoid_permuted_wrt_##op_tag \
 (const TypeA& var_a, const TypeB& var_b, const Assoc& assoc) \
 { \
-    CHECK_MONOID_WRT(op_tag)(neutron<TypeA>::value(), var_a, var_b, assoc);\
-    CHECK_MONOID_WRT(op_tag)(neutron<TypeA>::value(), var_a, assoc, var_b);\
-    CHECK_MONOID_WRT(op_tag)(neutron<TypeB>::value(), var_b, var_a, assoc);\
-    CHECK_MONOID_WRT(op_tag)(neutron<TypeB>::value(), var_b, assoc, var_a);\
+    CHECK_MONOID_WRT(op_tag)(itl::neutron<TypeA>::value(), var_a, var_b, assoc);\
+    CHECK_MONOID_WRT(op_tag)(itl::neutron<TypeA>::value(), var_a, assoc, var_b);\
+    CHECK_MONOID_WRT(op_tag)(itl::neutron<TypeB>::value(), var_b, var_a, assoc);\
+    CHECK_MONOID_WRT(op_tag)(itl::neutron<TypeB>::value(), var_b, assoc, var_a);\
 }
 
 
@@ -401,10 +405,10 @@
 void check_abelian_monoid_permuted_wrt_equal_##op_tag \
 (typename equality<TypeA>::type* equal, const TypeA& var_a, const TypeB& var_b, const Assoc& assoc) \
 { \
-    CHECK_ABELIAN_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeA>::value(), var_a, var_b, assoc);\
-    CHECK_ABELIAN_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeA>::value(), var_a, assoc, var_b);\
-    CHECK_ABELIAN_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeB>::value(), var_b, var_a, assoc);\
-    CHECK_ABELIAN_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeB>::value(), var_b, assoc, var_a);\
+    CHECK_ABELIAN_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeA>::value(), var_a, var_b, assoc);\
+    CHECK_ABELIAN_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeA>::value(), var_a, assoc, var_b);\
+    CHECK_ABELIAN_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeB>::value(), var_b, var_a, assoc);\
+    CHECK_ABELIAN_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeB>::value(), var_b, assoc, var_a);\
 }
 
 #define DEFINE_ABELIAN_MONOID_CHECK_PERMUTED_WRT(op_tag) \
@@ -412,10 +416,10 @@
 void check_abelian_monoid_permuted_wrt_##op_tag \
 (const TypeA& var_a, const TypeB& var_b, const Assoc& assoc) \
 { \
-    CHECK_ABELIAN_MONOID_WRT(op_tag)(neutron<TypeA>::value(), var_a, var_b, assoc);\
-    CHECK_ABELIAN_MONOID_WRT(op_tag)(neutron<TypeA>::value(), var_a, assoc, var_b);\
-    CHECK_ABELIAN_MONOID_WRT(op_tag)(neutron<TypeB>::value(), var_b, var_a, assoc);\
-    CHECK_ABELIAN_MONOID_WRT(op_tag)(neutron<TypeB>::value(), var_b, assoc, var_a);\
+    CHECK_ABELIAN_MONOID_WRT(op_tag)(itl::neutron<TypeA>::value(), var_a, var_b, assoc);\
+    CHECK_ABELIAN_MONOID_WRT(op_tag)(itl::neutron<TypeA>::value(), var_a, assoc, var_b);\
+    CHECK_ABELIAN_MONOID_WRT(op_tag)(itl::neutron<TypeB>::value(), var_b, var_a, assoc);\
+    CHECK_ABELIAN_MONOID_WRT(op_tag)(itl::neutron<TypeB>::value(), var_b, assoc, var_a);\
 }
 
 
@@ -441,10 +445,10 @@
 void check_partial_invertive_monoid_permuted_wrt_equal_##op_tag \
 (typename equality<TypeA>::type* equal, const TypeA& var_a, const TypeB& var_b, const Assoc& assoc) \
 { \
-    CHECK_PARTIAL_INVERTIVE_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeA>::value(), var_a, var_b, assoc);\
-    CHECK_PARTIAL_INVERTIVE_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeA>::value(), var_a, assoc, var_b);\
-    CHECK_PARTIAL_INVERTIVE_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeB>::value(), var_b, var_a, assoc);\
-    CHECK_PARTIAL_INVERTIVE_MONOID_WRT_EQUAL(op_tag)(equal, neutron<TypeB>::value(), var_b, assoc, var_a);\
+    CHECK_PARTIAL_INVERTIVE_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeA>::value(), var_a, var_b, assoc);\
+    CHECK_PARTIAL_INVERTIVE_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeA>::value(), var_a, assoc, var_b);\
+    CHECK_PARTIAL_INVERTIVE_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeB>::value(), var_b, var_a, assoc);\
+    CHECK_PARTIAL_INVERTIVE_MONOID_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeB>::value(), var_b, assoc, var_a);\
 }
 
 #define DEFINE_PARTIAL_INVERTIVE_MONOID_CHECK_PERMUTED_WRT(op_tag) \
@@ -452,10 +456,10 @@
 void check_partial_invertive_monoid_permuted_wrt_##op_tag \
 (const TypeA& var_a, const TypeB& var_b, const Assoc& assoc) \
 { \
-    CHECK_PARTIAL_INVERTIVE_MONOID_WRT(op_tag)(neutron<TypeA>::value(), var_a, var_b, assoc);\
-    CHECK_PARTIAL_INVERTIVE_MONOID_WRT(op_tag)(neutron<TypeA>::value(), var_a, assoc, var_b);\
-    CHECK_PARTIAL_INVERTIVE_MONOID_WRT(op_tag)(neutron<TypeB>::value(), var_b, var_a, assoc);\
-    CHECK_PARTIAL_INVERTIVE_MONOID_WRT(op_tag)(neutron<TypeB>::value(), var_b, assoc, var_a);\
+    CHECK_PARTIAL_INVERTIVE_MONOID_WRT(op_tag)(itl::neutron<TypeA>::value(), var_a, var_b, assoc);\
+    CHECK_PARTIAL_INVERTIVE_MONOID_WRT(op_tag)(itl::neutron<TypeA>::value(), var_a, assoc, var_b);\
+    CHECK_PARTIAL_INVERTIVE_MONOID_WRT(op_tag)(itl::neutron<TypeB>::value(), var_b, var_a, assoc);\
+    CHECK_PARTIAL_INVERTIVE_MONOID_WRT(op_tag)(itl::neutron<TypeB>::value(), var_b, assoc, var_a);\
 }
 
 
@@ -481,10 +485,10 @@
     void check_abelian_group_permuted_wrt_equal_##op_tag \
 (typename equality<TypeA>::type* equal, const TypeA& var_a, const TypeB& var_b, const Assoc& assoc) \
 { \
-    CHECK_ABELIAN_GROUP_WRT_EQUAL(op_tag)(equal, neutron<TypeA>::value(), var_a, var_b, assoc);\
-    CHECK_ABELIAN_GROUP_WRT_EQUAL(op_tag)(equal, neutron<TypeA>::value(), var_a, assoc, var_b);\
-    CHECK_ABELIAN_GROUP_WRT_EQUAL(op_tag)(equal, neutron<TypeB>::value(), var_b, var_a, assoc);\
-    CHECK_ABELIAN_GROUP_WRT_EQUAL(op_tag)(equal, neutron<TypeB>::value(), var_b, assoc, var_a);\
+    CHECK_ABELIAN_GROUP_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeA>::value(), var_a, var_b, assoc);\
+    CHECK_ABELIAN_GROUP_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeA>::value(), var_a, assoc, var_b);\
+    CHECK_ABELIAN_GROUP_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeB>::value(), var_b, var_a, assoc);\
+    CHECK_ABELIAN_GROUP_WRT_EQUAL(op_tag)(equal, itl::neutron<TypeB>::value(), var_b, assoc, var_a);\
 }
 
 #define DEFINE_ABELIAN_GROUP_CHECK_PERMUTED_WRT(op_tag) \
@@ -492,10 +496,10 @@
     void check_abelian_group_permuted_wrt_##op_tag \
 (const TypeA& var_a, const TypeB& var_b, const Assoc& assoc) \
 { \
-    CHECK_ABELIAN_GROUP_WRT(op_tag)(neutron<TypeA>::value(), var_a, var_b, assoc);\
-    CHECK_ABELIAN_GROUP_WRT(op_tag)(neutron<TypeA>::value(), var_a, assoc, var_b);\
-    CHECK_ABELIAN_GROUP_WRT(op_tag)(neutron<TypeB>::value(), var_b, var_a, assoc);\
-    CHECK_ABELIAN_GROUP_WRT(op_tag)(neutron<TypeB>::value(), var_b, assoc, var_a);\
+    CHECK_ABELIAN_GROUP_WRT(op_tag)(itl::neutron<TypeA>::value(), var_a, var_b, assoc);\
+    CHECK_ABELIAN_GROUP_WRT(op_tag)(itl::neutron<TypeA>::value(), var_a, assoc, var_b);\
+    CHECK_ABELIAN_GROUP_WRT(op_tag)(itl::neutron<TypeB>::value(), var_b, var_a, assoc);\
+    CHECK_ABELIAN_GROUP_WRT(op_tag)(itl::neutron<TypeB>::value(), var_b, assoc, var_a);\
 }
 
 
@@ -660,7 +664,7 @@
 #define CHECK_ABELIAN_GROUP_INSTANCE_WRT(op_tag)       check_abelian_group_instance_wrt_##op_tag
 #define CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(op_tag) check_abelian_group_instance_wrt_equal_##op_tag
 
-
+}} // namespace itl boost
 
 #endif // __test_itl_laws_h_JOFA_080920__
 
Added: sandbox/itl/libs/itl/test/test_partial_interval_quantifier/test_partial_interval_quantifier.cpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_partial_interval_quantifier/test_partial_interval_quantifier.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,35 @@
+/*-----------------------------------------------------------------------------+    
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#define BOOST_TEST_MODULE itl::interval_set unit test
+#include <string>
+#include <boost/mpl/list.hpp>
+#include <boost/test/unit_test.hpp>
+#include <boost/test/test_case_template.hpp>
+
+// interval instance types
+#include "../test_type_lists.hpp"
+#include "../test_value_maker.hpp"
+#include "../test_laws.hpp"
+
+#include <boost/itl/interval_map.hpp>
+#include <boost/itl/split_interval_map.hpp>
+
+using namespace std;
+using namespace boost;
+using namespace unit_test;
+using namespace boost::itl;
+
+// -----------------------------------------------------------------------------
+// test_interval_set_shared are tests that should give identical results for all
+// interval_sets: interval_set, separate_interval_set and split_interval_set.
+#include "../test_interval_quantifier_shared.hpp"
+
+#define INTERVAL_MAP interval_map
+#include "../test_partial_interval_quantifier_cases.hpp"
+
+
Added: sandbox/itl/libs/itl/test/test_partial_interval_quantifier/vc9_test_partial_interval_quantifier.vcproj
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_partial_interval_quantifier/vc9_test_partial_interval_quantifier.vcproj	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9,00"
+	Name="vc9_test_partial_interval_quantifier"
+	ProjectGUID="{EE61B7EF-EC45-4165-8B4A-FD5B7D2A9F9F}"
+	RootNamespace="Test_partial_interval_quantifier"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="../../../../bin/debug/"
+			IntermediateDirectory="../../../../bin/obj/$(ProjectName)/debug/"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/bigobj"
+				Optimization="0"
+				AdditionalIncludeDirectories="../../../../; ../../../../boost_1_35_0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../../../../bin/debug/$(ProjectName).exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="../../../../lib; ../../../../stage/lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="../../../../bin/release/"
+			IntermediateDirectory="../../../../bin/obj/$(ProjectName)/release/"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../../../../; ../../../../boost_1_35_0"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../../../../bin/release/$(ProjectName).exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="../../../../lib; ../../../../stage/lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Quelldateien"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\test_partial_interval_quantifier.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Headerdateien"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\test_partial_interval_quantifier_shared.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\test_type_lists.hpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Ressourcendateien"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Added: sandbox/itl/libs/itl/test/test_partial_interval_quantifier_cases.hpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_partial_interval_quantifier_cases.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,61 @@
+/*-----------------------------------------------------------------------------+
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#pragma once
+
+//------------------------------------------------------------------------------
+// partial_absorber
+//------------------------------------------------------------------------------
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_partial_quantifier_map_check_monoid_plus_4_bicremental_types, T, bicremental_types)
+{                 quantifier_map_check_monoid_plus_4_bicremental_types<T, std::string, partial_absorber, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_partial_quantifier_map_check_monoid_et_4_bicremental_types, T, bicremental_types)
+{                 quantifier_map_check_monoid_et_4_bicremental_types<T, int, partial_absorber, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_partial_quantifier_map_check_abelian_monoid_plus_4_bicremental_types, T, bicremental_types)
+{                 quantifier_map_check_abelian_monoid_plus_4_bicremental_types<T, std::string, partial_absorber, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_partial_quantifier_map_check_abelian_monoid_et_4_bicremental_types, T, bicremental_types)
+{                 quantifier_map_check_abelian_monoid_et_4_bicremental_types<T, int, partial_absorber, INTERVAL_MAP>();}
+
+// x - x = 0 | partial absorber
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_partial_quantifier_map_check_partial_invertive_monoid_plus_4_bicremental_types, T, bicremental_types)
+{                 quantifier_map_check_partial_invertive_monoid_plus_4_bicremental_types<T, int, partial_absorber, INTERVAL_MAP>();}
+
+//------------------------------------------------------------------------------
+// partial_enricher
+//------------------------------------------------------------------------------
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_partial_enricher_quantifier_map_check_monoid_plus_4_bicremental_types, T, bicremental_types)
+{                          quantifier_map_check_monoid_plus_4_bicremental_types<T, std::string, partial_enricher, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_partial_enricher_quantifier_map_check_monoid_et_4_bicremental_types, T, bicremental_types)
+{                          quantifier_map_check_monoid_et_4_bicremental_types<T, int, partial_enricher, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_partial_enricher_quantifier_map_check_abelian_monoid_plus_4_bicremental_types, T, bicremental_types)
+{                          quantifier_map_check_abelian_monoid_plus_4_bicremental_types<T, std::string, partial_enricher, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_partial_enricher_quantifier_map_check_abelian_monoid_et_4_bicremental_types, T, bicremental_types)
+{                          quantifier_map_check_abelian_monoid_et_4_bicremental_types<T, int, partial_enricher, INTERVAL_MAP>();}
+
+// x - x =p= 0 | partial enricher
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_partial_enricher_quantifier_map_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types, T, bicremental_types)
+{                          quantifier_map_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types<T, int, partial_enricher, INTERVAL_MAP>();}
+
+//            absorber      enricher
+// partial    x - x == 0    x - x =p= 0   partiality of subtraction   
+// total    (-x)+ x == 0  (-x)+ x =p= 0   totality   of subtraction
+
Modified: sandbox/itl/libs/itl/test/test_quantifier_itl_map.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_quantifier_itl_map.hpp	(original)
+++ sandbox/itl/libs/itl/test/test_quantifier_itl_map.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -37,8 +37,8 @@
     Interval::atomize(map_b, itv_map_b);
     Interval::atomize(map_c, itv_map_c);
 
-    MapT::value_type map_pair1 = sK_v(5,1);
-    MapT::value_type map_pair2 = sK_v(9,3);
+    typename MapT::value_type map_pair1 = sK_v(5,1);
+    typename MapT::value_type map_pair2 = sK_v(9,3);
 
     CHECK_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
     CHECK_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
@@ -70,8 +70,8 @@
     Interval::atomize(map_b, itv_map_b);
     Interval::atomize(map_c, itv_map_c);
 
-    MapT::value_type map_pair1 = sK_v(5,1);
-    MapT::value_type map_pair2 = sK_v(9,3);
+    typename MapT::value_type map_pair1 = sK_v(5,1);
+    typename MapT::value_type map_pair2 = sK_v(9,3);
 
     CHECK_MONOID_INSTANCE_WRT(et)   (map_a, map_b, map_c, map_pair1, map_pair2);
     CHECK_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, map_pair1, map_pair2);
@@ -106,8 +106,8 @@
     Interval::atomize(map_b, itv_map_b);
     Interval::atomize(map_c, itv_map_c);
 
-    MapT::value_type map_pair1 = sK_v(5,1);
-    MapT::value_type map_pair2 = sK_v(9,3);
+    typename MapT::value_type map_pair1 = sK_v(5,1);
+    typename MapT::value_type map_pair2 = sK_v(9,3);
 
     CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
     CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
@@ -139,8 +139,8 @@
     Interval::atomize(map_b, itv_map_b);
     Interval::atomize(map_c, itv_map_c);
 
-    MapT::value_type map_pair1 = sK_v(5,1);
-    MapT::value_type map_pair2 = sK_v(9,3);
+    typename MapT::value_type map_pair1 = sK_v(5,1);
+    typename MapT::value_type map_pair2 = sK_v(9,3);
 
     CHECK_ABELIAN_MONOID_INSTANCE_WRT(et)   (map_a, map_b, map_c, map_pair1, map_pair2);
     CHECK_ABELIAN_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, map_pair1, map_pair2);
@@ -175,8 +175,8 @@
     Interval::atomize(map_b, itv_map_b);
     Interval::atomize(map_c, itv_map_c);
 
-    MapT::value_type map_pair1 = sK_v(5,1);
-    MapT::value_type map_pair2 = sK_v(9,3);
+    typename MapT::value_type map_pair1 = sK_v(5,1);
+    typename MapT::value_type map_pair2 = sK_v(9,3);
 
     CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
     CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
@@ -210,8 +210,8 @@
     Interval::atomize(map_b, itv_map_b);
     Interval::atomize(map_c, itv_map_c);
 
-    MapT::value_type map_pair1 = sK_v(5,1);
-    MapT::value_type map_pair2 = sK_v(9,3);
+    typename MapT::value_type map_pair1 = sK_v(5,1);
+    typename MapT::value_type map_pair2 = sK_v(9,3);
 
     CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus)(map_a, map_b, map_c, map_pair1, map_pair2);
     CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe)(map_a, map_b, map_c, map_pair1, map_pair2);
@@ -249,8 +249,8 @@
     Interval::atomize(map_b, itv_map_b);
     Interval::atomize(map_c, itv_map_c);
 
-    MapT::value_type map_pair1 = sK_v(5,1);
-    MapT::value_type map_pair2 = sK_v(9,3);
+    typename MapT::value_type map_pair1 = sK_v(5,1);
+    typename MapT::value_type map_pair2 = sK_v(9,3);
 
     CHECK_ABELIAN_GROUP_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
     CHECK_ABELIAN_GROUP_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
@@ -284,8 +284,8 @@
     Interval::atomize(map_b, itv_map_b);
     Interval::atomize(map_c, itv_map_c);
 
-    MapT::value_type map_pair1 = sK_v(5,1);
-    MapT::value_type map_pair2 = sK_v(9,3);
+    typename MapT::value_type map_pair1 = sK_v(5,1);
+    typename MapT::value_type map_pair2 = sK_v(9,3);
 
     CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair1, map_pair2);
     CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair1, map_pair2);
Modified: sandbox/itl/libs/itl/test/test_quantifier_itl_map/test_quantifier_itl_map.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_quantifier_itl_map/test_quantifier_itl_map.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_quantifier_itl_map/test_quantifier_itl_map.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -30,9 +30,6 @@
 // interval_sets: interval_set, separate_interval_set and split_interval_set.
 #include "../test_quantifier_itl_map.hpp"
 
-// Due to limited expressiveness of the testing framework, the testcode in files
-// test_interval_map{,_split}_shared.cpp is generated through code
-// replication. 
 #include "test_quantifier_itl_map_shared.cpp"
 
 
Modified: sandbox/itl/libs/itl/test/test_separate_interval_set/test_separate_interval_set.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_separate_interval_set/test_separate_interval_set.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_separate_interval_set/test_separate_interval_set.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -27,9 +27,7 @@
 // interval_sets: interval_set, separate_interval_set and split_interval_set.
 #include "../test_interval_set_shared.hpp"
 
-// Due to limited expressiveness of the testing framework, the testcode in files
-// test_interval_set{,_separate,split}_shared.cpp are generated through code
-// replication. 
-#include "test_separate_interval_set_shared.cpp"
+#define INTERVAL_SET separate_interval_set
+#include "../test_interval_set_cases.hpp"
 
 
Deleted: sandbox/itl/libs/itl/test/test_separate_interval_set/test_separate_interval_set_shared.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_separate_interval_set/test_separate_interval_set_shared.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
+++ (empty file)
@@ -1,69 +0,0 @@
-/*-----------------------------------------------------------------------------+    
-Copyright (c) 2008-2009: Joachim Faulhaber
-+------------------------------------------------------------------------------+
-   Distributed under the Boost Software License, Version 1.0.
-      (See accompanying file LICENCE.txt or copy at
-           http://www.boost.org/LICENSE_1_0.txt)
-+-----------------------------------------------------------------------------*/
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_fundamentals_4_ordered_types, T, ordered_types)
-{         interval_set_fundamentals_4_ordered_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_ctor_4_bicremental_types, T, bicremental_types)
-{         interval_set_ctor_4_bicremental_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_add_sub_4_bicremental_types, T, bicremental_types)
-{         interval_set_add_sub_4_bicremental_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_distinct_4_bicremental_types, T, bicremental_types)
-{         interval_set_distinct_4_bicremental_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_distinct_4_bicremental_continuous_types, T, bicremental_continuous_types)
-{         interval_set_distinct_4_bicremental_continuous_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_isolate_4_bicremental_continuous_types, T, bicremental_continuous_types)
-{         interval_set_isolate_4_bicremental_continuous_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_element_compare_4_bicremental_types, T, bicremental_types)
-{         interval_set_element_compare_4_bicremental_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_contains_4_bicremental_types, T, bicremental_types)
-{         interval_set_contains_4_bicremental_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_operators_4_bicremental_types, T, bicremental_types)
-{         interval_set_operators_4_bicremental_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_base_intersect_4_bicremental_types, T, bicremental_types)
-{         interval_set_base_intersect_4_bicremental_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_plus_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_plus_overload_4_bicremental_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_pipe_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_pipe_overload_4_bicremental_types<separate_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_et_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_et_overload_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_caret_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_caret_overload_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_find_4_bicremental_types, T, bicremental_types)
-{         interval_set_find_4_bicremental_types<interval_set, T>();}
-
-
Added: sandbox/itl/libs/itl/test/test_separate_interval_set_infix/test_separate_interval_set_infix.cpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_separate_interval_set_infix/test_separate_interval_set_infix.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,33 @@
+/*-----------------------------------------------------------------------------+    
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#define BOOST_TEST_MODULE itl::interval_set unit test
+#include <string>
+#include <boost/mpl/list.hpp>
+#include <boost/test/unit_test.hpp>
+#include <boost/test/test_case_template.hpp>
+
+// interval instance types
+#include "../test_type_lists.hpp"
+#include "../test_value_maker.hpp"
+
+#include <boost/itl/separate_interval_set.hpp>
+
+using namespace std;
+using namespace boost;
+using namespace unit_test;
+using namespace boost::itl;
+
+// -----------------------------------------------------------------------------
+// test_interval_set_shared are tests that should give identical results for all
+// interval_sets: interval_set, separate_interval_set and split_interval_set.
+#include "../test_interval_set_shared.hpp"
+
+#define INTERVAL_SET separate_interval_set
+#include "../test_interval_set_infix_cases.hpp"
+
+
Added: sandbox/itl/libs/itl/test/test_separate_interval_set_infix/vc9_test_separate_interval_set_infix.vcproj
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_separate_interval_set_infix/vc9_test_separate_interval_set_infix.vcproj	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9,00"
+	Name="vc9_test_separate_interval_set_infix"
+	ProjectGUID="{A731623C-94BC-4666-A419-35D2623E950E}"
+	RootNamespace="test_separate_interval_set_infix"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="../../../../bin/debug/"
+			IntermediateDirectory="../../../../bin/obj/$(ProjectName)/debug/"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../../../../; ../../../../boost_1_35_0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../../../../bin/debug/$(ProjectName).exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="../../../../lib; ../../../../stage/lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="../../../../bin/release/"
+			IntermediateDirectory="../../../../bin/obj/$(ProjectName)/release/"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../../../../; ../../../../boost_1_35_0"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../../../../bin/release/$(ProjectName).exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="../../../../lib; ../../../../stage/lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Quelldateien"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\test_separate_interval_set_infix.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Headerdateien"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\test_separate_interval_set_infix_shared.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\test_type_lists.hpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Ressourcendateien"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Modified: sandbox/itl/libs/itl/test/test_set_inerval_set/test_set_interval_set.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_set_inerval_set/test_set_interval_set.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_set_inerval_set/test_set_interval_set.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -31,9 +31,6 @@
 // interval_sets: interval_set, separate_interval_set and split_interval_set.
 #include "../test_set_interval_set_shared.hpp"
 
-// Due to limited expressiveness of the testing framework, the testcode in files
-// test_interval_map{,_split}_shared.cpp is generated through code
-// replication. 
-#include "test_set_interval_set_shared.cpp"
+#include "test_set_interval_set_cases.hpp"
 
 
Added: sandbox/itl/libs/itl/test/test_set_inerval_set/test_set_interval_set_cases.hpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_set_inerval_set/test_set_interval_set_cases.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,67 @@
+/*-----------------------------------------------------------------------------+
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#pragma once
+//------------------------------------------------------------------------------
+// interval_set
+//------------------------------------------------------------------------------
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_check_monoid_plus_4_bicremental_types, T, bicremental_types)
+{         interval_set_check_monoid_plus_4_bicremental_types<T, interval_set>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_check_abelian_monoid_plus_4_bicremental_types, T, bicremental_types)
+{         interval_set_check_abelian_monoid_plus_4_bicremental_types<T, interval_set>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_check_abelian_monoid_et_4_bicremental_types, T, bicremental_types)
+{         interval_set_check_abelian_monoid_et_4_bicremental_types<T, interval_set>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_interval_set_check_partial_invertive_monoid_plus_4_bicremental_types, T, bicremental_types)
+{         interval_set_check_partial_invertive_monoid_plus_4_bicremental_types<T, interval_set>();}
+
+
+//------------------------------------------------------------------------------
+// separate_interval_set
+//------------------------------------------------------------------------------
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_separate_interval_set_check_monoid_plus_4_bicremental_types, T, bicremental_types)
+{                  interval_set_check_monoid_plus_4_bicremental_types<T, separate_interval_set>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_separate_interval_set_check_abelian_monoid_plus_4_bicremental_types, T, bicremental_types)
+{                  interval_set_check_abelian_monoid_plus_4_bicremental_types<T, separate_interval_set>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_separate_interval_set_check_abelian_monoid_et_4_bicremental_types, T, bicremental_types)
+{                  interval_set_check_abelian_monoid_et_4_bicremental_types<T, separate_interval_set>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_separate_interval_set_check_partial_invertive_monoid_plus_4_bicremental_types, T, bicremental_types)
+{                  interval_set_check_partial_invertive_monoid_plus_4_bicremental_types<T, separate_interval_set>();}
+
+
+//------------------------------------------------------------------------------
+// split_interval_set
+//------------------------------------------------------------------------------
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_split_interval_set_check_monoid_plus_4_bicremental_types, T, bicremental_types)
+{               interval_set_check_monoid_plus_4_bicremental_types<T, split_interval_set>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_split_interval_set_check_abelian_monoid_plus_4_bicremental_types, T, bicremental_types)
+{               interval_set_check_abelian_monoid_plus_4_bicremental_types<T, split_interval_set>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_split_interval_set_check_abelian_monoid_et_4_bicremental_types, T, bicremental_types)
+{               interval_set_check_abelian_monoid_et_4_bicremental_types<T, split_interval_set>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_split_interval_set_check_partial_invertive_monoid_plus_4_bicremental_types, T, bicremental_types)
+{               interval_set_check_partial_invertive_monoid_plus_4_bicremental_types<T, split_interval_set>();}
+
Deleted: sandbox/itl/libs/itl/test/test_set_inerval_set/test_set_interval_set_shared.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_set_inerval_set/test_set_interval_set_shared.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
+++ (empty file)
@@ -1,68 +0,0 @@
-/*-----------------------------------------------------------------------------+
-Copyright (c) 2008-2009: Joachim Faulhaber
-+------------------------------------------------------------------------------+
-   Distributed under the Boost Software License, Version 1.0.
-      (See accompanying file LICENCE.txt or copy at
-           http://www.boost.org/LICENSE_1_0.txt)
-+-----------------------------------------------------------------------------*/
-
-//------------------------------------------------------------------------------
-// interval_set
-//------------------------------------------------------------------------------
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_check_monoid_plus_4_bicremental_types, T, bicremental_types)
-{         interval_set_check_monoid_plus_4_bicremental_types<T, interval_set>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_check_abelian_monoid_plus_4_bicremental_types, T, bicremental_types)
-{         interval_set_check_abelian_monoid_plus_4_bicremental_types<T, interval_set>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_check_abelian_monoid_et_4_bicremental_types, T, bicremental_types)
-{         interval_set_check_abelian_monoid_et_4_bicremental_types<T, interval_set>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_check_partial_invertive_monoid_plus_4_bicremental_types, T, bicremental_types)
-{         interval_set_check_partial_invertive_monoid_plus_4_bicremental_types<T, interval_set>();}
-
-
-//------------------------------------------------------------------------------
-// separate_interval_set
-//------------------------------------------------------------------------------
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_separate_interval_set_check_monoid_plus_4_bicremental_types, T, bicremental_types)
-{                  interval_set_check_monoid_plus_4_bicremental_types<T, separate_interval_set>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_separate_interval_set_check_abelian_monoid_plus_4_bicremental_types, T, bicremental_types)
-{                  interval_set_check_abelian_monoid_plus_4_bicremental_types<T, separate_interval_set>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_separate_interval_set_check_abelian_monoid_et_4_bicremental_types, T, bicremental_types)
-{                  interval_set_check_abelian_monoid_et_4_bicremental_types<T, separate_interval_set>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_separate_interval_set_check_partial_invertive_monoid_plus_4_bicremental_types, T, bicremental_types)
-{                  interval_set_check_partial_invertive_monoid_plus_4_bicremental_types<T, separate_interval_set>();}
-
-
-//------------------------------------------------------------------------------
-// split_interval_set
-//------------------------------------------------------------------------------
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_split_interval_set_check_monoid_plus_4_bicremental_types, T, bicremental_types)
-{               interval_set_check_monoid_plus_4_bicremental_types<T, split_interval_set>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_split_interval_set_check_abelian_monoid_plus_4_bicremental_types, T, bicremental_types)
-{               interval_set_check_abelian_monoid_plus_4_bicremental_types<T, split_interval_set>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_split_interval_set_check_abelian_monoid_et_4_bicremental_types, T, bicremental_types)
-{               interval_set_check_abelian_monoid_et_4_bicremental_types<T, split_interval_set>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_split_interval_set_check_partial_invertive_monoid_plus_4_bicremental_types, T, bicremental_types)
-{               interval_set_check_partial_invertive_monoid_plus_4_bicremental_types<T, split_interval_set>();}
-
-
Modified: sandbox/itl/libs/itl/test/test_set_interval_set_shared.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_set_interval_set_shared.hpp	(original)
+++ sandbox/itl/libs/itl/test/test_set_interval_set_shared.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -37,10 +37,7 @@
 
 template <class T,
           template<class T,
-                   class Traits = Trt,
                    ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, U),
-                   ITL_COMBINE Combine = ITL_COMBINE_INSTANCE(itl::inplace_plus, U),
-                   ITL_SECTION Section = ITL_SECTION_INSTANCE(itl::inplace_et, U),
                    template<class,ITL_COMPARE>class Interval = interval,
                    ITL_ALLOC   Alloc   = std::allocator
                   >class IntervalSet
Modified: sandbox/itl/libs/itl/test/test_set_itl_set.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_set_itl_set.hpp	(original)
+++ sandbox/itl/libs/itl/test/test_set_itl_set.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -44,10 +44,7 @@
 
 template <class T,
           template<class T,
-                   class Traits = Trt,
                    ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, U),
-                   ITL_COMBINE Combine = ITL_COMBINE_INSTANCE(itl::inplace_plus, U),
-                   ITL_SECTION Section = ITL_SECTION_INSTANCE(itl::inplace_et, U),
                    template<class,ITL_COMPARE>class Interval = interval,
                    ITL_ALLOC   Alloc   = std::allocator
                   >class IntervalSet
Modified: sandbox/itl/libs/itl/test/test_set_itl_set/test_set_itl_set.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_set_itl_set/test_set_itl_set.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_set_itl_set/test_set_itl_set.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -31,9 +31,6 @@
 // interval_sets: interval_set, separate_interval_set and split_interval_set.
 #include "../test_set_itl_set.hpp"
 
-// Due to limited expressiveness of the testing framework, the testcode in files
-// test_interval_map{,_split}_shared.cpp is generated through code
-// replication. 
-#include "test_set_itl_set_shared.cpp"
+#include "test_set_itl_set_cases.hpp"
 
 
Added: sandbox/itl/libs/itl/test/test_set_itl_set/test_set_itl_set_cases.hpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_set_itl_set/test_set_itl_set_cases.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,30 @@
+/*-----------------------------------------------------------------------------+
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#pragma once
+//------------------------------------------------------------------------------
+// interval_set
+//------------------------------------------------------------------------------
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_itl_set_check_monoid_plus_4_bicremental_types, T, discrete_types)
+{         itl_set_check_monoid_plus_4_bicremental_types<T, interval_set>();}
+                                                   //MEMO: interval_set
+// is used here pragmatically to be able to recycle test code for initializing
+// sets. These interval_set are then converted to itl::set by atomize.
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_itl_set_check_abelian_monoid_plus_4_bicremental_types, T, discrete_types)
+{         itl_set_check_abelian_monoid_plus_4_bicremental_types<T, interval_set>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_itl_set_check_abelian_monoid_et_4_bicremental_types, T, discrete_types)
+{         itl_set_check_abelian_monoid_et_4_bicremental_types<T, interval_set>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_itl_set_check_partial_invertive_monoid_plus_4_bicremental_types, T, discrete_types)
+{         itl_set_check_partial_invertive_monoid_plus_4_bicremental_types<T, interval_set>();}
+
Added: sandbox/itl/libs/itl/test/test_set_itl_set_cases.hpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_set_itl_set_cases.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,25 @@
+/*-----------------------------------------------------------------------------+
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#pragma once
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_itl_set_check_monoid_plus_4_bicremental_types, T, discrete_types)
+{         itl_set_check_monoid_plus_4_bicremental_types<T, INTERVAL_SET>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_itl_set_check_abelian_monoid_plus_4_bicremental_types, T, discrete_types)
+{         itl_set_check_abelian_monoid_plus_4_bicremental_types<T, INTERVAL_SET>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_itl_set_check_abelian_monoid_et_4_bicremental_types, T, discrete_types)
+{         itl_set_check_abelian_monoid_et_4_bicremental_types<T, INTERVAL_SET>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_itl_set_check_partial_invertive_monoid_plus_4_bicremental_types, T, discrete_types)
+{         itl_set_check_partial_invertive_monoid_plus_4_bicremental_types<T, INTERVAL_SET>();}
+
Modified: sandbox/itl/libs/itl/test/test_split_interval_map/test_split_interval_map.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_split_interval_map/test_split_interval_map.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_split_interval_map/test_split_interval_map.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -29,9 +29,7 @@
 // interval_sets: interval_set, separate_interval_set and split_interval_set.
 #include "../test_interval_map_shared.hpp"
 
-// Due to limited expressiveness of the testing framework, the testcode in files
-// test_interval_map{,_split}_shared.cpp is generated through code
-// replication. 
-#include "test_split_interval_map_shared.cpp"
+#define INTERVAL_MAP split_interval_map
+#include "../test_interval_map_cases.hpp"
 
 
Modified: sandbox/itl/libs/itl/test/test_split_interval_set/test_split_interval_set.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_split_interval_set/test_split_interval_set.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_split_interval_set/test_split_interval_set.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -27,9 +27,7 @@
 // interval_sets: interval_set, separate_interval_set and split_interval_set.
 #include "../test_interval_set_shared.hpp"
 
-// Due to limited expressiveness of the testing framework, the testcode in files
-// test_interval_set{,_separate,split}_shared.cpp are generated through code
-// replication. 
-#include "test_split_interval_set_shared.cpp"
+#define INTERVAL_SET split_interval_set 
+#include "../test_interval_set_cases.hpp"
 
 
Modified: sandbox/itl/libs/itl/test/test_split_interval_set/test_split_interval_set_shared.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_split_interval_set/test_split_interval_set_shared.cpp	(original)
+++ sandbox/itl/libs/itl/test/test_split_interval_set/test_split_interval_set_shared.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -5,65 +5,52 @@
       (See accompanying file LICENCE.txt or copy at
            http://www.boost.org/LICENSE_1_0.txt)
 +-----------------------------------------------------------------------------*/
-
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_fundamentals_4_ordered_types, T, ordered_types)
-{         interval_set_fundamentals_4_ordered_types<split_interval_set, T>();}
+{         interval_set_fundamentals_4_ordered_types<INTERVAL_SET, T>();}
 
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_ctor_4_bicremental_types, T, bicremental_types)
-{         interval_set_ctor_4_bicremental_types<split_interval_set, T>();}
+{         interval_set_ctor_4_bicremental_types<INTERVAL_SET, T>();}
 
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_add_sub_4_bicremental_types, T, bicremental_types)
-{         interval_set_add_sub_4_bicremental_types<split_interval_set, T>();}
+{         interval_set_add_sub_4_bicremental_types<INTERVAL_SET, T>();}
 
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_distinct_4_bicremental_types, T, bicremental_types)
-{         interval_set_distinct_4_bicremental_types<split_interval_set, T>();}
+{         interval_set_distinct_4_bicremental_types<INTERVAL_SET, T>();}
 
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_distinct_4_bicremental_continuous_types, T, bicremental_continuous_types)
-{         interval_set_distinct_4_bicremental_continuous_types<split_interval_set, T>();}
+{         interval_set_distinct_4_bicremental_continuous_types<INTERVAL_SET, T>();}
 
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_isolate_4_bicremental_continuous_types, T, bicremental_continuous_types)
-{         interval_set_isolate_4_bicremental_continuous_types<split_interval_set, T>();}
+{         interval_set_isolate_4_bicremental_continuous_types<INTERVAL_SET, T>();}
 
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_element_compare_4_bicremental_types, T, bicremental_types)
-{         interval_set_element_compare_4_bicremental_types<split_interval_set, T>();}
+{         interval_set_element_compare_4_bicremental_types<INTERVAL_SET, T>();}
 
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_contains_4_bicremental_types, T, bicremental_types)
-{         interval_set_contains_4_bicremental_types<split_interval_set, T>();}
+{         interval_set_contains_4_bicremental_types<INTERVAL_SET, T>();}
 
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_operators_4_bicremental_types, T, bicremental_types)
-{         interval_set_operators_4_bicremental_types<split_interval_set, T>();}
+{         interval_set_operators_4_bicremental_types<INTERVAL_SET, T>();}
 
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_base_intersect_4_bicremental_types, T, bicremental_types)
-{         interval_set_base_intersect_4_bicremental_types<split_interval_set, T>();}
+{         interval_set_base_intersect_4_bicremental_types<INTERVAL_SET, T>();}
 
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_infix_plus_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_plus_overload_4_bicremental_types<split_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_pipe_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_pipe_overload_4_bicremental_types<split_interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_et_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_et_overload_4_bicremental_types<interval_set, T>();}
-
-BOOST_AUTO_TEST_CASE_TEMPLATE
-(test_itl_interval_set_infix_caret_overload_4_bicremental_types, T, bicremental_types)
-{         interval_set_infix_caret_overload_4_bicremental_types<interval_set, T>();}
+{         interval_set_infix_plus_overload_4_bicremental_types<INTERVAL_SET, T>();}
 
 BOOST_AUTO_TEST_CASE_TEMPLATE
 (test_itl_interval_set_find_4_bicremental_types, T, bicremental_types)
-{         interval_set_find_4_bicremental_types<interval_set, T>();}
+{         interval_set_find_4_bicremental_types<INTERVAL_SET, T>();}
 
 
Added: sandbox/itl/libs/itl/test/test_split_interval_set_infix/test_split_interval_set_infix.cpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_split_interval_set_infix/test_split_interval_set_infix.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,33 @@
+/*-----------------------------------------------------------------------------+    
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#define BOOST_TEST_MODULE itl::interval_set unit test
+#include <string>
+#include <boost/mpl/list.hpp>
+#include <boost/test/unit_test.hpp>
+#include <boost/test/test_case_template.hpp>
+
+// interval instance types
+#include "../test_type_lists.hpp"
+#include "../test_value_maker.hpp"
+
+#include <boost/itl/split_interval_set.hpp>
+
+using namespace std;
+using namespace boost;
+using namespace unit_test;
+using namespace boost::itl;
+
+// -----------------------------------------------------------------------------
+// test_interval_set_shared are tests that should give identical results for all
+// interval_sets: interval_set, separate_interval_set and split_interval_set.
+#include "../test_interval_set_shared.hpp"
+
+#define INTERVAL_SET split_interval_set
+#include "../test_interval_set_infix_cases.hpp"
+
+
Added: sandbox/itl/libs/itl/test/test_split_interval_set_infix/vc9_test_split_interval_set_infix.vcproj
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_split_interval_set_infix/vc9_test_split_interval_set_infix.vcproj	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9,00"
+	Name="vc9_test_split_interval_set_infix"
+	ProjectGUID="{A731623C-94BC-4666-A419-35D3623E950E}"
+	RootNamespace="test_split_interval_set_infix"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="../../../../bin/debug/"
+			IntermediateDirectory="../../../../bin/obj/$(ProjectName)/debug/"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../../../../; ../../../../boost_1_35_0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../../../../bin/debug/$(ProjectName).exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="../../../../lib; ../../../../stage/lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="../../../../bin/release/"
+			IntermediateDirectory="../../../../bin/obj/$(ProjectName)/release/"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../../../../; ../../../../boost_1_35_0"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../../../../bin/release/$(ProjectName).exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="../../../../lib; ../../../../stage/lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Quelldateien"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\test_split_interval_set_infix.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Headerdateien"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\test_split_interval_set_infix_shared.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\test_type_lists.hpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Ressourcendateien"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Added: sandbox/itl/libs/itl/test/test_total_interval_quantifier/test_total_interval_quantifier.cpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_total_interval_quantifier/test_total_interval_quantifier.cpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,35 @@
+/*-----------------------------------------------------------------------------+    
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#define BOOST_TEST_MODULE itl::interval_set unit test
+#include <string>
+#include <boost/mpl/list.hpp>
+#include <boost/test/unit_test.hpp>
+#include <boost/test/test_case_template.hpp>
+
+// interval instance types
+#include "../test_type_lists.hpp"
+#include "../test_value_maker.hpp"
+#include "../test_laws.hpp"
+
+#include <boost/itl/interval_map.hpp>
+#include <boost/itl/split_interval_map.hpp>
+
+using namespace std;
+using namespace boost;
+using namespace unit_test;
+using namespace boost::itl;
+
+// -----------------------------------------------------------------------------
+// test_interval_set_shared are tests that should give identical results for all
+// interval_sets: interval_set, separate_interval_set and split_interval_set.
+#include "../test_interval_quantifier_shared.hpp"
+
+#define INTERVAL_MAP interval_map
+#include "../test_total_interval_quantifier_cases.hpp"
+
+
Added: sandbox/itl/libs/itl/test/test_total_interval_quantifier/vc9_test_total_interval_quantifier.vcproj
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_total_interval_quantifier/vc9_test_total_interval_quantifier.vcproj	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9,00"
+	Name="vc9_test_total_interval_quantifier"
+	ProjectGUID="{EE61B7EF-EC45-4165-8B4B-FD5B7D2A9F9F}"
+	RootNamespace="Test_total_interval_quantifier"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="../../../../bin/debug/"
+			IntermediateDirectory="../../../../bin/obj/$(ProjectName)/debug/"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/bigobj"
+				Optimization="0"
+				AdditionalIncludeDirectories="../../../../; ../../../../boost_1_35_0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../../../../bin/debug/$(ProjectName).exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="../../../../lib; ../../../../stage/lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="../../../../bin/release/"
+			IntermediateDirectory="../../../../bin/obj/$(ProjectName)/release/"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../../../../; ../../../../boost_1_35_0"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="../../../../bin/release/$(ProjectName).exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="../../../../lib; ../../../../stage/lib"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Quelldateien"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\test_total_interval_quantifier.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Headerdateien"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\test_total_interval_quantifier_shared.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\test_type_lists.hpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Ressourcendateien"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Added: sandbox/itl/libs/itl/test/test_total_interval_quantifier_cases.hpp
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/test/test_total_interval_quantifier_cases.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -0,0 +1,61 @@
+/*-----------------------------------------------------------------------------+
+Copyright (c) 2008-2009: Joachim Faulhaber
++------------------------------------------------------------------------------+
+   Distributed under the Boost Software License, Version 1.0.
+      (See accompanying file LICENCE.txt or copy at
+           http://www.boost.org/LICENSE_1_0.txt)
++-----------------------------------------------------------------------------*/
+#pragma once
+
+//------------------------------------------------------------------------------
+// total_absorber
+//------------------------------------------------------------------------------
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_total_quantifier_map_check_monoid_plus_4_bicremental_types, T, bicremental_types)
+{               quantifier_map_check_monoid_plus_4_bicremental_types<T, std::string, total_absorber, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_total_quantifier_map_check_monoid_et_4_bicremental_types, T, bicremental_types)
+{               quantifier_map_check_monoid_et_4_bicremental_types<T, int, total_absorber, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_total_quantifier_map_check_abelian_monoid_plus_4_bicremental_types, T, bicremental_types)
+{               quantifier_map_check_abelian_monoid_plus_4_bicremental_types<T, std::string, total_absorber, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_total_quantifier_map_check_abelian_monoid_et_4_bicremental_types, T, bicremental_types)
+{               quantifier_map_check_abelian_monoid_et_4_bicremental_types<T, int, total_absorber, INTERVAL_MAP>();}
+
+// (0-x) + x = 0 | total absorber
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_total_quantifier_map_check_abelian_group_plus_4_bicremental_types, T, bicremental_types)
+{               quantifier_map_check_abelian_group_plus_4_bicremental_types<T, int, total_absorber, INTERVAL_MAP>();}
+//------------------------------------------------------------------------------
+// total_enricher
+//------------------------------------------------------------------------------
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_total_enricher_quantifier_map_check_monoid_plus_4_bicremental_types, T, bicremental_types)
+{                        quantifier_map_check_monoid_plus_4_bicremental_types<T, std::string, total_enricher, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_total_enricher_quantifier_map_check_monoid_et_4_bicremental_types, T, bicremental_types)
+{                        quantifier_map_check_monoid_et_4_bicremental_types<T, int, total_enricher, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_total_enricher_quantifier_map_check_abelian_monoid_plus_4_bicremental_types, T, bicremental_types)
+{                        quantifier_map_check_abelian_monoid_plus_4_bicremental_types<T, std::string, total_enricher, INTERVAL_MAP>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_total_enricher_quantifier_map_check_abelian_monoid_et_4_bicremental_types, T, bicremental_types)
+{                        quantifier_map_check_abelian_monoid_et_4_bicremental_types<T, int, total_enricher, INTERVAL_MAP>();}
+
+// (0-x) + x =p= 0 | total absorber
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_itl_total_enricher_quantifier_map_check_abelian_group_plus_prot_inv_4_bicremental_types, T, bicremental_types)
+{                        quantifier_map_check_abelian_group_plus_prot_inv_4_bicremental_types<T, int, total_enricher, INTERVAL_MAP>();}
+
+
+//            absorber      enricher
+// partial    x - x == 0    x - x =p= 0   partiality of subtraction   
+// total    (-x)+ x == 0  (-x)+ x =p= 0   totality   of subtraction
+
Modified: sandbox/itl/libs/itl/test/test_type_lists.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_type_lists.hpp	(original)
+++ sandbox/itl/libs/itl/test/test_type_lists.hpp	2009-03-03 03:39:14 EST (Tue, 03 Mar 2009)
@@ -29,8 +29,8 @@
 
 //DBG short list for debugging
 typedef ::boost::mpl::list<
-    float
-> debug_type_list;
+    int
+> debug_types;
 
 typedef ::boost::mpl::list<
     float, double