50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | // Copyright 2002 The Trustees of Indiana University. | ||
|  | 
 | ||
|  | // Use, modification and distribution is 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) | ||
|  | 
 | ||
|  | //  Boost.MultiArray Library | ||
|  | //  Authors: Ronald Garcia | ||
|  | //           Jeremy Siek | ||
|  | //           Andrew Lumsdaine | ||
|  | //  See http://www.boost.org/libs/multi_array for documentation. | ||
|  | 
 | ||
|  | #ifndef BOOST_EXTENT_RANGE_RG071801_HPP | ||
|  | #define BOOST_EXTENT_RANGE_RG071801_HPP | ||
|  | 
 | ||
|  | #include <utility> | ||
|  | 
 | ||
|  | namespace boost { | ||
|  | namespace detail { | ||
|  | namespace multi_array { | ||
|  | 
 | ||
|  | template <typename Extent, typename SizeType> | ||
|  | class extent_range : private std::pair<Extent,Extent> { | ||
|  |   typedef std::pair<Extent,Extent> super_type; | ||
|  | public: | ||
|  |   typedef Extent index; | ||
|  |   typedef SizeType size_type; | ||
|  | 
 | ||
|  |   extent_range(index start, index finish) : | ||
|  |     super_type(start,finish) { } | ||
|  | 
 | ||
|  |   extent_range(index finish) : | ||
|  |     super_type(0,finish) { } | ||
|  | 
 | ||
|  |   extent_range() : super_type(0,0) { } | ||
|  | 
 | ||
|  |   index start() const { return super_type::first; } | ||
|  | 
 | ||
|  |   index finish() const { return super_type::second; } | ||
|  | 
 | ||
|  |   size_type size() const { return super_type::second - super_type::first; } | ||
|  | }; | ||
|  | 
 | ||
|  | } // namespace multi_array | ||
|  | } // namespace detail  | ||
|  | } // namespace boost | ||
|  | 
 | ||
|  | 
 | ||
|  | #endif // BOOST_EXTENT_RANGE_RG071801_HPP |