1 // Copyright 2002 The Trustees of Indiana University. 2 3 // Use, modification and distribution is subject to the Boost Software 4 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 5 // http://www.boost.org/LICENSE_1_0.txt) 6 7 // Boost.MultiArray Library 8 // Authors: Ronald Garcia 9 // Jeremy Siek 10 // Andrew Lumsdaine 11 // See http://www.boost.org/libs/multi_array for documentation. 12 13 #ifndef BOOST_EXTENT_RANGE_RG071801_HPP 14 #define BOOST_EXTENT_RANGE_RG071801_HPP 15 16 #include <utility> 17 18 namespace boost { 19 namespace detail { 20 namespace multi_array { 21 22 template <typename Extent, typename SizeType> 23 class extent_range : private std::pair<Extent,Extent> { 24 typedef std::pair<Extent,Extent> super_type; 25 public: 26 typedef Extent index; 27 typedef SizeType size_type; 28 extent_range(index start,index finish)29 extent_range(index start, index finish) : 30 super_type(start,finish) { } 31 extent_range(index finish)32 extent_range(index finish) : 33 super_type(0,finish) { } 34 extent_range()35 extent_range() : super_type(0,0) { } 36 start() const37 index start() const { return super_type::first; } 38 finish() const39 index finish() const { return super_type::second; } 40 size() const41 size_type size() const { return super_type::second - super_type::first; } 42 }; 43 44 } // namespace multi_array 45 } // namespace detail 46 } // namespace boost 47 48 49 #endif // BOOST_EXTENT_RANGE_RG071801_HPP 50