- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- Search for |

# url.hpp

Go to the documentation of this file.

    00001 //  Copyright (c) 2005-2009 Hartmut Kaiser
    00002 //  Copyright (c) 2007 Ole Weidner (oweidner@cct.lsu.edu)
    00003 //
    00004 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
    00005 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    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 // suppress warnings about dependent classes not being exported from the dll
    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 //      url (adaptors::nocheck);
    00055 //      url (saga::object rhs, adaptors::nocheck);
    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     // The API functions below are not part of the SAGA specification
    00193     // we provide these as convenience helpers
    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 } // namespace saga
    00295
    00296 // re-enable warnings about dependent classes not being exported from the dll
    00297 #if defined(BOOST_MSVC)
    00298 #pragma warning(pop)
    00299 #endif
    00300
    00301 #endif // SAGA_SAGA_URL_HPP
    00302