$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r69071 - in trunk: boost/icl boost/icl/concept boost/icl/type_traits libs/icl libs/icl/doc libs/icl/test libs/icl/test/fastest_split_interval_map_ libs/icl/test/fix_include_after_thread_ libs/icl/test/test_casual_
From: afojgo_at_[hidden]
Date: 2011-02-19 19:14:35
Author: jofaber
Date: 2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
New Revision: 69071
URL: http://svn.boost.org/trac/boost/changeset/69071
Log:
Bug fixes: Fixed enable_if guards for functions intersects, disjoint for domain and interval types and for lower, upper, first and last on interval containers. Added tests to the icl test suite.   
Properties modified: 
   trunk/boost/icl/   (props changed)
   trunk/libs/icl/   (props changed)
   trunk/libs/icl/doc/   (props changed)
Text files modified: 
   trunk/boost/icl/concept/interval_associator.hpp                                       |    47 +++++++++++++++++-------------          
   trunk/boost/icl/concept/interval_map.hpp                                              |     6 +-                                      
   trunk/boost/icl/type_traits/is_numeric.hpp                                            |     9 +++++                                   
   trunk/libs/icl/test/fastest_interval_map_cases.hpp                                    |     4 ++                                      
   trunk/libs/icl/test/fastest_interval_set_cases.hpp                                    |     8 +++++                                   
   trunk/libs/icl/test/fastest_split_interval_map_/vc9_fastest_split_interval_map.vcproj |     4 ++                                      
   trunk/libs/icl/test/fix_include_after_thread_/fix_include_after_thread.cpp            |     4 +-                                      
   trunk/libs/icl/test/test_casual_/test_casual.cpp                                      |    61 ++++++++++++++++++++++++++++++++++++++++
   trunk/libs/icl/test/test_interval_map_shared.hpp                                      |    46 ++++++++++++++++++++++++++++++          
   trunk/libs/icl/test/test_interval_set_cases.hpp                                       |     9 +++++                                   
   trunk/libs/icl/test/test_interval_set_shared.hpp                                      |    54 +++++++++++++++++++++++++++++++++++     
   trunk/libs/icl/test/test_type_lists.hpp                                               |    40 ++++++++++++++++++++++++-               
   trunk/libs/icl/test/vc9_icl_slow_tests.sln                                            |     6 +++                                     
   13 files changed, 270 insertions(+), 28 deletions(-)
Modified: trunk/boost/icl/concept/interval_associator.hpp
==============================================================================
--- trunk/boost/icl/concept/interval_associator.hpp	(original)
+++ trunk/boost/icl/concept/interval_associator.hpp	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -220,23 +220,25 @@
 
 template<class Type>
 typename enable_if<is_interval_container<Type>, 
-                   typename Type::interval_type>::type
+                   typename domain_type_of<Type>::type>::type
 lower(const Type& object)
 {
+    typedef typename domain_type_of<Type>::type DomainT;
     return 
         icl::is_empty(object) 
-            ? identity_element<typename Type::interval_type>::value()
+            ? unit_element<DomainT>::value()
             : icl::lower( key_value<Type>(object.begin()) );
 }
 
 template<class Type>
 typename enable_if<is_interval_container<Type>, 
-                   typename Type::interval_type>::type
+                   typename domain_type_of<Type>::type>::type
 upper(const Type& object)
 {
+    typedef typename domain_type_of<Type>::type DomainT;
     return 
         icl::is_empty(object) 
-            ? identity_element<typename Type::interval_type>::value()
+            ? identity_element<DomainT>::value()
             : icl::upper( key_value<Type>(object.rbegin()) );
 }
 
@@ -244,26 +246,28 @@
 template<class Type>
 typename enable_if
 < mpl::and_< is_interval_container<Type>
-           , is_discrete<typename Type::domain_type> >
-, typename Type::interval_type>::type
+           , is_discrete<typename domain_type_of<Type>::type> > 
+, typename domain_type_of<Type>::type>::type
 first(const Type& object)
 {
+    typedef typename domain_type_of<Type>::type DomainT;
     return 
         icl::is_empty(object) 
-            ? identity_element<typename Type::interval_type>::value()
+            ? unit_element<DomainT>::value()
             : icl::first( key_value<Type>(object.begin()) );
 }
 
 template<class Type>
 typename enable_if
 < mpl::and_< is_interval_container<Type>
-           , is_discrete<typename Type::domain_type> >
-, typename Type::interval_type>::type
+           , is_discrete<typename domain_type_of<Type>::type> >
+, typename domain_type_of<Type>::type>::type
 last(const Type& object)
 {
+    typedef typename domain_type_of<Type>::type DomainT;
     return 
         icl::is_empty(object) 
-            ? identity_element<typename Type::interval_type>::value()
+            ? identity_element<DomainT>::value()
             : icl::last( key_value<Type>(object.rbegin()) );
 }
 
@@ -646,7 +650,7 @@
 //------------------------------------------------------------------------------
 template<class Type, class CoType>
 typename enable_if<mpl::and_< is_interval_container<Type>
-                            , is_same<CoType, domain_type_of<Type> > >, 
+                            , is_same<CoType, typename domain_type_of<Type>::type> >, 
                    bool>::type
 intersects(const Type& left, const CoType& right)
 {
@@ -655,13 +659,14 @@
 
 template<class Type, class CoType>
 typename enable_if<mpl::and_< is_interval_container<Type>
-                            , is_same<CoType, interval_type_of<Type> > >, 
+                            , is_same<CoType, typename interval_type_of<Type>::type> >, 
                    bool>::type
 intersects(const Type& left, const CoType& right)
 {
     return left.find(right) != left.end();
 }
 
+
 template<class LeftT, class RightT>
 typename enable_if< mpl::and_< is_intra_combinable<LeftT, RightT> 
                              , mpl::or_<is_total<LeftT>, is_total<RightT> > >
@@ -720,14 +725,15 @@
     return false; 
 }
 
-template<class Type, class AssociateT>
-typename enable_if<mpl::and_< is_interval_map<Type>
-                            , is_inter_derivative<Type, AssociateT> >, 
-                   bool>::type
-intersects(const Type& left, const AssociateT& right)
-{
-    return icl::intersects(left, right);
-}
+//CL?
+//template<class Type, class AssociateT>
+//typename enable_if<mpl::and_< is_interval_map<Type>
+//                            , is_inter_derivative<Type, AssociateT> >, 
+//                   bool>::type
+//intersects(const Type& left, const AssociateT& right)
+//{
+//    return icl::intersects(left, right);
+//}
 
 /** \b Returns true, if \c left and \c right have no common elements.
     Intervals are interpreted as sequence of elements.
@@ -750,6 +756,7 @@
     return !intersects(left,right);
 }
 
+
 //==============================================================================
 //= Symmetric difference<IntervalSet|IntervalSet>
 //==============================================================================
Modified: trunk/boost/icl/concept/interval_map.hpp
==============================================================================
--- trunk/boost/icl/concept/interval_map.hpp	(original)
+++ trunk/boost/icl/concept/interval_map.hpp	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -433,7 +433,7 @@
 template<class Type, class OperandT>
 typename enable_if<mpl::and_< is_interval_map<Type>
                             , is_total<Type>
-                            , is_same<OperandT, segment_type_of<Type> > >, 
+                            , is_same<OperandT, typename segment_type_of<Type>::type> >, 
                    bool>::type
 intersects(const Type&, const OperandT&)
 {
@@ -443,7 +443,7 @@
 template<class Type, class OperandT>
 typename enable_if<mpl::and_< is_interval_map<Type>
                             , mpl::not_<is_total<Type> >
-                            , is_same<OperandT, segment_type_of<Type> > >, 
+                            , is_same<OperandT, typename segment_type_of<Type>::type> >, 
                    bool>::type
 intersects(const Type& object, const OperandT& operand)
 {
@@ -454,7 +454,7 @@
 
 template<class Type, class OperandT>
 typename enable_if<mpl::and_< is_interval_map<Type>
-                            , is_same<OperandT, element_type_of<Type> > >, 
+                            , is_same<OperandT, typename element_type_of<Type>::type> >, 
                    bool>::type
 intersects(const Type& object, const OperandT& operand)
 {
Modified: trunk/boost/icl/type_traits/is_numeric.hpp
==============================================================================
--- trunk/boost/icl/type_traits/is_numeric.hpp	(original)
+++ trunk/boost/icl/type_traits/is_numeric.hpp	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -14,10 +14,17 @@
 namespace boost{ namespace icl
 {
 
+template <class Type> struct is_fixed_numeric
+{
+    typedef is_fixed_numeric type;
+    BOOST_STATIC_CONSTANT(bool, value = (0 < std::numeric_limits<Type>::digits));
+};
+
 template <class Type> struct is_numeric
 {
     typedef is_numeric type;
-    BOOST_STATIC_CONSTANT(bool, value = (0 < std::numeric_limits<Type>::digits));
+    BOOST_STATIC_CONSTANT(bool, value = 
+        (mpl::or_<is_fixed_numeric<Type>, is_integral<Type> >::value) );
 };
 
 template <class Type> 
Modified: trunk/libs/icl/test/fastest_interval_map_cases.hpp
==============================================================================
--- trunk/libs/icl/test/fastest_interval_map_cases.hpp	(original)
+++ trunk/libs/icl/test/fastest_interval_map_cases.hpp	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -79,6 +79,10 @@
 (fastest_icl_interval_map_element_iter_4_discrete_types)
 {            interval_map_element_iter_4_discrete_types<discrete_type_2, int, partial_absorber, INTERVAL_MAP>();}
 
+BOOST_AUTO_TEST_CASE
+(fastest_icl_interval_map_intersects_4_bicremental_types)
+{            interval_map_intersects_4_bicremental_types<INTERVAL_MAP, bicremental_type_3, int>();}
+
 
 #endif // BOOST_ICL_FASTEST_INTERVAL_MAP_CASES_HPP_JOFA_090702
 
Modified: trunk/libs/icl/test/fastest_interval_set_cases.hpp
==============================================================================
--- trunk/libs/icl/test/fastest_interval_set_cases.hpp	(original)
+++ trunk/libs/icl/test/fastest_interval_set_cases.hpp	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -60,6 +60,14 @@
 (fastest_icl_interval_set_element_iter_4_discrete_types)
 {            interval_set_element_iter_4_discrete_types<INTERVAL_SET, discrete_type_2>();}
 
+BOOST_AUTO_TEST_CASE
+(fastest_icl_interval_set_intersects_4_bicremental_types)
+{            interval_set_intersects_4_bicremental_types<INTERVAL_SET, bicremental_type_3>();}
+
+BOOST_AUTO_TEST_CASE
+(fastest_icl_interval_set_range_4_discrete_types)
+{            interval_set_range_4_discrete_types<INTERVAL_SET, discrete_type_3>();}
+
 #endif // BOOST_ICL_FASTEST_INTERVAL_SET_CASES_HPP_JOFA_090702
 
 
Modified: trunk/libs/icl/test/fastest_split_interval_map_/vc9_fastest_split_interval_map.vcproj
==============================================================================
--- trunk/libs/icl/test/fastest_split_interval_map_/vc9_fastest_split_interval_map.vcproj	(original)
+++ trunk/libs/icl/test/fastest_split_interval_map_/vc9_fastest_split_interval_map.vcproj	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -204,6 +204,10 @@
                         UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
 			>
                 </Filter>
+		<File
+			RelativePath="..\vc9_icl_fast_tests.sln"
+			>
+		</File>
         </Files>
         <Globals>
         </Globals>
Modified: trunk/libs/icl/test/fix_include_after_thread_/fix_include_after_thread.cpp
==============================================================================
--- trunk/libs/icl/test/fix_include_after_thread_/fix_include_after_thread.cpp	(original)
+++ trunk/libs/icl/test/fix_include_after_thread_/fix_include_after_thread.cpp	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -26,8 +26,8 @@
 template <class Type> struct some_predicate
 { 
     BOOST_STATIC_CONSTANT(bool, 
-        value = ((some_attribute<Type>::value) < 0) 
-    //  value = ( some_attribute<Type>::value  < 0) 
+    //  value = ((some_attribute<Type>::value) < 0) 
+        value = ( some_attribute<Type>::value  < 0) 
                 //error C2059: syntax error : ')' ONLY
                 //IF <boost/thread.hpp> is included before
         ); 
Modified: trunk/libs/icl/test/test_casual_/test_casual.cpp
==============================================================================
--- trunk/libs/icl/test/test_casual_/test_casual.cpp	(original)
+++ trunk/libs/icl/test/test_casual_/test_casual.cpp	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -17,13 +17,58 @@
 #include "../test_type_lists.hpp"
 #include "../test_value_maker.hpp"
 
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/icl/gregorian.hpp>
+#include <boost/icl/ptime.hpp>
+
 #include <boost/icl/interval_map.hpp>
+#include <boost/icl/interval_set.hpp>
+#include <boost/icl/interval.hpp>
 
 using namespace std;
 using namespace boost;
 using namespace unit_test;
 using namespace boost::icl;
 
+
+BOOST_AUTO_TEST_CASE(float_infinity)
+{
+
+    typedef size_type_of<interval<float>::type>::type itv_float_size_type;
+
+    BOOST_CHECK( (is_same<size_type_of<interval<float>::type>::type, std::size_t>::value) );
+    BOOST_CHECK( (is_same<itv_float_size_type, std::size_t>::value) );
+    BOOST_CHECK( (is_same<itv_float_size_type, unsigned int>::value) );
+
+    cout << cardinality(interval<float>::closed(1,5))  << endl;
+    cout << icl::infinity<size_type_of<interval<float>::type>::type>::value() << endl;
+    //cout << (std::size_t)(icl::infinity<itv_float_size_type>::value) << endl;
+    cout << (std::numeric_limits<unsigned int>::max)() << endl;
+
+    BOOST_CHECK_EQUAL(
+      cardinality(interval<float>::closed(1,5))
+    , icl::infinity<itv_float_size_type>::value()
+    );
+
+    BOOST_CHECK_EQUAL(true, true);
+}
+
+BOOST_AUTO_TEST_CASE(lower_empty)
+{
+
+{
+  icl::interval_set<int> iclset;
+  iclset += interval<int>::right_open(1,5);
+  icl::interval_set<int> one;
+  one += 1;
+  BOOST_CHECK(icl::intersects( iclset, one ));
+  BOOST_CHECK(!icl::disjoint( iclset, one ));
+}
+
+    BOOST_CHECK_EQUAL(true, true);
+}
+
 BOOST_AUTO_TEST_CASE(casual)
 {
     //typedef int T;
@@ -32,6 +77,22 @@
     //typedef interval_set<T>                   IntervalSetT;
     //typedef IntervalMapT::interval_type       IntervalT;
 
+
+    interval_set<int> iclset;
+    interval<int>::type itv;
+    BOOST_CHECK(is_interval_container<interval_set<int> >::value);
+    BOOST_CHECK((is_same<int, typename domain_type_of<interval_set<int> >::type >::value));
+
+    icl::contains(iclset, 1);
+    icl::within(1, iclset);
+
+    icl::intersects(iclset, 1);
+    icl::intersects(iclset, itv);
+
+    icl::disjoint(iclset, 1);
+    icl::disjoint(iclset, itv);
+
+
     BOOST_CHECK_EQUAL(true, true);
 }
 
Modified: trunk/libs/icl/test/test_interval_map_shared.hpp
==============================================================================
--- trunk/libs/icl/test/test_interval_map_shared.hpp	(original)
+++ trunk/libs/icl/test/test_interval_map_shared.hpp	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -1309,5 +1309,51 @@
 
 }
 
+
+template 
+<
+#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
+    ICL_IntervalMap_TEMPLATE(T,U,Traits,partial_absorber) IntervalMap,
+#else
+    ICL_IntervalMap_TEMPLATE(_T,_U,Traits,partial_absorber) IntervalMap,
+#endif
+    class T, class U
+>
+void interval_map_intersects_4_bicremental_types()
+{
+    // Test of intersects and disjoint for domain_type and interval_type.
+    typedef IntervalMap<T,U> IntervalMapT;
+    typedef typename IntervalMapT::interval_type   IntervalT;
+
+    typename IntervalMapT::interval_mapping_type val_pair1 = IDv(6,9,1);
+    std::pair<const IntervalT, U> val_pair2 = IDv(3,5,3);
+    mapping_pair<T,U> map_pair = K_v(4,3);
+
+    IntervalMapT map_a;
+    map_a.add(CDv(1,3,1)).add(IDv(8,9,1)).add(IIv(6,11,3));
+
+    BOOST_CHECK( icl::is_interval_container<IntervalMapT>::value );
+    BOOST_CHECK( icl::has_domain_type<IntervalMapT>::value );
+    BOOST_CHECK( (is_same<T, typename domain_type_of<IntervalMapT>::type>::value) );
+
+    BOOST_CHECK( icl::intersects(map_a,  MK_v(2) ) );
+    BOOST_CHECK( icl::intersects(map_a,  MK_v(11)) );
+    BOOST_CHECK( icl::disjoint(map_a, MK_v(1) ) );
+    BOOST_CHECK( icl::disjoint(map_a, MK_v(12)) );
+
+    BOOST_CHECK( icl::intersects(map_a, I_D(2,3)) );
+    BOOST_CHECK( icl::intersects(map_a, I_D(6,8)) );
+    BOOST_CHECK( icl::disjoint(map_a,   I_D(3,5)) );
+    BOOST_CHECK( icl::disjoint(map_a,  I_D(12,14)) );
+
+    //-------------------------------------+
+    //   (1   3)      [6   8)[8 9)[9    11]
+    //      1            3     4      3
+    //mapping_pair<T,U> map_pair_2_1  = K_v(2,1);
+    //BOOST_CHECK( icl::intersects(map_a,  map_pair_2_1 ) ); //JODO
+    
+}
+
+
 #endif // LIBS_ICL_TEST_TEST_INTERVAL_MAP_SHARED_HPP_JOFA_081005
 
Modified: trunk/libs/icl/test/test_interval_set_cases.hpp
==============================================================================
--- trunk/libs/icl/test/test_interval_set_cases.hpp	(original)
+++ trunk/libs/icl/test/test_interval_set_cases.hpp	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -60,6 +60,15 @@
 (test_icl_interval_set_element_iter_4_discrete_types, T, discrete_types)
 {         interval_set_element_iter_4_discrete_types<INTERVAL_SET, T>();}
 
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_icl_interval_set_intersects_4_bicremental_types, T, bicremental_types)
+{         interval_set_intersects_4_bicremental_types<INTERVAL_SET, T>();}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE
+(test_icl_interval_set_range_4_discrete_types, T, discrete_types)
+{         interval_set_range_4_discrete_types<INTERVAL_SET, T>();}
+
+
 #endif // BOOST_ICL_TEST_INTERVAL_SET_CASES_HPP_JOFA_090701
 
 
Modified: trunk/libs/icl/test/test_interval_set_shared.hpp
==============================================================================
--- trunk/libs/icl/test/test_interval_set_shared.hpp	(original)
+++ trunk/libs/icl/test/test_interval_set_shared.hpp	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -677,6 +677,60 @@
     BOOST_CHECK_EQUAL( found == set_a.end(), true );
 }
 
+
+template <ICL_IntervalSet_TEMPLATE(_T) IntervalSet, class T>
+void interval_set_intersects_4_bicremental_types()
+{
+    typedef IntervalSet<T> IntervalSetT;
+    typedef typename IntervalSetT::interval_type IntervalT;
+    typedef typename IntervalSetT::key_type      KeyT;
+
+    IntervalT between = I_D(3,5);
+
+    IntervalSetT set_a;
+    set_a.add(C_D(1,3)).add(I_I(6,11));
+    //         (1   3)         [6    11]
+    BOOST_CHECK( icl::intersects(set_a, MK_v(2)) );
+    BOOST_CHECK( icl::intersects(set_a, MK_v(11)) );
+    BOOST_CHECK( icl::disjoint(set_a, MK_v(3)) );
+    BOOST_CHECK( icl::disjoint(set_a, MK_v(5)) );
+
+    BOOST_CHECK( icl::intersects(set_a, C_D(1,3)) );
+    BOOST_CHECK( icl::intersects(set_a, I_D(8,10)) );
+    BOOST_CHECK( icl::disjoint(set_a, between) );
+    BOOST_CHECK( icl::disjoint(set_a, I_I(0,1)) );
+
+    IntervalSetT to_12 = IntervalSetT(I_D(0, 13));
+    IntervalSetT complement_a = to_12 - set_a;
+    BOOST_CHECK( icl::disjoint(set_a, complement_a) );
+    BOOST_CHECK( icl::intersects(to_12, set_a) );
+
+    BOOST_CHECK_EQUAL( icl::lower(set_a), icl::lower(*(set_a.begin())) );
+    BOOST_CHECK_EQUAL( icl::lower(set_a), MK_v(1) );
+    BOOST_CHECK_EQUAL( icl::upper(set_a), icl::upper(*(set_a.rbegin())) );
+    BOOST_CHECK_EQUAL( icl::upper(set_a), MK_v(11) );
+}
+
+
+template <ICL_IntervalSet_TEMPLATE(_T) IntervalSet, class T>
+void interval_set_range_4_discrete_types()
+{
+    typedef IntervalSet<T> IntervalSetT;
+    typedef typename IntervalSetT::interval_type IntervalT;
+    typedef typename IntervalSetT::key_type      KeyT;
+
+    IntervalT between = I_D(3,5);
+
+    IntervalSetT set_a;
+    set_a.add(C_D(1,3)).add(I_I(6,11));
+    //         (1   3)         [6    11]
+    BOOST_CHECK_EQUAL( icl::first(set_a), icl::first(*(set_a.begin())) );
+    BOOST_CHECK_EQUAL( icl::first(set_a), MK_v(2) );
+    BOOST_CHECK_EQUAL( icl::last(set_a), icl::last(*(set_a.rbegin())) );
+    BOOST_CHECK_EQUAL( icl::last(set_a), MK_v(11) );
+}
+
+
 template <ICL_IntervalSet_TEMPLATE(_T) IntervalSet, class T>
 void interval_bitset_find_4_integral_types()
 {
Modified: trunk/libs/icl/test/test_type_lists.hpp
==============================================================================
--- trunk/libs/icl/test/test_type_lists.hpp	(original)
+++ trunk/libs/icl/test/test_type_lists.hpp	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -8,13 +8,21 @@
 #ifndef BOOST_ICL_TEST_TYPE_LISTS_HPP_JOFA_080916
 #define BOOST_ICL_TEST_TYPE_LISTS_HPP_JOFA_080916
 
+//#define BOOST_ICL_TEST_XINT
+
 #include <boost/mpl/list.hpp>
 
 // interval instance types
 #include <boost/icl/gregorian.hpp> 
 #include <boost/icl/ptime.hpp> 
+
+#ifdef BOOST_ICL_TEST_XINT
+#include <boost/icl/xint.hpp>
+#endif
+
 #include <boost/icl/rational.hpp> 
 
+
 #if(_MSC_VER < 1500 && defined(_DEBUG) ) // 1500 = MSVC-9.0
 typedef int boost_posix_time_ptime;
 typedef int boost_posix_time_duration;
@@ -23,8 +31,10 @@
 #else
 typedef boost::posix_time::ptime         boost_posix_time_ptime;
 typedef boost::posix_time::time_duration boost_posix_time_duration;
-typedef boost::gregorian::date           boost_gregorian_date; 
-typedef boost::gregorian::date_duration  boost_gregorian_date_duration;
+typedef int                              boost_gregorian_date; 
+typedef int                              boost_gregorian_date_duration;
+//typedef boost::gregorian::date           boost_gregorian_date; //JODO URG REV
+//typedef boost::gregorian::date_duration  boost_gregorian_date_duration;
 #endif
 
 typedef ::boost::mpl::list<
@@ -32,6 +42,10 @@
     ,short, int, long, long long
     ,float, double, long double
     ,boost::rational<int>
+#ifdef BOOST_ICL_TEST_XINT
+    ,boost::xint::integer
+    ,boost::rational<boost::xint::integer>
+#endif
     ,boost_posix_time_ptime
     ,boost_posix_time_duration
     ,boost_gregorian_date
@@ -53,6 +67,10 @@
      short, int, long, long long
     ,float, double, long double
     ,boost::rational<int>
+#ifdef BOOST_ICL_TEST_XINT
+    ,boost::xint::integer
+    ,boost::rational<boost::xint::integer>
+#endif
 > signed_bicremental_types;
 
 typedef          int             signed_bicremental_type_1;
@@ -69,6 +87,9 @@
 typedef ::boost::mpl::list<
     float, double, long double
     ,boost::rational<int>
+#ifdef BOOST_ICL_TEST_XINT
+    ,boost::rational<boost::xint::integer>
+#endif
 > bicremental_continuous_types;
 
 typedef float                bicremental_continuous_type_1;
@@ -80,6 +101,9 @@
     unsigned short, unsigned int
     ,unsigned long, unsigned long long  
     ,short, int, long, long long
+#ifdef BOOST_ICL_TEST_XINT
+    ,boost::xint::integer
+#endif
 > integral_types;
 
 typedef int           integral_type_1;
@@ -91,6 +115,9 @@
     unsigned short, unsigned int
     ,unsigned long, unsigned long long  
     ,short, int, long
+#ifdef BOOST_ICL_TEST_XINT
+    ,boost::xint::integer
+#endif
     ,boost_posix_time_ptime
     ,boost_posix_time_ptime
     ,boost_posix_time_duration
@@ -116,6 +143,9 @@
 typedef ::boost::mpl::list<
     float, double, long double
     ,boost::rational<int>
+#ifdef BOOST_ICL_TEST_XINT
+    ,boost::rational<boost::xint::integer>
+#endif
 > numeric_continuous_types;
 
 typedef double               numeric_continuous_type_1;
@@ -126,6 +156,9 @@
 typedef ::boost::mpl::list<
     float, double, long double
     ,boost::rational<int>
+#ifdef BOOST_ICL_TEST_XINT
+    ,boost::rational<boost::xint::integer>
+#endif
     ,std::string
 > continuous_types;
 
@@ -140,6 +173,9 @@
     ,short, int, long, long long
     ,float, double, long double
     ,boost::rational<int>
+#ifdef BOOST_ICL_TEST_XINT
+    ,boost::xint::integer
+#endif
     ,std::string
     ,boost_posix_time_ptime
     ,boost_posix_time_duration
Modified: trunk/libs/icl/test/vc9_icl_slow_tests.sln
==============================================================================
--- trunk/libs/icl/test/vc9_icl_slow_tests.sln	(original)
+++ trunk/libs/icl/test/vc9_icl_slow_tests.sln	2011-02-19 19:14:31 EST (Sat, 19 Feb 2011)
@@ -47,6 +47,8 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_total_icl_quantifier", "test_total_icl_quantifier_\vc9_test_total_icl_quantifier.vcproj", "{EE61B7EF-EC45-4165-8B4B-FD5B7D5A9F9F}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vc9_test_casual", "test_casual_\vc9_test_casual.vcproj", "{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}"
+EndProject
 Global
         GlobalSection(SolutionConfigurationPlatforms) = preSolution
                 Debug|Win32 = Debug|Win32
@@ -145,6 +147,10 @@
                 {EE61B7EF-EC45-4165-8B4B-FD5B7D5A9F9F}.Debug|Win32.Build.0 = Debug|Win32
                 {EE61B7EF-EC45-4165-8B4B-FD5B7D5A9F9F}.Release|Win32.ActiveCfg = Release|Win32
                 {EE61B7EF-EC45-4165-8B4B-FD5B7D5A9F9F}.Release|Win32.Build.0 = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Debug|Win32.Build.0 = Debug|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Release|Win32.ActiveCfg = Release|Win32
+		{EE61B7EF-EC45-4165-8B49-FD5B8D3A9FA0}.Release|Win32.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(SolutionProperties) = preSolution
                 HideSolutionNode = FALSE