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
 | 
