/usr/include/boost/beast/http/impl
NameSizeModeActions
basic_parser.hpp21920644editdlrm
basic_parser.ipp196110644editdlrm
chunk_encode.hpp165730644editdlrm
error.hpp7230644editdlrm
error.ipp30880644editdlrm
field.ipp154300644editdlrm
fields.hpp272700644editdlrm
fields.ipp33320644editdlrm
file_body_win32.hpp160720644editdlrm
message.hpp102420644editdlrm
parser.hpp14610644editdlrm
read.hpp184390644editdlrm
rfc7230.hpp64890644editdlrm
rfc7230.ipp44070644editdlrm
serializer.hpp103060644editdlrm
status.ipp89940644editdlrm
verb.ipp67020644editdlrm
write.hpp252150644editdlrm
Edit: /usr/include/boost/beast/http/impl/rfc7230.hpp (6489B)
// // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) // // Distributed under 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) // // Official repository: https://github.com/boostorg/beast // #ifndef BOOST_BEAST_HTTP_IMPL_RFC7230_HPP #define BOOST_BEAST_HTTP_IMPL_RFC7230_HPP #include #include namespace boost { namespace beast { namespace http { class param_list::const_iterator { using iter_type = string_view::const_iterator; std::string s_; detail::param_iter pi_; public: using value_type = param_list::value_type; using pointer = value_type const*; using reference = value_type const&; using difference_type = std::ptrdiff_t; using iterator_category = std::input_iterator_tag; const_iterator() = default; bool operator==(const_iterator const& other) const { return other.pi_.it == pi_.it && other.pi_.last == pi_.last && other.pi_.first == pi_.first; } bool operator!=(const_iterator const& other) const { return !(*this == other); } reference operator*() const { return pi_.v; } pointer operator->() const { return &*(*this); } const_iterator& operator++() { increment(); return *this; } const_iterator operator++(int) { auto temp = *this; ++(*this); return temp; } private: friend class param_list; const_iterator(iter_type first, iter_type last) { pi_.it = first; pi_.first = first; pi_.last = last; increment(); } BOOST_BEAST_DECL static std::string unquote(string_view sr); BOOST_BEAST_DECL void increment(); }; inline auto param_list:: begin() const -> const_iterator { return const_iterator{s_.begin(), s_.end()}; } inline auto param_list:: end() const -> const_iterator { return const_iterator{s_.end(), s_.end()}; } inline auto param_list:: cbegin() const -> const_iterator { return const_iterator{s_.begin(), s_.end()}; } inline auto param_list:: cend() const -> const_iterator { return const_iterator{s_.end(), s_.end()}; } //------------------------------------------------------------------------------ class ext_list::const_iterator { ext_list::value_type v_; iter_type it_; iter_type first_; iter_type last_; public: using value_type = ext_list::value_type; using pointer = value_type const*; using reference = value_type const&; using difference_type = std::ptrdiff_t; using iterator_category = std::forward_iterator_tag; const_iterator() = default; bool operator==(const_iterator const& other) const { return other.it_ == it_ && other.first_ == first_ && other.last_ == last_; } bool operator!=(const_iterator const& other) const { return !(*this == other); } reference operator*() const { return v_; } pointer operator->() const { return &*(*this); } const_iterator& operator++() { increment(); return *this; } const_iterator operator++(int) { auto temp = *this; ++(*this); return temp; } private: friend class ext_list; const_iterator(iter_type begin, iter_type end) { it_ = begin; first_ = begin; last_ = end; increment(); } BOOST_BEAST_DECL void increment(); }; inline auto ext_list:: begin() const -> const_iterator { return const_iterator{s_.begin(), s_.end()}; } inline auto ext_list:: end() const -> const_iterator { return const_iterator{s_.end(), s_.end()}; } inline auto ext_list:: cbegin() const -> const_iterator { return const_iterator{s_.begin(), s_.end()}; } inline auto ext_list:: cend() const -> const_iterator { return const_iterator{s_.end(), s_.end()}; } //------------------------------------------------------------------------------ class token_list::const_iterator { token_list::value_type v_; iter_type it_; iter_type first_; iter_type last_; public: using value_type = token_list::value_type; using pointer = value_type const*; using reference = value_type const&; using difference_type = std::ptrdiff_t; using iterator_category = std::forward_iterator_tag; const_iterator() = default; bool operator==(const_iterator const& other) const { return other.it_ == it_ && other.first_ == first_ && other.last_ == last_; } bool operator!=(const_iterator const& other) const { return !(*this == other); } reference operator*() const { return v_; } pointer operator->() const { return &*(*this); } const_iterator& operator++() { increment(); return *this; } const_iterator operator++(int) { auto temp = *this; ++(*this); return temp; } private: friend class token_list; const_iterator(iter_type begin, iter_type end) { it_ = begin; first_ = begin; last_ = end; increment(); } BOOST_BEAST_DECL void increment(); }; inline auto token_list:: begin() const -> const_iterator { return const_iterator{s_.begin(), s_.end()}; } inline auto token_list:: end() const -> const_iterator { return const_iterator{s_.end(), s_.end()}; } inline auto token_list:: cbegin() const -> const_iterator { return const_iterator{s_.begin(), s_.end()}; } inline auto token_list:: cend() const -> const_iterator { return const_iterator{s_.end(), s_.end()}; } template bool validate_list(detail::basic_parsed_list< Policy> const& list) { auto const last = list.end(); auto it = list.begin(); if(it.error()) return false; while(it != last) { ++it; if(it.error()) return false; if(it == last) break; } return true; } } // http } // beast } // boost #ifdef BOOST_BEAST_HEADER_ONLY #include #endif #endif