#ifndef seafire__protocol__rc7231__media_range_hxx_ #define seafire__protocol__rc7231__media_range_hxx_ #include <seafire/protocol/media-type.hxx> #include <algorithm> #include <system_error> #include <vector> namespace seafire::protocol::rfc7231 { class media_range_t { public: using const_iterator = typename std::vector<media_type_t>::const_iterator; media_range_t(); media_range_t(media_type_t type); media_range_t(std::vector<media_type_t> types); const_iterator begin() const; const_iterator cbegin() const; const_iterator end() const; const_iterator cend() const; std::vector<media_type_t> const& get() const; template<typename InputIterator> static std::optional<media_range_t> try_parse(InputIterator& begin, InputIterator const& end, std::error_code& ec); static std::optional<media_range_t> try_parse(std::vector<std::string> const& strings, std::error_code& ec); private: void sort_internals(); std::vector<media_type_t> types_; }; } // namespace seafire::protocol::rfc7231 #include <seafire/protocol/rfc7231/media-range.txx> #endif