blob: eb752926edaf0e01db166dc4e58324bb1f8d38eb [file] [log] [blame]
Jeff Thompsonef2d5a42013-08-22 19:09:24 -07001// Boost.Range library
2//
3// Copyright Thorsten Ottosen 2003-2004. Use, modification and
4// distribution is subject to the Boost Software License, Version
5// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6// http://www.boost.org/LICENSE_1_0.txt)
7//
8// For more information, see http://www.boost.org/libs/range/
9//
10
Jeff Thompson3d613fd2013-10-15 15:39:04 -070011#ifndef NDNBOOST_RANGE_DETAIL_CONST_ITERATOR_HPP
12#define NDNBOOST_RANGE_DETAIL_CONST_ITERATOR_HPP
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070013
14#include <ndnboost/range/detail/common.hpp>
15#include <ndnboost/range/detail/remove_extent.hpp>
16
17//////////////////////////////////////////////////////////////////////////////
18// missing partial specialization workaround.
19//////////////////////////////////////////////////////////////////////////////
20
21namespace ndnboost
22{
23 namespace range_detail
24 {
25 template< typename T >
26 struct range_const_iterator_;
27
28 template<>
29 struct range_const_iterator_<std_container_>
30 {
31 template< typename C >
32 struct pts
33 {
Jeff Thompson3d613fd2013-10-15 15:39:04 -070034 typedef NDNBOOST_RANGE_DEDUCED_TYPENAME C::const_iterator type;
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070035 };
36 };
37
38 template<>
39 struct range_const_iterator_<std_pair_>
40 {
41 template< typename P >
42 struct pts
43 {
Jeff Thompson3d613fd2013-10-15 15:39:04 -070044 typedef NDNBOOST_RANGE_DEDUCED_TYPENAME P::first_type type;
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070045 };
46 };
47
48
49 template<>
50 struct range_const_iterator_<array_>
51 {
52 template< typename T >
53 struct pts
54 {
Jeff Thompson3d613fd2013-10-15 15:39:04 -070055 typedef const NDNBOOST_RANGE_DEDUCED_TYPENAME
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070056 remove_extent<T>::type* type;
57 };
58 };
59 }
60
61 template< typename C >
62 class range_const_iterator
63 {
Jeff Thompson3d613fd2013-10-15 15:39:04 -070064 typedef NDNBOOST_DEDUCED_TYPENAME range_detail::range<C>::type c_type;
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070065 public:
Jeff Thompson3d613fd2013-10-15 15:39:04 -070066 typedef NDNBOOST_DEDUCED_TYPENAME range_detail::range_const_iterator_<c_type>::NDNBOOST_NESTED_TEMPLATE pts<C>::type type;
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070067 };
68
69}
70
71#endif