$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r71362 - in trunk/boost/icl: . concept detail type_traits
From: afojgo_at_[hidden]
Date: 2011-04-17 17:07:37
Author: jofaber
Date: 2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
New Revision: 71362
URL: http://svn.boost.org/trac/boost/changeset/71362
Log:
Added macro BOOST_ICL_USE_COMPARE_STD_GREATER to change container and interval orderings for the library.
This can be used to change the compare-ordering for whole test-programs. (ticket #5482).
Properties modified: 
   trunk/boost/icl/   (props changed)
Text files modified: 
   trunk/boost/icl/closed_interval.hpp                   |     2 +-                                      
   trunk/boost/icl/concept/interval.hpp                  |     7 +++++++                                 
   trunk/boost/icl/continuous_interval.hpp               |     2 +-                                      
   trunk/boost/icl/detail/design_config.hpp              |    10 ++++++++--                              
   trunk/boost/icl/detail/std_set.hpp                    |     7 +++++++                                 
   trunk/boost/icl/discrete_interval.hpp                 |     2 +-                                      
   trunk/boost/icl/interval.hpp                          |     2 +-                                      
   trunk/boost/icl/interval_base_map.hpp                 |     2 +-                                      
   trunk/boost/icl/interval_base_set.hpp                 |     2 +-                                      
   trunk/boost/icl/interval_map.hpp                      |     2 +-                                      
   trunk/boost/icl/interval_set.hpp                      |     2 +-                                      
   trunk/boost/icl/left_open_interval.hpp                |     2 +-                                      
   trunk/boost/icl/map.hpp                               |     2 +-                                      
   trunk/boost/icl/open_interval.hpp                     |     2 +-                                      
   trunk/boost/icl/right_open_interval.hpp               |     2 +-                                      
   trunk/boost/icl/separate_interval_set.hpp             |     2 +-                                      
   trunk/boost/icl/split_interval_map.hpp                |     2 +-                                      
   trunk/boost/icl/split_interval_set.hpp                |     2 +-                                      
   trunk/boost/icl/type_traits/interval_type_default.hpp |     2 +-                                      
   19 files changed, 38 insertions(+), 18 deletions(-)
Modified: trunk/boost/icl/closed_interval.hpp
==============================================================================
--- trunk/boost/icl/closed_interval.hpp	(original)
+++ trunk/boost/icl/closed_interval.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -16,7 +16,7 @@
 {
 
 template <class DomainT, 
-          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(std::less, DomainT)>
+          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT)>
 class closed_interval
 {
 public:
Modified: trunk/boost/icl/concept/interval.hpp
==============================================================================
--- trunk/boost/icl/concept/interval.hpp	(original)
+++ trunk/boost/icl/concept/interval.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -897,6 +897,13 @@
             || (lower_equal(left,right) && upper_less(left,right)); 
 }
 
+template<class Type>
+inline typename boost::enable_if<is_interval<Type>, bool>::type
+operator > (const Type& left, const Type& right)
+{
+    return right < left;
+}
+
 
 
 //------------------------------------------------------------------------------
Modified: trunk/boost/icl/continuous_interval.hpp
==============================================================================
--- trunk/boost/icl/continuous_interval.hpp	(original)
+++ trunk/boost/icl/continuous_interval.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -24,7 +24,7 @@
 {
 
 template <class DomainT, 
-          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(std::less, DomainT)>
+          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT)>
 class continuous_interval
 {
 public:
Modified: trunk/boost/icl/detail/design_config.hpp
==============================================================================
--- trunk/boost/icl/detail/design_config.hpp	(original)
+++ trunk/boost/icl/detail/design_config.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -95,10 +95,16 @@
 
 
 //------------------------------------------------------------------------------
-#define ICL_INTERVAL_DEFAULT boost::icl::interval_type_default
+#define ICL_ALLOC    template<class>class
 
 //------------------------------------------------------------------------------
-#define ICL_ALLOC    template<class>class
+#define ICL_INTERVAL_DEFAULT boost::icl::interval_type_default
+
+#ifndef BOOST_ICL_USE_COMPARE_STD_GREATER
+#   define ICL_COMPARE_DEFAULT std::less
+#else
+#   define ICL_COMPARE_DEFAULT std::greater
+#endif
 
 //------------------------------------------------------------------------------
 
Modified: trunk/boost/icl/detail/std_set.hpp
==============================================================================
--- trunk/boost/icl/detail/std_set.hpp	(original)
+++ trunk/boost/icl/detail/std_set.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -32,6 +32,13 @@
     { return "set<"+ type_to_string<Type>::apply() +">"; }
 };
 
+template <class Type>
+struct type_to_string<std::set<Type, std::greater<Type> > >
+{
+    static std::string apply()
+    { return "set<"+ type_to_string<Type>::apply() +" g>"; }
+};
+
 }} // namespace icl boost
 
 #endif // BOOST_ICL_DETAIL_STD_SET_HPP_JOFA_101007
Modified: trunk/boost/icl/discrete_interval.hpp
==============================================================================
--- trunk/boost/icl/discrete_interval.hpp	(original)
+++ trunk/boost/icl/discrete_interval.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -24,7 +24,7 @@
 {
 
 template <class DomainT, 
-          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(std::less, DomainT)>
+          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT)>
 class discrete_interval
 {
 public:
Modified: trunk/boost/icl/interval.hpp
==============================================================================
--- trunk/boost/icl/interval.hpp	(original)
+++ trunk/boost/icl/interval.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -18,7 +18,7 @@
     template <class IntervalT, bool IsDiscrete, bound_type PretendedBounds, bound_type RepresentedBounds> 
     struct static_interval;
 
-    template <class DomainT, ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(std::less, DomainT)> 
+    template <class DomainT, ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT)> 
     struct interval
     {
         typedef typename interval_type_default<DomainT,Compare>::type interval_type;
Modified: trunk/boost/icl/interval_base_map.hpp
==============================================================================
--- trunk/boost/icl/interval_base_map.hpp	(original)
+++ trunk/boost/icl/interval_base_map.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -50,7 +50,7 @@
     typename DomainT,
     typename CodomainT,
     class Traits = icl::partial_absorber,
-    ICL_COMPARE Compare  = ICL_COMPARE_INSTANCE(std::less, DomainT),
+    ICL_COMPARE Compare  = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT),
     ICL_COMBINE Combine  = ICL_COMBINE_INSTANCE(icl::inplace_plus, CodomainT),
     ICL_SECTION Section  = ICL_SECTION_INSTANCE(icl::inter_section, CodomainT), 
     ICL_INTERVAL(ICL_COMPARE) Interval = ICL_INTERVAL_INSTANCE(ICL_INTERVAL_DEFAULT, DomainT, Compare),
Modified: trunk/boost/icl/interval_base_set.hpp
==============================================================================
--- trunk/boost/icl/interval_base_set.hpp	(original)
+++ trunk/boost/icl/interval_base_set.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -44,7 +44,7 @@
 <
     typename             SubType,
     typename             DomainT, 
-    ICL_COMPARE Compare  = ICL_COMPARE_INSTANCE(std::less, DomainT),
+    ICL_COMPARE Compare  = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT),
     ICL_INTERVAL(ICL_COMPARE) Interval = ICL_INTERVAL_INSTANCE(ICL_INTERVAL_DEFAULT, DomainT, Compare),
     ICL_ALLOC   Alloc    = std::allocator
 > 
Modified: trunk/boost/icl/interval_map.hpp
==============================================================================
--- trunk/boost/icl/interval_map.hpp	(original)
+++ trunk/boost/icl/interval_map.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -28,7 +28,7 @@
     typename DomainT,
     typename CodomainT,
     class Traits = icl::partial_absorber,
-    ICL_COMPARE Compare  = ICL_COMPARE_INSTANCE(std::less, DomainT),
+    ICL_COMPARE Compare  = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT),
     ICL_COMBINE Combine  = ICL_COMBINE_INSTANCE(icl::inplace_plus, CodomainT),
     ICL_SECTION Section  = ICL_SECTION_INSTANCE(icl::inter_section, CodomainT), 
     ICL_INTERVAL(ICL_COMPARE) Interval = ICL_INTERVAL_INSTANCE(ICL_INTERVAL_DEFAULT, DomainT, Compare),
Modified: trunk/boost/icl/interval_set.hpp
==============================================================================
--- trunk/boost/icl/interval_set.hpp	(original)
+++ trunk/boost/icl/interval_set.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -20,7 +20,7 @@
 template 
 <
     typename    DomainT, 
-    ICL_COMPARE Compare  = ICL_COMPARE_INSTANCE(std::less, DomainT),
+    ICL_COMPARE Compare  = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT),
     ICL_INTERVAL(ICL_COMPARE) Interval = ICL_INTERVAL_INSTANCE(ICL_INTERVAL_DEFAULT, DomainT, Compare),
     ICL_ALLOC   Alloc    = std::allocator
 > 
Modified: trunk/boost/icl/left_open_interval.hpp
==============================================================================
--- trunk/boost/icl/left_open_interval.hpp	(original)
+++ trunk/boost/icl/left_open_interval.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -18,7 +18,7 @@
 {
 
 template <class DomainT, 
-          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(std::less, DomainT)>
+          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT)>
 class left_open_interval
 {
 public:
Modified: trunk/boost/icl/map.hpp
==============================================================================
--- trunk/boost/icl/map.hpp	(original)
+++ trunk/boost/icl/map.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -87,7 +87,7 @@
     typename DomainT, 
     typename CodomainT, 
     class Traits = icl::partial_absorber,
-    ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(std::less, DomainT),
+    ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT),
     ICL_COMBINE Combine = ICL_COMBINE_INSTANCE(icl::inplace_plus, CodomainT),
     ICL_SECTION Section = ICL_SECTION_INSTANCE(icl::inter_section, CodomainT), 
     ICL_ALLOC   Alloc   = std::allocator 
Modified: trunk/boost/icl/open_interval.hpp
==============================================================================
--- trunk/boost/icl/open_interval.hpp	(original)
+++ trunk/boost/icl/open_interval.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -18,7 +18,7 @@
 {
 
 template <class DomainT, 
-          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(std::less, DomainT)>
+          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT)>
 class open_interval
 {
 public:
Modified: trunk/boost/icl/right_open_interval.hpp
==============================================================================
--- trunk/boost/icl/right_open_interval.hpp	(original)
+++ trunk/boost/icl/right_open_interval.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -19,7 +19,7 @@
 {
 
 template <class DomainT, 
-          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(std::less, DomainT)>
+          ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT)>
 class right_open_interval
 {
 public:
Modified: trunk/boost/icl/separate_interval_set.hpp
==============================================================================
--- trunk/boost/icl/separate_interval_set.hpp	(original)
+++ trunk/boost/icl/separate_interval_set.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -20,7 +20,7 @@
 template 
 <
     typename                         DomainT, 
-    ICL_COMPARE                      Compare  = ICL_COMPARE_INSTANCE(std::less, DomainT),
+    ICL_COMPARE                      Compare  = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT),
     ICL_INTERVAL(ICL_COMPARE) Interval = ICL_INTERVAL_INSTANCE(ICL_INTERVAL_DEFAULT, DomainT, Compare),
     ICL_ALLOC                        Alloc    = std::allocator
 > 
Modified: trunk/boost/icl/split_interval_map.hpp
==============================================================================
--- trunk/boost/icl/split_interval_map.hpp	(original)
+++ trunk/boost/icl/split_interval_map.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -24,7 +24,7 @@
     typename DomainT,
     typename CodomainT,
     class Traits = icl::partial_absorber,
-    ICL_COMPARE Compare  = ICL_COMPARE_INSTANCE(std::less, DomainT),
+    ICL_COMPARE Compare  = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT),
     ICL_COMBINE Combine  = ICL_COMBINE_INSTANCE(icl::inplace_plus, CodomainT),
     ICL_SECTION Section  = ICL_SECTION_INSTANCE(icl::inter_section, CodomainT), 
     ICL_INTERVAL(ICL_COMPARE) Interval = ICL_INTERVAL_INSTANCE(ICL_INTERVAL_DEFAULT, DomainT, Compare),
Modified: trunk/boost/icl/split_interval_set.hpp
==============================================================================
--- trunk/boost/icl/split_interval_set.hpp	(original)
+++ trunk/boost/icl/split_interval_set.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -21,7 +21,7 @@
 template 
 <
     typename                  DomainT, 
-    ICL_COMPARE               Compare  = ICL_COMPARE_INSTANCE(std::less, DomainT),
+    ICL_COMPARE               Compare  = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT),
     ICL_INTERVAL(ICL_COMPARE) Interval = ICL_INTERVAL_INSTANCE(ICL_INTERVAL_DEFAULT, DomainT, Compare),
     ICL_ALLOC                 Alloc    = std::allocator
 > 
Modified: trunk/boost/icl/type_traits/interval_type_default.hpp
==============================================================================
--- trunk/boost/icl/type_traits/interval_type_default.hpp	(original)
+++ trunk/boost/icl/type_traits/interval_type_default.hpp	2011-04-17 17:07:35 EDT (Sun, 17 Apr 2011)
@@ -22,7 +22,7 @@
 namespace boost{ namespace icl
 {
 
-    template <class DomainT, ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(std::less, DomainT)> 
+    template <class DomainT, ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT)> 
     struct interval_type_default
     {
 #ifdef BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS