#ifndef arc__uri__uri_hxx_ #define arc__uri__uri_hxx_ #include #include #include #include #include namespace arc::uri { class LIBARC_URI_SYMEXPORT uri_t { public: uri_t(); uri_t(std::string, std::string, std::string); uri_t(std::string, std::string, std::string, std::string); uri_t(std::string, std::string, std::string, std::string, std::string); uri_t(std::string, std::string, std::string, std::string, std::string, std::string); uri_t(std::string, std::string, std::string, std::string, std::string, std::string, std::string); uri_t(std::optional, std::optional, std::optional, std::optional, std::string, std::optional, std::optional); std::optional const& scheme() const; std::string scheme_str() const; std::optional const& userinfo() const; std::string userinfo_str() const; std::optional const& host() const; std::string host_str() const; std::optional const& port() const; std::string port_str() const; std::string path_str() const; std::optional const& query() const; std::string query_str() const; std::optional const& fragment() const; std::string fragment_str() const; private: std::optional scheme_; std::optional userinfo_; std::optional host_; std::optional port_; std::string path_; std::optional query_; std::optional fragment_; }; LIBARC_URI_SYMEXPORT std::string to_string(uri_t const&); LIBARC_URI_SYMEXPORT uri_t normalize_path(uri_t const&); template std::optional try_parse(Iterator first, Iterator last); LIBARC_URI_SYMEXPORT std::optional try_parse(std::string const&); } // namespace arc::uri #include #endif