71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			1.7 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 RANGE_LIST_RG072501_HPP | ||
|  | #define RANGE_LIST_RG072501_HPP | ||
|  | // | ||
|  | // range_list.hpp - helper to build boost::arrays for *_set types | ||
|  | // | ||
|  | 
 | ||
|  | #include "boost/array.hpp" | ||
|  | 
 | ||
|  | namespace boost { | ||
|  | namespace detail { | ||
|  | namespace multi_array { | ||
|  | 
 | ||
|  | ///////////////////////////////////////////////////////////////////////// | ||
|  | // choose range list begins | ||
|  | // | ||
|  | 
 | ||
|  | struct choose_range_list_n { | ||
|  |   template <typename T, std::size_t NumRanges> | ||
|  |   struct bind { | ||
|  |     typedef boost::array<T,NumRanges> type; | ||
|  |   }; | ||
|  | }; | ||
|  | 
 | ||
|  | struct choose_range_list_zero { | ||
|  |   template <typename T, std::size_t NumRanges> | ||
|  |   struct bind { | ||
|  |     typedef boost::array<T,1> type; | ||
|  |   }; | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | template <std::size_t NumRanges> | ||
|  | struct range_list_gen_helper { | ||
|  |   typedef choose_range_list_n choice; | ||
|  | }; | ||
|  | 
 | ||
|  | template <> | ||
|  | struct range_list_gen_helper<0> { | ||
|  |   typedef choose_range_list_zero choice; | ||
|  | }; | ||
|  | 
 | ||
|  | template <typename T, std::size_t NumRanges> | ||
|  | struct range_list_generator { | ||
|  | private: | ||
|  |   typedef typename range_list_gen_helper<NumRanges>::choice Choice; | ||
|  | public: | ||
|  |   typedef typename Choice::template bind<T,NumRanges>::type type; | ||
|  | }; | ||
|  | 
 | ||
|  | // | ||
|  | // choose range list ends | ||
|  | ///////////////////////////////////////////////////////////////////////// | ||
|  | 
 | ||
|  | } // namespace multi_array | ||
|  | } // namespace detail | ||
|  | } // namespace boost | ||
|  | 
 | ||
|  | #endif // RANGE_LIST_RG072501_HPP |