]> git.lyx.org Git - lyx.git/blobdiff - boost/boost/iterator/permutation_iterator.hpp
Don't allow newline characters in document settings.
[lyx.git] / boost / boost / iterator / permutation_iterator.hpp
index 05c740d348b3bddc255e27e36350187e035f5657..23d11986da4cb3b516c18ec1110b469b6a7db293 100644 (file)
@@ -1,72 +1,72 @@
-// (C) Copyright Toon Knapen    2001.\r
-// (C) Copyright David Abrahams 2003.\r
-// (C) Copyright Roland Richter 2003.\r
-// Distributed under the Boost Software License, Version 1.0. (See\r
-// accompanying file LICENSE_1_0.txt or copy at\r
-// http://www.boost.org/LICENSE_1_0.txt)\r
-\r
-#ifndef BOOST_PERMUTATION_ITERATOR_HPP\r
-#define BOOST_PERMUTATION_ITERATOR_HPP\r
-\r
-#include <iterator>\r
-\r
-#include <boost/iterator/iterator_adaptor.hpp>\r
-\r
-\r
-namespace boost\r
-{\r
-\r
-template< class ElementIterator\r
-        , class IndexIterator>\r
-class permutation_iterator\r
-  : public iterator_adaptor< \r
-             permutation_iterator<ElementIterator, IndexIterator>\r
-           , IndexIterator, typename detail::iterator_traits<ElementIterator>::value_type\r
-           , use_default, typename detail::iterator_traits<ElementIterator>::reference>\r
-{\r
-  typedef iterator_adaptor< \r
-            permutation_iterator<ElementIterator, IndexIterator>\r
-          , IndexIterator, typename detail::iterator_traits<ElementIterator>::value_type\r
-          , use_default, typename detail::iterator_traits<ElementIterator>::reference> super_t;\r
-\r
-  friend class iterator_core_access;\r
-\r
-public:\r
-  permutation_iterator() : m_elt_iter() {}\r
-\r
-  explicit permutation_iterator(ElementIterator x, IndexIterator y) \r
-      : super_t(y), m_elt_iter(x) {}\r
-\r
-  template<class OtherElementIterator, class OtherIndexIterator>\r
-  permutation_iterator(\r
-      permutation_iterator<OtherElementIterator, OtherIndexIterator> const& r\r
-      , typename enable_if_convertible<OtherElementIterator, ElementIterator>::type* = 0\r
-      , typename enable_if_convertible<OtherIndexIterator, IndexIterator>::type* = 0\r
-      )\r
-    : super_t(r.base()), m_elt_iter(r.m_elt_iter)\r
-  {}\r
-\r
-private:\r
-    typename super_t::reference dereference() const\r
-        { return *(m_elt_iter + *this->base()); }\r
-\r
-#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS\r
-    template <class,class> friend class permutation_iterator;\r
-#else\r
- public:\r
-#endif \r
-    ElementIterator m_elt_iter;\r
-};\r
-\r
-\r
-template <class ElementIterator, class IndexIterator>\r
-permutation_iterator<ElementIterator, IndexIterator> \r
-make_permutation_iterator( ElementIterator e, IndexIterator i )\r
-{\r
-    return permutation_iterator<ElementIterator, IndexIterator>( e, i );\r
-}\r
-\r
-\r
-} // namespace boost\r
-\r
-#endif\r
+// (C) Copyright Toon Knapen    2001.
+// (C) Copyright David Abrahams 2003.
+// (C) Copyright Roland Richter 2003.
+// 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)
+
+#ifndef BOOST_PERMUTATION_ITERATOR_HPP
+#define BOOST_PERMUTATION_ITERATOR_HPP
+
+#include <iterator>
+
+#include <boost/iterator/iterator_adaptor.hpp>
+
+
+namespace boost
+{
+
+template< class ElementIterator
+        , class IndexIterator>
+class permutation_iterator
+  : public iterator_adaptor< 
+             permutation_iterator<ElementIterator, IndexIterator>
+           , IndexIterator, typename detail::iterator_traits<ElementIterator>::value_type
+           , use_default, typename detail::iterator_traits<ElementIterator>::reference>
+{
+  typedef iterator_adaptor< 
+            permutation_iterator<ElementIterator, IndexIterator>
+          , IndexIterator, typename detail::iterator_traits<ElementIterator>::value_type
+          , use_default, typename detail::iterator_traits<ElementIterator>::reference> super_t;
+
+  friend class iterator_core_access;
+
+public:
+  permutation_iterator() : m_elt_iter() {}
+
+  explicit permutation_iterator(ElementIterator x, IndexIterator y) 
+      : super_t(y), m_elt_iter(x) {}
+
+  template<class OtherElementIterator, class OtherIndexIterator>
+  permutation_iterator(
+      permutation_iterator<OtherElementIterator, OtherIndexIterator> const& r
+      , typename enable_if_convertible<OtherElementIterator, ElementIterator>::type* = 0
+      , typename enable_if_convertible<OtherIndexIterator, IndexIterator>::type* = 0
+      )
+    : super_t(r.base()), m_elt_iter(r.m_elt_iter)
+  {}
+
+private:
+    typename super_t::reference dereference() const
+        { return *(m_elt_iter + *this->base()); }
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+    template <class,class> friend class permutation_iterator;
+#else
+ public:
+#endif 
+    ElementIterator m_elt_iter;
+};
+
+
+template <class ElementIterator, class IndexIterator>
+permutation_iterator<ElementIterator, IndexIterator> 
+make_permutation_iterator( ElementIterator e, IndexIterator i )
+{
+    return permutation_iterator<ElementIterator, IndexIterator>( e, i );
+}
+
+
+} // namespace boost
+
+#endif