<commit_before>#ifndef VIENNAGRID_STORAGE_RANGE_HPP
#define VIENNAGRID_STORAGE_RANGE_HPP



namespace viennagrid
{
    
    namespace storage
    {
        
        
        template<typename container_type>
        class container_range_wrapper
        {
            friend class container_range_wrapper<const container_type>;
            
        public:
            
            container_range_wrapper(container_type & _container) : container(_container) {}
            
            typedef typename container_type::size_type size_type;
            typedef typename container_type::value_type value_type;
            
            typedef typename container_type::reference reference;
            typedef typename container_type::const_reference const_reference;
            
            typedef typename container_type::pointer pointer;
            typedef typename container_type::const_pointer const_pointer;
            
            typedef typename container_type::iterator iterator;
            typedef typename container_type::const_iterator const_iterator;
            
            typedef typename container_type::reverse_iterator reverse_iterator;
            typedef typename container_type::const_reverse_iterator const_reverse_iterator;
            
            
            
            iterator begin() { return container.begin(); }
            const_iterator begin() const { return container.begin(); }
            iterator end() { return container.end(); }
            const_iterator end() const { return container.end(); }
            
            reverse_iterator rbegin() { return container.rbegin(); }
            const_reverse_iterator rbegin() const { return container.rbegin(); }
            reverse_iterator rend() { return container.rend(); }
            const_reverse_iterator rend() const { return container.rend(); }
            
            
            
            reference front() { return container.front(); }
            const_reference front() const { return container.front(); }
            reference back() { return container.back(); }
            const_reference back() const { return container.back(); }
            
            
            
            reference operator[] (size_type index) { return container[index]; }
            const_reference operator[] (size_type index) const { return container[index]; }
            
            
            
            bool empty() const { return container.empty(); }
            size_type size() const { return container.size(); }
            
            
        private:
            
            container_type & container;
        };
        
        template<typename container_type>
        class container_range_wrapper<const container_type>
        {
        public:
            
            container_range_wrapper(const container_type & _container) : container(_container) {}
            container_range_wrapper(const container_range_wrapper<container_type> & rhs) : container(rhs.container) {}
            
            typedef typename container_type::size_type size_type;
            typedef typename container_type::value_type value_type;
            
            typedef typename container_type::reference reference;
            typedef typename container_type::const_reference const_reference;
            
            typedef typename container_type::pointer pointer;
            typedef typename container_type::const_pointer const_pointer;
            
            typedef typename container_type::const_iterator iterator;
            typedef typename container_type::const_iterator const_iterator;
            <commit_msg>fixed reference and pointer typedef in const container wrapper<commit_after>#ifndef VIENNAGRID_STORAGE_RANGE_HPP
#define VIENNAGRID_STORAGE_RANGE_HPP



namespace viennagrid
{
    
    namespace storage
    {
        
        
        template<typename container_type>
        class container_range_wrapper
        {
            friend class container_range_wrapper<const container_type>;
            
        public:
            
            container_range_wrapper(container_type & _container) : container(_container) {}
            
            typedef typename container_type::size_type size_type;
            typedef typename container_type::value_type value_type;
            
            typedef typename container_type::reference reference;
            typedef typename container_type::const_reference const_reference;
            
            typedef typename container_type::pointer pointer;
            typedef typename container_type::const_pointer const_pointer;
            
            typedef typename container_type::iterator iterator;
            typedef typename container_type::const_iterator const_iterator;
            
            typedef typename container_type::reverse_iterator reverse_iterator;
            typedef typename container_type::const_reverse_iterator const_reverse_iterator;
            
            
            
            iterator begin() { return container.begin(); }
            const_iterator begin() const { return container.begin(); }
            iterator end() { return container.end(); }
            const_iterator end() const { return container.end(); }
            
            reverse_iterator rbegin() { return container.rbegin(); }
            const_reverse_iterator rbegin() const { return container.rbegin(); }
            reverse_iterator rend() { return container.rend(); }
            const_reverse_iterator rend() const { return container.rend(); }
            
            
            
            reference front() { return container.front(); }
            const_reference front() const { return container.front(); }
            reference back() { return container.back(); }
            const_reference back() const { return container.back(); }
            
            
            
            reference operator[] (size_type index) { return container[index]; }
            const_reference operator[] (size_type index) const { return container[index]; }
            
            
            
            bool empty() const { return container.empty(); }
            size_type size() const { return container.size(); }
            
            
        private:
            
            container_type & container;
        };
        
        template<typename container_type>
        class container_range_wrapper<const container_type>
        {
        public:
            
            container_range_wrapper(const container_type & _container) : container(_container) {}
            container_range_wrapper(const container_range_wrapper<container_type> & rhs) : container(rhs.container) {}
            
            typedef typename container_type::size_type size_type;
            typedef typename container_type::value_type value_type;
            
            typedef typename container_type::const_reference reference;
            typedef typename container_type::const_reference const_reference;
            
            typedef typename container_type::const_pointer pointer;
            typedef typename container_type::const_pointer const_pointer;
            
            typedef typename container_type::const_iterator iterator;
            typedef typename container_type::const_iterator const_iterator;
            
{'fraction_non_alphanumeric': 0.06441927118875393, 'fraction_numerical': 0.0, 'mean_word_length': 2.004510045100451, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, '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': '2462322', 'n_tokens_mistral': 1605, 'n_tokens_neox': 1560, 'n_words': 380}