00001
00002
00003
00004
00005
00006
00007 #include <string>
00008 #include <iosfwd>
00009
00010 #include <saga/saga/util.hpp>
00011 #include <saga/saga/base.hpp>
00012 #include <saga/saga/call.hpp>
00013
00014 #include <saga/saga/object.hpp>
00015 #include <saga/saga/session.hpp>
00016
00017 #if !defined(SAGA_SAGA_URL_HPP)
00018 #define SAGA_SAGA_URL_HPP
00019
00020
00021 #if defined(BOOST_MSVC)
00022 #pragma warning(push)
00023 #pragma warning(disable: 4251 4231 4275 4660)
00024 #endif
00025
00027 namespace saga
00028 {
00037 class SAGA_EXPORT url
00038 : public saga::object
00039 {
00040 private:
00041 friend class saga::impl::url;
00042 friend struct saga::impl::runtime;
00043
00044 SAGA_CALL_CONST_PRIV_1(translate, std::string)
00045 SAGA_CALL_CONST_PRIV_2(translate, saga::session, std::string)
00046
00047 protected:
00049
00050 TR1::shared_ptr <impl::url> get_impl_sp() const;
00051 impl::url* get_impl() const;
00052
00053 url (impl::url *impl);
00054
00055
00056 url (std::string const & urlstr, adaptors::nocheck);
00058
00059 public:
00060 url();
00061 explicit url (saga::object rhs);
00062 url(saga::url const& rhs);
00063 url(std::string const& urlstr);
00064 url(char const * urlstr);
00065 ~url(void);
00066
00067 url& operator=(char const * urlstr);
00068 url& operator=(std::string const & urlstr);
00069 url& operator=(saga::url const& rhs);
00070 url& operator=(saga::object const& rhs);
00071
00076 saga::object clone() const;
00077
00083 std::string get_string(void) const;
00084
00089 void set_string(std::string const & url);
00090
00096 std::string get_scheme (void) const;
00097
00102 void set_scheme (std::string const & scheme);
00103
00109 std::string get_host (void) const;
00110
00115 void set_host (std::string const & host);
00116
00122 int get_port (void) const;
00123
00128 void set_port (int port);
00129
00135 std::string get_fragment (void) const;
00136
00141 void set_fragment (std::string const & fragment);
00142
00148 std::string get_path (void) const;
00149
00154 void set_path (std::string const & path);
00155
00161 std::string get_userinfo (void) const;
00162
00167 void set_userinfo (std::string const & userinfo);
00168
00173 saga::url translate(std::string scheme) const
00174 {
00175 saga::task t = translatepriv(scheme, saga::task_base::Sync());
00176 return t.get_result<saga::url>();
00177 }
00178 SAGA_CALL_CONST_PUB_1_DEF_0(translate, std::string)
00179
00180
00184 saga::url translate(saga::session s, std::string scheme) const
00185 {
00186 saga::task t = translatepriv(s, scheme, saga::task_base::Sync());
00187 return t.get_result<saga::url>();
00188 }
00189 SAGA_CALL_CONST_PUB_2_DEF_0(translate, saga::session, std::string)
00190
00191
00192
00193
00195
00196
00201 std::string get_url (void) const;
00202
00207 void set_url(std::string const & url);
00208
00213 std::string get_authority (void) const;
00214
00219 std::string get_query (void) const;
00220
00225 void set_query (std::string const & query);
00226
00231 void set_scheme_specific_part (std::string const & scheme_specific_part);
00232
00237 std::string get_username (void) const;
00238
00243 void set_username (std::string const & username);
00244
00249 std::string get_password (void) const;
00250
00255 void set_password (std::string const & passwd);
00256
00260 static std::string unescape(std::string const&in);
00261
00264 static std::string escape(std::string const&in);
00265
00266 };
00267
00269
00273 SAGA_EXPORT std::ostream& operator<< (std::ostream& os, url const& u);
00274
00279 SAGA_EXPORT std::istream& operator>> (std::istream& is, url& u);
00280
00285 SAGA_EXPORT bool operator== (saga::url const& lhs, saga::url const& rhs);
00286
00291 SAGA_EXPORT bool operator< (saga::url const& lhs, saga::url const& rhs);
00292
00294 }
00295
00296
00297 #if defined(BOOST_MSVC)
00298 #pragma warning(pop)
00299 #endif
00300
00301 #endif // SAGA_SAGA_URL_HPP
00302