<commit_before>//=======================================================================
// Copyright (c) 2014-2015 <NAME>
// Distributed under the terms of the MIT License.
// (See accompanying file LICENSE or copy at
//  http://opensource.org/licenses/MIT)
//=======================================================================

#ifndef ETL_STOP_HPP
#define ETL_STOP_HPP

#include "cpp_utils/tmp.hpp"

namespace etl {

template<typename T,
    cpp::enable_if_all_u<
        is_etl_expr<T>::value,
        cpp::not_u<etl_traits<T>::is_value>::value,
        cpp::not_u<etl_traits<T>::is_fast>::value
    > = cpp::detail::dummy>
auto s(T&& value){
    //Sizes will be directly propagated
    return dyn_matrix<typename T::value_type, etl_traits<T>::dimensions()>(std::forward<T>(value));
}

template<typename M, typename Sequence>
struct build_matrix_type;

template<typename M, std::size_t... I>
struct build_matrix_type<M, std::index_sequence<I...>> {
    using type = fast_matrix<typename M::value_type, etl_traits<M>::template dim<I>()...>;
};

template<typename T,
    cpp::enable_if_all_u<
        is_etl_expr<T>::value,
        cpp::not_u<etl_traits<T>::is_value>::value,
        etl_traits<T>::is_fast
    > = cpp::detail::dummy><commit_msg>Cleanup<commit_after>//=======================================================================
// Copyright (c) 2014-2015 <NAME>
// Distributed under the terms of the MIT License.
// (See accompanying file LICENSE or copy at
//  http://opensource.org/licenses/MIT)
//=======================================================================

#ifndef ETL_STOP_HPP
#define ETL_STOP_HPP

#include "cpp_utils/tmp.hpp"

namespace etl {

template<typename T, cpp_enable_if(is_etl_expr<T>::value && !etl_traits<T>::is_value && !etl_traits<T>::is_fast)>
auto s(T&& value){
    //Sizes will be directly propagated
    return dyn_matrix<typename T::value_type, etl_traits<T>::dimensions()>(std::forward<T>(value));
}

template<typename M, typename Sequence>
struct build_matrix_type;

template<typename M, std::size_t... I>
struct build_matrix_type<M, std::index_sequence<I...>> {
    using type = fast_matrix<typename M::value_type, etl_traits<M>::template dim<I>()...>;
};

template<typename T, cpp_enable_if(is_etl_expr<T>::value && !etl_traits<T>::is_value && etl_traits<T>::is_fast)>
{'fraction_non_alphanumeric': 0.26417525773195877, 'fraction_numerical': 0.006872852233676976, 'mean_word_length': 5.870206489675517, 'pattern_counts': {'":': 0, '<': 46, '<?xml version=': 0, '>': 46, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1263943', 'n_tokens_mistral': 789, 'n_tokens_neox': 733, 'n_words': 143}