#ifndef seafire__protocol__rfc7231__product_hxx_ #define seafire__protocol__rfc7231__product_hxx_ #include #include #include #include #include #include #include namespace seafire::protocol::rfc7231 { class product_t { public: product_t(token_t); product_t(token_t, token_t); token_t const& name() const; std::optional const& version() const; private: token_t name_; std::optional version_; }; using products_t = std::vector; void to_stream(std::ostream&, product_t const&); std::string to_string(product_t const&); void to_stream(std::ostream&, products_t const&); std::string to_string(products_t const&); template std::optional try_parse_product(InputIterator&, InputIterator); template std::optional try_parse_product(InputIterator&, InputIterator, std::error_code& ec); std::optional try_parse_product(std::string const&); template std::optional try_parse_products(InputIterator&, InputIterator); template std::optional try_parse_products(InputIterator&, InputIterator, std::error_code&); std::optional try_parse_products(std::string const&); std::optional try_parse_products(std::string const&, std::error_code&); } // namespace seafire::protocol::rfc7231 #include #endif