#ifndef SPROUT_ADAPT_SSCRISK_CEL_ARRAY_HPP #define SPROUT_ADAPT_SSCRISK_CEL_ARRAY_HPP #include #include #include #include #include #if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION # include # include # include #endif namespace sprout { // // rebind_fixed_size // template struct rebind_fixed_size > { public: template >::size_type S> struct apply { public: typedef sscrisk::cel::array type; }; }; #if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION // // fixed_container_traits // template struct fixed_container_traits > : public sprout::detail::fixed_container_traits_base > { public: typedef sscrisk::cel::array fixed_container_type; typedef fixed_container_type internal_type; typedef internal_type clone_type; typedef sprout::index_iterator iterator; typedef sprout::index_iterator const_iterator; public: SPROUT_STATIC_CONSTEXPR typename sprout::detail::fixed_container_traits_base::size_type fixed_size = std::tuple_size::type>::value ; }; // // fixed_container_traits // template struct fixed_container_traits const> : public sprout::detail::fixed_container_traits_base const> { public: typedef sscrisk::cel::array const fixed_container_type; typedef typename std::remove_const::type internal_type; typedef internal_type clone_type; typedef sprout::index_iterator iterator; typedef sprout::index_iterator const_iterator; public: SPROUT_STATIC_CONSTEXPR typename sprout::detail::fixed_container_traits_base::size_type fixed_size = std::tuple_size::type>::value ; }; // // begin // template typename sprout::fixed_container_traits >::iterator begin(sscrisk::cel::array& range) { return typename sprout::fixed_container_traits >::iterator(range, 0); } template SPROUT_CONSTEXPR typename sprout::fixed_container_traits >::const_iterator begin(sscrisk::cel::array const& range) { return typename sprout::fixed_container_traits >::const_iterator(range, 0); } // // cbegin // template SPROUT_CONSTEXPR typename sprout::fixed_container_traits >::const_iterator cbegin(sscrisk::cel::array const& range) { return sprout::fixed_container_traits >::const_iterator(range, 0); } // // end // template typename sprout::fixed_container_traits >::iterator end(sscrisk::cel::array& range) { return typename sprout::fixed_container_traits >::iterator(range, range.size()); } template SPROUT_CONSTEXPR typename sprout::fixed_container_traits >::const_iterator end(sscrisk::cel::array const& range) { return typename sprout::fixed_container_traits >::const_iterator(range, range.size()); } // // cend // template SPROUT_CONSTEXPR typename sprout::fixed_container_traits >::const_iterator cend(sscrisk::cel::array const& range) { return typename sprout::fixed_container_traits >::const_iterator(range, range.size()); } #endif } // namespace sprout #endif // #ifndef SPROUT_ADAPT_SSCRISK_CEL_ARRAY_HPP