<commit_before>#ifndef SIMDIFY_COMMON_STORAGE_HPP
#define SIMDIFY_COMMON_STORAGE_HPP

#include "../simd_types/common.hpp"
#include "../util/inline.hpp"
#include <array>
#include <algorithm>
#include <initializer_list>

namespace simd {

    //
    // storage for SIMD types
    //
    template <typename Simd_t>
    struct alignas(Simd_t)storage : std::array<typename Simd_t::scalar_t, Simd_t::W> {
        using stored_t = Simd_t;
        using scalar_t = typename Simd_t::scalar_t;
        using array_t = std::array<scalar_t, Simd_t::W>;
        using array_t::data;
        using array_t::begin;

        SIMDIFY_INL constexpr storage() = default;
        SIMDIFY_INL constexpr storage(const storage&) = default;
        SIMDIFY_INL explicit storage(const Simd_t& rhs) { rhs.aligned_store(data()); }
        storage(std::initializer_list<scalar_t> list) {
            std::copy(list.begin(), list.end(), begin());
        }

        SIMDIFY_INL storage& operator=(const storage&) = default;
        SIMDIFY_INL storage& operator=(const Simd_t& rhs) {
            rhs.aligned_store(data());
            return *this;
        }
        storage& operator=(std::initializer_list<scalar_t> list) {
            std::copy(list.begin(), list.end(), begin());
            return *this;
        }

        // implicit conversion to Simd_t
        SIMDIFY_INL operator Simd_t() const { Simd_t s; s.aligned_load(data()); return s; }
    };

}

#endif // SIMDIFY_COMMON_STORAGE_HPP
<commit_msg>Make class comment bigger, as in other files<commit_after>#ifndef SIMDIFY_COMMON_STORAGE_HPP
#define SIMDIFY_COMMON_STORAGE_HPP

#include "../simd_types/common.hpp"
#include "../util/inline.hpp"
#include <array>
#include <algorithm>
#include <initializer_list>

namespace simd {
    namespace impl {
        //
        // storage for SIMD types
        //
        template <typename Simd_t>
        struct alignas(Simd_t)storage : std::array<typename Simd_t::scalar_t, Simd_t::W> {
            using stored_t = Simd_t;
            using scalar_t = typename Simd_t::scalar_t;
            using array_t = std::array<scalar_t, Simd_t::W>;
            using array_t::data;
            using array_t::begin;

            SIMDIFY_INL constexpr storage() = default;
            SIMDIFY_INL constexpr storage(const storage&) = default;
            SIMDIFY_INL explicit storage(const Simd_t& rhs) { rhs.aligned_store(data()); }
            storage(std::initializer_list<scalar_t> list) {
                std::copy(list.begin(), list.end(), begin());
            }

            SIMDIFY_INL storage& operator=(const storage&) = default;
            SIMDIFY_INL storage& operator=(const Simd_t& rhs) {
                rhs.aligned_store(data());
                return *this;
            }
            storage& operator=(std::initializer_list<scalar_t> list) {
                std::copy(list.begin(), list.end(), begin());
                return *this;
            }

            // implicit conversion to Simd_t
            SIMDIFY_INL operator Simd_t() const { Simd_t s; s.aligned_load(data()); return s; }
        };
    }
}

#endif // SIMDIFY_COMMON_STORAGE_HPP

{'fraction_non_alphanumeric': 0.1188655194391332, 'fraction_numerical': 0.0, 'mean_word_length': 2.5269662921348313, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 19, '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': '2744429', 'n_tokens_mistral': 1050, 'n_tokens_neox': 989, 'n_words': 207}