mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-04 11:15:56 +00:00
Improve URL string conversions and ostream support
This commit is contained in:
@@ -22,6 +22,8 @@
|
||||
|
||||
#include "../strings/String.h"
|
||||
|
||||
#include <ios>
|
||||
|
||||
namespace beast {
|
||||
|
||||
/** A URL.
|
||||
@@ -90,7 +92,10 @@ public:
|
||||
String userinfo () const;
|
||||
|
||||
/** Retrieve the full URL as a single string. */
|
||||
String full () const;
|
||||
/** @{ */
|
||||
String toString () const;
|
||||
std::string to_string() const;
|
||||
/** @} */
|
||||
|
||||
private:
|
||||
String m_scheme;
|
||||
@@ -105,14 +110,18 @@ private:
|
||||
|
||||
/** URL comparisons. */
|
||||
/** @{ */
|
||||
inline bool operator== (URL const& lhs, URL const& rhs) { return lhs.full() == rhs.full(); }
|
||||
inline bool operator!= (URL const& lhs, URL const& rhs) { return ! (lhs.full() == rhs.full()); }
|
||||
inline bool operator< (URL const& lhs, URL const& rhs) { return lhs.full() < rhs.full(); }
|
||||
inline bool operator> (URL const& lhs, URL const& rhs) { return rhs.full() < lhs.full(); }
|
||||
inline bool operator<= (URL const& lhs, URL const& rhs) { return ! (rhs.full() < lhs.full()); }
|
||||
inline bool operator>= (URL const& lhs, URL const& rhs) { return ! (lhs.full() < rhs.full()); }
|
||||
inline bool operator== (URL const& lhs, URL const& rhs) { return lhs.toString() == rhs.toString(); }
|
||||
inline bool operator!= (URL const& lhs, URL const& rhs) { return ! (lhs.toString() == rhs.toString()); }
|
||||
inline bool operator< (URL const& lhs, URL const& rhs) { return lhs.toString() < rhs.toString(); }
|
||||
inline bool operator> (URL const& lhs, URL const& rhs) { return rhs.toString() < lhs.toString(); }
|
||||
inline bool operator<= (URL const& lhs, URL const& rhs) { return ! (rhs.toString() < lhs.toString()); }
|
||||
inline bool operator>= (URL const& lhs, URL const& rhs) { return ! (lhs.toString() < rhs.toString()); }
|
||||
/** @} */
|
||||
|
||||
/** Output stream conversion. */
|
||||
std::ostream& operator<< (std::ostream& os, URL const& url);
|
||||
|
||||
/** boost::hash support */
|
||||
extern std::size_t hash_value (beast::URL const& url);
|
||||
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ public:
|
||||
{
|
||||
ParsedURL result (url);
|
||||
expect (result.error () == 0);
|
||||
expect (result.url ().full () == url);
|
||||
expect (result.url ().toString () == url);
|
||||
}
|
||||
|
||||
void testURL ()
|
||||
|
||||
@@ -128,7 +128,7 @@ String URL::userinfo () const
|
||||
|
||||
foo://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose
|
||||
*/
|
||||
String URL::full () const
|
||||
String URL::toString () const
|
||||
{
|
||||
String s;
|
||||
|
||||
@@ -153,11 +153,22 @@ String URL::full () const
|
||||
return s;
|
||||
}
|
||||
|
||||
std::string URL::to_string() const
|
||||
{
|
||||
return toString().toStdString();
|
||||
}
|
||||
|
||||
std::ostream& operator<< (std::ostream &os, URL const& url)
|
||||
{
|
||||
os << url.to_string();
|
||||
return os;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
std::size_t hash_value (URL const& v)
|
||||
{
|
||||
return std::size_t (v.full().hash());
|
||||
return std::size_t (v.toString().hash());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user