$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r66493 - branches/release/boost/polygon/detail
From: lucanus.j.simonson_at_[hidden]
Date: 2010-11-11 11:49:00
Author: ljsimons
Date: 2010-11-11 11:48:57 EST (Thu, 11 Nov 2010)
New Revision: 66493
URL: http://svn.boost.org/trac/boost/changeset/66493
Log:
missing header
Added:
   branches/release/boost/polygon/detail/polygon_sort_adaptor.hpp   (contents, props changed)
Added: branches/release/boost/polygon/detail/polygon_sort_adaptor.hpp
==============================================================================
--- (empty file)
+++ branches/release/boost/polygon/detail/polygon_sort_adaptor.hpp	2010-11-11 11:48:57 EST (Thu, 11 Nov 2010)
@@ -0,0 +1,67 @@
+/*
+  Copyright 2008 Intel Corporation
+ 
+  Use, modification and distribution are subject to 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).
+*/
+#ifndef BOOST_POLYGON_SORT_ADAPTOR_HPP
+#define BOOST_POLYGON_SORT_ADAPTOR_HPP
+#ifdef __ICC
+#pragma warning(disable:2022)
+#pragma warning(disable:2023)
+#endif
+
+#include <algorithm>
+
+//! @brief gtlsort_adaptor default implementation that calls std::sort
+namespace boost {
+  namespace polygon {
+
+    template<typename iterator_type>
+    struct dummy_to_delay_instantiation{
+      typedef int unit_type; // default GTL unit 
+    };
+
+    //! @brief gtlsort_adaptor default implementation that calls std::sort
+    template<typename T>
+    struct gtlsort_adaptor {
+      //! @brief wrapper that mimics std::sort() function and takes
+      // the same arguments
+      template<typename RandomAccessIterator_Type>
+      static void sort(RandomAccessIterator_Type _First, 
+                       RandomAccessIterator_Type _Last)
+      {
+         std::sort(_First, _Last);
+      }
+      //! @brief wrapper that mimics std::sort() function overload and takes
+      // the same arguments
+      template<typename RandomAccessIterator_Type, typename Pred_Type>
+      static void sort(RandomAccessIterator_Type _First, 
+                       RandomAccessIterator_Type _Last, 
+                       const Pred_Type& _Comp)
+      {
+         std::sort(_First, _Last, _Comp);
+      }
+    };
+
+    //! @brief user level wrapper for sorting quantities 
+    template <typename iter_type>
+    void gtlsort(iter_type _b_, iter_type _e_) 
+    {
+      gtlsort_adaptor<typename dummy_to_delay_instantiation<iter_type>::unit_type>::sort(_b_, _e_);
+    }
+
+    //! @brief user level wrapper for sorting quantities that takes predicate
+    // as additional argument
+    template <typename iter_type, typename pred_type>
+    void gtlsort(iter_type _b_, iter_type _e_, const pred_type& _pred_) 
+    {
+      gtlsort_adaptor<typename dummy_to_delay_instantiation<iter_type>::unit_type>::sort(_b_, _e_, _pred_);
+    }
+
+
+    
+  } // namespace polygon
+}   // namespace boost 
+#endif