diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/stdapis/boost/multi_array/extent_gen.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/stdapis/boost/multi_array/extent_gen.hpp Tue Mar 16 16:12:26 2010 +0000 @@ -0,0 +1,75 @@ +// 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_GEN_RG071801_HPP +#define BOOST_EXTENT_GEN_RG071801_HPP + +#include "boost/multi_array/extent_range.hpp" +#include "boost/multi_array/range_list.hpp" +#include "boost/multi_array/types.hpp" +#include "boost/array.hpp" +#include + +namespace boost { +namespace detail { +namespace multi_array { + + +template +class extent_gen { +public: + typedef boost::detail::multi_array::index index; + typedef boost::detail::multi_array::size_type size_type; + typedef extent_range range; +private: + typedef typename range_list_generator::type range_list; +public: + template + struct gen_type { + typedef extent_gen type; + }; + + range_list ranges_; + + extent_gen() { } + + // Used by operator[] to expand extent_gens + extent_gen(const extent_gen& rhs, + const range& a_range) + { + std::copy(rhs.ranges_.begin(),rhs.ranges_.end(),ranges_.begin()); + *ranges_.rbegin() = a_range; + } + + extent_gen + operator[](const range& a_range) + { + return extent_gen(*this,a_range); + } + + extent_gen + operator[](index idx) + { + return extent_gen(*this,range(0,idx)); + } + + static extent_gen<0> extents() { + return extent_gen<0>(); + } +}; + +} // namespace multi_array +} // namespace detail +} // namespace boost + + +#endif // BOOST_EXTENT_GEN_RG071801_HPP