//            Copyright (c) Glyn Matthews 2011, 2012.
// 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)


#ifndef __BOOST_NETWORK_URI_DIRECTIVES_INC__
# define __BOOST_NETWORK_URI_DIRECTIVES_INC__


# include <boost/network/uri/uri.hpp>


namespace boost {
namespace network {
namespace uri {
inline
uri &operator << (uri &uri_, const uri &root_uri) {
    if (empty(uri_) && valid(root_uri)) {
        uri_.append(boost::begin(root_uri), boost::end(root_uri));
    }
    return uri_;
}

template <
    class Directive
    >
inline
uri &operator << (uri &uri_, const Directive &directive) {
    directive(uri_);
    return uri_;
}
} // namespace uri
} // namespace network
} // namespace boost


# include <boost/network/uri/directives/scheme.hpp>
# include <boost/network/uri/directives/user_info.hpp>
# include <boost/network/uri/directives/host.hpp>
# include <boost/network/uri/directives/port.hpp>
# include <boost/network/uri/directives/authority.hpp>
# include <boost/network/uri/directives/path.hpp>
# include <boost/network/uri/directives/query.hpp>
# include <boost/network/uri/directives/fragment.hpp>


#endif // __BOOST_NETWORK_URI_DIRECTIVES_INC__
