20 #ifndef RIPPLE_PROTOCOL_BOOK_H_INCLUDED
21 #define RIPPLE_PROTOCOL_BOOK_H_INCLUDED
23 #include <ripple/protocol/Issue.h>
24 #include <boost/utility/base_from_member.hpp>
58 template <
class Hasher>
71 compare (Book
const& lhs, Book
const& rhs);
84 operator< (Book
const& lhs,Book
const& rhs);
86 operator> (Book
const& lhs, Book
const& rhs);
101 :
private boost::base_from_member <std::hash <ripple::Currency>, 0>
102 ,
private boost::base_from_member <std::hash <ripple::AccountID>, 1>
111 explicit hash() =
default;
120 boost::hash_combine (result,
121 issuer_hash_type::member (value.
account));
137 explicit hash() =
default;
145 boost::hash_combine (result, m_hasher (value.
out));
160 explicit hash() =
default;
171 explicit hash() =
default;
boost::base_from_member< std::hash< ripple::Currency >, 0 > currency_hash_type
bool operator>(base_uint< Bits, Tag > const &a, base_uint< Bits, Tag > const &b)
boost::base_from_member< std::hash< ripple::AccountID >, 1 > issuer_hash_type
A currency issued by an account.
std::enable_if_t< is_contiguously_hashable< T, Hasher >::value > hash_append(Hasher &h, T const &t) noexcept
Logically concatenate input data to a Hasher.
bool isConsistent(Book const &book)
bool operator>=(base_uint< Bits, Tag > const &a, base_uint< Bits, Tag > const &b)
std::string to_string(ListDisposition disposition)
std::ostream & operator<<(std::ostream &os, TOffer< TIn, TOut > const &offer)
bool operator==(Manifest const &lhs, Manifest const &rhs)
bool operator<=(base_uint< Bits, Tag > const &a, base_uint< Bits, Tag > const &b)
int compare(base_uint< Bits, Tag > const &a, base_uint< Bits, Tag > const &b)
Book reversed(Book const &book)
bool operator!=(Manifest const &lhs, Manifest const &rhs)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
void hash_append(Hasher &h, Slice const &v)
bool operator<(base_uint< Bits, Tag > const &a, base_uint< Bits, Tag > const &b)
Book(Issue const &in_, Issue const &out_)