+// 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_STORAGE_ORDER_RG071801_HPP
#define BOOST_STORAGE_ORDER_RG071801_HPP
typedef detail::multi_array::size_type size_type;
template <typename OrderingIter, typename AscendingIter>
general_storage_order(OrderingIter ordering,
- AscendingIter ascending) {
- boost::copy_n(ordering,NumDims,ordering_.begin());
- boost::copy_n(ascending,NumDims,ascending_.begin());
+ AscendingIter ascending) {
+ boost::detail::multi_array::copy_n(ordering,NumDims,ordering_.begin());
+ boost::detail::multi_array::copy_n(ascending,NumDims,ascending_.begin());
}
// RG - ideally these would not be necessary, but some compilers
// storage_order objects, I sacrifice that feature for compiler support.
general_storage_order(const c_storage_order&) {
for (size_type i=0; i != NumDims; ++i) {
- ordering_[i] = NumDims - 1 - i;
+ ordering_[i] = NumDims - 1 - i;
}
ascending_.assign(true);
}
general_storage_order(const fortran_storage_order&) {
for (size_type i=0; i != NumDims; ++i) {
- ordering_[i] = i;
+ ordering_[i] = i;
}
ascending_.assign(true);
}
bool all_dims_ascending() const {
return std::accumulate(ascending_.begin(),ascending_.end(),true,
- std::logical_and<bool>());
+ std::logical_and<bool>());
}
bool operator==(general_storage_order const& rhs) const {
return (ordering_ == rhs.ordering_) &&
- (ascending_ == rhs.ascending_);
+ (ascending_ == rhs.ascending_);
}
protected:
boost::array<bool,NumDims> ascending;
for (size_type i=0; i != NumDims; ++i) {
- ordering[i] = NumDims - 1 - i;
- ascending[i] = true;
+ ordering[i] = NumDims - 1 - i;
+ ascending[i] = true;
}
return general_storage_order<NumDims>(ordering.begin(),
- ascending.begin());
+ ascending.begin());
}
#endif
};
boost::array<bool,NumDims> ascending;
for (size_type i=0; i != NumDims; ++i) {
- ordering[i] = i;
- ascending[i] = true;
+ ordering[i] = i;
+ ascending[i] = true;
}
return general_storage_order<NumDims>(ordering.begin(),
- ascending.begin());
+ ascending.begin());
}
#endif
};