// Copyright (c) 2005-2007 Hartmut Kaiser (hartmut.kaiser@gmail.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) #include #include #include #include #ifndef SAGA_IMPL_ENGINE_URL_HPP #define SAGA_IMPL_ENGINE_URL_HPP /////////////////////////////////////////////////////////////////////////////// namespace saga { namespace impl { /////////////////////////////////////////////////////////////////////////////// class url { private: mutable boost::recursive_mutex mtx_; std::string scheme_; std::string scheme_specific_part_; std::string username_; std::string password_; std::string host_; int port_; std::string fragment_; std::string path_; std::string params_; std::string query_; protected: void check (std::string const & urlstr); void reset (void); public: url (url const & rhs); // used for cloning url (std::string const & urlstr); ~url (void); std::string get_url (void) const; std::string const & get_scheme (void) const; std::string const & get_scheme_specific_part (void) const; std::string const & get_host (void) const; int get_port (void) const; std::string get_authority (void) const; // FIXME: why not const? -- AM std::string const & get_fragment (void) const; std::string const & get_path (void) const; std::string const & get_query (void) const; std::string get_userinfo (void) const; std::string const & get_username (void) const; std::string const & get_password (void) const; // interface to change the members (and re-check the url) void change_scheme (std::string const & scheme); void change_scheme_specific_part (std::string const & scheme_specific_part); void change_host (std::string const & host); void change_port (int port); void change_fragment (std::string const & fragment); void change_path (std::string const & path); void change_query (std::string const & query); void change_userinfo (std::string const & userinfo); void change_username (std::string const & userinfo); void change_password (std::string const & userinfo); // interface to directly write to the members void set_scheme (std::string const & scheme); void set_scheme_specific_part (std::string const & scheme_specific_part); void set_host_userinfo (std::string const & host, std::string const & userinfo); void set_port (int port); void set_fragment (std::string const & fragment); void set_path (std::string const & path); void set_query (std::string const & query); void set_params (std::string const & params); }; } // namespace impl } // namespace saga /////////////////////////////////////////////////////////////////////////////// #endif // SAGA_IMPL_ENGINE_URL_HPP